diff --git a/workspace-server/internal/plugins/local_test.go b/workspace-server/internal/plugins/local_test.go index 1e24c754..bbbf74f9 100644 --- a/workspace-server/internal/plugins/local_test.go +++ b/workspace-server/internal/plugins/local_test.go @@ -132,14 +132,19 @@ func TestLocalResolver_HonoursContextCancellation(t *testing.T) { } func TestLocalResolver_BubblesUpCopyFailure(t *testing.T) { - // Source file the copyTree walk would read; make dst unwritable so - // the copyFile step fails. + // os.Chmod(dst, 0o555) silently passes when os.Geteuid() == 0 + // (root bypasses POSIX permission checks). We cannot reliably + // exercise the write-failure branch in a root environment without + // patching the syscalls, so skip it honestly. + if os.Getuid() == 0 { + t.Skip("running as root — cannot exercise write-failure branch") + } + base := t.TempDir() writePlugin(t, base, "demo", map[string]string{ "plugin.yaml": "name: demo\n", }) dst := t.TempDir() - // Make dst read-only so creating files inside it fails. if err := os.Chmod(dst, 0o555); err != nil { t.Fatal(err) }