1
0
mirror of https://github.com/django/django.git synced 2024-12-22 17:16:24 +00:00

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+..
This commit is contained in:
Tainara Palmeira 2024-10-28 14:46:20 +01:00 committed by Claude Paroz
parent d7f78eb5d6
commit fc22fdd34f
2 changed files with 8 additions and 18 deletions

View File

@ -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)

View File

@ -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):