Add testutil.TempDir function
This change adds a TempDir function that ensures the correct permissions for the fake-root user in rootless mode. Signed-off-by: Evan Lezar <elezar@nvidia.com>
This commit is contained in:
parent
af4f6c124d
commit
f7065ab207
2 changed files with 27 additions and 11 deletions
|
@ -209,18 +209,8 @@ func TestRunWithAlternativeContainerdShim(t *testing.T) {
|
|||
realShimPath, err = filepath.Abs(realShimPath)
|
||||
assert.Assert(t, err)
|
||||
|
||||
// t.TempDir() can't be used here as the temporary directory returned by
|
||||
// that function cannot be accessed by the fake-root user for rootless
|
||||
// Docker. It creates a nested hierarchy of directories where the
|
||||
// outermost has permission 0700.
|
||||
shimDir, err := os.MkdirTemp("", t.Name())
|
||||
shimDir := testutil.TempDir(t)
|
||||
assert.Assert(t, err)
|
||||
t.Cleanup(func() {
|
||||
if err := os.RemoveAll(shimDir); err != nil {
|
||||
t.Errorf("shimDir RemoveAll cleanup: %v", err)
|
||||
}
|
||||
})
|
||||
assert.Assert(t, os.Chmod(shimDir, 0o777))
|
||||
shimDir, err = filepath.Abs(shimDir)
|
||||
assert.Assert(t, err)
|
||||
assert.Assert(t, os.Symlink(realShimPath, filepath.Join(shimDir, "containerd-shim-realfake-v42")))
|
||||
|
|
26
testutil/temp_files.go
Normal file
26
testutil/temp_files.go
Normal file
|
@ -0,0 +1,26 @@
|
|||
package testutil // import "github.com/docker/docker/testutil"
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// TempDir returns a temporary directory for use in tests.
|
||||
// t.TempDir() can't be used as the temporary directory returned by
|
||||
// that function cannot be accessed by the fake-root user for rootless
|
||||
// Docker. It creates a nested hierarchy of directories where the
|
||||
// outermost has permission 0700.
|
||||
func TempDir(t *testing.T) string {
|
||||
t.Helper()
|
||||
dir := t.TempDir()
|
||||
|
||||
parent := filepath.Dir(dir)
|
||||
if parent != "" {
|
||||
if err := os.Chmod(parent, 0o777); err != nil {
|
||||
t.Fatalf("Failed to chmod parent of temp directory %q: %v", parent, err)
|
||||
}
|
||||
}
|
||||
|
||||
return dir
|
||||
}
|
Loading…
Reference in a new issue