package api_test import ( "os" "path/filepath" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/mathiasbq/hyperguild/ingestion/internal/api" ) // hyperguild#178: an unreadable directory under wiki/ made the link check // fail and brain_write refuse the note, losing the learning. The note is now // written with its links as given. func TestWriteNoteKeepsTheLearningWhenTheLinkCheckCannotIndex(t *testing.T) { if os.Geteuid() == 0 { t.Skip("root ignores directory permissions") } brain := t.TempDir() require.NoError(t, os.MkdirAll(filepath.Join(brain, "wiki", "w", "facts"), 0o755)) require.NoError(t, os.WriteFile(filepath.Join(brain, "wiki", "w", "facts", "real.md"), []byte("x"), 0o644)) locked := filepath.Join(brain, "wiki", "other", "locked") require.NoError(t, os.MkdirAll(locked, 0o755)) require.NoError(t, os.Chmod(locked, 0o000)) t.Cleanup(func() { _ = os.Chmod(locked, 0o755) }) rel, err := api.WriteNote(brain, api.WriteNoteOptions{Wing: "w", Hall: "facts", Filename: "n", Content: "learning [[real]] and [[gone]]"}) require.NoError(t, err) got, err := os.ReadFile(filepath.Join(brain, filepath.FromSlash(rel))) require.NoError(t, err) assert.Contains(t, string(got), "[[gone]]", "links kept as given when the index is partial") }