From 68fc8980428d01fa07fc380331a57ab5cce77a21 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Thu, 19 Mar 2026 10:05:07 -0700 Subject: [PATCH 1/2] Fix: Resolve more instances of tests which mutated global states (#12395) --- src/documents/tests/test_api_status.py | 18 +++++++++++------- src/paperless_ai/tests/conftest.py | 10 ++++++++++ src/paperless_ai/tests/test_ai_indexing.py | 8 -------- src/paperless_ai/tests/test_embedding.py | 9 --------- src/paperless_mail/tests/test_mail_oauth.py | 14 +++++++------- 5 files changed, 28 insertions(+), 31 deletions(-) create mode 100644 src/paperless_ai/tests/conftest.py diff --git a/src/documents/tests/test_api_status.py b/src/documents/tests/test_api_status.py index 409f4bd7f..705f28145 100644 --- a/src/documents/tests/test_api_status.py +++ b/src/documents/tests/test_api_status.py @@ -101,13 +101,17 @@ class TestSystemStatus(APITestCase): - The response contains the correct install type """ self.client.force_login(self.user) - os.environ["PNGX_CONTAINERIZED"] = "1" - response = self.client.get(self.ENDPOINT) - self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertEqual(response.data["install_type"], "docker") - os.environ["KUBERNETES_SERVICE_HOST"] = "http://localhost" - response = self.client.get(self.ENDPOINT) - self.assertEqual(response.data["install_type"], "kubernetes") + with mock.patch.dict(os.environ, {"PNGX_CONTAINERIZED": "1"}, clear=False): + response = self.client.get(self.ENDPOINT) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data["install_type"], "docker") + with mock.patch.dict( + os.environ, + {"PNGX_CONTAINERIZED": "1", "KUBERNETES_SERVICE_HOST": "http://localhost"}, + clear=False, + ): + response = self.client.get(self.ENDPOINT) + self.assertEqual(response.data["install_type"], "kubernetes") @mock.patch("redis.Redis.execute_command") def test_system_status_redis_ping(self, mock_ping) -> None: diff --git a/src/paperless_ai/tests/conftest.py b/src/paperless_ai/tests/conftest.py new file mode 100644 index 000000000..2d71476c7 --- /dev/null +++ b/src/paperless_ai/tests/conftest.py @@ -0,0 +1,10 @@ +from pathlib import Path + +import pytest +from pytest_django.fixtures import SettingsWrapper + + +@pytest.fixture +def temp_llm_index_dir(tmp_path: Path, settings: SettingsWrapper): + settings.LLM_INDEX_DIR = tmp_path + return tmp_path diff --git a/src/paperless_ai/tests/test_ai_indexing.py b/src/paperless_ai/tests/test_ai_indexing.py index 724ac43e4..c1e3b64d8 100644 --- a/src/paperless_ai/tests/test_ai_indexing.py +++ b/src/paperless_ai/tests/test_ai_indexing.py @@ -13,14 +13,6 @@ from documents.models import PaperlessTask from paperless_ai import indexing -@pytest.fixture -def temp_llm_index_dir(tmp_path): - original_dir = indexing.settings.LLM_INDEX_DIR - indexing.settings.LLM_INDEX_DIR = tmp_path - yield tmp_path - indexing.settings.LLM_INDEX_DIR = original_dir - - @pytest.fixture def real_document(db): return Document.objects.create( diff --git a/src/paperless_ai/tests/test_embedding.py b/src/paperless_ai/tests/test_embedding.py index f9dbfd85d..74151ff89 100644 --- a/src/paperless_ai/tests/test_embedding.py +++ b/src/paperless_ai/tests/test_embedding.py @@ -3,7 +3,6 @@ from unittest.mock import MagicMock from unittest.mock import patch import pytest -from django.conf import settings from documents.models import Document from paperless.models import LLMEmbeddingBackend @@ -19,14 +18,6 @@ def mock_ai_config(): yield MockAIConfig -@pytest.fixture -def temp_llm_index_dir(tmp_path): - original_dir = settings.LLM_INDEX_DIR - settings.LLM_INDEX_DIR = tmp_path - yield tmp_path - settings.LLM_INDEX_DIR = original_dir - - @pytest.fixture def mock_document(): doc = MagicMock(spec=Document) diff --git a/src/paperless_mail/tests/test_mail_oauth.py b/src/paperless_mail/tests/test_mail_oauth.py index 1f7033bdd..651094673 100644 --- a/src/paperless_mail/tests/test_mail_oauth.py +++ b/src/paperless_mail/tests/test_mail_oauth.py @@ -1,7 +1,6 @@ from datetime import timedelta from unittest import mock -from django.conf import settings from django.contrib.auth.models import Permission from django.contrib.auth.models import User from django.test import TestCase @@ -16,6 +15,13 @@ from paperless_mail.models import MailAccount from paperless_mail.oauth import PaperlessMailOAuth2Manager +@override_settings( + OAUTH_CALLBACK_BASE_URL="http://localhost:8000", + GMAIL_OAUTH_CLIENT_ID="test_gmail_client_id", + GMAIL_OAUTH_CLIENT_SECRET="test_gmail_client_secret", + OUTLOOK_OAUTH_CLIENT_ID="test_outlook_client_id", + OUTLOOK_OAUTH_CLIENT_SECRET="test_outlook_client_secret", +) class TestMailOAuth( TestCase, ): @@ -31,12 +37,6 @@ class TestMailOAuth( self.user.save() self.client.force_login(self.user) self.mail_account_handler = MailAccountHandler() - # Mock settings - settings.OAUTH_CALLBACK_BASE_URL = "http://localhost:8000" - settings.GMAIL_OAUTH_CLIENT_ID = "test_gmail_client_id" - settings.GMAIL_OAUTH_CLIENT_SECRET = "test_gmail_client_secret" - settings.OUTLOOK_OAUTH_CLIENT_ID = "test_outlook_client_id" - settings.OUTLOOK_OAUTH_CLIENT_SECRET = "test_outlook_client_secret" super().setUp() def test_generate_paths(self) -> None: From f7c12d550a37f983d2757de052f5c88be4061ddf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Mar 2026 11:02:16 -0700 Subject: [PATCH 2/2] Chore(deps): Bump tinytag in the uv group across 1 directory (#12396) Bumps the uv group with 1 update in the / directory: [tinytag](https://github.com/tinytag/tinytag). Updates `tinytag` from 2.2.0 to 2.2.1 - [Release notes](https://github.com/tinytag/tinytag/releases) - [Commits](https://github.com/tinytag/tinytag/compare/2.2.0...2.2.1) --- updated-dependencies: - dependency-name: tinytag dependency-version: 2.2.1 dependency-type: indirect dependency-group: uv ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- uv.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/uv.lock b/uv.lock index 0698948c5..66cfc41ac 100644 --- a/uv.lock +++ b/uv.lock @@ -4754,11 +4754,11 @@ wheels = [ [[package]] name = "tinytag" -version = "2.2.0" +version = "2.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/98/07/fb260bac73119f369a10e884016516d07cd760b5068e703773f83dd5e7bf/tinytag-2.2.0.tar.gz", hash = "sha256:f15b082510f6e0fc717e597edc8759d6f2d3ff6194ac0f3bcd675a9a09d9b798", size = 38120, upload-time = "2025-12-15T21:10:19.093Z" } +sdist = { url = "https://files.pythonhosted.org/packages/96/59/8a8cb2331e2602b53e4dc06960f57d1387a2b18e7efd24e5f9cb60ea4925/tinytag-2.2.1.tar.gz", hash = "sha256:e6d06610ebe7cd66fd07be2d3b9495914ab32654a5e47657bb8cd44c2484523c", size = 38214, upload-time = "2026-03-15T18:48:01.11Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/e2/9818fcebb348237389d2ac2fea97cf2b2638378a0866105a45ae9be49728/tinytag-2.2.0-py3-none-any.whl", hash = "sha256:d2cf3ef8ee0f6c854663f77d9d5f8159ee1c834c70f5ea4f214ddc4af8148f79", size = 32861, upload-time = "2025-12-15T21:10:17.63Z" }, + { url = "https://files.pythonhosted.org/packages/ce/34/d50e338631baaf65ec5396e70085e5de0b52b24b28db1ffbc1c6e82190dc/tinytag-2.2.1-py3-none-any.whl", hash = "sha256:ed8b1e6d25367937e3321e054f4974f9abfde1a3e0a538824c87da377130c2b6", size = 32927, upload-time = "2026-03-15T18:47:59.613Z" }, ] [[package]]