On 1/18/26 00:13, Khem Raj wrote:
> on qemuarm64 running on arm64 build host with kvm I am seeing this
>
> AssertionError:
> Failed ptests:
> {'python3-django': ['Applying_admin.0001_initial..._OK',
> 'Applying_admin.0002_logentry_remove_auto_add..._OK',
>
> 'Applying_admin.0003_logentry_add_action_flag_choices..._OK',
> 'Applying_db_functions.0001_setup_extensions..._OK',
> 'Applying_db_functions.0002_create_test_models..._OK',
> 'Applying_sites.0001_initial..._OK',
> 'Applying_flatpages.0001_initial..._OK',
>
> 'Applying_migration_test_data_persistence.0001_initial..._OK',
>
> 'Applying_migration_test_data_persistence.0002_add_book..._OK',
> 'Applying_postgres_tests.0001_setup_extensions..._OK',
>
> 'Applying_postgres_tests.0002_create_test_models..._OK',
> 'Applying_redirects.0001_initial..._OK',
>
> 'Applying_redirects.0002_alter_redirect_new_path_help_text..._OK',
> 'Applying_sites.0002_alter_domain_unique..._OK',
>
> 'PASS:_Regression_test_for_#10256..._If_there_is_a_values']}
>
> All tests seem to pass here but it still times out perhaps ?
>
No, it seems to be a problem with my sed that transforms the results.
Thanks for the heads up, will send an update later during the day.
> On Fri, Jan 16, 2026 at 7:33 AM Gyorgy Sarvari via
> lists.openembedded.org <http://lists.openembedded.org>
> <[email protected]> wrote:
>
> Execute the standard, non-selenium tests. The execution is
> on the slower side: on my idle machine, KVM enabled it takes
> a bit more than 2.5 minutes to execute it (executing tests with
> 4 threads parallel, 1/core, the default configuration). If the
> machine is
> under load, it easily grows to over 10 minutes.
>
> Added two backported patches for Django 5.2 to fix some tests that
> would otherwise fail:
>
> 0001-Fix-test_strip_tags-test.patch: tag stripping tests failed due to
> changed Python behavior
>
> 0001-fix-test_msgfmt_error_including_non_ascii-test.patch: tests were
> updated to work with msgfmt 0.25
>
> Most of the skipped tests require some specific database backend
> (Postgres, MySQL, Oracle...) or are Selenium tests.
>
> When the default parallelism is used for the execution, the package
> needs 3GB RAM at least.
>
> The output is very long (the suite contains way over 15k tests),
> so I omit the example output here.
>
> The current summary (for v5.2.9):
> Ran 18121 tests in 140.891s
> OK (skipped=1394, expected failures=5)
>
> Signed-off-by: Gyorgy Sarvari <[email protected]>
> ---
> .../ptest-packagelists-meta-python.inc | 1 +
> .../images/meta-python-image-ptest.bb
> <http://meta-python-image-ptest.bb> | 1 +
> .../python/python3-django.inc | 32 +++++++-
> .../0001-Fix-test_strip_tags-test.patch | 76
> +++++++++++++++++++
> ...sgfmt_error_including_non_ascii-test.patch | 71 +++++++++++++++++
> .../python/python3-django/run-ptest | 19 +++++
> .../python/python3-django_5.2.9.bb
> <http://python3-django_5.2.9.bb> | 3 +
> 7 files changed, 202 insertions(+), 1 deletion(-)
> create mode 100644
>
> meta-python/recipes-devtools/python/python3-django/0001-Fix-test_strip_tags-test.patch
> create mode 100644
>
> meta-python/recipes-devtools/python/python3-django/0001-fix-test_msgfmt_error_including_non_ascii-test.patch
> create mode 100644
> meta-python/recipes-devtools/python/python3-django/run-ptest
>
> diff --git
> a/meta-python/conf/include/ptest-packagelists-meta-python.inc
> b/meta-python/conf/include/ptest-packagelists-meta-python.inc
> index 3b21c7cfa2..d62f138798 100644
> --- a/meta-python/conf/include/ptest-packagelists-meta-python.inc
> +++ b/meta-python/conf/include/ptest-packagelists-meta-python.inc
> @@ -129,6 +129,7 @@ PTESTS_FAST_META_PYTHON = "\
>
> PTESTS_SLOW_META_PYTHON = "\
> python3-arrow \
> + python3-django \
> python3-ecdsa \
> python3-fastapi \
> python3-google-auth \
> diff --git
> a/meta-python/recipes-core/images/meta-python-image-ptest.bb
> <http://meta-python-image-ptest.bb>
> b/meta-python/recipes-core/images/meta-python-image-ptest.bb
> <http://meta-python-image-ptest.bb>
> index 794b9d1e4d..c5eb0b6403 100644
> --- a/meta-python/recipes-core/images/meta-python-image-ptest.bb
> <http://meta-python-image-ptest.bb>
> +++ b/meta-python/recipes-core/images/meta-python-image-ptest.bb
> <http://meta-python-image-ptest.bb>
> @@ -32,6 +32,7 @@ QB_MEM:virtclass-mcextend-python3-scrypt = "-m 2048"
> # Needs atleast 5G to avoid OOMs
> QB_MEM:virtclass-mcextend-python3-fastjsonschema = "-m 5120"
> QB_MEM:virtclass-mcextend-python3-pillow = "-m 2048"
> +QB_MEM:virtclass-mcextend-python3-django = "-m 3072"
>
> TEST_SUITES = "ping ssh parselogs ptest"
>
> diff --git
> a/meta-python/recipes-devtools/python/python3-django.inc
> b/meta-python/recipes-devtools/python/python3-django.inc
> index c6475d2079..317793abba 100644
> --- a/meta-python/recipes-devtools/python/python3-django.inc
> +++ b/meta-python/recipes-devtools/python/python3-django.inc
> @@ -6,7 +6,9 @@ LIC_FILES_CHKSUM =
> "file://LICENSE;md5=f09eb47206614a4954c51db8a94840fa"
> PYPI_PACKAGE = "django"
> UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
>
> -inherit pypi
> +inherit pypi ptest
> +
> +SRC_URI += "file://run-ptest"
>
> FILES:${PN} += "${datadir}/django"
>
> @@ -31,3 +33,31 @@ RDEPENDS:${PN} += "\
> "
>
> CVE_PRODUCT = "django"
> +
> +do_install_ptest(){
> + install -d ${D}${PTEST_PATH}//docs/_ext
> + install -m 0644 ${S}/docs/_ext/github_links.py
> ${D}${PTEST_PATH}/docs/_ext
> +
> + cp -r ${S}/tests ${D}${PTEST_PATH}
> + sed -i 's,/usr/bin/env python,/usr/bin/env python3,'
> ${D}${PTEST_PATH}/tests/runtests.py
> + ln -sr ${D}${libdir}/python3.*/site-packages/django
> ${D}${PTEST_PATH}/django
> +}
> +
> +RDEPENDS:${PN}-ptest += " \
> + gettext \
> + python3-asgiref \
> + python3-bcrypt \
> + python3-compile \
> + python3-docutils \
> + python3-fcntl \
> + python3-jinja2 \
> + python3-misc \
> + python3-numpy \
> + python3-pillow \
> + python3-pyyaml \
> + python3-sqlite3 \
> + python3-statistics \
> + python3-tblib \
> + python3-zoneinfo \
> + tzdata \
> +"
> diff --git
>
> a/meta-python/recipes-devtools/python/python3-django/0001-Fix-test_strip_tags-test.patch
>
> b/meta-python/recipes-devtools/python/python3-django/0001-Fix-test_strip_tags-test.patch
> new file mode 100644
> index 0000000000..f77c3b963a
> --- /dev/null
> +++
>
> b/meta-python/recipes-devtools/python/python3-django/0001-Fix-test_strip_tags-test.patch
> @@ -0,0 +1,76 @@
> +From 7b80b2186300620931009fd62c2969f108fe7a62 Mon Sep 17 00:00:00
> 2001
> +From: Jacob Walls <[email protected]>
> +Date: Thu, 11 Dec 2025 08:44:19 -0500
> +Subject: [PATCH] Refs #36499 -- Adjusted test_strip_tags
> following Python
> + behavior change for incomplete entities.
> +
> +Upstream-Status: Backport
>
> [https://github.com/django/django/commit/7b80b2186300620931009fd62c2969f108fe7a62]
> +Signed-off-by: Gyorgy Sarvari <[email protected]>
> +---
> + tests/utils_tests/test_html.py | 25 ++++++++++++++++++++-----
> + 1 file changed, 20 insertions(+), 5 deletions(-)
> +
> +diff --git a/tests/utils_tests/test_html.py
> b/tests/utils_tests/test_html.py
> +index 7412c2624c73..ee115aaf1cf2 100644
> +--- a/tests/utils_tests/test_html.py
> ++++ b/tests/utils_tests/test_html.py
> +@@ -1,3 +1,4 @@
> ++import math
> + import os
> + import sys
> + from datetime import datetime
> +@@ -124,7 +125,7 @@
> + # old and new results. The check below is temporary
> until all supported
> + # Python versions and CI workers include the fix. See:
> + # https://github.com/python/cpython/commit/6eb6c5db
> +- min_fixed = {
> ++ min_fixed_security = {
> + (3, 14): (3, 14),
> + (3, 13): (3, 13, 6),
> + (3, 12): (3, 12, 12),
> +@@ -132,7 +133,21 @@
> + (3, 10): (3, 10, 19),
> + (3, 9): (3, 9, 24),
> + }
> +- htmlparser_fixed = sys.version_info >=
> min_fixed[sys.version_info[:2]]
> ++ # Similarly, there was a fix for terminating incomplete
> entities. See:
> ++ # https://github.com/python/cpython/commit/95296a9d
> ++ min_fixed_incomplete_entities = {
> ++ (3, 14): (3, 14, 1),
> ++ (3, 13): (3, 13, 10),
> ++ (3, 12): (3, 12, math.inf), # not fixed in 3.12.
> ++ }
> ++ major_version = sys.version_info[:2]
> ++ htmlparser_fixed_security = sys.version_info >=
> min_fixed_security.get(
> ++ major_version, major_version
> ++ )
> ++ htmlparser_fixed_incomplete_entities = (
> ++ sys.version_info
> ++ >= min_fixed_incomplete_entities.get(major_version,
> major_version)
> ++ )
> + items = (
> + (
> + "<p>See: 'é is an apostrophe followed
> by e acute</p>",
> +@@ -159,16 +174,19 @@
> + # https://bugs.python.org/issue20288
> + ("&gotcha&#;<>", "&gotcha&#;<>"),
> + ("<sc<!-- -->ript>test<<!-- -->/script>", "ript>test"),
> +- ("<script>alert()</script>&h", "alert()h"),
> ++ (
> ++ "<script>alert()</script>&h",
> ++ "alert()&h;" if
> htmlparser_fixed_incomplete_entities else "alert()h",
> ++ ),
> + (
> + "><!" + ("&" * 16000) + "D",
> +- ">" if htmlparser_fixed else "><!" + ("&" *
> 16000) + "D",
> ++ ">" if htmlparser_fixed_security else "><!" +
> ("&" * 16000) + "D",
> + ),
> + ("X<<<<br>br>br>br>X", "XX"),
> + ("<" * 50 + "a>" * 50, ""),
> + (
> + ">" + "<a" * 500 + "a",
> +- ">" if htmlparser_fixed else ">" + "<a" * 500 + "a",
> ++ ">" if htmlparser_fixed_security else ">" + "<a"
> * 500 + "a",
> + ),
> + ("<a" * 49 + "a" * 951, "<a" * 49 + "a" * 951),
> + ("<" + "a" * 1_002, "<" + "a" * 1_002),
> diff --git
>
> a/meta-python/recipes-devtools/python/python3-django/0001-fix-test_msgfmt_error_including_non_ascii-test.patch
>
> b/meta-python/recipes-devtools/python/python3-django/0001-fix-test_msgfmt_error_including_non_ascii-test.patch
> new file mode 100644
> index 0000000000..6f887b3015
> --- /dev/null
> +++
>
> b/meta-python/recipes-devtools/python/python3-django/0001-fix-test_msgfmt_error_including_non_ascii-test.patch
> @@ -0,0 +1,71 @@
> +From 1960ecd879ce351226b36e7ac0aa25616241b6f6 Mon Sep 17 00:00:00
> 2001
> +From: Jericho Serrano
> <[email protected]
> <mailto:118679068%[email protected]>>
> +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.
> +
> +Upstream-Status: Backport
>
> [https://github.com/django/django/commit/1960ecd879ce351226b36e7ac0aa25616241b6f6]
> +Signed-off-by: Gyorgy Sarvari <[email protected]>
> +---
> + 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 4b0bb9f6bb16..3a57dbf0765f 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):
> diff --git
> a/meta-python/recipes-devtools/python/python3-django/run-ptest
> b/meta-python/recipes-devtools/python/python3-django/run-ptest
> new file mode 100644
> index 0000000000..dd257cc843
> --- /dev/null
> +++ b/meta-python/recipes-devtools/python/python3-django/run-ptest
> @@ -0,0 +1,19 @@
> +#!/bin/sh
> +useradd tester || echo test user exists already
> +
> +# We need $(pwd), because some tests import modules from the
> actual tests folder
> +# Also, there is one module in the docs/_ext folder that is
> imported, and that
> +# module accesses other modules by a relative path to itself.
> +export PYTHONPATH=$(pwd):$(pwd)/docs/_ext:$PYTHONPATH
> +
> +cd tests
> +
> +su tester -c "./runtests.py --noinput -v 2" 2>&1 | \
> + tee ../testoutput.log | \
> + sed -e '/\.\.\. ok/ s/^/PASS: /g' \
> + -e '/\.\.\. [ERROR|FAIL]/ s/^/FAIL: /g' \
> + -e '/\.\.\. skipped/ s/^/SKIP: /g' \
> + -e 's/ \.\.\. ok//g' \
> + -e 's/ \.\.\. ERROR//g' \
> + -e 's/ \.\.\. FAIL//g' \
> + -e 's/ \.\.\. skipped//g'
> diff --git
> a/meta-python/recipes-devtools/python/python3-django_5.2.9.bb
> <http://python3-django_5.2.9.bb>
> b/meta-python/recipes-devtools/python/python3-django_5.2.9.bb
> <http://python3-django_5.2.9.bb>
> index c0aff44a78..fa9fb2e929 100644
> --- a/meta-python/recipes-devtools/python/python3-django_5.2.9.bb
> <http://python3-django_5.2.9.bb>
> +++ b/meta-python/recipes-devtools/python/python3-django_5.2.9.bb
> <http://python3-django_5.2.9.bb>
> @@ -1,6 +1,9 @@
> require python3-django.inc
> inherit python_setuptools_build_meta
>
> +SRC_URI +=
> "file://0001-fix-test_msgfmt_error_including_non_ascii-test.patch \
> + file://0001-Fix-test_strip_tags-test.patch \
> +"
> SRC_URI[sha256sum] =
> "16b5ccfc5e8c27e6c0561af551d2ea32852d7352c67d452ae3e76b4f6b2ca495"
>
> RDEPENDS:${PN} += "\
>
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#123568):
https://lists.openembedded.org/g/openembedded-devel/message/123568
Mute This Topic: https://lists.openembedded.org/mt/117299234/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-