feat(rag): git-based import sources — BOR_GIT_SOURCES repos cloned (first run, --depth 1) or pulled (--ff-only) into BOR_SOURCES_DIR/<repo>/ then indexed; --source still wins; a failed sync aborts before importing anything
This commit is contained in:
@@ -92,6 +92,53 @@ def test_import_extensions_rejects_empty(monkeypatch) -> None:
|
||||
_settings()
|
||||
|
||||
|
||||
def test_git_sources_default_empty_and_sources_dir_default() -> None:
|
||||
"""Phase 28: no git sources by default (backwards-compatible with the
|
||||
``--source`` / ``DEFAULT_SOURCES`` fallback); the clone location stays
|
||||
a raw string (``~`` is expanded by the import script, not the setting)."""
|
||||
s = _settings()
|
||||
assert s.git_sources == ""
|
||||
assert s.git_source_list == []
|
||||
assert s.sources_dir == "~/bor-sources"
|
||||
|
||||
|
||||
def test_git_sources_env_override_parses_comma_separated_list(
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
) -> None:
|
||||
"""``BOR_GIT_SOURCES`` is a raw CSV: entries are trimmed and empty
|
||||
entries dropped; URLs are stored untouched (no scheme parsing here)."""
|
||||
monkeypatch.setenv(
|
||||
"BOR_GIT_SOURCES",
|
||||
"https://github.com/user/homelab.git, "
|
||||
" git@github.com:user/deployments.git ,, https://git.reeseapps.com/x/y.git ",
|
||||
)
|
||||
s = _settings()
|
||||
# The raw CSV string is preserved untouched (no parsing in the setting).
|
||||
assert s.git_sources == (
|
||||
"https://github.com/user/homelab.git, "
|
||||
" git@github.com:user/deployments.git ,, https://git.reeseapps.com/x/y.git "
|
||||
)
|
||||
assert s.git_source_list == [
|
||||
"https://github.com/user/homelab.git",
|
||||
"git@github.com:user/deployments.git",
|
||||
"https://git.reeseapps.com/x/y.git",
|
||||
]
|
||||
|
||||
|
||||
def test_git_sources_whitespace_only_yields_empty_list(monkeypatch) -> None:
|
||||
"""A configured-but-blank value behaves the same as unset: no git
|
||||
sources, so the script falls back to its legacy local defaults."""
|
||||
monkeypatch.setenv("BOR_GIT_SOURCES", " , , ")
|
||||
s = _settings()
|
||||
assert s.git_source_list == []
|
||||
|
||||
|
||||
def test_sources_dir_env_override_is_raw_string(monkeypatch: pytest.MonkeyPatch) -> None:
|
||||
monkeypatch.setenv("BOR_SOURCES_DIR", "/data/bor/sources")
|
||||
s = _settings()
|
||||
assert s.sources_dir == "/data/bor/sources"
|
||||
|
||||
|
||||
def test_suggestions_default_is_three_plus_real_questions() -> None:
|
||||
s = _settings()
|
||||
assert len(s.suggestions) >= 3
|
||||
|
||||
Reference in New Issue
Block a user