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  }