test: pin the edit symlink refusal, AppendRegular's clean check and Remove (#188)
Review round 1 on PR #189 (three tests stayed green with their guard removed): - TestEditRefusesANoteBehindASymlinkedDirectory had no .git, so Edit refused "not the sync source" before any path check. It now has one, plus a positive control. - AppendRegular's unclean-path case was refused by a final symlink, not cleanRel. New test where ".." after a symlinked dir resolves to a real file, for AppendRegular and PutRegular. - brainfs.Remove had no test; new one (refuses behind a symlinked dir, removes a final link but never its target, positive control). Also: promote/reject create with O_EXCL (new brainfs.CreateRegular), so a note that appears after the collision check is never overwritten; gofmt fixes in provenance.go and wiki/log.go; dead wingDir and putBrainFile removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -13,6 +13,9 @@ import (
|
||||
// a symlinked directory inside the brain.
|
||||
func TestEditRefusesANoteBehindASymlinkedDirectory(t *testing.T) {
|
||||
b := t.TempDir()
|
||||
// Edit refuses a tree that is not the sync source before any path
|
||||
// check, so the test needs a .git to reach the symlink refusal.
|
||||
require.NoError(t, os.MkdirAll(filepath.Join(b, ".git"), 0o755))
|
||||
victim := filepath.Join(b, "raw", "facts", "v.md")
|
||||
require.NoError(t, os.MkdirAll(filepath.Dir(victim), 0o755))
|
||||
require.NoError(t, os.WriteFile(victim, []byte("old text\n"), 0o644))
|
||||
@@ -22,4 +25,12 @@ func TestEditRefusesANoteBehindASymlinkedDirectory(t *testing.T) {
|
||||
assert.Error(t, err)
|
||||
got, _ := os.ReadFile(victim)
|
||||
assert.Equal(t, "old text\n", string(got))
|
||||
|
||||
real := filepath.Join(b, "wiki", "w", "facts", "r.md")
|
||||
require.NoError(t, os.MkdirAll(filepath.Dir(real), 0o755))
|
||||
require.NoError(t, os.WriteFile(real, []byte("old text\n"), 0o644))
|
||||
_, err = Edit(b, "wiki/w/facts/r.md", "old text", "new text", ScopeNotes)
|
||||
require.NoError(t, err, "positive control: a note in a real directory is edited")
|
||||
got, _ = os.ReadFile(real)
|
||||
assert.Equal(t, "new text\n", string(got))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user