102 lines
2.2 KiB
Go
102 lines
2.2 KiB
Go
// Copyright 2015 Google Inc. All rights reserved
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package kati
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestRot13(t *testing.T) {
|
|
for _, tc := range []struct {
|
|
in string
|
|
want string
|
|
}{
|
|
{
|
|
in: "PRODUCT_PACKAGE_OVERLAYS",
|
|
want: "CEBQHPG_CNPXNTR_BIREYNLF",
|
|
},
|
|
{
|
|
in: "product_name",
|
|
want: "cebqhpg_anzr",
|
|
},
|
|
} {
|
|
buf := []byte(tc.in)
|
|
rot13(buf)
|
|
if got, want := string(buf), tc.want; got != want {
|
|
t.Errorf("rot13(%q) got=%q; want=%q", tc.in, got, want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestShellDate(t *testing.T) {
|
|
ts := ShellDateTimestamp
|
|
ShellDateTimestamp = time.Now()
|
|
defer func() {
|
|
ShellDateTimestamp = ts
|
|
}()
|
|
for _, tc := range []struct {
|
|
sharg literal
|
|
format string
|
|
}{
|
|
{
|
|
sharg: literal("date +%Y-%m-%d"),
|
|
format: "2006-01-02",
|
|
},
|
|
{
|
|
sharg: literal("date +%Y%m%d.%H%M%S"),
|
|
format: "20060102.150405",
|
|
},
|
|
{
|
|
sharg: literal(`date "+%d %b %Y %k:%M"`),
|
|
format: "02 Jan 2006 15:04",
|
|
},
|
|
} {
|
|
var matched bool
|
|
for _, b := range shBuiltins {
|
|
if b.name != "shell-date" && b.name != "shell-date-quoted" {
|
|
continue
|
|
}
|
|
m, ok := matchExpr(expr{tc.sharg}, b.pattern)
|
|
if !ok {
|
|
t.Logf("%s not match with %s", b.name, tc.sharg)
|
|
continue
|
|
}
|
|
f := &funcShell{
|
|
fclosure: fclosure{
|
|
args: []Value{
|
|
literal("(shell"),
|
|
tc.sharg,
|
|
},
|
|
},
|
|
}
|
|
v := b.compact(f, m)
|
|
sd, ok := v.(*funcShellDate)
|
|
if !ok {
|
|
t.Errorf("%s: matched %s but not compacted", tc.sharg, b.name)
|
|
continue
|
|
}
|
|
if got, want := sd.format, tc.format; got != want {
|
|
t.Errorf("%s: format=%q, want=%q - %s", tc.sharg, got, want, b.name)
|
|
continue
|
|
}
|
|
matched = true
|
|
break
|
|
}
|
|
if !matched {
|
|
t.Errorf("%s: not matched", tc.sharg)
|
|
}
|
|
}
|
|
}
|