29 lines
691 B
Go
29 lines
691 B
Go
package agent
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestWriteImmutableAssetIsExecutableByImageUser(t *testing.T) {
|
|
path := filepath.Join(t.TempDir(), "helper.sh")
|
|
content := []byte("#!/bin/sh\nexit 0\n")
|
|
if err := writeImmutableAsset(path, content); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := os.Chmod(path, 0o500); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := writeImmutableAsset(path, content); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
info, err := os.Stat(path)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if got, want := info.Mode().Perm(), os.FileMode(0o555); got != want {
|
|
t.Fatalf("asset mode = %04o, want %04o so an image user can execute the bind-mounted entrypoint", got, want)
|
|
}
|
|
}
|