Skip to content

Commit

Permalink
Update content/file/utils_test.go
Browse files Browse the repository at this point in the history
Co-authored-by: Lixia (Sylvia) Lei <lixlei@microsoft.com>
Signed-off-by: sammy-da <sammy.abed@digitalasset.com>
Signed-off-by: Sammy Abed <sammy.abed@digitalasset.com>
  • Loading branch information
sammy-da and Wwwsylvia committed Feb 22, 2025
1 parent e6ffd60 commit 26443ab
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 41 deletions.
36 changes: 36 additions & 0 deletions content/file/file_unix_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -476,3 +476,39 @@ func TestStore_Dir_OverwriteSymlink_RemovalFailed(t *testing.T) {
t.Fatal("error calling Chmod(), error =", err)
}
}

func Test_extractTarDirectory_PreservePermissions(t *testing.T) {
fileContent := "hello world"
fileMode := os.FileMode(0771)
tarData := createTar(t, []tarEntry{
{name: "base/", mode: os.ModeDir | 0777},
{name: "base/test.txt", content: fileContent, mode: fileMode},
})

tempDir := t.TempDir()
dirName := "base"
dirPath := filepath.Join(tempDir, dirName)
buf := make([]byte, 1024)

if err := extractTarDirectory(dirPath, dirName, bytes.NewReader(tarData), buf, true); err != nil {
t.Fatalf("extractTarDirectory() error = %v", err)
}

filePath := filepath.Join(dirPath, "test.txt")
fi, err := os.Lstat(filePath)
if err != nil {
t.Fatalf("failed to stat file %s: %v", filePath, err)
}

gotContent, err := os.ReadFile(filePath)
if err != nil {
t.Fatalf("failed to read file %s: %v", filePath, err)
}
if string(gotContent) != fileContent {
t.Errorf("file content = %s, want %s", gotContent, fileContent)
}

if fi.Mode() != fileMode {
t.Errorf("file %q mode = %s, want %s", fi.Name(), fi.Mode(), fileMode)
}
}
45 changes: 4 additions & 41 deletions content/file/utils_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ func Test_ensureLinkPath(t *testing.T) {

func Test_extractTarGzip_Error(t *testing.T) {
t.Run("Non-existing file", func(t *testing.T) {
err := extractTarGzip("", "", "non-existing-file", "", nil, false)
err := extractTarGzip("", "", "non-existing-file", "", nil)
if err == nil {
t.Fatal("expected error, got nil")
}
Expand Down Expand Up @@ -300,7 +300,7 @@ func Test_extractTarDirectory(t *testing.T) {
dirPath := filepath.Join(tempDir, dirName)
buf := make([]byte, 1024)

if err := extractTarDirectory(dirPath, dirName, bytes.NewReader(tt.tarData), buf, false); (err != nil) != tt.wantErr {
if err := extractTarDirectory(dirPath, dirName, bytes.NewReader(tt.tarData), buf); (err != nil) != tt.wantErr {
t.Fatalf("extractTarDirectory() error = %v, wantErr %v", err, tt.wantErr)
}
if !tt.wantErr {
Expand Down Expand Up @@ -348,7 +348,7 @@ func Test_extractTarDirectory_HardLink(t *testing.T) {
{name: "base/test_hardlink", linkname: linkPath, mode: 0666, isHardLink: true},
})

if err := extractTarDirectory(dirPath, dirName, bytes.NewReader(tarData), buf, false); err != nil {
if err := extractTarDirectory(dirPath, dirName, bytes.NewReader(tarData), buf); err != nil {
t.Fatalf("extractTarDirectory() error = %v", err)
}

Expand All @@ -372,49 +372,12 @@ func Test_extractTarDirectory_HardLink(t *testing.T) {
{name: "base/test_hardlink", linkname: "whatever", mode: 0666, isHardLink: true},
})

if err := extractTarDirectory(dirPath, dirName, bytes.NewReader(tarData), buf, false); err == nil {
if err := extractTarDirectory(dirPath, dirName, bytes.NewReader(tarData), buf); err == nil {
t.Error("extractTarDirectory() error = nil, wantErr = true")
}
})
}

func Test_extractTarDirectory_PreservePermissions(t *testing.T) {
tarData := createTar(t, []tarEntry{
{name: "base/", mode: os.ModeDir | 0777},
{name: "base/test.txt", content: "hello world", mode: 0771},
{name: "base/file_symlink", linkname: "test.txt", mode: os.ModeSymlink | 0771},
})

tempDir := t.TempDir()
dirName := "base"
dirPath := filepath.Join(tempDir, dirName)
fileContent := "hello world"
fileMode := os.FileMode(0771)
buf := make([]byte, 1024)

if err := extractTarDirectory(dirPath, dirName, bytes.NewReader(tarData), buf, true); err != nil {
t.Fatalf("extractTarDirectory() error = %v", err)
}

filePath := filepath.Join(dirPath, "test.txt")
fi, err := os.Lstat(filePath)
if err != nil {
t.Fatalf("failed to stat file %s: %v", filePath, err)
}

gotContent, err := os.ReadFile(filePath)
if err != nil {
t.Fatalf("failed to read file %s: %v", filePath, err)
}
if string(gotContent) != fileContent {
t.Errorf("file content = %s, want %s", gotContent, fileContent)
}

if fi.Mode() != fileMode {
t.Errorf("file %q mode = %s, want %s", fi.Name(), fi.Mode(), fileMode)
}
}

type tarEntry struct {
name string
content string
Expand Down

0 comments on commit 26443ab

Please sign in to comment.