Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e883a791fb | ||
|
|
3b575bbf83
|
||
|
|
4d9bd4c470 | ||
|
|
cc74f384bf | ||
|
|
52642f9d99 |
No files matched your search
@@ -20,7 +20,7 @@ jobs:
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
||||
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
||||
with:
|
||||
python-version: "3.13"
|
||||
python-version: "3.14"
|
||||
- name: Install dependencies
|
||||
run: pip install -r requirements.txt pytest
|
||||
- name: Run unit tests
|
||||
@@ -57,7 +57,7 @@ jobs:
|
||||
|
||||
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
||||
with:
|
||||
python-version: "3.13"
|
||||
python-version: "3.14"
|
||||
- name: Install dependencies
|
||||
run: pip install -r requirements.txt pytest
|
||||
- name: Run integration tests
|
||||
|
||||
@@ -20,9 +20,11 @@ jobs:
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
||||
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
||||
with:
|
||||
python-version: "3.13"
|
||||
python-version: "3.14"
|
||||
- name: Install dependencies
|
||||
run: pip install -r requirements.txt pytest
|
||||
run: pip install -r requirements.txt pytest ruff==0.17.1
|
||||
- name: Lint (undefined names)
|
||||
run: ruff check src/ tests/ --select F821
|
||||
- name: Run unit tests
|
||||
run: pytest tests/ -v
|
||||
env:
|
||||
@@ -57,7 +59,7 @@ jobs:
|
||||
|
||||
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
||||
with:
|
||||
python-version: "3.13"
|
||||
python-version: "3.14"
|
||||
- name: Install dependencies
|
||||
run: pip install -r requirements.txt pytest
|
||||
- name: Run integration tests
|
||||
|
||||
@@ -20,7 +20,7 @@ jobs:
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
||||
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
||||
with:
|
||||
python-version: "3.13"
|
||||
python-version: "3.14"
|
||||
- name: Install dependencies
|
||||
run: pip install -r requirements.txt pytest
|
||||
- name: Run unit tests
|
||||
|
||||
@@ -20,7 +20,7 @@ jobs:
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
||||
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
||||
with:
|
||||
python-version: "3.13"
|
||||
python-version: "3.14"
|
||||
- name: Install dependencies
|
||||
run: pip install -r requirements.txt pytest
|
||||
- name: Run unit tests
|
||||
@@ -57,7 +57,7 @@ jobs:
|
||||
|
||||
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
||||
with:
|
||||
python-version: "3.13"
|
||||
python-version: "3.14"
|
||||
- name: Install dependencies
|
||||
run: pip install -r requirements.txt pytest
|
||||
- name: Run integration tests
|
||||
|
||||
@@ -29,6 +29,13 @@ MAILDIR_FOLDERS = os.environ.get("MAILDIR_FOLDERS", "")
|
||||
QDRANT_URL = os.environ.get("QDRANT_URL", "")
|
||||
COLLECTION_NAME = os.environ.get("COLLECTION_NAME", "")
|
||||
|
||||
# Embedding model and batching. EMBEDDING_MODEL_NAME MUST stay in sync with the
|
||||
# one used by server.py: indexer and server have to embed with the same model,
|
||||
# otherwise the vectors stored in Qdrant are not comparable with query vectors.
|
||||
EMBEDDING_MODEL_NAME = os.environ.get("EMBEDDING_MODEL_NAME", "BAAI/bge-small-en-v1.5")
|
||||
BATCH_SIZE = int(os.environ.get("BATCH_SIZE", "100"))
|
||||
EMBEDDING_BATCH_SIZE = int(os.environ.get("EMBEDDING_BATCH_SIZE", "64"))
|
||||
|
||||
METADATA_COLLECTION = "mcp_indexer_metadata"
|
||||
INCREMENTAL_DAYS = int(os.environ.get("INCREMENTAL_DAYS", "7"))
|
||||
FORCE_REINDEX = os.environ.get("FORCE_REINDEX", "").lower() in ("1", "true", "yes")
|
||||
|
||||
@@ -21,6 +21,9 @@ from indexer import (
|
||||
parse_email_message,
|
||||
get_recent_keys,
|
||||
METADATA_COLLECTION,
|
||||
EMBEDDING_MODEL_NAME,
|
||||
BATCH_SIZE,
|
||||
EMBEDDING_BATCH_SIZE,
|
||||
)
|
||||
|
||||
|
||||
@@ -227,3 +230,25 @@ class TestGetRecentKeys:
|
||||
assert key.split(":")[0] in keys
|
||||
for k in keys:
|
||||
assert ":" not in k
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Regression: module-level constants consumed by main()
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
|
||||
def test_indexer_module_constants_are_defined():
|
||||
"""Regression (e32806a): the "make indexer importable without env" refactor
|
||||
dropped these three module-level definitions while main() kept using them,
|
||||
so every indexer run died with NameError before touching Qdrant."""
|
||||
assert isinstance(EMBEDDING_MODEL_NAME, str) and EMBEDDING_MODEL_NAME
|
||||
assert isinstance(BATCH_SIZE, int) and BATCH_SIZE > 0
|
||||
assert isinstance(EMBEDDING_BATCH_SIZE, int) and EMBEDDING_BATCH_SIZE > 0
|
||||
|
||||
|
||||
def test_embedding_model_is_the_same_as_the_server_one():
|
||||
"""Indexer and server must embed with the same model, otherwise the vectors
|
||||
stored by the indexer are not comparable with the query vectors."""
|
||||
from server import EMBEDDING_MODEL_NAME as server_embedding_model
|
||||
|
||||
assert EMBEDDING_MODEL_NAME == server_embedding_model
|
||||
Reference in new issue
Block a user