* Fixed a regression in Django 5.2.1 that prevented the usage of UNNEST PostgreSQL strategy of QuerySet.bulk_create() with foreign keys * Fixed a crash in Django 5.2 when filtering against a composite primary key using a tuple containing expressions * Fixed a crash in Django 5.2 when validating a model that uses GeneratedField or constraints composed of Q and Case lookups * Added compatibility for docutils 0.22 * Fixed a crash in Django 5.2 when using a ManyToManyField on a model with a composite primary key, by extending the fields.E347 system check - Convert to libalternatives on SLE-16-based and newer systems OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:django/python-Django?expand=0&rev=212
70 lines
2.7 KiB
Diff
70 lines
2.7 KiB
Diff
From 3609c463a4cfc5a7e76f4d4ba008c5096b1f1437 Mon Sep 17 00:00:00 2001
|
|
From: Jericho Serrano <118679068+jericho1050@users.noreply.github.com>
|
|
Date: Fri, 6 Jun 2025 04:58:29 +0800
|
|
Subject: [PATCH] Fixed #36421 -- Made test_msgfmt_error_including_non_ascii
|
|
compatible with msgfmt 0.25.
|
|
|
|
---
|
|
tests/i18n/test_compilation.py | 25 +++++++++++++++++++++++--
|
|
1 file changed, 23 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/tests/i18n/test_compilation.py b/tests/i18n/test_compilation.py
|
|
index 4b0bb9f6bb1..3a57dbf0765 100644
|
|
--- a/tests/i18n/test_compilation.py
|
|
+++ b/tests/i18n/test_compilation.py
|
|
@@ -1,5 +1,6 @@
|
|
import gettext as gettext_module
|
|
import os
|
|
+import re
|
|
import stat
|
|
import unittest
|
|
from io import StringIO
|
|
@@ -8,10 +9,12 @@
|
|
from unittest import mock
|
|
|
|
from django.core.management import CommandError, call_command, execute_from_command_line
|
|
-from django.core.management.utils import find_command
|
|
+from django.core.management.utils import find_command, popen_wrapper
|
|
from django.test import SimpleTestCase, override_settings
|
|
from django.test.utils import captured_stderr, captured_stdout
|
|
from django.utils import translation
|
|
+from django.utils.encoding import DEFAULT_LOCALE_ENCODING
|
|
+from django.utils.functional import cached_property
|
|
from django.utils.translation import gettext
|
|
|
|
from .utils import RunInTmpDirMixin, copytree
|
|
@@ -254,6 +257,17 @@ def test_no_dirs_accidentally_skipped(self):
|
|
|
|
|
|
class CompilationErrorHandling(MessageCompilationTests):
|
|
+ @cached_property
|
|
+ def msgfmt_version(self):
|
|
+ # Note that msgfmt is installed via GNU gettext tools, hence the msgfmt
|
|
+ # version should align to gettext.
|
|
+ out, err, status = popen_wrapper(
|
|
+ ["msgfmt", "--version"],
|
|
+ stdout_encoding=DEFAULT_LOCALE_ENCODING,
|
|
+ )
|
|
+ m = re.search(r"(\d+)\.(\d+)\.?(\d+)?", out)
|
|
+ return tuple(int(d) for d in m.groups() if d is not None)
|
|
+
|
|
def test_error_reported_by_msgfmt(self):
|
|
# po file contains wrong po formatting.
|
|
with self.assertRaises(CommandError):
|
|
@@ -278,7 +292,14 @@ def test_msgfmt_error_including_non_ascii(self):
|
|
call_command(
|
|
"compilemessages", locale=["ko"], stdout=StringIO(), stderr=stderr
|
|
)
|
|
- self.assertIn("' cannot start a field name", stderr.getvalue())
|
|
+ if self.msgfmt_version < (0, 25):
|
|
+ error_msg = "' cannot start a field name"
|
|
+ else:
|
|
+ error_msg = (
|
|
+ "a field name starts with a character that is not alphanumerical "
|
|
+ "or underscore"
|
|
+ )
|
|
+ self.assertIn(error_msg, stderr.getvalue())
|
|
|
|
|
|
class ProjectAndAppTests(MessageCompilationTests):
|