MCPcopy Create free account
hub / github.com/cli/cli / TestRootRejectsDirectorySwapDuringOpen

Function TestRootRejectsDirectorySwapDuringOpen

internal/safepaths/root_race_test.go:12–41  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

10)
11
12func TestRootRejectsDirectorySwapDuringOpen(t *testing.T) {
13 rootDir := t.TempDir()
14 originalDir := filepath.Join(rootDir, "nested")
15 require.NoError(t, os.Mkdir(originalDir, 0o755))
16 redirectedDir := filepath.Join(rootDir, "redirected")
17 require.NoError(t, os.Mkdir(redirectedDir, 0o755))
18
19 root, err := OpenRoot(rootDir)
20 require.NoError(t, err)
21 defer root.Close()
22
23 defaultOpenRoot := root.openRoot
24 swapped := false
25 root.openRoot = func(parent *os.Root, name string) (*os.Root, error) {
26 if name == "nested" && !swapped {
27 swapped = true
28 moved := filepath.Join(rootDir, "moved")
29 require.NoError(t, os.Rename(originalDir, moved))
30 if err := os.Symlink("redirected", originalDir); err != nil {
31 t.Skipf("directory symlinks unavailable: %v", err)
32 }
33 }
34 return defaultOpenRoot(parent, name)
35 }
36
37 err = root.WriteFile(filepath.Join("nested", "file.txt"), []byte("content"), 0o644, 0o755, false)
38 require.Error(t, err)
39 assert.NoFileExists(t, filepath.Join(redirectedDir, "file.txt"))
40 assert.NoFileExists(t, filepath.Join(rootDir, "moved", "file.txt"))
41}

Callers

nothing calls this directly

Calls 5

OpenRootFunction · 0.85
JoinMethod · 0.80
WriteFileMethod · 0.80
CloseMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected