mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-03-18 18:48:48 +08:00
Enhance search functionality and indexing pipeline
- Updated `cmd_search` to include line numbers and content in search results. - Modified `IndexingPipeline` to handle start and end line numbers for chunks. - Enhanced `FTSEngine` to support storing line metadata in the database. - Improved `SearchPipeline` to return line numbers and full content in search results. - Added unit tests for bridge, FTS delete operations, metadata store, and watcher functionality. - Introduced a `.gitignore` file to exclude specific directories.
This commit is contained in:
66
codex-lens-v2/tests/unit/test_fts_delete.py
Normal file
66
codex-lens-v2/tests/unit/test_fts_delete.py
Normal file
@@ -0,0 +1,66 @@
|
||||
"""Unit tests for FTSEngine delete_by_path and get_chunk_ids_by_path."""
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
|
||||
from codexlens_search.search.fts import FTSEngine
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def fts(tmp_path):
|
||||
return FTSEngine(str(tmp_path / "fts.db"))
|
||||
|
||||
|
||||
class TestGetChunkIdsByPath:
|
||||
def test_empty(self, fts):
|
||||
assert fts.get_chunk_ids_by_path("a.py") == []
|
||||
|
||||
def test_returns_matching_ids(self, fts):
|
||||
fts.add_documents([
|
||||
(0, "a.py", "hello world"),
|
||||
(1, "a.py", "foo bar"),
|
||||
(2, "b.py", "other content"),
|
||||
])
|
||||
ids = fts.get_chunk_ids_by_path("a.py")
|
||||
assert sorted(ids) == [0, 1]
|
||||
|
||||
def test_no_match(self, fts):
|
||||
fts.add_documents([(0, "a.py", "content")])
|
||||
assert fts.get_chunk_ids_by_path("b.py") == []
|
||||
|
||||
|
||||
class TestDeleteByPath:
|
||||
def test_deletes_docs_and_meta(self, fts):
|
||||
fts.add_documents([
|
||||
(0, "target.py", "to be deleted"),
|
||||
(1, "target.py", "also deleted"),
|
||||
(2, "keep.py", "keep this"),
|
||||
])
|
||||
count = fts.delete_by_path("target.py")
|
||||
assert count == 2
|
||||
|
||||
# target.py gone from both tables
|
||||
assert fts.get_chunk_ids_by_path("target.py") == []
|
||||
assert fts.get_content(0) == ""
|
||||
assert fts.get_content(1) == ""
|
||||
|
||||
# keep.py still there
|
||||
assert fts.get_chunk_ids_by_path("keep.py") == [2]
|
||||
assert fts.get_content(2) == "keep this"
|
||||
|
||||
def test_delete_nonexistent_path(self, fts):
|
||||
count = fts.delete_by_path("nonexistent.py")
|
||||
assert count == 0
|
||||
|
||||
def test_delete_then_search(self, fts):
|
||||
fts.add_documents([
|
||||
(0, "a.py", "unique searchable content"),
|
||||
(1, "b.py", "different content here"),
|
||||
])
|
||||
fts.delete_by_path("a.py")
|
||||
results = fts.exact_search("unique searchable")
|
||||
assert len(results) == 0
|
||||
|
||||
results = fts.exact_search("different")
|
||||
assert len(results) == 1
|
||||
assert results[0][0] == 1
|
||||
Reference in New Issue
Block a user