test: юнит-суит L1/L2/L3 + ГОСТ (41 тест) и гейт в CI перед деплоем
Первый настоящий автоматический тест-суит проекта — раньше регрессии ловились руками. Покрыта чистая логика детекции и форматирования (без БД/Redis/GPU/Ollama): - worker-indexer: L1 Winnowing (точные совпадения, идемпотентность отпечатка, диапазон signed int64) и L2 MinHash LSH (шинглы, Jaccard, near-duplicate + upsert через in-memory-фолбэк). - worker-gpu: L3 FAISS — возврат doc_id из PostgreSQL (IndexIDMap2), идемпотентность add_vectors (remove-before-add, без дублей), self-match ≈ 1, ранжирование. Прямо стережёт баги, из-за которых индекс переписывался. - worker-gost: ГОСТ 7.1-2003 и 7.0.5-2008 — авторы (≤3 / 4+ «и др.»/et al.), статья/книга/web, DOI, порядок сортировки кириллица→латиница, стр. в ссылке. Обвязка: per-service pytest.ini/conftest/requirements-test. scripts/run_tests.sh гоняет тесты в изолированных python:3.11-slim контейнерах (не засоряя хост), через Tsinghua-зеркало. CI: job `test` теперь гейтит `deploy` (needs: test) — падение тестов блокирует прод-деплой. make test / make test-one SVC=... Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
11
Makefile
11
Makefile
@@ -1,4 +1,4 @@
|
||||
.PHONY: dev build migrate logs shell-api shell-gpu lint test down ps restart clean test-up test-down test-logs test-ps
|
||||
.PHONY: dev build migrate logs shell-api shell-gpu lint test test-one down ps restart clean test-up test-down test-logs test-ps
|
||||
|
||||
# ─── Переменные ────────────────────────────────────────────────────────────────
|
||||
# Прод: docker-compose.prod.yml — app-сервисы + локальный ES, остальная инфра
|
||||
@@ -107,11 +107,14 @@ lint:
|
||||
lint-frontend:
|
||||
cd services/frontend && npm run lint
|
||||
|
||||
# Юнит-тесты чистой логики (L1/L2/L3 + ГОСТ) в изолированных контейнерах —
|
||||
# без БД/Redis/GPU. Тот же скрипт гоняет CI как гейт перед деплоем.
|
||||
test:
|
||||
$(COMPOSE_PROD) exec api pytest tests/ -v
|
||||
bash scripts/run_tests.sh
|
||||
|
||||
test-cov:
|
||||
$(COMPOSE_PROD) exec api pytest tests/ -v --cov=app --cov-report=html
|
||||
# Тесты одного сервиса, напр.: make test-one SVC=worker-gost
|
||||
test-one:
|
||||
bash scripts/run_tests.sh $(SVC)
|
||||
|
||||
# ─── Утилиты ──────────────────────────────────────────────────────────────────
|
||||
# ВНИМАНИЕ: -v удаляет только ЛОКАЛЬНЫЕ volume (es_prod_data, faiss_index_prod) —
|
||||
|
||||
Reference in New Issue
Block a user