fix: engine - set 777 permissions for temp dir (#6)

This commit is contained in:
Anton
2024-01-18 00:15:33 +05:00
parent 314987ae43
commit 8178918c6e
3 changed files with 55 additions and 4 deletions

View File

@@ -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)

View File

@@ -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
}

View File

@@ -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())
}
})
}