Initial curated RepoPulse source from 2524ccc3c1c27739996dccb2b7992989f88cd26d
This commit is contained in:
commit
0adf8ef5d9
90 files changed
+14315
No files matched your search
@@ -0,0 +1,86 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import sqlite3
|
||||
from pathlib import Path
|
||||
|
||||
from app.models import (
|
||||
DependencySignals,
|
||||
RepositoryMetrics,
|
||||
ScanReport,
|
||||
)
|
||||
from app.models import (
|
||||
TestSignals as SignalsModel,
|
||||
)
|
||||
from app.scanner import scan_repository
|
||||
from app.store import SCHEMA_VERSION, ScanStore
|
||||
|
||||
|
||||
def test_v1_scan_schema_is_migrated_and_legacy_history_is_cataloged(tmp_path: Path) -> None:
|
||||
database = tmp_path / "history.db"
|
||||
report = ScanReport(
|
||||
id="legacy-scan",
|
||||
repository_path=str((tmp_path / "repo").resolve()),
|
||||
repository_name="repo",
|
||||
scanned_at="2026-09-12T00:00:00+00:00",
|
||||
duration_ms=1,
|
||||
metrics=RepositoryMetrics(),
|
||||
languages={},
|
||||
category_scores={},
|
||||
health_score=100,
|
||||
release_readiness="READY",
|
||||
findings=[],
|
||||
tests=SignalsModel(),
|
||||
dependencies=DependencySignals(),
|
||||
)
|
||||
connection = sqlite3.connect(database)
|
||||
connection.execute(
|
||||
"""
|
||||
CREATE TABLE scans (
|
||||
id TEXT PRIMARY KEY,
|
||||
repository_path TEXT NOT NULL,
|
||||
repository_name TEXT NOT NULL,
|
||||
scanned_at TEXT NOT NULL,
|
||||
health_score INTEGER NOT NULL,
|
||||
report_json TEXT NOT NULL
|
||||
)
|
||||
"""
|
||||
)
|
||||
connection.execute(
|
||||
"INSERT INTO scans VALUES (?, ?, ?, ?, ?, ?)",
|
||||
(report.id, report.repository_path, report.repository_name, report.scanned_at.isoformat(), 100, report.model_dump_json()),
|
||||
)
|
||||
connection.commit()
|
||||
connection.close()
|
||||
|
||||
store = ScanStore(str(database))
|
||||
|
||||
assert store.get_state("missing") is None
|
||||
assert store.repository_count() == 1
|
||||
migrated = store.get("legacy-scan")
|
||||
assert migrated is not None
|
||||
assert migrated.source.provider == "local"
|
||||
assert migrated.source.repository_id is not None
|
||||
assert store.list_repositories()[0].last_scan_id == "legacy-scan"
|
||||
connection = sqlite3.connect(database)
|
||||
assert connection.execute("PRAGMA user_version").fetchone()[0] == SCHEMA_VERSION
|
||||
connection.close()
|
||||
|
||||
|
||||
def test_schema_upgrade_creates_a_timestamped_pre_migration_backup(tmp_path: Path) -> None:
|
||||
database = tmp_path / "history.db"
|
||||
repository = tmp_path / "repo"
|
||||
repository.mkdir()
|
||||
(repository / "README.md").write_text("# Demo\n", encoding="utf-8")
|
||||
(repository / ".gitignore").write_text("*.db\n", encoding="utf-8")
|
||||
|
||||
original = ScanStore(str(database))
|
||||
saved = original.save(scan_repository(str(repository)))
|
||||
connection = sqlite3.connect(database)
|
||||
connection.execute("PRAGMA user_version = 3")
|
||||
connection.commit()
|
||||
connection.close()
|
||||
|
||||
migrated = ScanStore(str(database))
|
||||
|
||||
assert list(tmp_path.glob("history.db.pre-v3-*.bak"))
|
||||
assert migrated.get(saved.id) is not None
|
||||
Reference in new issue
Block a user