github.com/Prakhar-Agarwal-byte/moby@v0.0.0-20231027092010-a14e3e8ab87e/integration/container/diff_test.go (about) 1 package container // import "github.com/Prakhar-Agarwal-byte/moby/integration/container" 2 3 import ( 4 "testing" 5 "time" 6 7 containertypes "github.com/Prakhar-Agarwal-byte/moby/api/types/container" 8 "github.com/Prakhar-Agarwal-byte/moby/integration/internal/container" 9 "gotest.tools/v3/assert" 10 "gotest.tools/v3/poll" 11 "gotest.tools/v3/skip" 12 ) 13 14 func TestDiff(t *testing.T) { 15 skip.If(t, testEnv.DaemonInfo.OSType == "windows", "cannot diff a running container on Windows") 16 ctx := setupTest(t) 17 apiClient := testEnv.APIClient() 18 19 cID := container.Run(ctx, t, apiClient, container.WithCmd("sh", "-c", `mkdir /foo; echo xyzzy > /foo/bar`)) 20 21 expected := []containertypes.FilesystemChange{ 22 {Kind: containertypes.ChangeAdd, Path: "/foo"}, 23 {Kind: containertypes.ChangeAdd, Path: "/foo/bar"}, 24 } 25 26 items, err := apiClient.ContainerDiff(ctx, cID) 27 assert.NilError(t, err) 28 assert.DeepEqual(t, expected, items) 29 } 30 31 func TestDiffStoppedContainer(t *testing.T) { 32 // There's no way in Windows to differentiate between an Add or a Modify, 33 // and all files are under a "Files/" prefix. 34 skip.If(t, testEnv.DaemonInfo.OSType == "windows", "FIXME") 35 ctx := setupTest(t) 36 apiClient := testEnv.APIClient() 37 38 cID := container.Run(ctx, t, apiClient, container.WithCmd("sh", "-c", `mkdir /foo; echo xyzzy > /foo/bar`)) 39 40 poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "exited"), poll.WithDelay(100*time.Millisecond), poll.WithTimeout(60*time.Second)) 41 42 expected := []containertypes.FilesystemChange{ 43 {Kind: containertypes.ChangeAdd, Path: "/foo"}, 44 {Kind: containertypes.ChangeAdd, Path: "/foo/bar"}, 45 } 46 if testEnv.DaemonInfo.OSType == "windows" { 47 expected = []containertypes.FilesystemChange{ 48 {Kind: containertypes.ChangeModify, Path: "Files/foo"}, 49 {Kind: containertypes.ChangeModify, Path: "Files/foo/bar"}, 50 } 51 } 52 53 items, err := apiClient.ContainerDiff(ctx, cID) 54 assert.NilError(t, err) 55 assert.DeepEqual(t, expected, items) 56 }