[Pkg-mailman-hackers] Bug#1134838: hyperkitty: Please fix compatibility with Django 5.x

Chris Lamb lamby at debian.org
Fri Apr 24 22:36:51 BST 2026


Source: hyperkitty
Version: 1.3.12-4
Severity: normal
Tags: patch

Hi,

I'm in the process of preparing unstable for an upload of Django 5.2. To
this end, please apply the attached patch from upstream which fixes a
test failure under this version.

These changes are backwards compatible with Django version 4.2 that is
currently in unstable. I am using "Severity: normal" as I hope to upload
Django 5.2 very soon, but feel free to adjust.

(Patch attached.)


Regards,

-- 
      ,''`.
     : :'  :     Chris Lamb
     `. `'`      lamby at debian.org / chris-lamb.co.uk
       `-
-------------- next part --------------
diff --git debian/patches/0008-PATCH-fix-tests-Do-not-depend-on-Django-private-test.patch debian/patches/0008-PATCH-fix-tests-Do-not-depend-on-Django-private-test.patch
new file mode 100644
index 0000000..03b5b00
--- /dev/null
+++ debian/patches/0008-PATCH-fix-tests-Do-not-depend-on-Django-private-test.patch
@@ -0,0 +1,535 @@
+From: SATOH Fumiyasu <fumiyas at osstech.co.jp>
+Date: Thu, 25 Sep 2025 17:07:48 +0900
+Subject: [PATCH] fix: tests: Do not depend on Django private test methods
+
+Django 5.2 changes the django.test.TestCase._pre_setup() as the class
+method by the commit
+https://github.com/django/django/commit/8eca3e9bce519c21340312ee7846c92b27abea79
+for Django issue https://code.djangoproject.com/ticket/35660
+
+Source: upstream, https://gitlab.com/mailman/hyperkitty/-/commit/e815be11752ac6a3e839b155f0c43808619c56b0.patch
+---
+ hyperkitty/tests/_test_caching.py                     |  6 ++++++
+ hyperkitty/tests/commands/test_attachments_to_file.py |  2 ++
+ hyperkitty/tests/commands/test_import.py              |  2 ++
+ hyperkitty/tests/lib/test_analysis.py                 |  1 +
+ hyperkitty/tests/lib/test_mailman.py                  |  1 +
+ hyperkitty/tests/lib/test_posting.py                  |  1 +
+ hyperkitty/tests/models/test_lastview.py              |  1 +
+ hyperkitty/tests/models/test_mailinglist.py           |  5 +++++
+ hyperkitty/tests/models/test_profile.py               |  1 +
+ hyperkitty/tests/models/test_tag.py                   |  2 +-
+ hyperkitty/tests/models/test_vote.py                  |  1 +
+ hyperkitty/tests/test_feeds.py                        |  1 +
+ hyperkitty/tests/test_search_index.py                 |  2 ++
+ hyperkitty/tests/utils.py                             | 19 ++++++++-----------
+ hyperkitty/tests/views/test_accounts.py               |  3 +++
+ hyperkitty/tests/views/test_archives.py               |  5 +++++
+ hyperkitty/tests/views/test_compat.py                 |  1 +
+ hyperkitty/tests/views/test_index.py                  |  4 ++++
+ hyperkitty/tests/views/test_mailinglist.py            |  1 +
+ hyperkitty/tests/views/test_mailman.py                |  1 +
+ hyperkitty/tests/views/test_message.py                |  1 +
+ hyperkitty/tests/views/test_search.py                 |  1 +
+ hyperkitty/tests/views/test_thread.py                 |  2 ++
+ 23 files changed, 52 insertions(+), 12 deletions(-)
+
+diff --git a/hyperkitty/tests/_test_caching.py b/hyperkitty/tests/_test_caching.py
+index 4feb980..9e6e739 100644
+--- a/hyperkitty/tests/_test_caching.py
++++ b/hyperkitty/tests/_test_caching.py
+@@ -20,12 +20,14 @@ from mailman.interfaces.archiver import ArchivePolicy
+ class ListCacheTestCase(unittest.TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.store = get_store(SettingsModule(), auto_create=True)
+         kittystore.utils.MM_CLIENT = Mock()
+ 
+     def tearDown(self):
+         self.store.close()
+         kittystore.utils.MM_CLIENT = None
++        super().tearDown()
+ 
+     def test_properties_on_new_message(self):
+         ml = FakeList("example-list")
+@@ -75,6 +77,7 @@ class FakeMMUser(object):
+ class UserIdCacheTestCase(unittest.TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.store = get_store(SettingsModule(), auto_create=True)#, debug=True)
+         self.mm_client = Mock()
+         mailman_user._MAILMAN_CLIENT = self.mm_client
+@@ -84,6 +87,7 @@ class UserIdCacheTestCase(unittest.TestCase):
+     def tearDown(self):
+         self.store.close()
+         mailman_user._MAILMAN_CLIENT = None
++        super().tearDown()
+ 
+     def test_on_new_message_userid(self):
+         # Check that the user_id is set on a new message
+@@ -166,6 +170,7 @@ class UserIdCacheTestCase(unittest.TestCase):
+ 
+ class TestNotifyStore(unittest.TestCase):
+     def setUp(self):
++        super().setUp()
+         self.store = get_sa_store(SettingsModule(), auto_create=True)
+         self.store.db.cache.get_or_create = Mock()
+         self.store.db.cache.get_or_create.side_effect = lambda *a, **kw: a[1]()
+@@ -175,6 +180,7 @@ class TestNotifyStore(unittest.TestCase):
+ 
+     def tearDown(self):
+         self.store.close()
++        super().tearDown()
+ 
+     def test_on_new_message_invalidate(self):
+         # Check that the cache is invalidated on new message
+diff --git a/hyperkitty/tests/commands/test_attachments_to_file.py b/hyperkitty/tests/commands/test_attachments_to_file.py
+index fd0aed8..8da8ea7 100644
+--- a/hyperkitty/tests/commands/test_attachments_to_file.py
++++ b/hyperkitty/tests/commands/test_attachments_to_file.py
+@@ -17,6 +17,7 @@ from hyperkitty.tests.utils import TestCase
+ class CommandTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         msg_in = EmailMessage()
+         msg_in["From"] = "dummy at example.com"
+         msg_in["Message-ID"] = "<msg>"
+@@ -30,6 +31,7 @@ class CommandTestCase(TestCase):
+     def tearDown(self):
+         settings.HYPERKITTY_ATTACHMENT_FOLDER = None
+         self.tempdir.cleanup()
++        super().tearDown()
+ 
+     def test_no_attachment_folder(self):
+         # Test that no HYPERKITTY_ATTACHMENT_FOLDER raises CommandError
+diff --git a/hyperkitty/tests/commands/test_import.py b/hyperkitty/tests/commands/test_import.py
+index d82f0eb..a83a573 100644
+--- a/hyperkitty/tests/commands/test_import.py
++++ b/hyperkitty/tests/commands/test_import.py
+@@ -24,6 +24,7 @@ from hyperkitty.tests.utils import TestCase, get_test_file
+ class CommandTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.command = Command()
+         self.common_cmd_args = dict(
+             verbosity=2, list_address="list at example.com",
+@@ -32,6 +33,7 @@ class CommandTestCase(TestCase):
+ 
+     def tearDown(self):
+         settings.HYPERKITTY_BATCH_MODE = False
++        super().tearDown()
+ 
+     def test_impacted_threads(self):
+         # existing message
+diff --git a/hyperkitty/tests/lib/test_analysis.py b/hyperkitty/tests/lib/test_analysis.py
+index 1dca1f5..ccc6bf2 100644
+--- a/hyperkitty/tests/lib/test_analysis.py
++++ b/hyperkitty/tests/lib/test_analysis.py
+@@ -33,6 +33,7 @@ from hyperkitty.tests.utils import TestCase
+ class TestThreadOrderDepth(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.mlist = MailingList.objects.create(name="example-list")
+ 
+     def make_fake_email(self, num=1, date=None, thread=None):
+diff --git a/hyperkitty/tests/lib/test_mailman.py b/hyperkitty/tests/lib/test_mailman.py
+index cb5b785..9db2325 100644
+--- a/hyperkitty/tests/lib/test_mailman.py
++++ b/hyperkitty/tests/lib/test_mailman.py
+@@ -36,6 +36,7 @@ from hyperkitty.tests.utils import TestCase
+ class MailmanSubscribeTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.ml = FakeMMList("list at example.com")
+         self.mailman_client.get_list.side_effect = lambda n: self.ml
+         self.ml.get_member = Mock()
+diff --git a/hyperkitty/tests/lib/test_posting.py b/hyperkitty/tests/lib/test_posting.py
+index 18b6597..052d661 100644
+--- a/hyperkitty/tests/lib/test_posting.py
++++ b/hyperkitty/tests/lib/test_posting.py
+@@ -49,6 +49,7 @@ class Django_mail:
+ class PostingTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.mlist = MailingList.objects.create(name="list at example.com")
+         self.ml = FakeMMList("list at example.com")
+         self.mailman_client.get_list.side_effect = lambda n: self.ml
+diff --git a/hyperkitty/tests/models/test_lastview.py b/hyperkitty/tests/models/test_lastview.py
+index 37d4d98..fd3f115 100644
+--- a/hyperkitty/tests/models/test_lastview.py
++++ b/hyperkitty/tests/models/test_lastview.py
+@@ -32,6 +32,7 @@ from hyperkitty.tests.utils import TestCase
+ class LastViewTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.user = User.objects.create(username="dummy")
+         msg = EmailMessage()
+         msg["From"] = "sender1 at example.com"
+diff --git a/hyperkitty/tests/models/test_mailinglist.py b/hyperkitty/tests/models/test_mailinglist.py
+index 7235a46..bc04e76 100644
+--- a/hyperkitty/tests/models/test_mailinglist.py
++++ b/hyperkitty/tests/models/test_mailinglist.py
+@@ -41,6 +41,7 @@ from hyperkitty.tests.utils import TestCase
+ class MailingListTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.ml = MailingList.objects.create(name="list at example.com")
+         self.mailman_ml = FakeMMList("list at example.com")
+         self.mailman_client.get_list.side_effect = lambda n: self.mailman_ml
+@@ -215,6 +216,7 @@ class MailingListTestCase(TestCase):
+ class RecentThreadsTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.ml = MailingList.objects.create(name="list at example.com")
+         self.cached_value = RecentThreads(self.ml)
+ 
+@@ -243,6 +245,7 @@ class RecentThreadsTestCase(TestCase):
+ class TopThreadsTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.ml = MailingList.objects.create(name="list at example.com")
+         self.cached_value = TopThreads(self.ml)
+ 
+@@ -278,6 +281,7 @@ class TopThreadsTestCase(TestCase):
+ class PopularThreadsTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.ml = MailingList.objects.create(name="list at example.com")
+         self.cached_value = PopularThreads(self.ml)
+ 
+@@ -313,6 +317,7 @@ class PopularThreadsTestCase(TestCase):
+ class FirstDateTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.ml = MailingList.objects.create(name="list at example.com")
+         self.cached_value = FirstDate(self.ml)
+ 
+diff --git a/hyperkitty/tests/models/test_profile.py b/hyperkitty/tests/models/test_profile.py
+index 86ccaaa..cb91755 100644
+--- a/hyperkitty/tests/models/test_profile.py
++++ b/hyperkitty/tests/models/test_profile.py
+@@ -42,6 +42,7 @@ def _create_email(num, reply_to=None):
+ class ProfileTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.user = User.objects.create(username="dummy")
+ 
+     def test_votes_in_list(self):
+diff --git a/hyperkitty/tests/models/test_tag.py b/hyperkitty/tests/models/test_tag.py
+index 1cdda43..112e09c 100644
+--- a/hyperkitty/tests/models/test_tag.py
++++ b/hyperkitty/tests/models/test_tag.py
+@@ -28,5 +28,5 @@ class TagTestCase(TestCase):
+     fixtures = ['tag_testdata.json']
+ 
+     def setUp(self):
+-        super(TagTestCase, self).setUp()
++        super().setUp()
+         self.tag_1 = Tag.objects.get(pk=1)
+diff --git a/hyperkitty/tests/models/test_vote.py b/hyperkitty/tests/models/test_vote.py
+index 5a3a89d..cc70476 100644
+--- a/hyperkitty/tests/models/test_vote.py
++++ b/hyperkitty/tests/models/test_vote.py
+@@ -42,6 +42,7 @@ def _create_email(num, reply_to=None):
+ class VoteTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.user = User.objects.create(username="dummy")
+ 
+     def test_msg_1(self):
+diff --git a/hyperkitty/tests/test_feeds.py b/hyperkitty/tests/test_feeds.py
+index 32386f6..0a35134 100644
+--- a/hyperkitty/tests/test_feeds.py
++++ b/hyperkitty/tests/test_feeds.py
+@@ -33,6 +33,7 @@ from hyperkitty.utils import reverse
+ class TestMailingListFeed(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.user = User.objects.create_user(
+             'testuser', 'test at example.com', 'testPass')
+         self.user.is_superuser = True
+diff --git a/hyperkitty/tests/test_search_index.py b/hyperkitty/tests/test_search_index.py
+index e2ea077..c142eb8 100644
+--- a/hyperkitty/tests/test_search_index.py
++++ b/hyperkitty/tests/test_search_index.py
+@@ -35,12 +35,14 @@ from hyperkitty.tests.utils import SearchEnabledTestCase
+ class SearchIndexTestCase(SearchEnabledTestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         # Disable automatic update
+         apps.get_app_config('haystack').signal_processor.teardown()
+ 
+     def tearDown(self):
+         # Restore automatic update
+         apps.get_app_config('haystack').signal_processor.setup()
++        super().tearDown()
+ 
+     def _add_message(self, msgid="msg", list="list at example.com"):
+         msg = EmailMessage()
+diff --git a/hyperkitty/tests/utils.py b/hyperkitty/tests/utils.py
+index c33ea87..d9fb1e9 100644
+--- a/hyperkitty/tests/utils.py
++++ b/hyperkitty/tests/utils.py
+@@ -66,8 +66,8 @@ class TestCase(DjangoTestCase):
+     # Testcase classes can use this variable to add more overrides:
+     override_settings = {}
+ 
+-    def _pre_setup(self):
+-        super(TestCase, self)._pre_setup()
++    def setUp(self):
++        super().setUp()
+         self.tmpdir = tempfile.mkdtemp(prefix="hyperkitty-testing-")
+         # Logging
+         setup_logging(self.tmpdir)
+@@ -92,7 +92,7 @@ class TestCase(DjangoTestCase):
+         self._old_settings[key] = getattr(settings, key, None)
+         setattr(settings, key, value)
+ 
+-    def _post_teardown(self):
++    def tearDown(self):
+         self._mm_client_patcher.stop()
+         cache.clear()
+         for key, value in self._old_settings.items():
+@@ -101,23 +101,20 @@ class TestCase(DjangoTestCase):
+             else:
+                 setattr(settings, key, value)
+         shutil.rmtree(self.tmpdir)
+-        super(TestCase, self)._post_teardown()
++        super().tearDown()
+ 
+ 
+ class SearchEnabledTestCase(TestCase):
+ 
+-    def _pre_setup(self):
++    def setUp(self):
+         try:
+             import whoosh  # noqa: F401
+         except ImportError:
+             raise SkipTest("The Whoosh library is not available")
+-        super(SearchEnabledTestCase, self)._pre_setup()
++        super().setUp()
+         call_command('clear_index', verbosity=0, interactive=False)
+         call_command('update_index', verbosity=0)
+ 
+-    def _post_teardown(self):
+-        super(SearchEnabledTestCase, self)._post_teardown()
+-
+ 
+ class MigrationTestCase(TransactionTestCase):
+     """ Inpired by
+@@ -131,8 +128,8 @@ https://www.caktusgroup.com/blog/2016/02/02/writing-unit-tests-django-migrations
+     def app(self):
+         return apps.get_containing_app_config(type(self).__module__).name
+ 
+-    def _pre_setup(self):
+-        super(MigrationTestCase, self)._pre_setup()
++    def setUp(self):
++        super().setUp()
+         assert self.migrate_from and self.migrate_to, \
+             "TestCase '{}' must define migrate_from and migrate_to properties"\
+             .format(type(self).__name__)
+diff --git a/hyperkitty/tests/views/test_accounts.py b/hyperkitty/tests/views/test_accounts.py
+index 9dd5bc9..edb7090 100644
+--- a/hyperkitty/tests/views/test_accounts.py
++++ b/hyperkitty/tests/views/test_accounts.py
+@@ -43,6 +43,7 @@ from hyperkitty.utils import reverse
+ class AccountViewsTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.user = User.objects.create_user(
+             'testuser', 'test at example.com', 'testPass')
+         EmailAddress.objects.create(
+@@ -210,6 +211,7 @@ class AccountViewsTestCase(TestCase):
+ class LastViewsTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.user = User.objects.create_user(
+             'testuser', 'test at example.com', 'testPass')
+         self.client.login(username='testuser', password='testPass')
+@@ -300,6 +302,7 @@ class LastViewsTestCase(TestCase):
+ class SubscriptionsTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.user = User.objects.create_user(
+             'testuser', 'testuser at example.com', 'testPass')
+         self.mailman_client.get_list.side_effect = \
+diff --git a/hyperkitty/tests/views/test_archives.py b/hyperkitty/tests/views/test_archives.py
+index 15591ac..6a04f6d 100644
+--- a/hyperkitty/tests/views/test_archives.py
++++ b/hyperkitty/tests/views/test_archives.py
+@@ -47,6 +47,7 @@ from hyperkitty.utils import reverse
+ class ListArchivesTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         # Create the list by adding a dummy message
+         msg = EmailMessage()
+         msg["From"] = "dummy at example.com"
+@@ -166,6 +167,7 @@ class ListArchivesTestCase(TestCase):
+ class ExportMboxTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         # Create the list by adding a dummy message
+         msg = EmailMessage()
+         msg["From"] = "dummy at example.com"
+@@ -298,6 +300,7 @@ class ExportMboxTestCase(TestCase):
+ class PrivateArchivesTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.user = User.objects.create_user(
+             'testuser', 'test at example.com', 'testPass')
+         MailingList.objects.create(
+@@ -325,6 +328,7 @@ class PrivateArchivesTestCase(TestCase):
+ 
+     def tearDown(self):
+         self.client.logout()
++        super().tearDown()
+ 
+     def _do_test(self, url, query=None):
+         if query is None:
+@@ -372,6 +376,7 @@ class PrivateArchivesTestCase(TestCase):
+ class MonthsListTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         # Create the list by adding a dummy message
+         # The message must be old to create multiple year accordion panels in
+         # the months list.
+diff --git a/hyperkitty/tests/views/test_compat.py b/hyperkitty/tests/views/test_compat.py
+index 3ca146e..87b5df3 100644
+--- a/hyperkitty/tests/views/test_compat.py
++++ b/hyperkitty/tests/views/test_compat.py
+@@ -32,6 +32,7 @@ from hyperkitty.utils import reverse
+ class CompatURLsTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         MailingList.objects.create(name="list at example.com")
+         msg = EmailMessage()
+         msg["From"] = "dummy at example.com"
+diff --git a/hyperkitty/tests/views/test_index.py b/hyperkitty/tests/views/test_index.py
+index daa071e..5c9e17f 100644
+--- a/hyperkitty/tests/views/test_index.py
++++ b/hyperkitty/tests/views/test_index.py
+@@ -42,6 +42,7 @@ from hyperkitty.utils import reverse
+ class PrivateListTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         MailingList.objects.create(
+             name="list at example.com", subject_prefix="[example] ",
+             archive_policy=ArchivePolicy.private.value)
+@@ -76,6 +77,7 @@ class PrivateListTestCase(TestCase):
+ 
+     def tearDown(self):
+         self.client.logout()
++        super().tearDown()
+ 
+     def _create_user(self, username, email):
+         User.objects.create_user(username, email, 'testPass')
+@@ -162,6 +164,7 @@ class PrivateListTestCase(TestCase):
+ class FindTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         MailingList.objects.create(name="list-one at example.com")
+         MailingList.objects.create(name="list-two at example.com",
+                                    display_name="List Two")
+@@ -234,6 +237,7 @@ class FindTestCase(TestCase):
+ class DomainFilteringTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self._site = Site.objects.create(domain='www.example.com',
+                                          name='www')
+         self.mail_domain2 = MailDomain.objects.create(
+diff --git a/hyperkitty/tests/views/test_mailinglist.py b/hyperkitty/tests/views/test_mailinglist.py
+index ef37d0d..02999e7 100644
+--- a/hyperkitty/tests/views/test_mailinglist.py
++++ b/hyperkitty/tests/views/test_mailinglist.py
+@@ -37,6 +37,7 @@ from hyperkitty.utils import reverse
+ class DeleteMailingListTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.user = User.objects.create_user(
+             'testuser', 'test at example.com', 'testPass')
+         self.user.is_staff = True
+diff --git a/hyperkitty/tests/views/test_mailman.py b/hyperkitty/tests/views/test_mailman.py
+index 15cc852..939d661 100644
+--- a/hyperkitty/tests/views/test_mailman.py
++++ b/hyperkitty/tests/views/test_mailman.py
+@@ -66,6 +66,7 @@ class PrivateListTestCase(TestCase):
+ class ArchiveTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         msg = EmailMessage()
+         msg["From"] = "dummy at example.com"
+         msg["Subject"] = "Fake Subject"
+diff --git a/hyperkitty/tests/views/test_message.py b/hyperkitty/tests/views/test_message.py
+index 7bb0af8..df987e5 100644
+--- a/hyperkitty/tests/views/test_message.py
++++ b/hyperkitty/tests/views/test_message.py
+@@ -53,6 +53,7 @@ from hyperkitty.utils import reverse
+ class MessageViewsTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.user = User.objects.create_user(
+                 'testuser', 'test at example.com', 'testPass')
+         self.client.login(username='testuser', password='testPass')
+diff --git a/hyperkitty/tests/views/test_search.py b/hyperkitty/tests/views/test_search.py
+index e3bb92e..588234a 100644
+--- a/hyperkitty/tests/views/test_search.py
++++ b/hyperkitty/tests/views/test_search.py
+@@ -37,6 +37,7 @@ from hyperkitty.utils import reverse
+ class SearchViewsTestCase(SearchEnabledTestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.user = User.objects.create_user(
+             'testuser', 'test at example.com', 'testPass')
+         self.mailman_client.get_list.side_effect = \
+diff --git a/hyperkitty/tests/views/test_thread.py b/hyperkitty/tests/views/test_thread.py
+index 76dd5b2..d41eef9 100644
+--- a/hyperkitty/tests/views/test_thread.py
++++ b/hyperkitty/tests/views/test_thread.py
+@@ -43,6 +43,7 @@ from hyperkitty.utils import reverse
+ class ReattachTestCase(SearchEnabledTestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.user = User.objects.create_user(
+             'testuser', 'test at example.com', 'testPass')
+         self.user.is_staff = True
+@@ -189,6 +190,7 @@ class ReattachTestCase(SearchEnabledTestCase):
+ class ThreadTestCase(TestCase):
+ 
+     def setUp(self):
++        super().setUp()
+         self.user = User.objects.create_user(
+             'testuser', 'test at example.com', 'testPass')
+         self.user.is_staff = True
diff --git debian/patches/series debian/patches/series
index 1d4d3d2..6c3b940 100644
--- debian/patches/series
+++ debian/patches/series
@@ -5,3 +5,4 @@
 0005-Changes-to-support-mistune-3.1.patch
 0006-Drop-robot-detection-from-hyperkitty.patch
 0007-Fix-tests-warnings-for-BeautifulSoup-and-timezone-na.patch
+0008-PATCH-fix-tests-Do-not-depend-on-Django-private-test.patch


More information about the Pkg-mailman-hackers mailing list