-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy patharguments_test.go
64 lines (59 loc) · 1.73 KB
/
arguments_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package ycat_test
import (
"bytes"
"context"
"fmt"
"io"
"strings"
"testing"
"github.com/alxarch/ycat"
)
type nopCloser struct {
io.Writer
}
func (nopCloser) Close() error {
return nil
}
func TestParseArgs(t *testing.T) {
type TestCase struct {
Args []string
Stdin string
Stdout string
}
tcs := []TestCase{
{[]string{"-e", "x"}, "null\n---\nnull\n", "null\n---\nnull\n"},
{nil, "1", "1\n"},
{[]string{"-n"}, "", "null\n"},
{[]string{"-n", "-v", "y==foo", "-e", "y"}, "", "foo\n"},
{[]string{"-n", "--input-var", "y", "-e", "y"}, "", "null\n"},
{[]string{"testdata/foo.yaml", "-i", "foo=testdata/foo.libsonnet", "-e", "foo.hello(x, 'world')"}, "", "foo: bar\nname: world\n"},
{[]string{"testdata/foo.yaml"}, "", "foo: bar\n"},
{[]string{"-y", "testdata/foo.yaml"}, "", "foo: bar\n"},
{[]string{"testdata/foo.yaml", "-o", "j"}, "", `{"foo":"bar"}` + "\n"},
{[]string{"testdata/foo.yaml", "testdata/bar.json"}, "", "foo: bar\n---\nbar: foo\n"},
{[]string{"testdata/foo.yaml", "testdata/bar.json", "-a"}, "", "- foo: bar\n- bar: foo\n"},
{[]string{"testdata/foo.yaml", "-e", `{bar: "baz"} + x`}, "", "bar: baz\nfoo: bar\n"},
// {[]string{""}, false, false, 2, "1", "1\n"},
}
for i, tc := range tcs {
name := fmt.Sprintf("%v", tc.Args)
t.Run(name, func(t *testing.T) {
buf := &bytes.Buffer{}
stdout := &nopCloser{buf}
stdin := strings.NewReader(tc.Stdin)
tasks, _, err := ycat.ParseArgs(tc.Args, stdin, stdout)
if err != nil {
t.Fatal(i, err)
}
p := ycat.MakePipeline(context.Background(), tasks...)
for err := range p.Errors() {
if err != nil {
t.Error(err)
}
}
if buf.String() != tc.Stdout {
t.Errorf("Wrong output: %q != %q", buf.String(), tc.Stdout)
}
})
}
}