From fc22fdd34f1e55adde161f5f2dca8db90bbfce80 Mon Sep 17 00:00:00 2001 From: Tainara Palmeira Date: Mon, 28 Oct 2024 14:46:20 +0100 Subject: [PATCH] Refs #35844 -- Expanded compatibility for expected error messages in command tests on Python 3.12 and 3.13. Updated CommandTests.test_subparser_invalid_option and CommandDBOptionChoiceTests.test_invalid_choice_db_option to use assertRaisesRegex() for compatibility with modified error messages in Python 3.12, 3.13, and 3.14+.. --- tests/admin_scripts/tests.py | 18 ++++++------------ tests/user_commands/tests.py | 8 ++------ 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/tests/admin_scripts/tests.py b/tests/admin_scripts/tests.py index fefe4f50bb..6fdd873661 100644 --- a/tests/admin_scripts/tests.py +++ b/tests/admin_scripts/tests.py @@ -34,7 +34,7 @@ from django.db.migrations.recorder import MigrationRecorder from django.test import LiveServerTestCase, SimpleTestCase, TestCase, override_settings from django.test.utils import captured_stderr, captured_stdout from django.urls import path -from django.utils.version import PY313, PY314, get_docs_version +from django.utils.version import PY313, get_docs_version from django.views.static import serve from . import urls @@ -2355,16 +2355,10 @@ class Discovery(SimpleTestCase): class CommandDBOptionChoiceTests(SimpleTestCase): def test_invalid_choice_db_option(self): - if PY314: - expected_error = ( - "Error: argument --database: invalid choice: 'deflaut' " - "(choose from default, other)" - ) - else: - expected_error = ( - "Error: argument --database: invalid choice: 'deflaut' " - "(choose from 'default', 'other')" - ) + expected_error = ( + r"Error: argument --database: invalid choice: 'deflaut' " + r"\(choose from '?default'?, '?other'?\)" + ) args = [ "changepassword", "createsuperuser", @@ -2384,7 +2378,7 @@ class CommandDBOptionChoiceTests(SimpleTestCase): ] for arg in args: - with self.assertRaisesMessage(CommandError, expected_error): + with self.assertRaisesRegex(CommandError, expected_error): call_command(arg, "--database", "deflaut", verbosity=0) diff --git a/tests/user_commands/tests.py b/tests/user_commands/tests.py index 8dd07e1c67..2a1e904f3b 100644 --- a/tests/user_commands/tests.py +++ b/tests/user_commands/tests.py @@ -20,7 +20,6 @@ from django.db import connection from django.test import SimpleTestCase, override_settings from django.test.utils import captured_stderr, extend_sys_path from django.utils import translation -from django.utils.version import PY314 from .management.commands import dance @@ -401,11 +400,8 @@ class CommandTests(SimpleTestCase): self.assertIn("bar", out.getvalue()) def test_subparser_invalid_option(self): - if PY314: - msg = "invalid choice: 'test' (choose from foo)" - else: - msg = "invalid choice: 'test' (choose from 'foo')" - with self.assertRaisesMessage(CommandError, msg): + msg = r"invalid choice: 'test' \(choose from '?foo'?\)" + with self.assertRaisesRegex(CommandError, msg): management.call_command("subparser", "test", 12) msg = "Error: the following arguments are required: subcommand" with self.assertRaisesMessage(CommandError, msg):