fix: engine - set 777 permissions for temp dir (#6)
This commit is contained in:
@@ -42,7 +42,7 @@ func NewDocker(cfg *config.Config, sandbox, command string) Engine {
|
||||
// Exec executes the command and returns the output.
|
||||
func (e *Docker) Exec(req Request) Execution {
|
||||
// all steps operate in the same temp directory
|
||||
dir, err := os.MkdirTemp("", "")
|
||||
dir, err := fileio.MkdirTemp(0777)
|
||||
if err != nil {
|
||||
err = NewExecutionError("create temp dir", err)
|
||||
return Fail(req.ID, err)
|
||||
|
||||
@@ -78,3 +78,18 @@ func WriteFile(path, content string, perm fs.FileMode) (err error) {
|
||||
}
|
||||
return os.WriteFile(path, data, perm)
|
||||
}
|
||||
|
||||
// MkdirTemp creates a new temporary directory with given permissions
|
||||
// and returns the pathname of the new directory.
|
||||
func MkdirTemp(perm fs.FileMode) (string, error) {
|
||||
dir, err := os.MkdirTemp("", "")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
err = os.Chmod(dir, perm)
|
||||
if err != nil {
|
||||
os.Remove(dir)
|
||||
return "", err
|
||||
}
|
||||
return dir, nil
|
||||
}
|
||||
|
||||
@@ -128,7 +128,7 @@ func TestWriteFile(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("perm", func(t *testing.T) {
|
||||
const perm = fs.FileMode(0444)
|
||||
const perm = 0444
|
||||
path := filepath.Join(dir, "perm.txt")
|
||||
err = WriteFile(path, "hello", perm)
|
||||
if err != nil {
|
||||
@@ -138,8 +138,8 @@ func TestWriteFile(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("file not created: %s", err)
|
||||
}
|
||||
if fileInfo.Mode() != perm {
|
||||
t.Errorf("unexpected file permissions: got %v, want %v", fileInfo.Mode(), perm)
|
||||
if fileInfo.Mode().Perm() != perm {
|
||||
t.Errorf("unexpected file permissions: expected %o, got %o", perm, fileInfo.Mode().Perm())
|
||||
}
|
||||
})
|
||||
|
||||
@@ -159,3 +159,39 @@ func TestWriteFile(t *testing.T) {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestMkdirTemp(t *testing.T) {
|
||||
t.Run("default permissions", func(t *testing.T) {
|
||||
const perm = 0755
|
||||
dir, err := MkdirTemp(perm)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to create temp directory: %v", err)
|
||||
}
|
||||
defer os.Remove(dir)
|
||||
|
||||
info, err := os.Stat(dir)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to stat temp directory: %v", err)
|
||||
}
|
||||
if info.Mode().Perm() != perm {
|
||||
t.Errorf("unexpected permissions: expected %o, got %o", perm, info.Mode().Perm())
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("non-default permissions", func(t *testing.T) {
|
||||
const perm = 0777
|
||||
dir, err := MkdirTemp(perm)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to create temp directory: %v", err)
|
||||
}
|
||||
defer os.Remove(dir)
|
||||
|
||||
info, err := os.Stat(dir)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to stat temp directory: %v", err)
|
||||
}
|
||||
if info.Mode().Perm() != perm {
|
||||
t.Errorf("unexpected permissions: expected %o, got %o", perm, info.Mode().Perm())
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user