Skip to content

Commit 7719e36

Browse files
committed
reorganize tests
Signed-off-by: Pablo Chacin <[email protected]>
1 parent 8be37ae commit 7719e36

File tree

1 file changed

+106
-80
lines changed

1 file changed

+106
-80
lines changed

cmd/cmd_test.go

+106-80
Original file line numberDiff line numberDiff line change
@@ -10,95 +10,121 @@ import (
1010
)
1111

1212
//nolint:forbidigo
13-
func Test_New(t *testing.T) {
13+
func Test_Root(t *testing.T) {
1414
t.Parallel()
1515

16-
root := cmd.New()
17-
require.Equal(t, "k6deps [flags] [script-file]", root.Use)
16+
t.Run("New", func(t *testing.T) {
17+
t.Parallel()
1818

19-
dir := t.TempDir()
19+
root := cmd.New()
20+
require.Equal(t, "k6deps [flags] [script-file]", root.Use)
21+
})
2022

2123
scriptfile := filepath.Join("testdata", "script.js")
2224
archive := filepath.Join("testdata", "archive.tar")
2325

24-
out := filepath.Clean(filepath.Join(dir, "output"))
25-
26-
root = cmd.New()
27-
root.SetArgs([]string{"--ingnore-env", "--ignore-manifest", "-o", out, scriptfile})
28-
err := root.Execute()
29-
require.NoError(t, err)
30-
31-
contents, err := os.ReadFile(out)
32-
require.NoError(t, err)
33-
require.Equal(t, `{"k6/x/faker":">v0.3.0","xk6-top":"*"}`+"\n", string(contents))
34-
35-
root = cmd.New()
36-
root.SetArgs([]string{"--ingnore-env", "--ignore-manifest", "-o", out, archive})
37-
err = root.Execute()
38-
require.NoError(t, err)
39-
40-
contents, err = os.ReadFile(out)
41-
require.NoError(t, err)
42-
require.Equal(t, `{"k6":">0.54","k6/x/faker":">0.4.0","k6/x/sql":">=1.0.1","k6/x/sql/driver/ramsql":"*"}`+"\n", string(contents))
43-
44-
root = cmd.New()
45-
root.SetArgs([]string{"--ingnore-env", "--ignore-manifest", "--format", "json", "-o", out, scriptfile})
46-
err = root.Execute()
47-
require.NoError(t, err)
48-
49-
contents, err = os.ReadFile(out)
50-
require.NoError(t, err)
51-
require.Equal(t, `{"k6/x/faker":">v0.3.0","xk6-top":"*"}`+"\n", string(contents))
52-
53-
root = cmd.New()
54-
root.SetArgs([]string{"--ingnore-env", "--ignore-manifest", "--format", "text", "-o", out, scriptfile})
55-
err = root.Execute()
56-
require.NoError(t, err)
57-
58-
contents, err = os.ReadFile(out)
59-
require.NoError(t, err)
60-
require.Equal(t, `k6/x/faker>v0.3.0;xk6-top*`+"\n", string(contents))
61-
62-
root = cmd.New()
63-
root.SetArgs([]string{"--ingnore-env", "--ignore-manifest", "--format", "js", "-o", out, scriptfile})
64-
err = root.Execute()
65-
require.NoError(t, err)
66-
67-
contents, err = os.ReadFile(out)
68-
require.NoError(t, err)
69-
require.Equal(t, `"use k6 with k6/x/faker>v0.3.0";
70-
"use k6 with xk6-top*";
71-
`, string(contents))
72-
73-
root = cmd.New()
74-
stdin := os.Stdin
75-
os.Stdin, err = os.Open(scriptfile) //nolint:gosec
76-
if err != nil {
77-
t.Fatal(err)
26+
testCases := []struct {
27+
name string
28+
args []string
29+
source string
30+
expected string
31+
}{
32+
{
33+
name: "script default format",
34+
args: []string{"--ingnore-env", "--ignore-manifest"},
35+
source: scriptfile,
36+
expected: `{"k6/x/faker":">v0.3.0","xk6-top":"*"}` + "\n",
37+
},
38+
{
39+
name: "script json format",
40+
args: []string{"--ingnore-env", "--ignore-manifest", "--format", "json"},
41+
source: scriptfile,
42+
expected: `{"k6/x/faker":">v0.3.0","xk6-top":"*"}` + "\n",
43+
},
44+
{
45+
name: "script text format",
46+
args: []string{"--ingnore-env", "--ignore-manifest", "--format", "text"},
47+
source: scriptfile,
48+
expected: `k6/x/faker>v0.3.0;xk6-top*` + "\n",
49+
},
50+
{
51+
name: "script js format",
52+
args: []string{"--ingnore-env", "--ignore-manifest", "--format", "js"},
53+
source: scriptfile,
54+
expected: `"use k6 with k6/x/faker>v0.3.0";` + "\n" + `"use k6 with xk6-top*";` + "\n",
55+
},
56+
{
57+
name: "archive",
58+
args: []string{"--ingnore-env", "--ignore-manifest"},
59+
source: archive,
60+
expected: `{"k6":">0.54","k6/x/faker":">0.4.0","k6/x/sql":">=1.0.1","k6/x/sql/driver/ramsql":"*"}` + "\n",
61+
},
7862
}
79-
root.SetArgs([]string{"--ingnore-env", "--ignore-manifest", "--input", "js", "--format", "text", "-o", out})
80-
err = root.Execute()
81-
os.Stdin = stdin
8263

83-
require.NoError(t, err)
84-
85-
contents, err = os.ReadFile(out)
86-
require.NoError(t, err)
87-
require.Equal(t, `k6/x/faker>v0.3.0;xk6-top*`+"\n", string(contents))
88-
89-
root = cmd.New()
90-
stdin = os.Stdin
91-
os.Stdin, err = os.Open(archive) //nolint:gosec
92-
if err != nil {
93-
t.Fatal(err)
64+
for _, tc := range testCases {
65+
t.Run(tc.name, func(t *testing.T) {
66+
t.Parallel()
67+
out := filepath.Clean(filepath.Join(t.TempDir(), "output"))
68+
69+
root := cmd.New()
70+
args := tc.args
71+
args = append(args, "-o", out, tc.source)
72+
root.SetArgs(args)
73+
err := root.Execute()
74+
require.NoError(t, err)
75+
76+
contents, err := os.ReadFile(out)
77+
require.NoError(t, err)
78+
require.Equal(t, tc.expected, string(contents))
79+
})
9480
}
95-
root.SetArgs([]string{"--ingnore-env", "--ignore-manifest", "--input", "tar", "--format", "json", "-o", out})
96-
err = root.Execute()
97-
os.Stdin = stdin
98-
99-
require.NoError(t, err)
10081

101-
contents, err = os.ReadFile(out)
102-
require.NoError(t, err)
103-
require.Equal(t, `{"k6":">0.54","k6/x/faker":">0.4.0","k6/x/sql":">=1.0.1","k6/x/sql/driver/ramsql":"*"}`+"\n", string(contents))
82+
t.Run("using input", func(t *testing.T) {
83+
t.Parallel()
84+
85+
testCases := []struct {
86+
name string
87+
source string
88+
input string
89+
expected string
90+
}{
91+
{
92+
name: "script",
93+
input: "js",
94+
source: scriptfile,
95+
expected: `{"k6/x/faker":">v0.3.0","xk6-top":"*"}` + "\n",
96+
},
97+
{
98+
name: "archive",
99+
input: "tar",
100+
source: archive,
101+
expected: `{"k6":">0.54","k6/x/faker":">0.4.0","k6/x/sql":">=1.0.1","k6/x/sql/driver/ramsql":"*"}` + "\n",
102+
},
103+
}
104+
105+
// the following tests cannot be executed in parallel because they modify the stdin
106+
for _, tc := range testCases {
107+
t.Run(tc.name, func(t *testing.T) {
108+
var err error
109+
stdin := os.Stdin
110+
t.Cleanup(func() { os.Stdin = stdin })
111+
112+
out := filepath.Clean(filepath.Join(t.TempDir(), "output"))
113+
114+
root := cmd.New()
115+
os.Stdin, err = os.Open(tc.source)
116+
if err != nil {
117+
t.Fatal(err)
118+
}
119+
root.SetArgs([]string{"--ingnore-env", "--ignore-manifest", "--input", tc.input, "--format", "json", "-o", out})
120+
err = root.Execute()
121+
122+
require.NoError(t, err)
123+
124+
contents, err := os.ReadFile(out)
125+
require.NoError(t, err)
126+
require.Equal(t, tc.expected, string(contents))
127+
})
128+
}
129+
})
104130
}

0 commit comments

Comments
 (0)