diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..bcd0466 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,15 @@ +"""Shared test configuration — sets env vars ONCE before any test module runs. + +The env must be consistent for the whole pytest session: server.py freezes +COLLECTION_NAME/QDRANT_URL at import time, while the integration fixture +reads os.environ at fixture time. If any test module mutates os.environ after +that (test_server.py used to set COLLECTION_NAME='test'), the fixture creates +a different collection than the one server functions query → 404. +Keep all env wiring here so import order no longer matters. +""" + +import os + +os.environ.setdefault("QDRANT_URL", "http://localhost:6333") +os.environ.setdefault("COLLECTION_NAME", "test_mcp_maildir") +os.environ.setdefault("EMBEDDING_MODEL_NAME", "BAAI/bge-small-en-v1.5") diff --git a/tests/test_integration.py b/tests/test_integration.py index 4220fa4..c74251b 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -1,13 +1,14 @@ -"""Integration tests for mcp-maildir with a real Qdrant instance.""" +"""Integration tests for mcp-maildir with a real Qdrant instance. + +Env vars (QDRANT_URL, COLLECTION_NAME, EMBEDDING_MODEL_NAME) are set in +tests/conftest.py — don't set them here, they must match server.py's +import-time snapshot for every module in the session. +""" import os import uuid import pytest -os.environ["QDRANT_URL"] = "http://localhost:6333" -os.environ["COLLECTION_NAME"] = "test_mcp_maildir" -os.environ["EMBEDDING_MODEL_NAME"] = "BAAI/bge-small-en-v1.5" - from server import get_qdrant_client, get_embedding_model, search_emails, read_email from qdrant_client.http import models diff --git a/tests/test_server.py b/tests/test_server.py index 440945e..34ad7db 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -1,8 +1,8 @@ -"""Unit tests for mcp-maildir server pure functions.""" +"""Unit tests for mcp-maildir server pure functions. -import os -os.environ["QDRANT_URL"] = "http://localhost:6333" -os.environ["COLLECTION_NAME"] = "test" +Env vars are set in tests/conftest.py (shared session-wide) — see the +conftest docstring for why test modules must not touch os.environ. +""" from server import ( normalize_email_address,