Skip to content

Commit 8711e0f

Browse files
author
Tibor Vass
committed
cli-plugins: add test names for easier debugging
Signed-off-by: Tibor Vass <tibor@docker.com>
1 parent 10b899b commit 8711e0f

File tree

1 file changed

+32
-29
lines changed

1 file changed

+32
-29
lines changed

cli-plugins/manager/candidate_test.go

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -50,43 +50,46 @@ func TestValidateCandidate(t *testing.T) {
5050
})
5151

5252
for _, tc := range []struct {
53-
c *fakeCandidate
53+
name string
54+
c *fakeCandidate
5455

5556
// Either err or invalid may be non-empty, but not both (both can be empty for a good plugin).
5657
err string
5758
invalid string
5859
}{
5960
/* Each failing one of the tests */
60-
{c: &fakeCandidate{path: ""}, err: "plugin candidate path cannot be empty"},
61-
{c: &fakeCandidate{path: badPrefixPath}, err: fmt.Sprintf("does not have %q prefix", NamePrefix)},
62-
{c: &fakeCandidate{path: badNamePath}, invalid: "did not match"},
63-
{c: &fakeCandidate{path: builtinName}, invalid: `plugin "builtin" duplicates builtin command`},
64-
{c: &fakeCandidate{path: builtinAlias}, invalid: `plugin "alias" duplicates an alias of builtin command "builtin"`},
65-
{c: &fakeCandidate{path: goodPluginPath, exec: false}, invalid: fmt.Sprintf("failed to fetch metadata: faked a failure to exec %q", goodPluginPath)},
66-
{c: &fakeCandidate{path: goodPluginPath, exec: true, meta: `xyzzy`}, invalid: "invalid character"},
67-
{c: &fakeCandidate{path: goodPluginPath, exec: true, meta: `{}`}, invalid: `plugin SchemaVersion "" is not valid`},
68-
{c: &fakeCandidate{path: goodPluginPath, exec: true, meta: `{"SchemaVersion": "xyzzy"}`}, invalid: `plugin SchemaVersion "xyzzy" is not valid`},
69-
{c: &fakeCandidate{path: goodPluginPath, exec: true, meta: `{"SchemaVersion": "0.1.0"}`}, invalid: "plugin metadata does not define a vendor"},
70-
{c: &fakeCandidate{path: goodPluginPath, exec: true, meta: `{"SchemaVersion": "0.1.0", "Vendor": ""}`}, invalid: "plugin metadata does not define a vendor"},
71-
{c: &fakeCandidate{path: goodPluginPath, exec: true, meta: `{"SchemaVersion": "0.1.0", "Vendor": "e2e-testing", "Experimental": true}`}, invalid: "requires experimental enabled"},
61+
{name: "empty path", c: &fakeCandidate{path: ""}, err: "plugin candidate path cannot be empty"},
62+
{name: "bad prefix", c: &fakeCandidate{path: badPrefixPath}, err: fmt.Sprintf("does not have %q prefix", NamePrefix)},
63+
{name: "bad path", c: &fakeCandidate{path: badNamePath}, invalid: "did not match"},
64+
{name: "builtin command", c: &fakeCandidate{path: builtinName}, invalid: `plugin "builtin" duplicates builtin command`},
65+
{name: "builtin alias", c: &fakeCandidate{path: builtinAlias}, invalid: `plugin "alias" duplicates an alias of builtin command "builtin"`},
66+
{name: "fetch failure", c: &fakeCandidate{path: goodPluginPath, exec: false}, invalid: fmt.Sprintf("failed to fetch metadata: faked a failure to exec %q", goodPluginPath)},
67+
{name: "metadata not json", c: &fakeCandidate{path: goodPluginPath, exec: true, meta: `xyzzy`}, invalid: "invalid character"},
68+
{name: "empty schemaversion", c: &fakeCandidate{path: goodPluginPath, exec: true, meta: `{}`}, invalid: `plugin SchemaVersion "" is not valid`},
69+
{name: "invalid schemaversion", c: &fakeCandidate{path: goodPluginPath, exec: true, meta: `{"SchemaVersion": "xyzzy"}`}, invalid: `plugin SchemaVersion "xyzzy" is not valid`},
70+
{name: "no vendor", c: &fakeCandidate{path: goodPluginPath, exec: true, meta: `{"SchemaVersion": "0.1.0"}`}, invalid: "plugin metadata does not define a vendor"},
71+
{name: "empty vendor", c: &fakeCandidate{path: goodPluginPath, exec: true, meta: `{"SchemaVersion": "0.1.0", "Vendor": ""}`}, invalid: "plugin metadata does not define a vendor"},
72+
{name: "experimental required", c: &fakeCandidate{path: goodPluginPath, exec: true, meta: `{"SchemaVersion": "0.1.0", "Vendor": "e2e-testing", "Experimental": true}`}, invalid: "requires experimental enabled"},
7273
// This one should work
73-
{c: &fakeCandidate{path: goodPluginPath, exec: true, meta: `{"SchemaVersion": "0.1.0", "Vendor": "e2e-testing"}`}},
74-
{c: &fakeCandidate{path: goodPluginPath, exec: true, meta: `{"SchemaVersion": "0.1.0", "Vendor": "e2e-testing"}`, allowExperimental: true}},
75-
{c: &fakeCandidate{path: goodPluginPath, exec: true, meta: `{"SchemaVersion": "0.1.0", "Vendor": "e2e-testing", "Experimental": true}`, allowExperimental: true}},
74+
{name: "valid", c: &fakeCandidate{path: goodPluginPath, exec: true, meta: `{"SchemaVersion": "0.1.0", "Vendor": "e2e-testing"}`}},
75+
{name: "valid + allowing experimental", c: &fakeCandidate{path: goodPluginPath, exec: true, meta: `{"SchemaVersion": "0.1.0", "Vendor": "e2e-testing"}`, allowExperimental: true}},
76+
{name: "experimental + allowing experimental", c: &fakeCandidate{path: goodPluginPath, exec: true, meta: `{"SchemaVersion": "0.1.0", "Vendor": "e2e-testing", "Experimental": true}`, allowExperimental: true}},
7677
} {
77-
p, err := newPlugin(tc.c, fakeroot, tc.c.allowExperimental)
78-
if tc.err != "" {
79-
assert.ErrorContains(t, err, tc.err)
80-
} else if tc.invalid != "" {
81-
assert.NilError(t, err)
82-
assert.Assert(t, cmp.ErrorType(p.Err, reflect.TypeOf(&pluginError{})))
83-
assert.ErrorContains(t, p.Err, tc.invalid)
84-
} else {
85-
assert.NilError(t, err)
86-
assert.Equal(t, NamePrefix+p.Name, goodPluginName)
87-
assert.Equal(t, p.SchemaVersion, "0.1.0")
88-
assert.Equal(t, p.Vendor, "e2e-testing")
89-
}
78+
t.Run(tc.name, func(t *testing.T) {
79+
p, err := newPlugin(tc.c, fakeroot, tc.c.allowExperimental)
80+
if tc.err != "" {
81+
assert.ErrorContains(t, err, tc.err)
82+
} else if tc.invalid != "" {
83+
assert.NilError(t, err)
84+
assert.Assert(t, cmp.ErrorType(p.Err, reflect.TypeOf(&pluginError{})))
85+
assert.ErrorContains(t, p.Err, tc.invalid)
86+
} else {
87+
assert.NilError(t, err)
88+
assert.Equal(t, NamePrefix+p.Name, goodPluginName)
89+
assert.Equal(t, p.SchemaVersion, "0.1.0")
90+
assert.Equal(t, p.Vendor, "e2e-testing")
91+
}
92+
})
9093
}
9194
}
9295

0 commit comments

Comments
 (0)