Hello community, here is the log from the commit of package python-pytest-django for openSUSE:Factory checked in at 2020-04-05 20:52:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pytest-django (Old) and /work/SRC/openSUSE:Factory/.python-pytest-django.new.3248 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pytest-django" Sun Apr 5 20:52:42 2020 rev:12 rq:791158 version:3.9.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pytest-django/python-pytest-django.changes 2020-03-27 00:22:50.940182390 +0100 +++ /work/SRC/openSUSE:Factory/.python-pytest-django.new.3248/python-pytest-django.changes 2020-04-05 20:52:42.341134427 +0200 @@ -1,0 +2,10 @@ +Fri Apr 3 10:20:28 UTC 2020 - Tomáš Chvátal <tchva...@suse.com> + +- Update to 3.9.0: + * Improve test ordering with Django test classes (#830) + * Remove import of pkg_resources for parsing pytest version (performance) (#826) + * Work around unittest issue with pytest 5.4.{0,1} (#825) + * Don't break --failed-first when re-ordering tests (#819, #820) + * pytest_addoption: use group.addoption (#833) + +------------------------------------------------------------------- Old: ---- pytest-django-3.8.0.tar.gz New: ---- pytest-django-3.9.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pytest-django.spec ++++++ --- /var/tmp/diff_new_pack.VBfVlY/_old 2020-04-05 20:52:42.945135005 +0200 +++ /var/tmp/diff_new_pack.VBfVlY/_new 2020-04-05 20:52:42.949135009 +0200 @@ -19,7 +19,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %bcond_without python2 Name: python-pytest-django -Version: 3.8.0 +Version: 3.9.0 Release: 0 Summary: A Django plugin for py.test License: BSD-3-Clause @@ -32,13 +32,13 @@ BuildRequires: %{python_module six} BuildRequires: fdupes BuildRequires: python-rpm-macros -%if %{with python2} -BuildRequires: python2-pathlib2 -%endif BuildRequires: sqlite3 Requires: python-Django Requires: python-pytest BuildArch: noarch +%if %{with python2} +BuildRequires: python2-pathlib2 +%endif %ifpython2 Requires: python-pathlib2 %endif ++++++ pytest-django-3.8.0.tar.gz -> pytest-django-3.9.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-django-3.8.0/.travis.yml new/pytest-django-3.9.0/.travis.yml --- old/pytest-django-3.8.0/.travis.yml 2020-01-14 06:19:05.000000000 +0100 +++ new/pytest-django-3.9.0/.travis.yml 2020-03-31 11:52:21.000000000 +0200 @@ -1,5 +1,6 @@ language: python dist: xenial +cache: false jobs: fast_finish: true @@ -36,8 +37,9 @@ - python: 3.6 env: TOXENV=py36-djmaster-sqlite-coverage + # Explicitly test (older) pytest 5.3. - python: 3.5 - env: TOXENV=py35-dj110-postgres-coverage + env: TOXENV=py35-dj110-postgres-pytest53-coverage services: - postgresql diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-django-3.8.0/PKG-INFO new/pytest-django-3.9.0/PKG-INFO --- old/pytest-django-3.8.0/PKG-INFO 2020-01-14 06:19:20.000000000 +0100 +++ new/pytest-django-3.9.0/PKG-INFO 2020-03-31 11:52:37.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: pytest-django -Version: 3.8.0 +Version: 3.9.0 Summary: A Django plugin for pytest. Home-page: https://pytest-django.readthedocs.io/ Author: Andreas Pelme @@ -9,6 +9,7 @@ Maintainer-email: andr...@pelme.se License: BSD-3-Clause Project-URL: Source, https://github.com/pytest-dev/pytest-django +Project-URL: Changelog, https://pytest-django.readthedocs.io/en/latest/changelog.html Description: .. image:: https://img.shields.io/pypi/v/pytest-django.svg?style=flat :alt: PyPI Version :target: https://pypi.python.org/pypi/pytest-django diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-django-3.8.0/docs/changelog.rst new/pytest-django-3.9.0/docs/changelog.rst --- old/pytest-django-3.8.0/docs/changelog.rst 2020-01-14 06:19:05.000000000 +0100 +++ new/pytest-django-3.9.0/docs/changelog.rst 2020-03-31 11:52:21.000000000 +0200 @@ -1,8 +1,39 @@ Changelog ========= -3.8.0 (2020-01-14) ------------------- +v3.9.0 (2020-03-31) +------------------- + +Improvements +^^^^^^^^^^^^ + +* Improve test ordering with Django test classes (#830) + +* Remove import of pkg_resources for parsing pytest version (performance) (#826) + +Bugfixes +^^^^^^^^ + +* Work around unittest issue with pytest 5.4.{0,1} (#825) + +* Don't break --failed-first when re-ordering tests (#819, #820) + +* pytest_addoption: use `group.addoption` (#833) + +Misc +^^^^ + +* Remove Django version from --nomigrations heading (#822) + +* docs: changelog: prefix headers with v for permalink anchors + +* changelog: add custom/fixed anchor for last version + +* setup.py: add Changelog to project_urls + + +v3.8.0 (2020-01-14) +-------------------- Improvements ^^^^^^^^^^^^ @@ -12,8 +43,8 @@ * Report django-configurations setting (#791) -3.7.0 (2019-11-09) ------------------- +v3.7.0 (2019-11-09) +------------------- Bugfixes ^^^^^^^^ @@ -26,8 +57,8 @@ DB access (#781). pytest-django uses a ``RuntimeError`` now instead. -3.6.0 (2019-10-17) ------------------- +v3.6.0 (2019-10-17) +------------------- Features ^^^^^^^^ @@ -45,16 +76,16 @@ * Improve/harden internal tests / infrastructure. -3.5.1 (2019-06-29) ------------------- +v3.5.1 (2019-06-29) +------------------- Bugfixes ^^^^^^^^ * Fix compatibility with pytest 5.x (#751) -3.5.0 (2019-06-03) ------------------- +v3.5.0 (2019-06-03) +------------------- Features ^^^^^^^^ @@ -79,24 +110,24 @@ * Slightly revisit unittest handling (#740) -3.4.8 (2019-02-26) ------------------- +v3.4.8 (2019-02-26) +------------------- Bugfixes ^^^^^^^^ * Fix DB renaming fixture for Multi-DB environment with SQLite (#679) -3.4.7 (2019-02-03) ------------------- +v3.4.7 (2019-02-03) +------------------- Bugfixes ^^^^^^^^ * Fix disabling/handling of unittest methods with pytest 4.2+ (#700) -3.4.6 (2019-02-01) ------------------- +v3.4.6 (2019-02-01) +------------------- Bugfixes ^^^^^^^^ @@ -109,8 +140,8 @@ * Enable tests for Django 2.2 and add classifier (#693) * Disallow pytest 4.2.0 in ``install_requires`` (#697) -3.4.5 (2019-01-07) ------------------- +v3.4.5 (2019-01-07) +------------------- Bugfixes ^^^^^^^^ @@ -124,8 +155,8 @@ * Minor doc fixes (#674) * tests: fix for pytest 4 (#675) -3.4.4 (2018-11-13) ------------------- +v3.4.4 (2018-11-13) +------------------- Bugfixes ^^^^^^^^ @@ -153,16 +184,16 @@ * Run black on source. -3.4.3 (2018-09-16) ------------------- +v3.4.3 (2018-09-16) +------------------- Bugfixes ^^^^^^^^ * Fix OSError with arguments containing ``::`` on Windows (#641). -3.4.2 (2018-08-20) ------------------- +v3.4.2 (2018-08-20) +------------------- Bugfixes ^^^^^^^^ @@ -171,8 +202,8 @@ * Fixed code for inserting the project to sys.path with pathlib to use an absolute path, regression in 3.4.0 (#637, #638). -3.4.0 (2018-08-16) ------------------- +v3.4.0 (2018-08-16) +------------------- Features ^^^^^^^^ @@ -193,8 +224,8 @@ * Removed py dependency, use pathlib instead (#631). -3.3.3 (2018-07-26) ------------------- +v3.3.3 (2018-07-26) +------------------- Bug fixes ^^^^^^^^^ @@ -209,8 +240,8 @@ * Use sphinx_rtf_theme (#621). * Minor fixes. -3.3.2 (2018-06-21) ------------------- +v3.3.2 (2018-06-21) +------------------- Bug fixes ^^^^^^^^^ @@ -223,8 +254,8 @@ * Support Django 2.1 (no changes necessary) (#614). -3.3.0 (2018-06-15) ------------------- +v3.3.0 (2018-06-15) +------------------- Features ^^^^^^^^ @@ -247,13 +278,13 @@ * The required `pytest` version changed from >=2.9 to >=3.6. -3.2.1 ------ +v3.2.1 +------ * Fixed automatic deployment to PyPI. -3.2.0 ------ +v3.2.0 +------ Features ^^^^^^^^ @@ -277,8 +308,8 @@ * Support for Django 2.0 has been added. * Support for Django before 1.8 has been dropped. -3.1.2 ------ +v3.1.2 +------ Bug fixes ^^^^^^^^^ @@ -288,8 +319,8 @@ mentioned in the 3.1.0 release are no longer present. Related issue: `pytest-django issue <https://github.com/pytest-dev/pytest-django/issues/433>`__ -3.1.1 ------ +v3.1.1 +------ Bug fixes ^^^^^^^^^ @@ -300,8 +331,8 @@ `pytest issue <https://github.com/pytest-dev/pytest/issues/1977>`__, `Django issue <https://code.djangoproject.com/ticket/27391>`__ -3.1.0 ------ +v3.1.0 +------ Features ^^^^^^^^ @@ -328,8 +359,8 @@ mail.outbox = [] -3.0.0 ------ +v3.0.0 +------ Bug fixes ^^^^^^^^^ @@ -379,8 +410,8 @@ update your code. See :ref:`advanced-database-configuration` for more information on the new fixtures and example use cases. -2.9.1 ------ +v2.9.1 +------ Bug fixes ^^^^^^^^^ @@ -390,10 +421,10 @@ <https://github.com/pytest-dev/pytest-django/issues/280>`__. -2.9.0 ------ +v2.9.0 +------ -2.9.0 focus on compatibility with Django 1.9 and master as well as pytest 2.8.1 +v2.9.0 focus on compatibility with Django 1.9 and master as well as pytest 2.8.1 and Python 3.5 Features @@ -432,8 +463,8 @@ * Drop support for Django 1.3. While pytest-django supports a wide range of Django versions, extended for Django 1.3 was dropped in february 2013. -2.8.0 ------ +v2.8.0 +------ Features ^^^^^^^^ @@ -452,8 +483,8 @@ `setUpClass`/`setUpTestData`. Django 1.8 is now a fully supported version. Django master as of 2014-01-18 (the Django 1.9 branch) is also supported. -2.7.0 ------ +v2.7.0 +------ Features ^^^^^^^^ @@ -496,16 +527,16 @@ * ``DJANGO_LIVE_TEST_SERVER_ADDRESS`` environment variable is read instead of ``DJANGO_TEST_LIVE_SERVER_ADDRESS``. (#140) -2.6.2 ------ +v2.6.2 +------ * Fixed a bug that caused doctests to runs. Thanks to @jjmurre for the patch * Fixed issue #88 - make sure to use SQLite in memory database when running with pytest-xdist. -2.6.1 ------ +v2.6.1 +------ This is a bugfix/support release with no new features: * Added support for Django 1.7 beta and Django master as of 2014-04-16. @@ -515,22 +546,22 @@ * Support for MySQL with MyISAM tables. Thanks to Zach Kanzler and Julen Ruiz Aizpuru for fixing this. This fixes issue #8 #64. -2.6.0 ------ +v2.6.0 +------ * Experimental support for Django 1.7 / Django master as of 2014-01-19. pytest-django is now automatically tested against the latest git version of Django. The support is experimental since Django 1.7 is not yet released, but the goal is to always be up to date with the latest Django master -2.5.1 ------ +v2.5.1 +------ Invalid release accidentally pushed to PyPI (identical to 2.6.1). Should not be used - use 2.6.1 or newer to avoid confusion. -2.5.0 ------ +v2.5.0 +------ * Python 2.5 compatibility dropped. py.test 2.5 dropped support for Python 2.5, therefore it will be hard to properly support in pytest-django. The same strategy as for pytest itself is used: No code will be changed to prevent @@ -540,44 +571,44 @@ pytest-xdist as normal (pass -n to py.test). One database will be created for each subprocess so that tests run independent from each other. -2.4.0 ------ +v2.4.0 +------ * Support for py.test 2.4 pytest_load_initial_conftests. This makes it possible to import Django models in project conftest.py files, since pytest-django will be initialized before the conftest.py is loaded. -2.3.1 ------ +v2.3.1 +------ * Support for Django 1.5 custom user models, thanks to Leonardo Santagada. -2.3.0 ------ +v2.3.0 +------ * Support for configuring settings via django-configurations. Big thanks to Donald Stufft for this feature! -2.2.1 ------ +v2.2.1 +------ * Fixed an issue with the settings fixture when used in combination with django-appconf. It now uses pytest's monkeypatch internally and should be more robust. -2.2.0 ------ +v2.2.0 +------ * Python 3 support. pytest-django now supports Python 3.2 and 3.3 in addition to 2.5-2.7. Big thanks to Rafal Stozek for making this happen! -2.1.0 ------ +v2.1.0 +------ * Django 1.5 support. pytest-django is now tested against 1.5 for Python 2.6-2.7. This is the first step towards Python 3 support. -2.0.1 ------ +v2.0.1 +------ * Fixed #24/#25: Make it possible to configure Django via ``django.conf.settings.configure()``. @@ -586,8 +617,8 @@ does not change this setting in the default test runner, so pytest-django should not do it either. -2.0.0 ------ +v2.0.0 +------ This release is *backward incompatible*. The biggest change is the need to add the ``pytest.mark.django_db`` to tests which require database @@ -635,39 +666,39 @@ * Deprecate the ``transaction_test_case`` decorator, this is now integrated with the ``django_db`` mark. -1.4 ---- +v1.4 +---- * Removed undocumented pytest.load_fixture: If you need this feature, just use ``django.management.call_command('loaddata', 'foo.json')`` instead. * Fixed issue with RequestFactory in Django 1.3. * Fixed issue with RequestFactory in Django 1.3. -1.3 ---- +v1.3 +---- * Added ``--reuse-db`` and ``--create-db`` to allow database re-use. Many thanks to `django-nose <https://github.com/jbalogh/django-nose>`__ for code and inspiration for this feature. -1.2.2 ------ +v1.2.2 +------ * Fixed Django 1.3 compatibility. -1.2.1 ------ +v1.2.1 +------ * Disable database access and raise errors when using --no-db and accessing the database by accident. -1.2 ---- +v1.2 +---- * Added the ``--no-db`` command line option. -1.1.1 ------ +v1.1.1 +------ * Flush tables after each test run with transaction_test_case instead of before. -1.1 ---- +v1.1 +---- * The initial release of this fork from `Ben Firshman original project <http://github.com/bfirsh/pytest_django>`__ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-django-3.8.0/docs/database.rst new/pytest-django-3.9.0/docs/database.rst --- old/pytest-django-3.8.0/docs/database.rst 2020-01-14 06:19:05.000000000 +0100 +++ new/pytest-django-3.9.0/docs/database.rst 2020-03-31 11:52:21.000000000 +0200 @@ -125,8 +125,8 @@ * When you alter your database schema, run ``pytest --create-db``, to force re-creation of the test database. -``--nomigrations`` - Disable Django 1.7+ migrations --------------------------------------------------------------- +``--nomigrations`` - Disable Django migrations +---------------------------------------------- Using ``--nomigrations`` will disable Django migrations and create the database by inspecting all models. It may be faster when there are several migrations to @@ -401,7 +401,7 @@ """"""""""""""""""""""""""""""""""""""""""""" By default, each xdist process gets its own database to run tests on. This is -needed to have transactional tests that does not interfere with eachother. +needed to have transactional tests that do not interfere with each other. If you instead want your tests to use the same database, override the :fixture:`django_db_modify_db_settings` to not do anything. Put this in diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-django-3.8.0/pytest_django/plugin.py new/pytest-django-3.9.0/pytest_django/plugin.py --- old/pytest-django-3.8.0/pytest_django/plugin.py 2020-01-14 06:19:05.000000000 +0100 +++ new/pytest-django-3.9.0/pytest_django/plugin.py 2020-03-31 11:52:21.000000000 +0200 @@ -12,7 +12,6 @@ import types import pytest -from pkg_resources import parse_version from .django_compat import is_django_unittest # noqa from .fixtures import django_assert_num_queries # noqa @@ -53,7 +52,8 @@ PY2 = sys.version_info[0] == 2 # pytest 4.2 handles unittest setup/teardown itself via wrapping fixtures. -_handle_unittest_methods = parse_version(pytest.__version__) < parse_version("4.2") +_pytest_version_info = tuple(int(x) for x in pytest.__version__.split(".", 2)[:2]) +_handle_unittest_methods = _pytest_version_info < (4, 2) _report_header = [] @@ -63,7 +63,7 @@ def pytest_addoption(parser): group = parser.getgroup("django") - group._addoption( + group.addoption( "--reuse-db", action="store_true", dest="reuse_db", @@ -71,7 +71,7 @@ help="Re-use the testing database if it already exists, " "and do not remove it when the test finishes.", ) - group._addoption( + group.addoption( "--create-db", action="store_true", dest="create_db", @@ -79,7 +79,7 @@ help="Re-create the database, even if it exists. This " "option can be used to override --reuse-db.", ) - group._addoption( + group.addoption( "--ds", action="store", type=str, @@ -87,7 +87,7 @@ default=None, help="Set DJANGO_SETTINGS_MODULE.", ) - group._addoption( + group.addoption( "--dc", action="store", type=str, @@ -95,7 +95,7 @@ default=None, help="Set DJANGO_CONFIGURATION.", ) - group._addoption( + group.addoption( "--nomigrations", "--no-migrations", action="store_true", @@ -103,7 +103,7 @@ default=False, help="Disable Django migrations on test setup", ) - group._addoption( + group.addoption( "--migrations", action="store_false", dest="nomigrations", @@ -113,7 +113,7 @@ parser.addini( CONFIGURATION_ENV, "django-configurations class to use by pytest-django." ) - group._addoption( + group.addoption( "--liveserver", default=None, help="Address and port for the live_server fixture.", @@ -128,7 +128,7 @@ type="bool", default=True, ) - group._addoption( + group.addoption( "--fail-on-template-vars", action="store_true", dest="itv", @@ -415,8 +415,22 @@ _disable_class_methods(item.cls) +@pytest.hookimpl(tryfirst=True) def pytest_collection_modifyitems(items): + # If Django is not configured we don't need to bother + if not django_settings_is_configured(): + return + + from django.test import TestCase, TransactionTestCase + def get_order_number(test): + if hasattr(test, "cls") and test.cls: + # Beware, TestCase is a subclass of TransactionTestCase + if issubclass(test.cls, TestCase): + return 0 + if issubclass(test.cls, TransactionTestCase): + return 1 + marker_db = test.get_closest_marker('django_db') if marker_db: transaction = validate_django_db(marker_db)[0] @@ -506,20 +520,16 @@ yield return - from _pytest.unittest import TestCaseFunction + # Fix/patch pytest. + # Before pytest 5.4: https://github.com/pytest-dev/pytest/issues/5991 + # After pytest 5.4: https://github.com/pytest-dev/pytest-django/issues/824 + from _pytest.monkeypatch import MonkeyPatch - if "debug" in TestCaseFunction.runtest.__code__.co_names: - # Fix pytest (https://github.com/pytest-dev/pytest/issues/5991), only - # if "self._testcase.debug()" is being used (forward compatible). - from _pytest.monkeypatch import MonkeyPatch + def non_debugging_runtest(self): + self._testcase(result=self) - def non_debugging_runtest(self): - self._testcase(result=self) - - mp_debug = MonkeyPatch() - mp_debug.setattr("_pytest.unittest.TestCaseFunction.runtest", non_debugging_runtest) - else: - mp_debug = None + mp_debug = MonkeyPatch() + mp_debug.setattr("_pytest.unittest.TestCaseFunction.runtest", non_debugging_runtest) request.getfixturevalue("django_db_setup") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-django-3.8.0/pytest_django.egg-info/PKG-INFO new/pytest-django-3.9.0/pytest_django.egg-info/PKG-INFO --- old/pytest-django-3.8.0/pytest_django.egg-info/PKG-INFO 2020-01-14 06:19:20.000000000 +0100 +++ new/pytest-django-3.9.0/pytest_django.egg-info/PKG-INFO 2020-03-31 11:52:37.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: pytest-django -Version: 3.8.0 +Version: 3.9.0 Summary: A Django plugin for pytest. Home-page: https://pytest-django.readthedocs.io/ Author: Andreas Pelme @@ -9,6 +9,7 @@ Maintainer-email: andr...@pelme.se License: BSD-3-Clause Project-URL: Source, https://github.com/pytest-dev/pytest-django +Project-URL: Changelog, https://pytest-django.readthedocs.io/en/latest/changelog.html Description: .. image:: https://img.shields.io/pypi/v/pytest-django.svg?style=flat :alt: PyPI Version :target: https://pypi.python.org/pypi/pytest-django diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-django-3.8.0/pytest_django_test/db_helpers.py new/pytest-django-3.9.0/pytest_django_test/db_helpers.py --- old/pytest-django-3.8.0/pytest_django_test/db_helpers.py 2020-01-14 06:19:05.000000000 +0100 +++ new/pytest-django-3.9.0/pytest_django_test/db_helpers.py 2020-03-31 11:52:21.000000000 +0200 @@ -61,7 +61,15 @@ pytest.skip("Do not test db reuse since database does not support it") -def drop_database(name=TEST_DB_NAME): +def _get_db_name(db_suffix=None): + name = TEST_DB_NAME + if db_suffix: + name = "%s_%s" % (name, db_suffix) + return name + + +def drop_database(db_suffix=None): + name = _get_db_name(db_suffix) db_engine = get_db_engine() if db_engine == "postgresql_psycopg2": @@ -83,12 +91,9 @@ def db_exists(db_suffix=None): - name = TEST_DB_NAME + name = _get_db_name(db_suffix) db_engine = get_db_engine() - if db_suffix: - name = "%s_%s" % (name, db_suffix) - if db_engine == "postgresql_psycopg2": r = run_cmd("psql", name, "-c", "SELECT 1") return r.status_code == 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-django-3.8.0/pytest_django_test/settings_base.py new/pytest-django-3.9.0/pytest_django_test/settings_base.py --- old/pytest-django-3.8.0/pytest_django_test/settings_base.py 2020-01-14 06:19:05.000000000 +0100 +++ new/pytest-django-3.9.0/pytest_django_test/settings_base.py 2020-03-31 11:52:21.000000000 +0200 @@ -1,5 +1,3 @@ -import os - import django ROOT_URLCONF = "pytest_django_test.urls" @@ -14,10 +12,6 @@ STATIC_URL = "/static/" SECRET_KEY = "foobar" -# Used to construct unique test database names to allow detox to run multiple -# versions at the same time -db_suffix = "_%s" % os.getuid() - MIDDLEWARE = [ "django.contrib.sessions.middleware.SessionMiddleware", "django.middleware.common.CommonMiddleware", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-django-3.8.0/pytest_django_test/settings_mysql_innodb.py new/pytest-django-3.9.0/pytest_django_test/settings_mysql_innodb.py --- old/pytest-django-3.8.0/pytest_django_test/settings_mysql_innodb.py 2020-01-14 06:19:05.000000000 +0100 +++ new/pytest-django-3.9.0/pytest_django_test/settings_mysql_innodb.py 2020-03-31 11:52:21.000000000 +0200 @@ -1,9 +1,9 @@ -from .settings_base import * # noqa: F403 +from .settings_base import * # noqa: F401 F403 DATABASES = { "default": { "ENGINE": "django.db.backends.mysql", - "NAME": "pytest_django" + db_suffix, # noqa: F405 + "NAME": "pytest_django_should_never_get_accessed", "HOST": "localhost", "USER": "root", "OPTIONS": {"init_command": "SET default_storage_engine=InnoDB"}, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-django-3.8.0/pytest_django_test/settings_mysql_myisam.py new/pytest-django-3.9.0/pytest_django_test/settings_mysql_myisam.py --- old/pytest-django-3.8.0/pytest_django_test/settings_mysql_myisam.py 2020-01-14 06:19:05.000000000 +0100 +++ new/pytest-django-3.9.0/pytest_django_test/settings_mysql_myisam.py 2020-03-31 11:52:21.000000000 +0200 @@ -1,9 +1,9 @@ -from pytest_django_test.settings_base import * # noqa: F403 +from .settings_base import * # noqa: F401 F403 DATABASES = { "default": { "ENGINE": "django.db.backends.mysql", - "NAME": "pytest_django" + db_suffix, # noqa: F405 + "NAME": "pytest_django_should_never_get_accessed", "HOST": "localhost", "USER": "root", "OPTIONS": {"init_command": "SET default_storage_engine=MyISAM"}, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-django-3.8.0/pytest_django_test/settings_postgres.py new/pytest-django-3.9.0/pytest_django_test/settings_postgres.py --- old/pytest-django-3.8.0/pytest_django_test/settings_postgres.py 2020-01-14 06:19:05.000000000 +0100 +++ new/pytest-django-3.9.0/pytest_django_test/settings_postgres.py 2020-03-31 11:52:21.000000000 +0200 @@ -1,4 +1,4 @@ -from pytest_django_test.settings_base import * # noqa +from .settings_base import * # noqa: F401 F403 # PyPy compatibility try: @@ -12,7 +12,7 @@ DATABASES = { "default": { "ENGINE": "django.db.backends.postgresql_psycopg2", - "NAME": "pytest_django" + db_suffix, # noqa + "NAME": "pytest_django_should_never_get_accessed", "HOST": "localhost", "USER": "", } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-django-3.8.0/pytest_django_test/settings_sqlite.py new/pytest-django-3.9.0/pytest_django_test/settings_sqlite.py --- old/pytest-django-3.8.0/pytest_django_test/settings_sqlite.py 2020-01-14 06:19:05.000000000 +0100 +++ new/pytest-django-3.9.0/pytest_django_test/settings_sqlite.py 2020-03-31 11:52:21.000000000 +0200 @@ -1,4 +1,4 @@ -from .settings_base import * # noqa +from .settings_base import * # noqa: F401 F403 DATABASES = { "default": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-django-3.8.0/pytest_django_test/settings_sqlite_file.py new/pytest-django-3.9.0/pytest_django_test/settings_sqlite_file.py --- old/pytest-django-3.8.0/pytest_django_test/settings_sqlite_file.py 2020-01-14 06:19:05.000000000 +0100 +++ new/pytest-django-3.9.0/pytest_django_test/settings_sqlite_file.py 2020-03-31 11:52:21.000000000 +0200 @@ -1,6 +1,6 @@ import tempfile -from pytest_django_test.settings_base import * # noqa +from .settings_base import * # noqa: F401 F403 # This is a SQLite configuration, which uses a file based database for # tests (via setting TEST_NAME / TEST['NAME']). @@ -11,7 +11,7 @@ DATABASES = { "default": { "ENGINE": "django.db.backends.sqlite3", - "NAME": "/should_never_be_accessed", + "NAME": "/pytest_django_should_never_get_accessed", "TEST": {"NAME": _filename}, } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-django-3.8.0/setup.py new/pytest-django-3.9.0/setup.py --- old/pytest-django-3.8.0/setup.py 2020-01-14 06:19:05.000000000 +0100 +++ new/pytest-django-3.9.0/setup.py 2020-03-31 11:52:21.000000000 +0200 @@ -71,6 +71,7 @@ ], project_urls={ 'Source': 'https://github.com/pytest-dev/pytest-django', + 'Changelog': 'https://pytest-django.readthedocs.io/en/latest/changelog.html', }, # the following makes a plugin available to pytest entry_points={'pytest11': ['django = pytest_django.plugin']}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-django-3.8.0/tests/test_db_setup.py new/pytest-django-3.9.0/tests/test_db_setup.py --- old/pytest-django-3.8.0/tests/test_db_setup.py 2020-01-14 06:19:05.000000000 +0100 +++ new/pytest-django-3.9.0/tests/test_db_setup.py 2020-03-31 11:52:21.000000000 +0200 @@ -33,7 +33,9 @@ """Test order in which tests are being executed.""" django_testdir.create_test_module(''' + from unittest import TestCase import pytest + from django.test import SimpleTestCase, TestCase as DjangoTestCase, TransactionTestCase from .app.models import Item @@ -50,14 +52,34 @@ @pytest.mark.django_db def test_run_first_decorator(): pass + + class MyTestCase(TestCase): + def test_run_last_test_case(self): + pass + + class MySimpleTestCase(SimpleTestCase): + def test_run_last_simple_test_case(self): + pass + + class MyDjangoTestCase(DjangoTestCase): + def test_run_first_django_test_case(self): + pass + + class MyTransactionTestCase(TransactionTestCase): + def test_run_second_transaction_test_case(self): + pass ''') result = django_testdir.runpytest_subprocess('-v', '-s') assert result.ret == 0 result.stdout.fnmatch_lines([ "*test_run_first_fixture*", "*test_run_first_decorator*", + "*test_run_first_django_test_case*", "*test_run_second_decorator*", "*test_run_second_fixture*", + "*test_run_second_transaction_test_case*", + "*test_run_last_test_case*", + "*test_run_last_simple_test_case*", ]) @@ -152,6 +174,8 @@ drop_database("gw0") drop_database("gw1") + assert not db_exists("gw0") + assert not db_exists("gw1") django_testdir.create_test_module( """ @@ -214,6 +238,10 @@ result.stdout.fnmatch_lines(["*PASSED*test_c*"]) result.stdout.fnmatch_lines(["*PASSED*test_d*"]) + # Cleanup. + drop_database("gw0") + drop_database("gw1") + class TestSqliteWithXdist: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-django-3.8.0/tests/test_unittest.py new/pytest-django-3.9.0/tests/test_unittest.py --- old/pytest-django-3.8.0/tests/test_unittest.py 2020-01-14 06:19:05.000000000 +0100 +++ new/pytest-django-3.9.0/tests/test_unittest.py 2020-03-31 11:52:21.000000000 +0200 @@ -1,7 +1,7 @@ import pytest from django.test import TestCase -from pkg_resources import parse_version +from pytest_django.plugin import _pytest_version_info from pytest_django_test.app.models import Item @@ -58,10 +58,11 @@ def test_sole_test(django_testdir): """ - Make sure the database are configured when only Django TestCase classes + Make sure the database is configured when only Django TestCase classes are collected, without the django_db marker. - """ + Also ensures that the DB is available after a failure (#824). + """ django_testdir.create_test_module( """ import os @@ -80,12 +81,27 @@ # Make sure it is usable assert Item.objects.count() == 0 + + assert 0, "trigger_error" + + class TestBar(TestCase): + def test_bar(self): + assert Item.objects.count() == 0 """ ) result = django_testdir.runpytest_subprocess("-v") - result.stdout.fnmatch_lines(["*TestFoo*test_foo PASSED*"]) - assert result.ret == 0 + result.stdout.fnmatch_lines( + [ + "*::test_foo FAILED", + "*::test_bar PASSED", + '> assert 0, "trigger_error"', + "E AssertionError: trigger_error", + "E assert 0", + "*= 1 failed, 1 passed in *", + ] + ) + assert result.ret == 1 class TestUnittestMethods: @@ -146,7 +162,7 @@ expected_lines = [ "* ERROR at setup of TestFoo.test_pass *", ] - if parse_version(pytest.__version__) < parse_version("4.2"): + if _pytest_version_info < (4, 2): expected_lines += [ "E *Failed: <class 'tpkg.test_the_test.TestFoo'>.setUpClass should be a classmethod", # noqa:E501 ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-django-3.8.0/tox.ini new/pytest-django-3.9.0/tox.ini --- old/pytest-django-3.8.0/tox.ini 2020-01-14 06:19:05.000000000 +0100 +++ new/pytest-django-3.9.0/tox.ini 2020-03-31 11:52:21.000000000 +0200 @@ -29,6 +29,7 @@ pytest41: pytest>=4.1,<4.2 pytest41: attrs==17.4.0 + pytest53: pytest>=5.3,<5.4 xdist: pytest-xdist>=1.15 setenv = @@ -55,6 +56,7 @@ coverage: coverage xml [testenv:checkqa] +extras = deps = flake8 commands = @@ -62,6 +64,7 @@ flake8 --statistics {posargs:pytest_django pytest_django_test tests} [testenv:doc8] +extras = basepython = python3.6 skip_install = true deps = @@ -76,6 +79,7 @@ commands = sphinx-build -n -W -b html -d docs/_build/doctrees docs docs/_build/html [testenv:readme] +extras = basepython = python3.5 deps = readme_renderer