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  }