github.com/cspotcode/docker-cli@v20.10.0-rc1.0.20201201121459-3faad7acc5b8+incompatible/cli/command/manifest/annotate_test.go (about) 1 package manifest 2 3 import ( 4 "io/ioutil" 5 "testing" 6 7 "github.com/docker/cli/internal/test" 8 "gotest.tools/v3/assert" 9 is "gotest.tools/v3/assert/cmp" 10 "gotest.tools/v3/golden" 11 ) 12 13 func TestManifestAnnotateError(t *testing.T) { 14 testCases := []struct { 15 args []string 16 expectedError string 17 }{ 18 { 19 args: []string{"too-few-arguments"}, 20 expectedError: "requires exactly 2 arguments", 21 }, 22 { 23 args: []string{"th!si'sa/fa!ke/li$t/name", "example.com/alpine:3.0"}, 24 expectedError: "error parsing name for manifest list", 25 }, 26 { 27 args: []string{"example.com/list:v1", "th!si'sa/fa!ke/im@ge/nam32"}, 28 expectedError: "error parsing name for manifest", 29 }, 30 } 31 32 for _, tc := range testCases { 33 cli := test.NewFakeCli(nil) 34 cmd := newAnnotateCommand(cli) 35 cmd.SetArgs(tc.args) 36 cmd.SetOut(ioutil.Discard) 37 assert.ErrorContains(t, cmd.Execute(), tc.expectedError) 38 } 39 } 40 41 func TestManifestAnnotate(t *testing.T) { 42 store, cleanup := newTempManifestStore(t) 43 defer cleanup() 44 45 cli := test.NewFakeCli(nil) 46 cli.SetManifestStore(store) 47 namedRef := ref(t, "alpine:3.0") 48 imageManifest := fullImageManifest(t, namedRef) 49 err := store.Save(ref(t, "list:v1"), namedRef, imageManifest) 50 assert.NilError(t, err) 51 52 cmd := newAnnotateCommand(cli) 53 cmd.SetArgs([]string{"example.com/list:v1", "example.com/fake:0.0"}) 54 cmd.SetOut(ioutil.Discard) 55 expectedError := "manifest for image example.com/fake:0.0 does not exist" 56 assert.ErrorContains(t, cmd.Execute(), expectedError) 57 58 cmd.SetArgs([]string{"example.com/list:v1", "example.com/alpine:3.0"}) 59 cmd.Flags().Set("os", "freebsd") 60 cmd.Flags().Set("arch", "fake") 61 cmd.Flags().Set("os-version", "1") 62 cmd.Flags().Set("os-features", "feature1") 63 cmd.Flags().Set("variant", "v7") 64 expectedError = "manifest entry for image has unsupported os/arch combination" 65 assert.ErrorContains(t, cmd.Execute(), expectedError) 66 67 cmd.Flags().Set("arch", "arm") 68 assert.NilError(t, cmd.Execute()) 69 70 cmd = newInspectCommand(cli) 71 err = cmd.Flags().Set("verbose", "true") 72 assert.NilError(t, err) 73 cmd.SetArgs([]string{"example.com/list:v1", "example.com/alpine:3.0"}) 74 assert.NilError(t, cmd.Execute()) 75 actual := cli.OutBuffer() 76 expected := golden.Get(t, "inspect-annotate.golden") 77 assert.Check(t, is.Equal(string(expected), actual.String())) 78 }