From cf63e5c6cd5ac5371a67c6dec9c1e279d96ebba9 Mon Sep 17 00:00:00 2001 From: Russell Ballestrini Date: Sun, 11 Jan 2026 09:17:49 -0500 Subject: [PATCH] Fix tiktoken mock: use class not instance, remove TESTING check --- models.py | 2 +- tests/conftest.py | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/models.py b/models.py index 27cb299..aecc5da 100644 --- a/models.py +++ b/models.py @@ -125,7 +125,7 @@ class Message(db.Model): if self.token_count is None: if self.is_base64_image(): self.token_count = 0 - elif not TIKTOKEN_AVAILABLE or os.environ.get("TESTING"): + elif not TIKTOKEN_AVAILABLE: # Fallback: estimate ~4 chars per token when tiktoken unavailable self.token_count = len(self.content) // 4 + 1 else: diff --git a/tests/conftest.py b/tests/conftest.py index da03738..da7afa6 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -36,8 +36,9 @@ class MockTiktoken: # Insert mock tiktoken into sys.modules BEFORE any imports +# Use the class itself (not an instance) so patching works correctly if 'tiktoken' not in sys.modules: - sys.modules['tiktoken'] = MockTiktoken() + sys.modules['tiktoken'] = MockTiktoken def pytest_configure(config): @@ -46,12 +47,12 @@ def pytest_configure(config): Ensures tiktoken is mocked before any test imports happen. """ if 'tiktoken' not in sys.modules: - sys.modules['tiktoken'] = MockTiktoken() + sys.modules['tiktoken'] = MockTiktoken else: # If tiktoken was already imported, patch its functions - import tiktoken - tiktoken.encoding_for_model = MockTiktoken.encoding_for_model - tiktoken.get_encoding = MockTiktoken.get_encoding + tiktoken_mod = sys.modules['tiktoken'] + tiktoken_mod.encoding_for_model = MockTiktoken.encoding_for_model + tiktoken_mod.get_encoding = MockTiktoken.get_encoding # =============================================================================