From 12aef53a69eb5f1c3fc864020cfd84ca0e729f66 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Sun, 7 Jun 2026 16:51:56 +0100 Subject: [PATCH 1/3] tests: Move unit tests to unit module Signed-off-by: Stephen Finucane --- patchwork/tests/__init__.py | 1 + patchwork/tests/{api => unit}/__init__.py | 0 patchwork/tests/{views => unit/api}/__init__.py | 0 patchwork/tests/{ => unit}/api/test_bundle.py | 2 +- patchwork/tests/{ => unit}/api/test_check.py | 2 +- patchwork/tests/{ => unit}/api/test_comment.py | 2 +- patchwork/tests/{ => unit}/api/test_cover.py | 2 +- patchwork/tests/{ => unit}/api/test_event.py | 2 +- patchwork/tests/{ => unit}/api/test_patch.py | 2 +- patchwork/tests/{ => unit}/api/test_person.py | 2 +- patchwork/tests/{ => unit}/api/test_project.py | 2 +- patchwork/tests/{ => unit}/api/test_relation.py | 2 +- patchwork/tests/{ => unit}/api/test_series.py | 2 +- patchwork/tests/{ => unit}/api/test_user.py | 2 +- patchwork/tests/{ => unit}/api/utils.py | 3 ++- patchwork/tests/{ => unit}/api/validator.py | 1 + patchwork/tests/{ => unit}/test_checks.py | 0 patchwork/tests/{ => unit}/test_expiry.py | 0 patchwork/tests/{ => unit}/test_fields.py | 0 patchwork/tests/{ => unit}/test_management.py | 0 patchwork/tests/{ => unit}/test_notifications.py | 0 patchwork/tests/{ => unit}/test_paginator.py | 0 patchwork/tests/{ => unit}/test_parser.py | 0 patchwork/tests/{ => unit}/test_series.py | 4 +--- patchwork/tests/{ => unit}/test_signals.py | 0 patchwork/tests/{ => unit}/test_tags.py | 0 patchwork/tests/{ => unit}/test_version.py | 0 patchwork/tests/unit/views/__init__.py | 0 patchwork/tests/{ => unit}/views/test_about.py | 0 patchwork/tests/{ => unit}/views/test_api.py | 0 patchwork/tests/{ => unit}/views/test_bundles.py | 0 patchwork/tests/{ => unit}/views/test_cover.py | 0 patchwork/tests/{ => unit}/views/test_mail.py | 0 patchwork/tests/{ => unit}/views/test_patch.py | 0 patchwork/tests/{ => unit}/views/test_projects.py | 0 patchwork/tests/{ => unit}/views/test_pwclient.py | 0 patchwork/tests/{ => unit}/views/test_user.py | 0 patchwork/tests/{ => unit}/views/test_utils.py | 0 patchwork/tests/{ => unit}/views/test_xmlrpc.py | 0 tox.ini | 6 +++--- 40 files changed, 19 insertions(+), 18 deletions(-) rename patchwork/tests/{api => unit}/__init__.py (100%) rename patchwork/tests/{views => unit/api}/__init__.py (100%) rename patchwork/tests/{ => unit}/api/test_bundle.py (99%) rename patchwork/tests/{ => unit}/api/test_check.py (99%) rename patchwork/tests/{ => unit}/api/test_comment.py (99%) rename patchwork/tests/{ => unit}/api/test_cover.py (99%) rename patchwork/tests/{ => unit}/api/test_event.py (99%) rename patchwork/tests/{ => unit}/api/test_patch.py (99%) rename patchwork/tests/{ => unit}/api/test_person.py (99%) rename patchwork/tests/{ => unit}/api/test_project.py (99%) rename patchwork/tests/{ => unit}/api/test_relation.py (99%) rename patchwork/tests/{ => unit}/api/test_series.py (99%) rename patchwork/tests/{ => unit}/api/test_user.py (99%) rename patchwork/tests/{ => unit}/api/utils.py (99%) rename patchwork/tests/{ => unit}/api/validator.py (99%) rename patchwork/tests/{ => unit}/test_checks.py (100%) rename patchwork/tests/{ => unit}/test_expiry.py (100%) rename patchwork/tests/{ => unit}/test_fields.py (100%) rename patchwork/tests/{ => unit}/test_management.py (100%) rename patchwork/tests/{ => unit}/test_notifications.py (100%) rename patchwork/tests/{ => unit}/test_paginator.py (100%) rename patchwork/tests/{ => unit}/test_parser.py (100%) rename patchwork/tests/{ => unit}/test_series.py (99%) rename patchwork/tests/{ => unit}/test_signals.py (100%) rename patchwork/tests/{ => unit}/test_tags.py (100%) rename patchwork/tests/{ => unit}/test_version.py (100%) create mode 100644 patchwork/tests/unit/views/__init__.py rename patchwork/tests/{ => unit}/views/test_about.py (100%) rename patchwork/tests/{ => unit}/views/test_api.py (100%) rename patchwork/tests/{ => unit}/views/test_bundles.py (100%) rename patchwork/tests/{ => unit}/views/test_cover.py (100%) rename patchwork/tests/{ => unit}/views/test_mail.py (100%) rename patchwork/tests/{ => unit}/views/test_patch.py (100%) rename patchwork/tests/{ => unit}/views/test_projects.py (100%) rename patchwork/tests/{ => unit}/views/test_pwclient.py (100%) rename patchwork/tests/{ => unit}/views/test_user.py (100%) rename patchwork/tests/{ => unit}/views/test_utils.py (100%) rename patchwork/tests/{ => unit}/views/test_xmlrpc.py (100%) diff --git a/patchwork/tests/__init__.py b/patchwork/tests/__init__.py index 0f1369c56..b5be2dbc6 100644 --- a/patchwork/tests/__init__.py +++ b/patchwork/tests/__init__.py @@ -9,6 +9,7 @@ TEST_MAIL_DIR = os.path.join(os.path.dirname(__file__), 'mail') TEST_PATCH_DIR = os.path.join(os.path.dirname(__file__), 'patches') TEST_FUZZ_DIR = os.path.join(os.path.dirname(__file__), 'fuzztests') +TEST_SERIES_DIR = os.path.join(os.path.dirname(__file__), 'series') # configure warnings diff --git a/patchwork/tests/api/__init__.py b/patchwork/tests/unit/__init__.py similarity index 100% rename from patchwork/tests/api/__init__.py rename to patchwork/tests/unit/__init__.py diff --git a/patchwork/tests/views/__init__.py b/patchwork/tests/unit/api/__init__.py similarity index 100% rename from patchwork/tests/views/__init__.py rename to patchwork/tests/unit/api/__init__.py diff --git a/patchwork/tests/api/test_bundle.py b/patchwork/tests/unit/api/test_bundle.py similarity index 99% rename from patchwork/tests/api/test_bundle.py rename to patchwork/tests/unit/api/test_bundle.py index dbfea2b68..053794518 100644 --- a/patchwork/tests/api/test_bundle.py +++ b/patchwork/tests/unit/api/test_bundle.py @@ -9,7 +9,7 @@ from rest_framework import status from patchwork.models import Bundle -from patchwork.tests.api import utils +from patchwork.tests.unit.api import utils from patchwork.tests.utils import create_bundle from patchwork.tests.utils import create_maintainer from patchwork.tests.utils import create_patch diff --git a/patchwork/tests/api/test_check.py b/patchwork/tests/unit/api/test_check.py similarity index 99% rename from patchwork/tests/api/test_check.py rename to patchwork/tests/unit/api/test_check.py index ffca64d5c..a49971753 100644 --- a/patchwork/tests/api/test_check.py +++ b/patchwork/tests/unit/api/test_check.py @@ -8,7 +8,7 @@ from rest_framework import status from patchwork.models import Check -from patchwork.tests.api import utils +from patchwork.tests.unit.api import utils from patchwork.tests.utils import create_check from patchwork.tests.utils import create_patch from patchwork.tests.utils import create_maintainer diff --git a/patchwork/tests/api/test_comment.py b/patchwork/tests/unit/api/test_comment.py similarity index 99% rename from patchwork/tests/api/test_comment.py rename to patchwork/tests/unit/api/test_comment.py index 3487bf4ae..1cfbcef48 100644 --- a/patchwork/tests/api/test_comment.py +++ b/patchwork/tests/unit/api/test_comment.py @@ -10,7 +10,7 @@ from patchwork.models import PatchComment from patchwork.models import CoverComment -from patchwork.tests.api import utils +from patchwork.tests.unit.api import utils from patchwork.tests.utils import create_cover from patchwork.tests.utils import create_cover_comment from patchwork.tests.utils import create_patch diff --git a/patchwork/tests/api/test_cover.py b/patchwork/tests/unit/api/test_cover.py similarity index 99% rename from patchwork/tests/api/test_cover.py rename to patchwork/tests/unit/api/test_cover.py index 5869469ed..643806d92 100644 --- a/patchwork/tests/api/test_cover.py +++ b/patchwork/tests/unit/api/test_cover.py @@ -10,7 +10,7 @@ from django.urls import reverse from rest_framework import status -from patchwork.tests.api import utils +from patchwork.tests.unit.api import utils from patchwork.tests.utils import create_cover from patchwork.tests.utils import create_covers from patchwork.tests.utils import create_maintainer diff --git a/patchwork/tests/api/test_event.py b/patchwork/tests/unit/api/test_event.py similarity index 99% rename from patchwork/tests/api/test_event.py rename to patchwork/tests/unit/api/test_event.py index 890d449c1..735111a27 100644 --- a/patchwork/tests/api/test_event.py +++ b/patchwork/tests/unit/api/test_event.py @@ -8,7 +8,7 @@ from rest_framework import status from patchwork.models import Event -from patchwork.tests.api import utils +from patchwork.tests.unit.api import utils from patchwork.tests.utils import create_check from patchwork.tests.utils import create_cover from patchwork.tests.utils import create_cover_comment diff --git a/patchwork/tests/api/test_patch.py b/patchwork/tests/unit/api/test_patch.py similarity index 99% rename from patchwork/tests/api/test_patch.py rename to patchwork/tests/unit/api/test_patch.py index 2661d75cb..b2890c224 100644 --- a/patchwork/tests/api/test_patch.py +++ b/patchwork/tests/unit/api/test_patch.py @@ -12,7 +12,7 @@ from rest_framework import status from patchwork.models import Patch -from patchwork.tests.api import utils +from patchwork.tests.unit.api import utils from patchwork.tests.utils import create_maintainer from patchwork.tests.utils import create_patch from patchwork.tests.utils import create_patches diff --git a/patchwork/tests/api/test_person.py b/patchwork/tests/unit/api/test_person.py similarity index 99% rename from patchwork/tests/api/test_person.py rename to patchwork/tests/unit/api/test_person.py index a79e99358..3286f03dc 100644 --- a/patchwork/tests/api/test_person.py +++ b/patchwork/tests/unit/api/test_person.py @@ -8,7 +8,7 @@ from django.urls import reverse from rest_framework import status -from patchwork.tests.api import utils +from patchwork.tests.unit.api import utils from patchwork.tests.utils import create_maintainer from patchwork.tests.utils import create_person from patchwork.tests.utils import create_user diff --git a/patchwork/tests/api/test_project.py b/patchwork/tests/unit/api/test_project.py similarity index 99% rename from patchwork/tests/api/test_project.py rename to patchwork/tests/unit/api/test_project.py index c66c538d1..1bc8c2a40 100644 --- a/patchwork/tests/api/test_project.py +++ b/patchwork/tests/unit/api/test_project.py @@ -8,7 +8,7 @@ from rest_framework import status from patchwork.models import Project -from patchwork.tests.api import utils +from patchwork.tests.unit.api import utils from patchwork.tests.utils import create_maintainer from patchwork.tests.utils import create_project from patchwork.tests.utils import create_user diff --git a/patchwork/tests/api/test_relation.py b/patchwork/tests/unit/api/test_relation.py similarity index 99% rename from patchwork/tests/api/test_relation.py rename to patchwork/tests/unit/api/test_relation.py index 5a4e86290..67d95b98b 100644 --- a/patchwork/tests/api/test_relation.py +++ b/patchwork/tests/unit/api/test_relation.py @@ -9,7 +9,7 @@ from patchwork.models import Patch from patchwork.models import PatchRelation -from patchwork.tests.api import utils +from patchwork.tests.unit.api import utils from patchwork.tests.utils import create_maintainer from patchwork.tests.utils import create_patch from patchwork.tests.utils import create_patches diff --git a/patchwork/tests/api/test_series.py b/patchwork/tests/unit/api/test_series.py similarity index 99% rename from patchwork/tests/api/test_series.py rename to patchwork/tests/unit/api/test_series.py index 24d7d9a68..80887d48d 100644 --- a/patchwork/tests/api/test_series.py +++ b/patchwork/tests/unit/api/test_series.py @@ -8,7 +8,7 @@ from django.urls import reverse from rest_framework import status -from patchwork.tests.api import utils +from patchwork.tests.unit.api import utils from patchwork.tests.utils import create_cover from patchwork.tests.utils import create_maintainer from patchwork.tests.utils import create_patch diff --git a/patchwork/tests/api/test_user.py b/patchwork/tests/unit/api/test_user.py similarity index 99% rename from patchwork/tests/api/test_user.py rename to patchwork/tests/unit/api/test_user.py index 501680525..e5488c3d2 100644 --- a/patchwork/tests/api/test_user.py +++ b/patchwork/tests/unit/api/test_user.py @@ -8,7 +8,7 @@ from django.urls import reverse from rest_framework import status -from patchwork.tests.api import utils +from patchwork.tests.unit.api import utils from patchwork.tests.utils import create_maintainer from patchwork.tests.utils import create_user diff --git a/patchwork/tests/api/utils.py b/patchwork/tests/unit/api/utils.py similarity index 99% rename from patchwork/tests/api/utils.py rename to patchwork/tests/unit/api/utils.py index 09269f50b..cd9935a4d 100644 --- a/patchwork/tests/api/utils.py +++ b/patchwork/tests/unit/api/utils.py @@ -12,7 +12,7 @@ from rest_framework.test import APIClient as BaseAPIClient from rest_framework.test import APIRequestFactory -from patchwork.tests.api import validator +from patchwork.tests.unit.api import validator from patchwork.tests.utils import create_user @@ -22,6 +22,7 @@ os.pardir, os.pardir, os.pardir, + os.pardir, 'docs', 'api', 'samples', diff --git a/patchwork/tests/api/validator.py b/patchwork/tests/unit/api/validator.py similarity index 99% rename from patchwork/tests/api/validator.py rename to patchwork/tests/unit/api/validator.py index f7617e453..b64e8f282 100644 --- a/patchwork/tests/api/validator.py +++ b/patchwork/tests/unit/api/validator.py @@ -23,6 +23,7 @@ os.pardir, os.pardir, os.pardir, + os.pardir, 'docs', 'api', 'schemas', diff --git a/patchwork/tests/test_checks.py b/patchwork/tests/unit/test_checks.py similarity index 100% rename from patchwork/tests/test_checks.py rename to patchwork/tests/unit/test_checks.py diff --git a/patchwork/tests/test_expiry.py b/patchwork/tests/unit/test_expiry.py similarity index 100% rename from patchwork/tests/test_expiry.py rename to patchwork/tests/unit/test_expiry.py diff --git a/patchwork/tests/test_fields.py b/patchwork/tests/unit/test_fields.py similarity index 100% rename from patchwork/tests/test_fields.py rename to patchwork/tests/unit/test_fields.py diff --git a/patchwork/tests/test_management.py b/patchwork/tests/unit/test_management.py similarity index 100% rename from patchwork/tests/test_management.py rename to patchwork/tests/unit/test_management.py diff --git a/patchwork/tests/test_notifications.py b/patchwork/tests/unit/test_notifications.py similarity index 100% rename from patchwork/tests/test_notifications.py rename to patchwork/tests/unit/test_notifications.py diff --git a/patchwork/tests/test_paginator.py b/patchwork/tests/unit/test_paginator.py similarity index 100% rename from patchwork/tests/test_paginator.py rename to patchwork/tests/unit/test_paginator.py diff --git a/patchwork/tests/test_parser.py b/patchwork/tests/unit/test_parser.py similarity index 100% rename from patchwork/tests/test_parser.py rename to patchwork/tests/unit/test_parser.py diff --git a/patchwork/tests/test_series.py b/patchwork/tests/unit/test_series.py similarity index 99% rename from patchwork/tests/test_series.py rename to patchwork/tests/unit/test_series.py index e5f60e3ae..cce754893 100644 --- a/patchwork/tests/test_series.py +++ b/patchwork/tests/unit/test_series.py @@ -12,13 +12,11 @@ from patchwork import models from patchwork import parser +from patchwork.tests import TEST_SERIES_DIR from patchwork.tests import utils from patchwork.views.utils import patch_to_mbox -TEST_SERIES_DIR = os.path.join(os.path.dirname(__file__), 'series') - - class _BaseTestCase(TestCase): def setUp(self): utils.create_state() diff --git a/patchwork/tests/test_signals.py b/patchwork/tests/unit/test_signals.py similarity index 100% rename from patchwork/tests/test_signals.py rename to patchwork/tests/unit/test_signals.py diff --git a/patchwork/tests/test_tags.py b/patchwork/tests/unit/test_tags.py similarity index 100% rename from patchwork/tests/test_tags.py rename to patchwork/tests/unit/test_tags.py diff --git a/patchwork/tests/test_version.py b/patchwork/tests/unit/test_version.py similarity index 100% rename from patchwork/tests/test_version.py rename to patchwork/tests/unit/test_version.py diff --git a/patchwork/tests/unit/views/__init__.py b/patchwork/tests/unit/views/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/patchwork/tests/views/test_about.py b/patchwork/tests/unit/views/test_about.py similarity index 100% rename from patchwork/tests/views/test_about.py rename to patchwork/tests/unit/views/test_about.py diff --git a/patchwork/tests/views/test_api.py b/patchwork/tests/unit/views/test_api.py similarity index 100% rename from patchwork/tests/views/test_api.py rename to patchwork/tests/unit/views/test_api.py diff --git a/patchwork/tests/views/test_bundles.py b/patchwork/tests/unit/views/test_bundles.py similarity index 100% rename from patchwork/tests/views/test_bundles.py rename to patchwork/tests/unit/views/test_bundles.py diff --git a/patchwork/tests/views/test_cover.py b/patchwork/tests/unit/views/test_cover.py similarity index 100% rename from patchwork/tests/views/test_cover.py rename to patchwork/tests/unit/views/test_cover.py diff --git a/patchwork/tests/views/test_mail.py b/patchwork/tests/unit/views/test_mail.py similarity index 100% rename from patchwork/tests/views/test_mail.py rename to patchwork/tests/unit/views/test_mail.py diff --git a/patchwork/tests/views/test_patch.py b/patchwork/tests/unit/views/test_patch.py similarity index 100% rename from patchwork/tests/views/test_patch.py rename to patchwork/tests/unit/views/test_patch.py diff --git a/patchwork/tests/views/test_projects.py b/patchwork/tests/unit/views/test_projects.py similarity index 100% rename from patchwork/tests/views/test_projects.py rename to patchwork/tests/unit/views/test_projects.py diff --git a/patchwork/tests/views/test_pwclient.py b/patchwork/tests/unit/views/test_pwclient.py similarity index 100% rename from patchwork/tests/views/test_pwclient.py rename to patchwork/tests/unit/views/test_pwclient.py diff --git a/patchwork/tests/views/test_user.py b/patchwork/tests/unit/views/test_user.py similarity index 100% rename from patchwork/tests/views/test_user.py rename to patchwork/tests/unit/views/test_user.py diff --git a/patchwork/tests/views/test_utils.py b/patchwork/tests/unit/views/test_utils.py similarity index 100% rename from patchwork/tests/views/test_utils.py rename to patchwork/tests/unit/views/test_utils.py diff --git a/patchwork/tests/views/test_xmlrpc.py b/patchwork/tests/unit/views/test_xmlrpc.py similarity index 100% rename from patchwork/tests/views/test_xmlrpc.py rename to patchwork/tests/unit/views/test_xmlrpc.py diff --git a/tox.ini b/tox.ini index 5fe0e7539..721b8be8d 100644 --- a/tox.ini +++ b/tox.ini @@ -31,7 +31,7 @@ passenv = DATABASE_NAME DJANGO_TEST_PROCESSES commands = - python {toxinidir}/manage.py test --noinput --parallel -v 2 --timing -- {posargs:patchwork} + python {toxinidir}/manage.py test --noinput --parallel -v 2 --timing -- {posargs:patchwork.tests.unit} [testenv:pep8] deps = @@ -64,8 +64,8 @@ setenv = DJANGO_SETTINGS_MODULE = patchwork.settings.dev commands = coverage erase - coverage run --omit=*tox*,patchwork/tests/*.py,manage.py,patchwork/migrations/*.py \ - --branch {toxinidir}/manage.py test --noinput patchwork + coverage run --omit=*tox*,patchwork/tests/unit/*.py,manage.py,patchwork/migrations/*.py \ + --branch {toxinidir}/manage.py test --noinput patchwork.tests.unit coverage report -m [gh-actions] From b36fcd0f6c4c1be9d3098dbd854a3f2eaa64295a Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Sun, 7 Jun 2026 17:22:24 +0100 Subject: [PATCH 2/3] tests: Rework XMLRPC tests to avoid live server This should speed them up somewhat and make the distinction between the unit tests and upcoming e2e tests clearer. Signed-off-by: Stephen Finucane --- patchwork/tests/unit/views/test_xmlrpc.py | 69 ++++++++++++++++------- 1 file changed, 48 insertions(+), 21 deletions(-) diff --git a/patchwork/tests/unit/views/test_xmlrpc.py b/patchwork/tests/unit/views/test_xmlrpc.py index 71579eefb..92ecbb6e6 100644 --- a/patchwork/tests/unit/views/test_xmlrpc.py +++ b/patchwork/tests/unit/views/test_xmlrpc.py @@ -3,28 +3,56 @@ # # SPDX-License-Identifier: GPL-2.0-or-later +import base64 from xmlrpc import client as xmlrpc_client -from django.test import LiveServerTestCase +from django.test import TestCase from django.test import override_settings from django.urls import reverse from patchwork.tests import utils -class ServerProxy(xmlrpc_client.ServerProxy): - def close(self): - self.__close() +class _TestClientTransport(xmlrpc_client.Transport): + """XML-RPC transport backed by Django's test client. + + Allows XML-RPC tests to run without a live server by dispatching + requests directly through the WSGI stack. + """ + + def __init__(self, client, username=None, password=None): + super().__init__() + self._client = client + self._extra_headers = {} + if username is not None: + credentials = base64.b64encode( + f'{username}:{password}'.encode() + ).decode() + self._extra_headers['HTTP_AUTHORIZATION'] = f'Basic {credentials}' + + def request(self, host, handler, request_body, verbose=False): + # host is ignored: requests are dispatched in-process via the test client + response = self._client.post( + handler, + data=request_body, + content_type='text/xml', + **self._extra_headers, + ) + p, u = self.getparser() + p.feed(response.content) + p.close() + return u.close() @override_settings(ENABLE_XMLRPC=True) -class XMLRPCTest(LiveServerTestCase): +class XMLRPCTest(TestCase): def setUp(self): - self.url = self.live_server_url + reverse('xmlrpc') - self.rpc = ServerProxy(self.url) - - def tearDown(self): - self.rpc.close() + self.url = reverse('xmlrpc') + server_name = self.client._base_environ()['SERVER_NAME'] + self.rpc = xmlrpc_client.ServerProxy( + f'http://{server_name}{self.url}', + transport=_TestClientTransport(self.client), + ) class XMLRPCGenericTest(XMLRPCTest): @@ -46,21 +74,20 @@ def test_absent_auth(self): @override_settings(ENABLE_XMLRPC=True) -class XMLRPCAuthenticatedTest(LiveServerTestCase): +class XMLRPCAuthenticatedTest(TestCase): def setUp(self): - self.url = self.live_server_url + reverse('xmlrpc') - # url is of the form http://localhost:PORT/PATH - # strip the http and replace it with the username/passwd of a user. + self.url = reverse('xmlrpc') self.project = utils.create_project() self.user = utils.create_maintainer(self.project) - self.url = ('http://%s:%s@' + self.url[7:]) % ( - self.user.username, - self.user.username, + server_name = self.client._base_environ()['SERVER_NAME'] + self.rpc = xmlrpc_client.ServerProxy( + f'http://{server_name}{self.url}', + transport=_TestClientTransport( + self.client, + username=self.user.username, + password=self.user.username, + ), ) - self.rpc = ServerProxy(self.url) - - def tearDown(self): - self.rpc.close() def test_patch_set(self): patch = utils.create_patch(project=self.project) From 9a80bde4b9743a9136f8bd884e8ee480fe1462d7 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Sun, 7 Jun 2026 17:30:21 +0100 Subject: [PATCH 3/3] tests: Move data to new directory Signed-off-by: Stephen Finucane --- patchwork/tests/__init__.py | 8 ++++---- .../tests/{fuzztests => data/fuzz}/base64err.mbox | 0 .../tests/{fuzztests => data/fuzz}/charset.mbox | 0 .../tests/{fuzztests => data/fuzz}/codec-null.mbox | Bin .../{fuzztests => data/fuzz}/date-oserror.mbox | Bin .../{fuzztests => data/fuzz}/date-too-long.mbox | Bin patchwork/tests/{fuzztests => data/fuzz}/date.mbox | 0 .../tests/{fuzztests => data/fuzz}/dateheader.mbox | Bin .../tests/{fuzztests => data/fuzz}/email-len.mbox | Bin .../tests/{fuzztests => data/fuzz}/msgid-len.mbox | Bin .../tests/{fuzztests => data/fuzz}/msgid-len2.mbox | 0 .../tests/{fuzztests => data/fuzz}/msgidheader.mbox | 0 .../tests/{fuzztests => data/fuzz}/name-len.mbox | Bin .../tests/{fuzztests => data/fuzz}/refshdr.mbox | Bin .../{fuzztests => data/fuzz}/unknown-encoding.mbox | Bin .../tests/{fuzztests => data/fuzz}/value2.mbox | Bin .../tests/{fuzztests => data/fuzz}/x-face.mbox | 0 .../{fuzztests => data/fuzz}/year-out-of-range.mbox | Bin .../{ => data}/mail/0001-git-pull-request.mbox | 0 .../mail/0002-git-pull-request-wrapped.mbox | 0 .../mail/0003-git-pull-request-with-diff.mbox | 0 .../mail/0004-git-pull-request-git+ssh.mbox | 0 .../{ => data}/mail/0005-git-pull-request-ssh.mbox | 0 .../{ => data}/mail/0006-git-pull-request-http.mbox | 0 .../tests/{ => data}/mail/0007-cvs-format-diff.mbox | 0 .../tests/{ => data}/mail/0008-git-rename.mbox | 0 .../{ => data}/mail/0009-git-rename-with-diff.mbox | 0 .../tests/{ => data}/mail/0010-invalid-charset.mbox | 0 .../mail/0011-no-newline-at-end-of-file.mbox | 0 .../{ => data}/mail/0012-invalid-header-char.mbox | 0 .../tests/{ => data}/mail/0013-with-utf8-body.mbox | 0 .../mail/0014-with-unencoded-utf8-headers.mbox | 0 .../mail/0015-with-invalid-utf8-headers.mbox | 0 .../tests/{ => data}/mail/0016-no-subject.mbox | 0 .../mail/0017-git-pull-request-git-2-14-3.mbox | 0 .../tests/{ => data}/mail/0019-multipart-patch.mbox | 0 .../{ => data}/mail/0020-multipart-comment.mbox | 0 .../{ => data}/mail/0021-git-empty-new-file.mbox | 0 .../tests/{ => data}/mail/0022-git-mode-change.mbox | 0 .../mail/0023-git-pull-request-newline-in-url.mbox | 0 .../mail/0024-git-pull-request-trailing-space.mbox | 0 .../{ => data}/mail/0025-git-add-binary-file.mbox | 0 .../mail/0026-git-add-mixed-binary-text-files.mbox | 0 .../mail/0027-git-modify-binary-file.mbox | 0 .../tests/{ => data}/patches/0001-add-line.patch | 0 patchwork/tests/{ => data}/patches/0002-utf-8.patch | 0 patchwork/tests/{ => data}/series/README.md | 0 .../tests/{ => data}/series/base-cover-letter.mbox | 0 .../tests/{ => data}/series/base-deep-threaded.mbox | 0 .../{ => data}/series/base-different-versions.mbox | 0 .../tests/{ => data}/series/base-extra-patches.mbox | 0 .../tests/{ => data}/series/base-incomplete.mbox | 0 .../{ => data}/series/base-no-cover-letter.mbox | 0 .../series/base-no-references-no-cover.mbox | 0 .../tests/{ => data}/series/base-no-references.mbox | 0 .../tests/{ => data}/series/base-out-of-order.mbox | 0 .../tests/{ => data}/series/base-single-patch.mbox | 0 .../{ => data}/series/bugs-mixed-versions.mbox | 0 .../series/bugs-multiple-content-types.mbox | 0 .../{ => data}/series/bugs-multiple-references.mbox | 0 .../{ => data}/series/bugs-nocover-noversion.mbox | 0 patchwork/tests/{ => data}/series/bugs-nocover.mbox | 0 .../tests/{ => data}/series/bugs-spamming.mbox | 0 .../tests/{ => data}/series/bugs-unnumbered.mbox | 0 .../{ => data}/series/dependency-base-patch.mbox | 0 .../series/dependency-multi-2.mbox.template | 0 .../series/dependency-multi.mbox.template | 0 .../series/dependency-one-cover.mbox.template | 0 .../series/dependency-one-first-patch.mbox.template | 0 .../{ => data}/series/mercurial-cover-letter.mbox | 0 .../series/mercurial-no-cover-letter.mbox | 0 .../tests/{ => data}/series/revision-basic.mbox | 0 .../{ => data}/series/revision-no-cover-letter.mbox | 0 .../{ => data}/series/revision-out-of-order.mbox | 0 .../series/revision-threaded-to-cover.mbox | 0 .../series/revision-threaded-to-patch.mbox | 0 .../series/revision-threaded-to-single-patch.mbox | 0 .../series/revision-unlabeled-noreferences.mbox | 0 .../tests/{ => data}/series/revision-unlabeled.mbox | 0 79 files changed, 4 insertions(+), 4 deletions(-) rename patchwork/tests/{fuzztests => data/fuzz}/base64err.mbox (100%) rename patchwork/tests/{fuzztests => data/fuzz}/charset.mbox (100%) rename patchwork/tests/{fuzztests => data/fuzz}/codec-null.mbox (100%) rename patchwork/tests/{fuzztests => data/fuzz}/date-oserror.mbox (100%) rename patchwork/tests/{fuzztests => data/fuzz}/date-too-long.mbox (100%) rename patchwork/tests/{fuzztests => data/fuzz}/date.mbox (100%) rename patchwork/tests/{fuzztests => data/fuzz}/dateheader.mbox (100%) rename patchwork/tests/{fuzztests => data/fuzz}/email-len.mbox (100%) rename patchwork/tests/{fuzztests => data/fuzz}/msgid-len.mbox (100%) rename patchwork/tests/{fuzztests => data/fuzz}/msgid-len2.mbox (100%) rename patchwork/tests/{fuzztests => data/fuzz}/msgidheader.mbox (100%) rename patchwork/tests/{fuzztests => data/fuzz}/name-len.mbox (100%) rename patchwork/tests/{fuzztests => data/fuzz}/refshdr.mbox (100%) rename patchwork/tests/{fuzztests => data/fuzz}/unknown-encoding.mbox (100%) rename patchwork/tests/{fuzztests => data/fuzz}/value2.mbox (100%) rename patchwork/tests/{fuzztests => data/fuzz}/x-face.mbox (100%) rename patchwork/tests/{fuzztests => data/fuzz}/year-out-of-range.mbox (100%) rename patchwork/tests/{ => data}/mail/0001-git-pull-request.mbox (100%) rename patchwork/tests/{ => data}/mail/0002-git-pull-request-wrapped.mbox (100%) rename patchwork/tests/{ => data}/mail/0003-git-pull-request-with-diff.mbox (100%) rename patchwork/tests/{ => data}/mail/0004-git-pull-request-git+ssh.mbox (100%) rename patchwork/tests/{ => data}/mail/0005-git-pull-request-ssh.mbox (100%) rename patchwork/tests/{ => data}/mail/0006-git-pull-request-http.mbox (100%) rename patchwork/tests/{ => data}/mail/0007-cvs-format-diff.mbox (100%) rename patchwork/tests/{ => data}/mail/0008-git-rename.mbox (100%) rename patchwork/tests/{ => data}/mail/0009-git-rename-with-diff.mbox (100%) rename patchwork/tests/{ => data}/mail/0010-invalid-charset.mbox (100%) rename patchwork/tests/{ => data}/mail/0011-no-newline-at-end-of-file.mbox (100%) rename patchwork/tests/{ => data}/mail/0012-invalid-header-char.mbox (100%) rename patchwork/tests/{ => data}/mail/0013-with-utf8-body.mbox (100%) rename patchwork/tests/{ => data}/mail/0014-with-unencoded-utf8-headers.mbox (100%) rename patchwork/tests/{ => data}/mail/0015-with-invalid-utf8-headers.mbox (100%) rename patchwork/tests/{ => data}/mail/0016-no-subject.mbox (100%) rename patchwork/tests/{ => data}/mail/0017-git-pull-request-git-2-14-3.mbox (100%) rename patchwork/tests/{ => data}/mail/0019-multipart-patch.mbox (100%) rename patchwork/tests/{ => data}/mail/0020-multipart-comment.mbox (100%) rename patchwork/tests/{ => data}/mail/0021-git-empty-new-file.mbox (100%) rename patchwork/tests/{ => data}/mail/0022-git-mode-change.mbox (100%) rename patchwork/tests/{ => data}/mail/0023-git-pull-request-newline-in-url.mbox (100%) rename patchwork/tests/{ => data}/mail/0024-git-pull-request-trailing-space.mbox (100%) rename patchwork/tests/{ => data}/mail/0025-git-add-binary-file.mbox (100%) rename patchwork/tests/{ => data}/mail/0026-git-add-mixed-binary-text-files.mbox (100%) rename patchwork/tests/{ => data}/mail/0027-git-modify-binary-file.mbox (100%) rename patchwork/tests/{ => data}/patches/0001-add-line.patch (100%) rename patchwork/tests/{ => data}/patches/0002-utf-8.patch (100%) rename patchwork/tests/{ => data}/series/README.md (100%) rename patchwork/tests/{ => data}/series/base-cover-letter.mbox (100%) rename patchwork/tests/{ => data}/series/base-deep-threaded.mbox (100%) rename patchwork/tests/{ => data}/series/base-different-versions.mbox (100%) rename patchwork/tests/{ => data}/series/base-extra-patches.mbox (100%) rename patchwork/tests/{ => data}/series/base-incomplete.mbox (100%) rename patchwork/tests/{ => data}/series/base-no-cover-letter.mbox (100%) rename patchwork/tests/{ => data}/series/base-no-references-no-cover.mbox (100%) rename patchwork/tests/{ => data}/series/base-no-references.mbox (100%) rename patchwork/tests/{ => data}/series/base-out-of-order.mbox (100%) rename patchwork/tests/{ => data}/series/base-single-patch.mbox (100%) rename patchwork/tests/{ => data}/series/bugs-mixed-versions.mbox (100%) rename patchwork/tests/{ => data}/series/bugs-multiple-content-types.mbox (100%) rename patchwork/tests/{ => data}/series/bugs-multiple-references.mbox (100%) rename patchwork/tests/{ => data}/series/bugs-nocover-noversion.mbox (100%) rename patchwork/tests/{ => data}/series/bugs-nocover.mbox (100%) rename patchwork/tests/{ => data}/series/bugs-spamming.mbox (100%) rename patchwork/tests/{ => data}/series/bugs-unnumbered.mbox (100%) rename patchwork/tests/{ => data}/series/dependency-base-patch.mbox (100%) rename patchwork/tests/{ => data}/series/dependency-multi-2.mbox.template (100%) rename patchwork/tests/{ => data}/series/dependency-multi.mbox.template (100%) rename patchwork/tests/{ => data}/series/dependency-one-cover.mbox.template (100%) rename patchwork/tests/{ => data}/series/dependency-one-first-patch.mbox.template (100%) rename patchwork/tests/{ => data}/series/mercurial-cover-letter.mbox (100%) rename patchwork/tests/{ => data}/series/mercurial-no-cover-letter.mbox (100%) rename patchwork/tests/{ => data}/series/revision-basic.mbox (100%) rename patchwork/tests/{ => data}/series/revision-no-cover-letter.mbox (100%) rename patchwork/tests/{ => data}/series/revision-out-of-order.mbox (100%) rename patchwork/tests/{ => data}/series/revision-threaded-to-cover.mbox (100%) rename patchwork/tests/{ => data}/series/revision-threaded-to-patch.mbox (100%) rename patchwork/tests/{ => data}/series/revision-threaded-to-single-patch.mbox (100%) rename patchwork/tests/{ => data}/series/revision-unlabeled-noreferences.mbox (100%) rename patchwork/tests/{ => data}/series/revision-unlabeled.mbox (100%) diff --git a/patchwork/tests/__init__.py b/patchwork/tests/__init__.py index b5be2dbc6..ec1a1f4d2 100644 --- a/patchwork/tests/__init__.py +++ b/patchwork/tests/__init__.py @@ -6,10 +6,10 @@ import os import warnings -TEST_MAIL_DIR = os.path.join(os.path.dirname(__file__), 'mail') -TEST_PATCH_DIR = os.path.join(os.path.dirname(__file__), 'patches') -TEST_FUZZ_DIR = os.path.join(os.path.dirname(__file__), 'fuzztests') -TEST_SERIES_DIR = os.path.join(os.path.dirname(__file__), 'series') +TEST_MAIL_DIR = os.path.join(os.path.dirname(__file__), 'data', 'mail') +TEST_PATCH_DIR = os.path.join(os.path.dirname(__file__), 'data', 'patches') +TEST_FUZZ_DIR = os.path.join(os.path.dirname(__file__), 'data', 'fuzz') +TEST_SERIES_DIR = os.path.join(os.path.dirname(__file__), 'data', 'series') # configure warnings diff --git a/patchwork/tests/fuzztests/base64err.mbox b/patchwork/tests/data/fuzz/base64err.mbox similarity index 100% rename from patchwork/tests/fuzztests/base64err.mbox rename to patchwork/tests/data/fuzz/base64err.mbox diff --git a/patchwork/tests/fuzztests/charset.mbox b/patchwork/tests/data/fuzz/charset.mbox similarity index 100% rename from patchwork/tests/fuzztests/charset.mbox rename to patchwork/tests/data/fuzz/charset.mbox diff --git a/patchwork/tests/fuzztests/codec-null.mbox b/patchwork/tests/data/fuzz/codec-null.mbox similarity index 100% rename from patchwork/tests/fuzztests/codec-null.mbox rename to patchwork/tests/data/fuzz/codec-null.mbox diff --git a/patchwork/tests/fuzztests/date-oserror.mbox b/patchwork/tests/data/fuzz/date-oserror.mbox similarity index 100% rename from patchwork/tests/fuzztests/date-oserror.mbox rename to patchwork/tests/data/fuzz/date-oserror.mbox diff --git a/patchwork/tests/fuzztests/date-too-long.mbox b/patchwork/tests/data/fuzz/date-too-long.mbox similarity index 100% rename from patchwork/tests/fuzztests/date-too-long.mbox rename to patchwork/tests/data/fuzz/date-too-long.mbox diff --git a/patchwork/tests/fuzztests/date.mbox b/patchwork/tests/data/fuzz/date.mbox similarity index 100% rename from patchwork/tests/fuzztests/date.mbox rename to patchwork/tests/data/fuzz/date.mbox diff --git a/patchwork/tests/fuzztests/dateheader.mbox b/patchwork/tests/data/fuzz/dateheader.mbox similarity index 100% rename from patchwork/tests/fuzztests/dateheader.mbox rename to patchwork/tests/data/fuzz/dateheader.mbox diff --git a/patchwork/tests/fuzztests/email-len.mbox b/patchwork/tests/data/fuzz/email-len.mbox similarity index 100% rename from patchwork/tests/fuzztests/email-len.mbox rename to patchwork/tests/data/fuzz/email-len.mbox diff --git a/patchwork/tests/fuzztests/msgid-len.mbox b/patchwork/tests/data/fuzz/msgid-len.mbox similarity index 100% rename from patchwork/tests/fuzztests/msgid-len.mbox rename to patchwork/tests/data/fuzz/msgid-len.mbox diff --git a/patchwork/tests/fuzztests/msgid-len2.mbox b/patchwork/tests/data/fuzz/msgid-len2.mbox similarity index 100% rename from patchwork/tests/fuzztests/msgid-len2.mbox rename to patchwork/tests/data/fuzz/msgid-len2.mbox diff --git a/patchwork/tests/fuzztests/msgidheader.mbox b/patchwork/tests/data/fuzz/msgidheader.mbox similarity index 100% rename from patchwork/tests/fuzztests/msgidheader.mbox rename to patchwork/tests/data/fuzz/msgidheader.mbox diff --git a/patchwork/tests/fuzztests/name-len.mbox b/patchwork/tests/data/fuzz/name-len.mbox similarity index 100% rename from patchwork/tests/fuzztests/name-len.mbox rename to patchwork/tests/data/fuzz/name-len.mbox diff --git a/patchwork/tests/fuzztests/refshdr.mbox b/patchwork/tests/data/fuzz/refshdr.mbox similarity index 100% rename from patchwork/tests/fuzztests/refshdr.mbox rename to patchwork/tests/data/fuzz/refshdr.mbox diff --git a/patchwork/tests/fuzztests/unknown-encoding.mbox b/patchwork/tests/data/fuzz/unknown-encoding.mbox similarity index 100% rename from patchwork/tests/fuzztests/unknown-encoding.mbox rename to patchwork/tests/data/fuzz/unknown-encoding.mbox diff --git a/patchwork/tests/fuzztests/value2.mbox b/patchwork/tests/data/fuzz/value2.mbox similarity index 100% rename from patchwork/tests/fuzztests/value2.mbox rename to patchwork/tests/data/fuzz/value2.mbox diff --git a/patchwork/tests/fuzztests/x-face.mbox b/patchwork/tests/data/fuzz/x-face.mbox similarity index 100% rename from patchwork/tests/fuzztests/x-face.mbox rename to patchwork/tests/data/fuzz/x-face.mbox diff --git a/patchwork/tests/fuzztests/year-out-of-range.mbox b/patchwork/tests/data/fuzz/year-out-of-range.mbox similarity index 100% rename from patchwork/tests/fuzztests/year-out-of-range.mbox rename to patchwork/tests/data/fuzz/year-out-of-range.mbox diff --git a/patchwork/tests/mail/0001-git-pull-request.mbox b/patchwork/tests/data/mail/0001-git-pull-request.mbox similarity index 100% rename from patchwork/tests/mail/0001-git-pull-request.mbox rename to patchwork/tests/data/mail/0001-git-pull-request.mbox diff --git a/patchwork/tests/mail/0002-git-pull-request-wrapped.mbox b/patchwork/tests/data/mail/0002-git-pull-request-wrapped.mbox similarity index 100% rename from patchwork/tests/mail/0002-git-pull-request-wrapped.mbox rename to patchwork/tests/data/mail/0002-git-pull-request-wrapped.mbox diff --git a/patchwork/tests/mail/0003-git-pull-request-with-diff.mbox b/patchwork/tests/data/mail/0003-git-pull-request-with-diff.mbox similarity index 100% rename from patchwork/tests/mail/0003-git-pull-request-with-diff.mbox rename to patchwork/tests/data/mail/0003-git-pull-request-with-diff.mbox diff --git a/patchwork/tests/mail/0004-git-pull-request-git+ssh.mbox b/patchwork/tests/data/mail/0004-git-pull-request-git+ssh.mbox similarity index 100% rename from patchwork/tests/mail/0004-git-pull-request-git+ssh.mbox rename to patchwork/tests/data/mail/0004-git-pull-request-git+ssh.mbox diff --git a/patchwork/tests/mail/0005-git-pull-request-ssh.mbox b/patchwork/tests/data/mail/0005-git-pull-request-ssh.mbox similarity index 100% rename from patchwork/tests/mail/0005-git-pull-request-ssh.mbox rename to patchwork/tests/data/mail/0005-git-pull-request-ssh.mbox diff --git a/patchwork/tests/mail/0006-git-pull-request-http.mbox b/patchwork/tests/data/mail/0006-git-pull-request-http.mbox similarity index 100% rename from patchwork/tests/mail/0006-git-pull-request-http.mbox rename to patchwork/tests/data/mail/0006-git-pull-request-http.mbox diff --git a/patchwork/tests/mail/0007-cvs-format-diff.mbox b/patchwork/tests/data/mail/0007-cvs-format-diff.mbox similarity index 100% rename from patchwork/tests/mail/0007-cvs-format-diff.mbox rename to patchwork/tests/data/mail/0007-cvs-format-diff.mbox diff --git a/patchwork/tests/mail/0008-git-rename.mbox b/patchwork/tests/data/mail/0008-git-rename.mbox similarity index 100% rename from patchwork/tests/mail/0008-git-rename.mbox rename to patchwork/tests/data/mail/0008-git-rename.mbox diff --git a/patchwork/tests/mail/0009-git-rename-with-diff.mbox b/patchwork/tests/data/mail/0009-git-rename-with-diff.mbox similarity index 100% rename from patchwork/tests/mail/0009-git-rename-with-diff.mbox rename to patchwork/tests/data/mail/0009-git-rename-with-diff.mbox diff --git a/patchwork/tests/mail/0010-invalid-charset.mbox b/patchwork/tests/data/mail/0010-invalid-charset.mbox similarity index 100% rename from patchwork/tests/mail/0010-invalid-charset.mbox rename to patchwork/tests/data/mail/0010-invalid-charset.mbox diff --git a/patchwork/tests/mail/0011-no-newline-at-end-of-file.mbox b/patchwork/tests/data/mail/0011-no-newline-at-end-of-file.mbox similarity index 100% rename from patchwork/tests/mail/0011-no-newline-at-end-of-file.mbox rename to patchwork/tests/data/mail/0011-no-newline-at-end-of-file.mbox diff --git a/patchwork/tests/mail/0012-invalid-header-char.mbox b/patchwork/tests/data/mail/0012-invalid-header-char.mbox similarity index 100% rename from patchwork/tests/mail/0012-invalid-header-char.mbox rename to patchwork/tests/data/mail/0012-invalid-header-char.mbox diff --git a/patchwork/tests/mail/0013-with-utf8-body.mbox b/patchwork/tests/data/mail/0013-with-utf8-body.mbox similarity index 100% rename from patchwork/tests/mail/0013-with-utf8-body.mbox rename to patchwork/tests/data/mail/0013-with-utf8-body.mbox diff --git a/patchwork/tests/mail/0014-with-unencoded-utf8-headers.mbox b/patchwork/tests/data/mail/0014-with-unencoded-utf8-headers.mbox similarity index 100% rename from patchwork/tests/mail/0014-with-unencoded-utf8-headers.mbox rename to patchwork/tests/data/mail/0014-with-unencoded-utf8-headers.mbox diff --git a/patchwork/tests/mail/0015-with-invalid-utf8-headers.mbox b/patchwork/tests/data/mail/0015-with-invalid-utf8-headers.mbox similarity index 100% rename from patchwork/tests/mail/0015-with-invalid-utf8-headers.mbox rename to patchwork/tests/data/mail/0015-with-invalid-utf8-headers.mbox diff --git a/patchwork/tests/mail/0016-no-subject.mbox b/patchwork/tests/data/mail/0016-no-subject.mbox similarity index 100% rename from patchwork/tests/mail/0016-no-subject.mbox rename to patchwork/tests/data/mail/0016-no-subject.mbox diff --git a/patchwork/tests/mail/0017-git-pull-request-git-2-14-3.mbox b/patchwork/tests/data/mail/0017-git-pull-request-git-2-14-3.mbox similarity index 100% rename from patchwork/tests/mail/0017-git-pull-request-git-2-14-3.mbox rename to patchwork/tests/data/mail/0017-git-pull-request-git-2-14-3.mbox diff --git a/patchwork/tests/mail/0019-multipart-patch.mbox b/patchwork/tests/data/mail/0019-multipart-patch.mbox similarity index 100% rename from patchwork/tests/mail/0019-multipart-patch.mbox rename to patchwork/tests/data/mail/0019-multipart-patch.mbox diff --git a/patchwork/tests/mail/0020-multipart-comment.mbox b/patchwork/tests/data/mail/0020-multipart-comment.mbox similarity index 100% rename from patchwork/tests/mail/0020-multipart-comment.mbox rename to patchwork/tests/data/mail/0020-multipart-comment.mbox diff --git a/patchwork/tests/mail/0021-git-empty-new-file.mbox b/patchwork/tests/data/mail/0021-git-empty-new-file.mbox similarity index 100% rename from patchwork/tests/mail/0021-git-empty-new-file.mbox rename to patchwork/tests/data/mail/0021-git-empty-new-file.mbox diff --git a/patchwork/tests/mail/0022-git-mode-change.mbox b/patchwork/tests/data/mail/0022-git-mode-change.mbox similarity index 100% rename from patchwork/tests/mail/0022-git-mode-change.mbox rename to patchwork/tests/data/mail/0022-git-mode-change.mbox diff --git a/patchwork/tests/mail/0023-git-pull-request-newline-in-url.mbox b/patchwork/tests/data/mail/0023-git-pull-request-newline-in-url.mbox similarity index 100% rename from patchwork/tests/mail/0023-git-pull-request-newline-in-url.mbox rename to patchwork/tests/data/mail/0023-git-pull-request-newline-in-url.mbox diff --git a/patchwork/tests/mail/0024-git-pull-request-trailing-space.mbox b/patchwork/tests/data/mail/0024-git-pull-request-trailing-space.mbox similarity index 100% rename from patchwork/tests/mail/0024-git-pull-request-trailing-space.mbox rename to patchwork/tests/data/mail/0024-git-pull-request-trailing-space.mbox diff --git a/patchwork/tests/mail/0025-git-add-binary-file.mbox b/patchwork/tests/data/mail/0025-git-add-binary-file.mbox similarity index 100% rename from patchwork/tests/mail/0025-git-add-binary-file.mbox rename to patchwork/tests/data/mail/0025-git-add-binary-file.mbox diff --git a/patchwork/tests/mail/0026-git-add-mixed-binary-text-files.mbox b/patchwork/tests/data/mail/0026-git-add-mixed-binary-text-files.mbox similarity index 100% rename from patchwork/tests/mail/0026-git-add-mixed-binary-text-files.mbox rename to patchwork/tests/data/mail/0026-git-add-mixed-binary-text-files.mbox diff --git a/patchwork/tests/mail/0027-git-modify-binary-file.mbox b/patchwork/tests/data/mail/0027-git-modify-binary-file.mbox similarity index 100% rename from patchwork/tests/mail/0027-git-modify-binary-file.mbox rename to patchwork/tests/data/mail/0027-git-modify-binary-file.mbox diff --git a/patchwork/tests/patches/0001-add-line.patch b/patchwork/tests/data/patches/0001-add-line.patch similarity index 100% rename from patchwork/tests/patches/0001-add-line.patch rename to patchwork/tests/data/patches/0001-add-line.patch diff --git a/patchwork/tests/patches/0002-utf-8.patch b/patchwork/tests/data/patches/0002-utf-8.patch similarity index 100% rename from patchwork/tests/patches/0002-utf-8.patch rename to patchwork/tests/data/patches/0002-utf-8.patch diff --git a/patchwork/tests/series/README.md b/patchwork/tests/data/series/README.md similarity index 100% rename from patchwork/tests/series/README.md rename to patchwork/tests/data/series/README.md diff --git a/patchwork/tests/series/base-cover-letter.mbox b/patchwork/tests/data/series/base-cover-letter.mbox similarity index 100% rename from patchwork/tests/series/base-cover-letter.mbox rename to patchwork/tests/data/series/base-cover-letter.mbox diff --git a/patchwork/tests/series/base-deep-threaded.mbox b/patchwork/tests/data/series/base-deep-threaded.mbox similarity index 100% rename from patchwork/tests/series/base-deep-threaded.mbox rename to patchwork/tests/data/series/base-deep-threaded.mbox diff --git a/patchwork/tests/series/base-different-versions.mbox b/patchwork/tests/data/series/base-different-versions.mbox similarity index 100% rename from patchwork/tests/series/base-different-versions.mbox rename to patchwork/tests/data/series/base-different-versions.mbox diff --git a/patchwork/tests/series/base-extra-patches.mbox b/patchwork/tests/data/series/base-extra-patches.mbox similarity index 100% rename from patchwork/tests/series/base-extra-patches.mbox rename to patchwork/tests/data/series/base-extra-patches.mbox diff --git a/patchwork/tests/series/base-incomplete.mbox b/patchwork/tests/data/series/base-incomplete.mbox similarity index 100% rename from patchwork/tests/series/base-incomplete.mbox rename to patchwork/tests/data/series/base-incomplete.mbox diff --git a/patchwork/tests/series/base-no-cover-letter.mbox b/patchwork/tests/data/series/base-no-cover-letter.mbox similarity index 100% rename from patchwork/tests/series/base-no-cover-letter.mbox rename to patchwork/tests/data/series/base-no-cover-letter.mbox diff --git a/patchwork/tests/series/base-no-references-no-cover.mbox b/patchwork/tests/data/series/base-no-references-no-cover.mbox similarity index 100% rename from patchwork/tests/series/base-no-references-no-cover.mbox rename to patchwork/tests/data/series/base-no-references-no-cover.mbox diff --git a/patchwork/tests/series/base-no-references.mbox b/patchwork/tests/data/series/base-no-references.mbox similarity index 100% rename from patchwork/tests/series/base-no-references.mbox rename to patchwork/tests/data/series/base-no-references.mbox diff --git a/patchwork/tests/series/base-out-of-order.mbox b/patchwork/tests/data/series/base-out-of-order.mbox similarity index 100% rename from patchwork/tests/series/base-out-of-order.mbox rename to patchwork/tests/data/series/base-out-of-order.mbox diff --git a/patchwork/tests/series/base-single-patch.mbox b/patchwork/tests/data/series/base-single-patch.mbox similarity index 100% rename from patchwork/tests/series/base-single-patch.mbox rename to patchwork/tests/data/series/base-single-patch.mbox diff --git a/patchwork/tests/series/bugs-mixed-versions.mbox b/patchwork/tests/data/series/bugs-mixed-versions.mbox similarity index 100% rename from patchwork/tests/series/bugs-mixed-versions.mbox rename to patchwork/tests/data/series/bugs-mixed-versions.mbox diff --git a/patchwork/tests/series/bugs-multiple-content-types.mbox b/patchwork/tests/data/series/bugs-multiple-content-types.mbox similarity index 100% rename from patchwork/tests/series/bugs-multiple-content-types.mbox rename to patchwork/tests/data/series/bugs-multiple-content-types.mbox diff --git a/patchwork/tests/series/bugs-multiple-references.mbox b/patchwork/tests/data/series/bugs-multiple-references.mbox similarity index 100% rename from patchwork/tests/series/bugs-multiple-references.mbox rename to patchwork/tests/data/series/bugs-multiple-references.mbox diff --git a/patchwork/tests/series/bugs-nocover-noversion.mbox b/patchwork/tests/data/series/bugs-nocover-noversion.mbox similarity index 100% rename from patchwork/tests/series/bugs-nocover-noversion.mbox rename to patchwork/tests/data/series/bugs-nocover-noversion.mbox diff --git a/patchwork/tests/series/bugs-nocover.mbox b/patchwork/tests/data/series/bugs-nocover.mbox similarity index 100% rename from patchwork/tests/series/bugs-nocover.mbox rename to patchwork/tests/data/series/bugs-nocover.mbox diff --git a/patchwork/tests/series/bugs-spamming.mbox b/patchwork/tests/data/series/bugs-spamming.mbox similarity index 100% rename from patchwork/tests/series/bugs-spamming.mbox rename to patchwork/tests/data/series/bugs-spamming.mbox diff --git a/patchwork/tests/series/bugs-unnumbered.mbox b/patchwork/tests/data/series/bugs-unnumbered.mbox similarity index 100% rename from patchwork/tests/series/bugs-unnumbered.mbox rename to patchwork/tests/data/series/bugs-unnumbered.mbox diff --git a/patchwork/tests/series/dependency-base-patch.mbox b/patchwork/tests/data/series/dependency-base-patch.mbox similarity index 100% rename from patchwork/tests/series/dependency-base-patch.mbox rename to patchwork/tests/data/series/dependency-base-patch.mbox diff --git a/patchwork/tests/series/dependency-multi-2.mbox.template b/patchwork/tests/data/series/dependency-multi-2.mbox.template similarity index 100% rename from patchwork/tests/series/dependency-multi-2.mbox.template rename to patchwork/tests/data/series/dependency-multi-2.mbox.template diff --git a/patchwork/tests/series/dependency-multi.mbox.template b/patchwork/tests/data/series/dependency-multi.mbox.template similarity index 100% rename from patchwork/tests/series/dependency-multi.mbox.template rename to patchwork/tests/data/series/dependency-multi.mbox.template diff --git a/patchwork/tests/series/dependency-one-cover.mbox.template b/patchwork/tests/data/series/dependency-one-cover.mbox.template similarity index 100% rename from patchwork/tests/series/dependency-one-cover.mbox.template rename to patchwork/tests/data/series/dependency-one-cover.mbox.template diff --git a/patchwork/tests/series/dependency-one-first-patch.mbox.template b/patchwork/tests/data/series/dependency-one-first-patch.mbox.template similarity index 100% rename from patchwork/tests/series/dependency-one-first-patch.mbox.template rename to patchwork/tests/data/series/dependency-one-first-patch.mbox.template diff --git a/patchwork/tests/series/mercurial-cover-letter.mbox b/patchwork/tests/data/series/mercurial-cover-letter.mbox similarity index 100% rename from patchwork/tests/series/mercurial-cover-letter.mbox rename to patchwork/tests/data/series/mercurial-cover-letter.mbox diff --git a/patchwork/tests/series/mercurial-no-cover-letter.mbox b/patchwork/tests/data/series/mercurial-no-cover-letter.mbox similarity index 100% rename from patchwork/tests/series/mercurial-no-cover-letter.mbox rename to patchwork/tests/data/series/mercurial-no-cover-letter.mbox diff --git a/patchwork/tests/series/revision-basic.mbox b/patchwork/tests/data/series/revision-basic.mbox similarity index 100% rename from patchwork/tests/series/revision-basic.mbox rename to patchwork/tests/data/series/revision-basic.mbox diff --git a/patchwork/tests/series/revision-no-cover-letter.mbox b/patchwork/tests/data/series/revision-no-cover-letter.mbox similarity index 100% rename from patchwork/tests/series/revision-no-cover-letter.mbox rename to patchwork/tests/data/series/revision-no-cover-letter.mbox diff --git a/patchwork/tests/series/revision-out-of-order.mbox b/patchwork/tests/data/series/revision-out-of-order.mbox similarity index 100% rename from patchwork/tests/series/revision-out-of-order.mbox rename to patchwork/tests/data/series/revision-out-of-order.mbox diff --git a/patchwork/tests/series/revision-threaded-to-cover.mbox b/patchwork/tests/data/series/revision-threaded-to-cover.mbox similarity index 100% rename from patchwork/tests/series/revision-threaded-to-cover.mbox rename to patchwork/tests/data/series/revision-threaded-to-cover.mbox diff --git a/patchwork/tests/series/revision-threaded-to-patch.mbox b/patchwork/tests/data/series/revision-threaded-to-patch.mbox similarity index 100% rename from patchwork/tests/series/revision-threaded-to-patch.mbox rename to patchwork/tests/data/series/revision-threaded-to-patch.mbox diff --git a/patchwork/tests/series/revision-threaded-to-single-patch.mbox b/patchwork/tests/data/series/revision-threaded-to-single-patch.mbox similarity index 100% rename from patchwork/tests/series/revision-threaded-to-single-patch.mbox rename to patchwork/tests/data/series/revision-threaded-to-single-patch.mbox diff --git a/patchwork/tests/series/revision-unlabeled-noreferences.mbox b/patchwork/tests/data/series/revision-unlabeled-noreferences.mbox similarity index 100% rename from patchwork/tests/series/revision-unlabeled-noreferences.mbox rename to patchwork/tests/data/series/revision-unlabeled-noreferences.mbox diff --git a/patchwork/tests/series/revision-unlabeled.mbox b/patchwork/tests/data/series/revision-unlabeled.mbox similarity index 100% rename from patchwork/tests/series/revision-unlabeled.mbox rename to patchwork/tests/data/series/revision-unlabeled.mbox