diff options
-rw-r--r-- | gnu/local.mk | 1 | ||||
-rw-r--r-- | gnu/packages/check.scm | 32 | ||||
-rw-r--r-- | gnu/packages/patches/python-pytest-pluggy-compat.patch | 64 |
3 files changed, 83 insertions, 14 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index 64d4324607..de352884a1 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1182,6 +1182,7 @@ dist_patch_DATA = \ %D%/packages/patches/python-pycrypto-CVE-2013-7459.patch \ %D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \ %D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch \ + %D%/packages/patches/python-pytest-pluggy-compat.patch \ %D%/packages/patches/python2-subprocess32-disable-input-test.patch \ %D%/packages/patches/python-unittest2-python3-compat.patch \ %D%/packages/patches/python-unittest2-remove-argparse.patch \ diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index 03e6c5fcd0..20132492a7 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -660,31 +660,35 @@ standard library.") (define-public python-pytest (package (name "python-pytest") - (version "3.8.0") + (version "4.3.0") (source (origin (method url-fetch) (uri (pypi-uri "pytest" version)) + (patches (search-patches "python-pytest-pluggy-compat.patch")) (sha256 (base32 - "17grcfvd6ggvvqmprwv5y8g319nayam70hr43ssjwj40ws27z858")))) + "077gzimi9xiiyzpc3xjpb5yfgz038xkldg91mmbdvzr7z15isyh6")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases - (add-before 'check 'disable-invalid-tests + (replace 'check (lambda _ - ;; Some tests involves the /usr directory, and fails. - (substitute* "testing/test_argcomplete.py" - (("def test_remove_dir_prefix\\(self\\):") - "@pytest.mark.xfail\n def test_remove_dir_prefix(self):")) - (substitute* "testing/test_argcomplete.py" - (("def test_remove_dir_prefix" line) - (string-append "@pytest.mark.skip" - "(reason=\"Assumes that /usr exists.\")\n " - line))) - #t)) - (replace 'check (lambda _ (invoke "pytest" "-vv")))))) + (invoke "pytest" "-vv" "-k" + (string-append + ;; These tests involve the /usr directory, and fails. + "not test_remove_dir_prefix" + " and not test_argcomplete" + ;; This test tries to override PYTHONPATH, and + ;; subsequently fails to locate the test libraries. + " and not test_collection" + ;; These tests fail when run in verbose mode: + ;; <https://github.com/pytest-dev/pytest/issues/4879>. + " and not test_dont_rewrite_if_hasattr_fails" + " and not test_len" + " and not test_custom_repr" + " and not test_name"))))))) (propagated-inputs `(("python-atomicwrites" ,python-atomicwrites) ("python-attrs" ,python-attrs-bootstrap) diff --git a/gnu/packages/patches/python-pytest-pluggy-compat.patch b/gnu/packages/patches/python-pytest-pluggy-compat.patch new file mode 100644 index 0000000000..ac33b862e6 --- /dev/null +++ b/gnu/packages/patches/python-pytest-pluggy-compat.patch @@ -0,0 +1,64 @@ +Fix test failures when built against Pluggy 0.9. + +Taken from this upstream commit: +https://github.com/pytest-dev/pytest/commit/a68f4fd2b9e99c82476d0e04ebcf561aeddbcb2e + +diff --git a/testing/test_assertion.py b/testing/test_assertion.py +index b659233eb..e4fe56c6f 100644 +--- a/testing/test_assertion.py ++++ b/testing/test_assertion.py +@@ -209,7 +209,7 @@ def load(self, require=True, *args, **kwargs): + import spamplugin + return spamplugin + +- def iter_entry_points(name): ++ def iter_entry_points(group, name=None): + yield DummyEntryPoint() + + pkg_resources.iter_entry_points = iter_entry_points +diff --git a/testing/test_config.py b/testing/test_config.py +index f9f22a63e..1e29b83f1 100644 +--- a/testing/test_config.py ++++ b/testing/test_config.py +@@ -514,8 +514,8 @@ def test_preparse_ordering_with_setuptools(testdir, monkeypatch): + pkg_resources = pytest.importorskip("pkg_resources") + monkeypatch.delenv("PYTEST_DISABLE_PLUGIN_AUTOLOAD", raising=False) + +- def my_iter(name): +- assert name == "pytest11" ++ def my_iter(group, name=None): ++ assert group == "pytest11" + + class Dist(object): + project_name = "spam" +@@ -552,8 +552,8 @@ def test_setuptools_importerror_issue1479(testdir, monkeypatch): + pkg_resources = pytest.importorskip("pkg_resources") + monkeypatch.delenv("PYTEST_DISABLE_PLUGIN_AUTOLOAD", raising=False) + +- def my_iter(name): +- assert name == "pytest11" ++ def my_iter(group, name=None): ++ assert group == "pytest11" + + class Dist(object): + project_name = "spam" +@@ -583,8 +583,8 @@ def test_plugin_preparse_prevents_setuptools_loading(testdir, monkeypatch, block + + plugin_module_placeholder = object() + +- def my_iter(name): +- assert name == "pytest11" ++ def my_iter(group, name=None): ++ assert group == "pytest11" + + class Dist(object): + project_name = "spam" +@@ -621,7 +621,7 @@ def load(self): + def test_disable_plugin_autoload(testdir, monkeypatch, parse_args, should_load): + pkg_resources = pytest.importorskip("pkg_resources") + +- def my_iter(name): ++ def my_iter(group, name=None): + raise AssertionError("Should not be called") + + class PseudoPlugin(object): |