github.1git.de/docker/cli@v26.1.3+incompatible/cli/command/container/formatter_diff_test.go (about) 1 package container 2 3 import ( 4 "bytes" 5 "testing" 6 7 "github.com/docker/cli/cli/command/formatter" 8 "github.com/docker/docker/api/types/container" 9 "gotest.tools/v3/assert" 10 ) 11 12 func TestDiffContextFormatWrite(t *testing.T) { 13 // Check default output format (verbose and non-verbose mode) for table headers 14 cases := []struct { 15 context formatter.Context 16 expected string 17 }{ 18 { 19 formatter.Context{Format: NewDiffFormat("table")}, 20 `CHANGE TYPE PATH 21 C /var/log/app.log 22 A /usr/app/app.js 23 D /usr/app/old_app.js 24 `, 25 }, 26 { 27 formatter.Context{Format: NewDiffFormat("table {{.Path}}")}, 28 `PATH 29 /var/log/app.log 30 /usr/app/app.js 31 /usr/app/old_app.js 32 `, 33 }, 34 { 35 formatter.Context{Format: NewDiffFormat("{{.Type}}: {{.Path}}")}, 36 `C: /var/log/app.log 37 A: /usr/app/app.js 38 D: /usr/app/old_app.js 39 `, 40 }, 41 } 42 43 diffs := []container.FilesystemChange{ 44 {Kind: container.ChangeModify, Path: "/var/log/app.log"}, 45 {Kind: container.ChangeAdd, Path: "/usr/app/app.js"}, 46 {Kind: container.ChangeDelete, Path: "/usr/app/old_app.js"}, 47 } 48 49 for _, tc := range cases { 50 tc := tc 51 t.Run(string(tc.context.Format), func(t *testing.T) { 52 out := bytes.NewBufferString("") 53 tc.context.Output = out 54 err := DiffFormatWrite(tc.context, diffs) 55 if err != nil { 56 assert.Error(t, err, tc.expected) 57 } else { 58 assert.Equal(t, out.String(), tc.expected) 59 } 60 }) 61 } 62 }