aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/osutil
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/osutil')
-rw-r--r--pkg/osutil/fileutil.go16
-rw-r--r--pkg/osutil/tar_test.go15
2 files changed, 18 insertions, 13 deletions
diff --git a/pkg/osutil/fileutil.go b/pkg/osutil/fileutil.go
index 850335cfe..cd5b602cf 100644
--- a/pkg/osutil/fileutil.go
+++ b/pkg/osutil/fileutil.go
@@ -7,6 +7,7 @@ import (
"fmt"
"io"
"os"
+ "path/filepath"
)
// CopyFile atomically copies oldFile to newFile preserving permissions and modification time.
@@ -50,6 +51,21 @@ func Rename(oldFile, newFile string) error {
return err
}
+// FillDirectory is used to fill in directory structure for tests.
+func FillDirectory(dir string, fileContent map[string]string) error {
+ for path, content := range fileContent {
+ fullPath := filepath.Join(dir, path)
+ dirPath := filepath.Dir(fullPath)
+ if err := MkdirAll(dirPath); err != nil {
+ return fmt.Errorf("mkdir %q failed: %w", dirPath, err)
+ }
+ if err := WriteFile(fullPath, []byte(content)); err != nil {
+ return fmt.Errorf("write file failed: %w", err)
+ }
+ }
+ return nil
+}
+
// WriteTempFile writes data to a temp file and returns its name.
func WriteTempFile(data []byte) (string, error) {
// Note: pkg/report knows about "syzkaller" prefix as it appears in crashes as process name.
diff --git a/pkg/osutil/tar_test.go b/pkg/osutil/tar_test.go
index a0e5a22bd..432d7c622 100644
--- a/pkg/osutil/tar_test.go
+++ b/pkg/osutil/tar_test.go
@@ -7,31 +7,20 @@ import (
"archive/tar"
"bytes"
"io"
- "path/filepath"
"testing"
"github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
)
func TestTarDirectory(t *testing.T) {
dir := t.TempDir()
-
items := map[string]string{
"file1.txt": "first file content",
"dir/file2.txt": "second file content",
"empty.txt": "",
}
-
- for path, content := range items {
- fullPath := filepath.Join(dir, path)
- dirPath := filepath.Dir(fullPath)
- if err := MkdirAll(dirPath); err != nil {
- t.Fatalf("mkdir %q failed: %v", dirPath, err)
- }
- if err := WriteFile(fullPath, []byte(content)); err != nil {
- t.Fatalf("write file failed: %v", err)
- }
- }
+ require.NoError(t, FillDirectory(dir, items))
var buf bytes.Buffer
err := tarDirectory(dir, &buf)