X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/8ed4c468ab611409902c00bdf7c21fdb8d312928..e0f983c0d55e301fc646d956039cc425ad18076d:/gnu/packages/check.scm diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index 5d3d5b68bd..2ad4de55f8 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -7,7 +7,7 @@ ;;; Copyright © 2015, 2017 Cyril Roelandt ;;; Copyright © 2015 Federico Beffa ;;; Copyright © 2015 Andreas Enge -;;; Copyright © 2015, 2016, 2018, 2019, 2020 Efraim Flashner +;;; Copyright © 2015, 2016, 2018, 2019, 2020, 2021 Efraim Flashner ;;; Copyright © 2016, 2017 Leo Famulari ;;; Copyright © 2016 Christopher Allan Webber ;;; Copyright © 2016, 2017 Danny Milosavljevic @@ -16,7 +16,7 @@ ;;; Copyright © 2016 Troy Sankey ;;; Copyright © 2016 Lukas Gradl ;;; Copyright © 2016 Hartmut Goebel -;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice +;;; Copyright © 2016–2021 Tobias Geerinckx-Rice ;;; Copyright © 2017 Julien Lepiller ;;; Copyright © 2017 Thomas Danckaert ;;; Copyright © 2017, 2018 Arun Isaac @@ -24,17 +24,18 @@ ;;; Copyright © 2017, 2019 Mathieu Othacehe ;;; Copyright © 2017, 2019 Kei Kebreau ;;; Copyright © 2017 Nikita -;;; Copyright © 2015, 2017, 2018, 2020 Ricardo Wurmus +;;; Copyright © 2015, 2017, 2018, 2020, 2021 Ricardo Wurmus ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Marius Bakke ;;; Copyright © 2017, 2018, 2020 Ludovic Courtès ;;; Copyright © 2018 Fis Trivial -;;; Copyright © 2019 Pierre Langlois +;;; Copyright © 2019, 2021 Pierre Langlois ;;; Copyright © 2019 Chris Marusich ;;; Copyright © 2020 Lars-Dominik Braun ;;; Copyright © 2020 Brice Waegeneire ;;; Copyright © 2020 Josh Marshall ;;; Copyright © 2020 Vinicius Monego ;;; Copyright © 2020 Tanguy Le Carrour +;;; Copyright © 2020 Maxim Cournoyer ;;; ;;; This file is part of GNU Guix. ;;; @@ -66,6 +67,7 @@ #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-build) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages time) @@ -81,7 +83,8 @@ #:use-module (guix build-system go) #:use-module (guix build-system meson) #:use-module (guix build-system python) - #:use-module (guix build-system trivial)) + #:use-module (guix build-system trivial) + #:use-module (srfi srfi-1)) (define-public pedansee (package @@ -135,7 +138,7 @@ like Jasmine or Mocha.") (define-public check (package (name "check") - (version "0.14.0") + (version "0.15.2") (source (origin (method url-fetch) @@ -143,7 +146,7 @@ like Jasmine or Mocha.") version "/check-" version ".tar.gz")) (sha256 (base32 - "02zkfiyklckmivrfvdsrlzvzphkdsgjrz3igncw05dv5pshhq3xx")))) + "02m25y9m46pb6n46s51av62kpd936lkfv3b13kfpckgvmh5lxpm8")))) (build-system gnu-build-system) (home-page "https://libcheck.github.io/check/") (synopsis "Unit test framework for C") @@ -156,7 +159,19 @@ faults or other signals. The output from unit tests can be used within source code editors and IDEs.") (license license:lgpl2.1+))) -;; Some packages require this older version. Removed once no longer needed. +;; Some packages require older versions. Removed once no longer needed. +(define-public check-0.14 + (package + (inherit check) + (version "0.14.0") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/libcheck/check/releases" + "/download/" version "/check-" version ".tar.gz")) + (sha256 + (base32 + "02zkfiyklckmivrfvdsrlzvzphkdsgjrz3igncw05dv5pshhq3xx")))))) + (define-public check-0.12 (package (inherit check) @@ -252,14 +267,14 @@ with a flexible variety of user interfaces.") (define-public cppunit (package (name "cppunit") - (version "1.14.0") + (version "1.15.1") (source (origin (method url-fetch) (uri (string-append "http://dev-www.libreoffice.org/src/" name "-" version ".tar.gz")) (sha256 (base32 - "1027cyfx5gsjkdkaf6c2wnjh68882grw8n672018cj3vs9lrhmix")))) + "19qpqzy66bq76wcyadmi3zahk5v1ll2kig1nvg96zx9padkcdic9")))) ;; Explicitly link with libdl. This is expected to be done by packages ;; relying on cppunit for their tests. However, not all of them do. ;; If we added the linker flag to such packages, we would pollute all @@ -274,6 +289,55 @@ unit testing. Test output is in XML for automatic testing and GUI based for supervised tests.") (license license:lgpl2.1))) ; no copyright notices. LGPL2.1 is in the tarball +(define-public shunit2 + (package + (name "shunit2") + (version "2.1.8") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kward/shunit2") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "08vs0jjl3pfh100sjlw31x4638xj7fghr0j2g1zfikba8n1f9491")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure) ; no configure script + (delete 'build) + (add-after 'patch-source-shebangs 'patch-more-shebangs + (lambda _ + (substitute* "shunit2" + (("#! /bin/sh") (string-append "#! " (which "sh"))) + (("/usr/bin/od") (which "od"))) + (substitute* "test_runner" + (("/bin/sh") (which "sh")) + (("/bin/bash") (which "bash"))) + #t)) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;; This test is buggy in the build container. + (delete-file "shunit2_misc_test.sh") + (invoke "sh" "test_runner")) + #t)) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (install-file "shunit2" + (string-append (assoc-ref outputs "out") + "/bin")) + #t))))) + (home-page "https://github.com/kward/shunit2") + (synopsis "@code{xUnit} based unit testing for Unix shell scripts") + (description "@code{shUnit2} was originally developed to provide a +consistent testing solution for @code{log4sh}, a shell based logging framework +similar to @code{log4j}. It is designed to work in a similar manner to JUnit, +PyUnit and others.") + (license license:asl2.0))) + ;; When dependent packages upgraded to use newer version of catch, this one should ;; be removed. (define-public catch-framework @@ -428,7 +492,7 @@ format.") (define-public cppcheck (package (name "cppcheck") - (version "1.90") + (version "2.3") (source (origin (method git-fetch) (uri (git-reference @@ -436,7 +500,7 @@ format.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0h7ir2x0k005fm586dxmaphgv5cyz25k3k4sh02p7zb78gzx398h")))) + (base32 "03ic5mig3ryzkf85r95ryagf84s7y5nd6sqr915l3zj30apnifvz")))) (build-system cmake-build-system) (arguments '(#:configure-flags '("-DBUILD_TESTS=ON"))) @@ -497,7 +561,7 @@ and it supports a very flexible form of test discovery.") (define-public doctest (package (name "doctest") - (version "2.4.1") + (version "2.4.6") (home-page "https://github.com/onqtam/doctest") (source (origin (method git-fetch) @@ -505,7 +569,7 @@ and it supports a very flexible form of test discovery.") (file-name (git-file-name name version)) (sha256 (base32 - "17g7n6rjs90i0b231x5s934qnr8m80ga2yg1z344bnsdiqcjd63w")))) + "14m3q6d96zg6d99x1152jkly50gdjrn5ylrbhax53pfgfzzc5yqx")))) (build-system cmake-build-system) (synopsis "C++ test framework") (description @@ -772,7 +836,7 @@ have been used.") (define-public python2-mock (let ((base (package-with-python2 (strip-python2-variant python-mock)))) - (package (inherit base) + (package/inherit base (propagated-inputs `(("python2-functools32" ,python2-functools32) ("python2-funcsigs" ,python2-funcsigs) @@ -919,18 +983,57 @@ and many external plugins.") (license license:expat) (properties `((python2-variant . ,(delay python2-pytest)))))) +(define-public python-pytest-6 + (package + (inherit (strip-python2-variant python-pytest)) + (version "6.1.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pytest" version)) + (sha256 + (base32 + "0gl2sdm322vzmsh5k4f8kj9raiq2y7kdinnca4m45ifvii5fk9y0")))) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key (tests? #t) #:allow-other-keys) + (setenv "TERM" "dumb") ;attempt disabling markup tests + (if tests? + (invoke "pytest" "-vv" "-k" + (string-append + ;; This test involve the /usr directory, and fails. + " not test_argcomplete" + ;; These test do not honor the isatty detection and + ;; fail. + " and not test_code_highlight" + " and not test_color_yes")) + (format #t "test suite not run~%")) + #t))))) + (propagated-inputs + (append (alist-delete "python-py" + (package-propagated-inputs python-pytest)) + `(("python-py" ,python-py-next)))) + (native-inputs + (append (alist-delete "python-pytest" + (package-native-inputs python-pytest)) + `(("python-pytest" ,python-pytest-6-bootstrap) + ("python-toml" ,python-toml) + ("python-iniconfig" ,python-iniconfig)))))) + ;; Pytest 4.x are the last versions that support Python 2. (define-public python2-pytest (package (inherit (strip-python2-variant python-pytest)) (name "python2-pytest") - (version "4.6.9") + (version "4.6.11") (source (origin (method url-fetch) (uri (pypi-uri "pytest" version)) (sha256 (base32 - "0fgkmpc31nzy97fxfrkqbzycigdwxwwmninx3qhkzp81migggs0r")))) + "0ls3pqr86xgif6bphsb6wrww9r2vc7p7a2naq8zcq8115wwq5yjh")))) (build-system python-build-system) (arguments `(#:python ,python-2 @@ -963,6 +1066,15 @@ and many external plugins.") (arguments `(#:tests? #f)) (properties `((python2-variant . ,(delay python2-pytest-bootstrap)))))) +(define-public python-pytest-6-bootstrap + (package + (inherit (strip-python2-variant python-pytest-6)) + (name "python-pytest-bootstrap") + (arguments `(#:tests? #f)) + (native-inputs + `(("python-setuptools-scm" ,python-setuptools-scm) + ("python-toml" ,python-toml))))) + (define-public python2-pytest-bootstrap (hidden-package (package/inherit @@ -1020,6 +1132,37 @@ supports coverage of subprocesses.") (define-public python2-pytest-cov (package-with-python2 python-pytest-cov)) +(define-public python-pytest-httpserver + (package + (name "python-pytest-httpserver") + (version "1.0.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "pytest_httpserver" version)) + (sha256 + (base32 + "0vbls0j570l5my83j4jnk5blmnir44i0w511azlh41nl6k8rac5f")))) + (build-system python-build-system) + (native-inputs + `(("python-pytest" ,python-pytest))) + (propagated-inputs + `(("python-werkzeug" ,python-werkzeug))) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before 'check 'fix-library-loading + (lambda _ + (setenv "PYTHONPATH" (string-append (getenv "PYTHONPATH") ":.")))) + (replace 'check + (lambda _ + (invoke "pytest" "tests" "-vv") + (invoke "pytest" "tests" "-vv" "--ssl")))))) + (home-page "https://github.com/csernazs/pytest-httpserver") + (synopsis "HTTP server for pytest") + (description "Pytest plugin library to test http clients without +contacting the real http server.") + (license license:expat))) + (define-public python-pytest-runner (package (name "python-pytest-runner") @@ -1128,7 +1271,7 @@ same arguments.") (define-public python2-pytest-mock (let ((base (package-with-python2 (strip-python2-variant python-pytest-mock)))) - (package (inherit base) + (package/inherit base (propagated-inputs `(("python2-mock" ,python2-mock) ,@(package-propagated-inputs base)))))) @@ -1136,14 +1279,14 @@ same arguments.") (define-public python-pytest-xdist (package (name "python-pytest-xdist") - (version "1.25.0") + (version "2.1.0") (source (origin (method url-fetch) (uri (pypi-uri "pytest-xdist" version)) (sha256 (base32 - "1d812apvcmshh2l8f38spqwb3bpp0x43yy7lyfpxxzc99h4r7y4n")) + "0wh6pn66nncfs6ay0n863bgyriwsgppn8flx5l7551j1lbqkinc2")) (modules '((guix build utils))) (snippet '(begin @@ -1207,7 +1350,7 @@ result back.") `(("python-pytest" ,python-pytest))) (native-inputs `(("python-pexpect" ,python-pexpect))) - (home-page "http://bitbucket.org/pytest-dev/pytest-timeout/") + (home-page "https://github.com/pytest-dev/pytest-timeout") (synopsis "Plugin for py.test to abort hanging tests") (description "This package provides a py.test plugin that aborts hanging tests after a @@ -1293,9 +1436,6 @@ subprocess and see the output as well as any file modifications.") "This package is only for bootstrapping. Do not use this.") (license license:psfl))) -(define-public python2-testtools-bootstrap - (package-with-python2 python-testtools-bootstrap)) - (define-public python-testtools (package (inherit python-testtools-bootstrap) @@ -1321,9 +1461,6 @@ subprocess and see the output as well as any file modifications.") provide matchers, more debugging information, and cross-Python compatibility."))) -(define-public python2-testtools - (package-with-python2 python-testtools)) - (define-public python-testscenarios-bootstrap (package (name "python-testscenarios-bootstrap") @@ -1351,9 +1488,6 @@ compatibility."))) "This package is only for bootstrapping. Don't use this.") (license (list license:bsd-3 license:asl2.0)))) ; at the user's option -(define-public python2-testscenarios-bootstrap - (package-with-python2 python-testscenarios-bootstrap)) - (define-public python-testscenarios (package (inherit python-testscenarios-bootstrap) @@ -1365,9 +1499,6 @@ compatibility."))) "Testscenarios provides clean dependency injection for Python unittest style tests."))) -(define-public python2-testscenarios - (package-with-python2 python-testscenarios)) - ;; Testresources requires python-pbr at runtime, but pbr needs it for its ;; own tests. Hence this bootstrap variant. (define-public python-testresources-bootstrap @@ -1392,9 +1523,6 @@ style tests."))) testresources package instead.") (license (list license:bsd-3 license:asl2.0)))) ; at the user's option -(define-public python2-testresources-bootstrap - (package-with-python2 python-testresources-bootstrap)) - (define-public python-testresources (package (inherit python-testresources-bootstrap) @@ -1409,20 +1537,17 @@ testresources package instead.") "Testresources is an extension to Python's unittest to allow declarative use of resources by test cases."))) -(define-public python2-testresources - (package-with-python2 python-testresources)) - (define-public python-subunit-bootstrap (package (name "python-subunit-bootstrap") - (version "1.3.0") + (version "1.4.0") (source (origin (method url-fetch) (uri (pypi-uri "python-subunit" version)) (sha256 (base32 - "1fsw8rsn1s3nklx06mayrg5rn2zbky6wwjc5z07s7rf1wjzfs1wn")))) + "0j0ymmnc5nfxi1qzvy59j27viqca7l7xd0y9x29g7yr0h693j804")))) (build-system python-build-system) (propagated-inputs `(("python-extras" ,python-extras) @@ -1438,9 +1563,6 @@ use of resources by test cases."))) python-subunit package instead.") (license (list license:bsd-3 license:asl2.0)))) ; at the user's option -(define-public python2-subunit-bootstrap - (package-with-python2 python-subunit-bootstrap)) - (define-public python-subunit (package (inherit python-subunit-bootstrap) @@ -1456,9 +1578,6 @@ python-subunit package instead.") "Python-subunit is a Python implementation of the subunit test streaming protocol."))) -(define-public python2-subunit - (package-with-python2 python-subunit)) - ;; Fixtures requires python-pbr at runtime, but pbr uses fixtures for its ;; own tests. Hence this bootstrap variant. (define-public python-fixtures-bootstrap @@ -1483,9 +1602,6 @@ protocol."))) python-fixtures package instead.") (license (list license:bsd-3 license:asl2.0)))) ; at user's option -(define-public python2-fixtures-bootstrap - (package-with-python2 python-fixtures-bootstrap)) - (define-public python-fixtures (package (inherit python-fixtures-bootstrap) @@ -1508,9 +1624,6 @@ python-fixtures package instead.") "Fixtures provides a way to create reusable state, useful when writing Python tests."))) -(define-public python2-fixtures - (package-with-python2 python-fixtures)) - (define-public python-testrepository-bootstrap (package (name "python-testrepository-bootstrap") @@ -1536,9 +1649,6 @@ Python tests."))) "Bootstrap package for python-testrepository. Don't use this.") (license (list license:bsd-3 license:asl2.0)))) ; at user's option -(define-public python2-testrepository-bootstrap - (package-with-python2 python-testrepository-bootstrap)) - (define-public python-testrepository (package (inherit python-testrepository-bootstrap) @@ -1556,20 +1666,17 @@ Python tests."))) be used as part of a developer's workflow to check things such as what tests have failed since the last commit or what tests are currently failing."))) -(define-public python2-testrepository - (package-with-python2 python-testrepository)) - (define-public python-coverage (package (name "python-coverage") - (version "5.0.3") + (version "5.2.1") (source (origin (method url-fetch) (uri (pypi-uri "coverage" version)) (sha256 (base32 - "1vrg8panqw79pswg52ygbrff3wdnxarrd9qz6c64ah0c4h2cmbvp")))) + "16z8i18msgs8k74n73dj9x49wzkl0vk4vq8k5pl1bsj70y7b4k53")))) (build-system python-build-system) (arguments ;; FIXME: 95 tests failed, 539 passed, 6 skipped, 2 errors. @@ -1662,7 +1769,7 @@ C/C++, R, and more, and uploads it to the @code{codecov.io} service.") (define-public python-testpath (package (name "python-testpath") - (version "0.2") + (version "0.4.4") (source (origin (method git-fetch) @@ -1672,7 +1779,7 @@ C/C++, R, and more, and uploads it to the @code{codecov.io} service.") (file-name (git-file-name name version)) (sha256 (base32 - "0r4iiizjql6ny1ln7ciw7rrbjadz1s9zrf2hl0xkgnh3ypd8936f")))) + "1fwv4d3p54xx1x942s104irr35lszvv6jnr4nn1scsfvc0m1qmbk")))) (build-system python-build-system) (arguments `(#:tests? #f ; this package does not even have a setup.py @@ -1681,19 +1788,25 @@ C/C++, R, and more, and uploads it to the @code{codecov.io} service.") (srfi srfi-1)) #:phases (modify-phases %standard-phases - (delete 'install) (replace 'build + (lambda _ + ;; A ZIP archive should be generated, but it fails with "ZIP does + ;; not support timestamps before 1980". Luckily, + ;; SOURCE_DATE_EPOCH is respected, which we set to some time in + ;; 1980. + (setenv "SOURCE_DATE_EPOCH" "315532800") + (invoke "flit" "build"))) + (replace 'install (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((version (last - (string-split (assoc-ref inputs "python") #\-))) - (x.y (string-join (take (string-split version #\.) 2) - ".")) - (dir (string-append - (assoc-ref outputs "out") - "/lib/python" x.y "/site-packages/testpath"))) - (mkdir-p dir) - (copy-recursively "testpath" dir)) - #t))))) + (add-installed-pythonpath inputs outputs) + (let ((out (assoc-ref outputs "out"))) + (for-each (lambda (wheel) + (format #true wheel) + (invoke "python" "-m" "pip" "install" + wheel (string-append "--prefix=" out))) + (find-files "dist" "\\.whl$")))))))) + (native-inputs + `(("python-flit" ,python-flit))) (home-page "https://github.com/takluyver/testpath") (synopsis "Test utilities for code working with files and commands") (description @@ -2087,51 +2200,8 @@ Pylint has many rules enabled by default, way too much to silence them all on a minimally sized program. It's highly configurable and handle pragmas to control it from within your code. Additionally, it is possible to write plugins to add your own checks.") - (properties `((python2-variant . ,(delay python2-pylint)))) (license license:gpl2+))) -;; Python2 is not supported anymore by Pylint. See: -;; https://github.com/PyCQA/pylint/issues/1763. -(define-public python2-pylint - (let ((pylint (package-with-python2 - (strip-python2-variant python-pylint)))) - (package (inherit pylint) - (version "1.9.5") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/PyCQA/pylint") - (commit (string-append "pylint-" version)))) - (file-name (git-file-name (package-name pylint) version)) - (sha256 - (base32 - "02a89d8a47s7nfiv1ady3j0sg2sbyja3np145brarfp5x9qxz9x2")))) - (arguments - `(,@(strip-keyword-arguments '(#:tests?) (package-arguments pylint)) - #:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - ;; Somehow, tests fail if run from the build directory. - (let ((work "/tmp/work")) - (mkdir-p work) - (setenv "PYTHONPATH" - (string-append (getenv "PYTHONPATH") ":" work)) - (copy-recursively "." work) - (with-directory-excursion "/tmp" - (invoke "python" "-m" "unittest" "discover" - "-s" (string-append work "/pylint/test") - "-p" "*test_*.py")))))))) - (native-inputs - `(("python2-futures" ,python2-futures) - ,@(package-native-inputs pylint))) - (propagated-inputs - `(("python2-backports-functools-lru-cache" - ,python2-backports-functools-lru-cache) - ("python2-configparser" ,python2-configparser) - ,@(package-propagated-inputs pylint)))))) - (define-public python-paramunittest (package (name "python-paramunittest") @@ -2360,9 +2430,6 @@ tests written in a natural language style, backed up by Python code.") JSON APIs with Behave.") (license license:expat))) -(define-public python2-behave-web-api - (package-with-python2 python-behave-web-api)) - (define-public python-rednose (package (name "python-rednose") @@ -2702,7 +2769,7 @@ provides a simple way to achieve this.") (native-inputs `(("vala" ,vala) ("gobject-introspection" ,gobject-introspection) - ("gtk-doc" ,gtk-doc) + ("gtk-doc" ,gtk-doc/stable) ("pkg-config" ,pkg-config) ;; For tests. @@ -2818,15 +2885,27 @@ system. The code under test requires no modification to work with pyfakefs.") (define-public python-aiounittest (package (name "python-aiounittest") - (version "1.3.1") + (version "1.4.0") + ;; Pypi package lacks tests. (source - (origin - (method url-fetch) - (uri (pypi-uri "aiounittest" version)) - (sha256 - (base32 - "1q4bhmi80smaa1lknvdna0sx3915naczlfna1fp435nf6cjyrjl1")))) + (origin (method git-fetch) + (uri (git-reference + (url "https://github.com/kwarunek/aiounittest.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0hql5mw62lclrpblbh7xvinwjfcdcfvhhlvl7xlq2hi9isjq1c8r")))) (build-system python-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (if tests? + (invoke "nosetests" "-v") + (format #t "test suite not run~%")) + #t))))) + (propagated-inputs `(("python-wrapt" ,python-wrapt))) (native-inputs `(("python-coverage" ,python-coverage) ("python-nose" ,python-nose)))