From 0f163d69606ab935360d4ac7bc27fa0d4367171f Mon Sep 17 00:00:00 2001 From: Akihiro Suda Date: Tue, 3 Jan 2023 23:28:13 +0900 Subject: [PATCH] TestVolumeOwnership: compare GID, not group name The name of the GID 65534 differs across distros. ("nogroup" on Debian derivatives, "nobody" on Red Hat derivatives) Fix the following test failure: ``` === RUN TestVolumeOwnership volume_copy_up_test.go:103: Create a sandbox main_test.go:667: Pull test image "ghcr.io/containerd/volume-ownership:2.1" volume_copy_up_test.go:108: Create a container with volume-ownership test image volume_copy_up_test.go:117: Start the container volume_copy_up_test.go:125: Check ownership of test directory inside container volume_copy_up_test.go:146: Check ownership of test directory on the host volume_copy_up_test.go:153: Error Trace: /root/go/src/github.com/containerd/containerd/volume_copy_up_test.go:153 Error: Not equal: expected: "nobody:nogroup\n" actual : "nobody:nobody\n" Diff: --- Expected +++ Actual @@ -1,2 +1,2 @@ -nobody:nogroup +nobody:nobody Test: TestVolumeOwnership --- FAIL: TestVolumeOwnership (3.45s) ``` Signed-off-by: Akihiro Suda --- integration/volume_copy_up_test.go | 8 ++++---- integration/volume_copy_up_unix_test.go | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/integration/volume_copy_up_test.go b/integration/volume_copy_up_test.go index b2b4fb2f5..00a539050 100644 --- a/integration/volume_copy_up_test.go +++ b/integration/volume_copy_up_test.go @@ -118,17 +118,17 @@ func TestVolumeOwnership(t *testing.T) { require.NoError(t, runtimeService.StartContainer(cn)) // ghcr.io/containerd/volume-ownership:2.1 contains a test_dir - // volume, which is owned by nobody:nogroup. + // volume, which is owned by 65534:65534 (nobody:nogroup, or nobody:nobody). // On Windows, the folder is situated in C:\volumes\test_dir and is owned // by ContainerUser (SID: S-1-5-93-2-2). A helper tool get_owner.exe should // exist inside the container that returns the owner in the form of USERNAME:SID. t.Logf("Check ownership of test directory inside container") cmd := []string{ - "stat", "-c", "%U:%G", "/test_dir", + "stat", "-c", "%u:%g", "/test_dir", } - expectedContainerOutput := "nobody:nogroup\n" - expectedHostOutput := "nobody:nogroup\n" + expectedContainerOutput := "65534:65534\n" + expectedHostOutput := "65534:65534\n" if goruntime.GOOS == "windows" { cmd = []string{ "C:\\bin\\get_owner.exe", diff --git a/integration/volume_copy_up_unix_test.go b/integration/volume_copy_up_unix_test.go index b72535df6..cf2d69a66 100644 --- a/integration/volume_copy_up_unix_test.go +++ b/integration/volume_copy_up_unix_test.go @@ -25,7 +25,7 @@ import ( ) func getOwnership(path string) (string, error) { - hostCmd := fmt.Sprintf("stat -c %%U:%%G '%s'", path) + hostCmd := fmt.Sprintf("stat -c %%u:%%g '%s'", path) output, err := exec.Command("sh", "-c", hostCmd).CombinedOutput() if err != nil { return "", err