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.
|
// Exec executes the command and returns the output.
|
||||||
func (e *Docker) Exec(req Request) Execution {
|
func (e *Docker) Exec(req Request) Execution {
|
||||||
// all steps operate in the same temp directory
|
// all steps operate in the same temp directory
|
||||||
dir, err := os.MkdirTemp("", "")
|
dir, err := fileio.MkdirTemp(0777)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = NewExecutionError("create temp dir", err)
|
err = NewExecutionError("create temp dir", err)
|
||||||
return Fail(req.ID, 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)
|
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) {
|
t.Run("perm", func(t *testing.T) {
|
||||||
const perm = fs.FileMode(0444)
|
const perm = 0444
|
||||||
path := filepath.Join(dir, "perm.txt")
|
path := filepath.Join(dir, "perm.txt")
|
||||||
err = WriteFile(path, "hello", perm)
|
err = WriteFile(path, "hello", perm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -138,8 +138,8 @@ func TestWriteFile(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("file not created: %s", err)
|
t.Fatalf("file not created: %s", err)
|
||||||
}
|
}
|
||||||
if fileInfo.Mode() != perm {
|
if fileInfo.Mode().Perm() != perm {
|
||||||
t.Errorf("unexpected file permissions: got %v, want %v", fileInfo.Mode(), 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