Skip to content

Commit 34b6240

Browse files
committed
nvim/plugin: use sub-tests
Signed-off-by: Koichi Shiraishi <[email protected]>
1 parent a1bf4da commit 34b6240

File tree

1 file changed

+63
-55
lines changed

1 file changed

+63
-55
lines changed

nvim/plugin/manifest_test.go

Lines changed: 63 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -10,62 +10,70 @@ const (
1010
updatedManifest = "call remote#host#RegisterPlugin('P', '0', [\n\\ {'type': 'function', 'name': 'Bar', 'sync': 1, 'opts': {}},\n\\ ])\n"
1111
)
1212

13-
var replaceManifestTests = []struct {
14-
what, original, expected string
15-
}{
16-
{
17-
"Original at beginning of file",
18-
fmt.Sprintf("%sline A\nline B\n", originalManifest),
19-
fmt.Sprintf("%sline A\nline B\n", updatedManifest),
20-
},
21-
{
22-
"Original in middle of file",
23-
fmt.Sprintf("line A\n%sline B\n", originalManifest),
24-
fmt.Sprintf("line A\n%sline B\n", updatedManifest),
25-
},
26-
{
27-
"Original at end of file",
28-
fmt.Sprintf("line A\nline B\n%s", originalManifest),
29-
fmt.Sprintf("line A\nline B\n%s", updatedManifest),
30-
},
31-
{
32-
"Original at end of file, no trailing \\n",
33-
fmt.Sprintf("line A\nline B\n%s", originalManifest[:len(originalManifest)-1]),
34-
fmt.Sprintf("line A\nline B\n%s", updatedManifest),
35-
},
36-
{
37-
"No manifest",
38-
"line A\nline B\n",
39-
fmt.Sprintf("line A\nline B\n%s", updatedManifest),
40-
},
41-
{
42-
"Empty file",
43-
"",
44-
updatedManifest,
45-
},
46-
{
47-
"No manifest, no trailing \\n",
48-
"line A\nline B",
49-
fmt.Sprintf("line A\nline B\n%s", updatedManifest),
50-
},
51-
{
52-
"Extra \\ ])` in file", // ensure non-greedy match trailing ])
53-
fmt.Sprintf("line A\n%sline B\n\\ ])\nline C\n", originalManifest),
54-
fmt.Sprintf("line A\n%sline B\n\\ ])\nline C\n", updatedManifest),
55-
},
56-
}
57-
5813
func TestReplaceManifest(t *testing.T) {
14+
t.Parallel()
15+
16+
var replaceManifestTests = []struct {
17+
name string
18+
original string
19+
expected string
20+
}{
21+
{
22+
name: "Original at beginning of file",
23+
original: fmt.Sprintf("%sline A\nline B\n", originalManifest),
24+
expected: fmt.Sprintf("%sline A\nline B\n", updatedManifest),
25+
},
26+
{
27+
name: "Original in middle of file",
28+
original: fmt.Sprintf("line A\n%sline B\n", originalManifest),
29+
expected: fmt.Sprintf("line A\n%sline B\n", updatedManifest),
30+
},
31+
{
32+
name: "Original at end of file",
33+
original: fmt.Sprintf("line A\nline B\n%s", originalManifest),
34+
expected: fmt.Sprintf("line A\nline B\n%s", updatedManifest),
35+
},
36+
{
37+
name: "Original at end of file, no trailing \\n",
38+
original: fmt.Sprintf("line A\nline B\n%s", originalManifest[:len(originalManifest)-1]),
39+
expected: fmt.Sprintf("line A\nline B\n%s", updatedManifest),
40+
},
41+
{
42+
name: "No manifest",
43+
original: "line A\nline B\n",
44+
expected: fmt.Sprintf("line A\nline B\n%s", updatedManifest),
45+
},
46+
{
47+
name: "Empty file",
48+
original: "",
49+
expected: updatedManifest,
50+
},
51+
{
52+
name: "No manifest, no trailing \\n",
53+
original: "line A\nline B",
54+
expected: fmt.Sprintf("line A\nline B\n%s", updatedManifest),
55+
},
56+
{
57+
name: "Extra \\ ])` in file", // ensure non-greedy match trailing ])
58+
original: fmt.Sprintf("line A\n%sline B\n\\ ])\nline C\n", originalManifest),
59+
expected: fmt.Sprintf("line A\n%sline B\n\\ ])\nline C\n", updatedManifest),
60+
},
61+
}
5962
for _, tt := range replaceManifestTests {
60-
actual := string(replaceManifest("P", []byte(tt.original), []byte(updatedManifest)))
61-
if actual != tt.expected {
62-
t.Errorf("%s\n got = %q\nwant = %q", tt.what, actual, tt.expected)
63-
continue
64-
}
65-
// Replace should be idempotent.
66-
actual = string(replaceManifest("P", []byte(tt.expected), []byte(updatedManifest)))
67-
if actual != tt.expected {
68-
t.Errorf("%s (no change expected)\n got = %q\nwant = %q", tt.what, actual, tt.expected)
69-
}
63+
tt := tt
64+
t.Run(tt.name, func(t *testing.T) {
65+
t.Parallel()
66+
67+
actual := string(replaceManifest("P", []byte(tt.original), []byte(updatedManifest)))
68+
if actual != tt.expected {
69+
t.Fatalf("%s\n got = %q\nwant = %q", tt.name, actual, tt.expected)
70+
}
71+
72+
// Replace should be idempotent.
73+
actual = string(replaceManifest("P", []byte(tt.expected), []byte(updatedManifest)))
74+
if actual != tt.expected {
75+
t.Fatalf("%s (no change expected)\n got = %q\nwant = %q", tt.name, actual, tt.expected)
76+
}
77+
})
7078
}
7179
}

0 commit comments

Comments
 (0)