gnu: Add wl-clipboard.
[jackhill/guix/guix.git] / gnu / packages / check.scm
CommitLineData
233e7676
LC
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
ac257f12 3;;; Copyright © 2014 David Thompson <davet@gnu.org>
4ac696c6 4;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
ac257f12
RW
5;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
6;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
7;;; Copyright © 2015, 2017 Cyril Roelandt <tipecaml@gmail.com>
8;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
28edab7a 9;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
c3f9a6ce 10;;; Copyright © 2015, 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
ac257f12
RW
11;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
12;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
13;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym+a@scratchpost.org>
dd6e70f9 14;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
762b5a89
RW
15;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
16;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
5f6aba6b 17;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
ac257f12 18;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
d4f5e68e 19;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
ac257f12
RW
20;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
21;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
b19a960f 22;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
ac257f12 23;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
5ed48ced 24;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
3c8ba11a 25;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
4a78fd46 26;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
7aa37aa0 27;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
29f25f29 28;;; Copyright © 2016, 2017, 2018 Marius Bakke <mbakke@fastmail.com>
85b28320 29;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
9268a3c4 30;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
d8989c23 31;;;
233e7676 32;;; This file is part of GNU Guix.
d8989c23 33;;;
233e7676 34;;; GNU Guix is free software; you can redistribute it and/or modify it
d8989c23
NK
35;;; under the terms of the GNU General Public License as published by
36;;; the Free Software Foundation; either version 3 of the License, or (at
37;;; your option) any later version.
38;;;
233e7676 39;;; GNU Guix is distributed in the hope that it will be useful, but
d8989c23
NK
40;;; WITHOUT ANY WARRANTY; without even the implied warranty of
41;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
42;;; GNU General Public License for more details.
43;;;
44;;; You should have received a copy of the GNU General Public License
233e7676 45;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
d8989c23 46
1ffa7090 47(define-module (gnu packages check)
59a43334 48 #:use-module (gnu packages)
f767bcca 49 #:use-module (gnu packages autotools)
ac257f12
RW
50 #:use-module (gnu packages bash)
51 #:use-module (gnu packages compression)
40899635 52 #:use-module (gnu packages llvm)
8d54ace7 53 #:use-module (gnu packages golang)
85b28320 54 #:use-module (gnu packages perl)
5f6aba6b 55 #:use-module (gnu packages python)
ac257f12 56 #:use-module (gnu packages python-web)
33dc54b0 57 #:use-module (gnu packages time)
5be2931c 58 #:use-module (guix utils)
ac257f12 59 #:use-module ((guix licenses) #:prefix license:)
d8989c23
NK
60 #:use-module (guix packages)
61 #:use-module (guix download)
3bfc99c7 62 #:use-module (guix git-download)
2259442b 63 #:use-module (guix build-system cmake)
3bfc99c7 64 #:use-module (guix build-system gnu)
38ea84d8 65 #:use-module (guix build-system go)
cd669fde 66 #:use-module (guix build-system python)
3bfc99c7 67 #:use-module (guix build-system trivial))
d8989c23
NK
68
69(define-public check
70 (package
71 (name "check")
dfdf8d74 72 (version "0.12.0")
d8989c23
NK
73 (source
74 (origin
75 (method url-fetch)
dfdf8d74
MB
76 (uri (string-append "https://github.com/libcheck/check/releases/download/"
77 version "/check-" version ".tar.gz"))
d8989c23
NK
78 (sha256
79 (base32
dfdf8d74 80 "0d22h8xshmbpl9hba9ch3xj8vb9ybm5akpsbbh7yj07fic4h2hj6"))))
d8989c23 81 (build-system gnu-build-system)
f4d9339c 82 (home-page "https://libcheck.github.io/check/")
35b9e423 83 (synopsis "Unit test framework for C")
d8989c23 84 (description
35b9e423 85 "Check is a unit testing framework for C. It features a simple
d8989c23
NK
86interface for defining unit tests, putting little in the way of the
87developer. Tests are run in a separate address space, so Check can
88catch both assertion failures and code errors that cause segmentation
35b9e423 89faults or other signals. The output from unit tests can be used within
d8989c23 90source code editors and IDEs.")
ac257f12 91 (license license:lgpl2.1+)))
34352662 92
f767bcca
RW
93(define-public cunit
94 (package
95 (name "cunit")
96 (version "2.1-3")
97 (source
98 (origin
99 (method url-fetch)
100 (uri (string-append "mirror://sourceforge/cunit/CUnit/"
101 version "/CUnit-" version ".tar.bz2"))
102 (sha256
103 (base32
104 "057j82da9vv4li4z5ri3227ybd18nzyq81f6gsvhifs5z0vr3cpm"))))
105 (build-system gnu-build-system)
106 (arguments '(#:phases
911c42de 107 (modify-phases %standard-phases
7aa37aa0
RW
108 ;; XXX: The "bootstrap" phase detects the "bootstrap"
109 ;; script, but fails to execute it, so we bootstrap
110 ;; manually.
111 (replace 'bootstrap
112 (lambda _ (invoke "autoreconf" "-vfi"))))))
f767bcca
RW
113 (native-inputs
114 `(("automake" ,automake)
115 ("autoconf" ,autoconf)
116 ("libtool" ,libtool)))
117 (home-page "http://cunit.sourceforge.net/")
118 (synopsis "Automated testing framework for C")
119 (description
120 "CUnit is a lightweight system for writing, administering, and running
121unit tests in C. It provides C programmers with basic testing functionality
122with a flexible variety of user interfaces.")
ac257f12 123 (license license:gpl2+)))
f767bcca 124
34352662
JD
125(define-public cppunit
126 (package
127 (name "cppunit")
34a6f4dc 128 (version "1.13.2")
34352662
JD
129 (source (origin
130 (method url-fetch)
34a6f4dc
EF
131 (uri (string-append "http://dev-www.libreoffice.org/src/"
132 name "-" version ".tar.gz"))
34352662
JD
133 (sha256
134 (base32
34a6f4dc 135 "17s2kzmkw3kfjhpp72rfppyd7syr7bdq5s69syj2nvrlwd3d4irz"))))
28edab7a
AE
136 ;; Explicitly link with libdl. This is expected to be done by packages
137 ;; relying on cppunit for their tests. However, not all of them do.
138 ;; If we added the linker flag to such packages, we would pollute all
139 ;; binaries, not only those used for testing.
140 (arguments
141 `(#:make-flags '("LDFLAGS=-ldl")))
34352662 142 (build-system gnu-build-system)
34a6f4dc 143 (home-page "https://wiki.freedesktop.org/www/Software/cppunit/")
34352662
JD
144 (synopsis "Unit testing framework for C++")
145 (description "CppUnit is the C++ port of the famous JUnit framework for
72b030c0 146unit testing. Test output is in XML for automatic testing and GUI based for
34352662 147supervised tests.")
ac257f12 148 (license license:lgpl2.1))) ; no copyright notices. LGPL2.1 is in the tarball
3bfc99c7 149
b4c9a317
MB
150;; Some packages require this newer version of cppunit. However, it needs
151;; C++11 support, which is not enabled by default in our current GCC, and
152;; updating in-place would require adding CXXFLAGS to many dependent packages.
153;; Thus, keep as a separate variable for now.
154;; TODO: Remove this when our default GCC is updated to 6 or higher.
155(define-public cppunit-1.14
156 (package
157 (inherit cppunit)
158 (version "1.14.0")
159 (source (origin
160 (method url-fetch)
161 (uri (string-append "https://dev-www.libreoffice.org/src/"
162 "cppunit-" version ".tar.gz"))
163 (sha256
164 (base32
165 "1027cyfx5gsjkdkaf6c2wnjh68882grw8n672018cj3vs9lrhmix"))))))
166
56e72c00
FT
167;; When dependent packages upgraded to use newer version of catch, this one should
168;; be removed.
3bfc99c7
EB
169(define-public catch-framework
170 (package
171 (name "catch")
a232ce42 172 (version "1.3.5") ;Sub-minor is the build number
3bfc99c7
EB
173 (source (origin
174 (method git-fetch)
175 (uri (git-reference
176 (url "https://github.com/philsquared/Catch")
14a17ef6 177 ;; Semi-arbitrary.
a232ce42 178 (commit "ae5ee2cf63d6d67bd1369b512d2a7b60b571c907")))
3bfc99c7
EB
179 (file-name (string-append name "-" version))
180 (sha256
181 (base32
a232ce42 182 "1yfb3lxv929szqy1nw9xw3d45wzkppziqshkjxvrb1fdmf46x564"))))
3bfc99c7
EB
183 (build-system trivial-build-system)
184 (arguments
185 `(#:modules ((guix build utils))
186 #:builder (begin
187 (use-modules (guix build utils))
188 (let* ((source (assoc-ref %build-inputs "source"))
189 (output (assoc-ref %outputs "out"))
190 (incdir (string-append output "/include"))
191 (docdir (string-append output "/share/doc/catch-"
192 ,version)))
e3cfef22
MW
193 (for-each mkdir-p (list incdir docdir))
194 (install-file (string-append source
195 "/single_include/catch.hpp")
196 incdir)
197 (copy-recursively (string-append source "/docs")
198 docdir)
199 #t))))
3bfc99c7
EB
200 (home-page "http://catch-lib.net/")
201 (synopsis "Automated test framework for C++ and Objective-C")
202 (description
203 "Catch stands for C++ Automated Test Cases in Headers and is a
204multi-paradigm automated test framework for C++ and Objective-C.")
ac257f12 205 (license license:boost1.0)))
2259442b 206
56e72c00
FT
207(define-public catch-framework2
208 (package
209 (name "catch2")
210 (version "1.12.2")
211 (home-page "https://github.com/catchorg/Catch2")
212 (source (origin
28bcf809
EF
213 (method git-fetch)
214 (uri (git-reference
215 (url "https://github.com/catchorg/Catch2")
216 (commit (string-append "v" version))))
217 (file-name (git-file-name name version))
56e72c00
FT
218 (sha256
219 (base32
28bcf809 220 "1gdp5wm8khn02g2miz381llw3191k7309qj8s3jd6sasj01rhf23"))))
56e72c00
FT
221 (build-system cmake-build-system)
222 (synopsis "Automated test framework for C++ and Objective-C")
223 (description "Catch2 stands for C++ Automated Test Cases in Headers and is
224a multi-paradigm automated test framework for C++ and Objective-C.")
225 (license license:boost1.0)))
226
cd669fde
KK
227(define-public cmdtest
228 (package
229 (name "cmdtest")
d4f5e68e 230 (version "0.32")
cd669fde
KK
231 (source (origin
232 (method url-fetch)
233 (uri (string-append "http://git.liw.fi/cmdtest/snapshot/"
234 name "-" version ".tar.gz"))
235 (sha256
236 (base32
d4f5e68e 237 "1jmfiyrrqmpvwdb273bkb8hjaf4rwx9njblx29pmr7giyahskwi5"))))
cd669fde
KK
238 (build-system python-build-system)
239 (arguments
240 `(#:python ,python-2
241 #:phases
242 (modify-phases %standard-phases
243 ;; check phase needs to be run before the build phase. If not, the
244 ;; coverage test runner looks for tests for the built source files,
245 ;; and fails.
246 (delete 'check)
247 (add-before 'build 'check
248 (lambda _
249 (substitute* "yarn"
250 (("/bin/sh") (which "sh")))
251 ;; yarn uses python2-ttystatus to print messages.
252 ;; python2-ttystatus requires /dev/tty which is not present in
253 ;; the build environment. Hence assuming-failure test fails.
254 (delete-file "yarn.tests/assuming-failure.script")
255 (delete-file "yarn.tests/assuming-failure.stdout")
29594404 256 (invoke "python" "setup.py" "check"))))))
cd669fde
KK
257 (native-inputs
258 `(("python2-coverage-test-runner" ,python2-coverage-test-runner)))
259 (propagated-inputs
260 `(("python2-cliapp" ,python2-cliapp)
261 ("python2-markdown" ,python2-markdown)
262 ("python2-ttystatus" ,python2-ttystatus)))
263 (home-page "https://liw.fi/cmdtest/")
264 (synopsis "Black box Unix program tester")
265 (description
266 "@code{cmdtest} black box tests Unix command line tools. Roughly, it is
267given a command line and input files, and the expected output, and it verifies
268that the command line produces the expected output. If not, it reports a
269problem, and shows the differences.")
ac257f12 270 (license license:gpl3+)))
cd669fde 271
2259442b
EF
272(define-public cmocka
273 (package
274 (name "cmocka")
0c048c11 275 (version "1.1.2")
2259442b
EF
276 (source (origin
277 (method url-fetch)
5be2931c
EF
278 (uri (string-append "https://cmocka.org/files/"
279 (version-major+minor version) "/cmocka-"
2259442b
EF
280 version ".tar.xz"))
281 (sha256
282 (base32
0c048c11 283 "1p9b6ccv939wjsgapn7wx24xw278awsw9h81lm0g4zw257hx276i"))))
2259442b
EF
284 (build-system cmake-build-system)
285 (arguments
0c048c11 286 `(#:tests? #f)) ; no test target
2259442b
EF
287 (home-page "https://cmocka.org/")
288 (synopsis "Unit testing framework for C")
289 (description "Cmocka is a unit testing framework for C with support for
290mock objects. It only requires the standard C library, and works with
291different compilers. Cmocka supports several different message output formats
292like Test Anything Protocol, Subunit, xUnit XML or the original cmockery output
293format.")
ac257f12 294 (license license:asl2.0)))
dd6e70f9
RJ
295
296(define-public cppcheck
297 (package
298 (name "cppcheck")
23ff7239 299 (version "1.86")
dd6e70f9 300 (source (origin
fa44d3a6
EF
301 (method git-fetch)
302 (uri (git-reference
303 (url "https://github.com/danmar/cppcheck")
304 (commit version)))
305 (file-name (git-file-name name version))
dd6e70f9 306 (sha256
23ff7239 307 (base32 "0jr4aah72c7wy94a8vlj3k050rx6pmc7m9nvmll1jwbscxj5f7ff"))))
dd6e70f9 308 (build-system cmake-build-system)
4241cb9c
EF
309 (arguments
310 '(#:configure-flags '("-DBUILD_TESTS=ON")))
dd6e70f9
RJ
311 (home-page "http://cppcheck.sourceforge.net")
312 (synopsis "Static C/C++ code analyzer")
313 (description "Cppcheck is a static code analyzer for C and C++. Unlike
314C/C++ compilers and many other analysis tools it does not detect syntax errors
315in the code. Cppcheck primarily detects the types of bugs that the compilers
316normally do not detect. The goal is to detect only real errors in the code
317(i.e. have zero false positives).")
ac257f12 318 (license license:gpl3+)))
5f6aba6b 319
38ea84d8
CB
320(define-public go-gopkg.in-check.v1
321 (let ((commit "20d25e2804050c1cd24a7eea1e7a6447dd0e74ec")
322 (revision "0"))
323 (package
324 (name "go-gopkg.in-check.v1")
325 (version (git-version "0.0.0" revision commit))
326 (source (origin
327 (method git-fetch)
328 (uri (git-reference
329 (url "https://github.com/go-check/check.git")
330 (commit commit)))
331 (file-name (git-file-name name version))
332 (sha256
333 (base32
334 "0k1m83ji9l1a7ng8a7v40psbymxasmssbrrhpdv2wl4rhs0nc3np"))))
335 (build-system go-build-system)
336 (arguments
337 '(#:import-path "gopkg.in/check.v1"))
338 (synopsis "Rich testing extension for Go's testing package")
339 (description
340 "@code{check} is a rich testing extension for Go's testing package.")
341 (home-page "https://github.com/go-check/check")
342 (license license:bsd-2))))
343
bee30125
CB
344(define-public go-github.com-smartystreets-gunit
345 (package
346 (name "go-github.com-smartystreets-gunit")
347 (version "1.0.0")
348 (source (origin
349 (method git-fetch)
350 (uri (git-reference
351 (url "https://github.com/smartystreets/gunit")
352 (commit version)))
353 (file-name (git-file-name name version))
354 (sha256
355 (base32
356 "00m4zg0kdj49mnpmf9klb44ba71p966xsk6zknrzqgfc8119f35z"))))
357 (build-system go-build-system)
358 (arguments
359 '(;; TODO: This package depends on go-github.com-smartystreets-assertions
360 ;; for running the tests, but go-github.com-smartystreets-assertions
361 ;; depends on this package, so break this loop by not running the tests
362 ;; for this package.
363 #:tests? #f
364 #:import-path "github.com/smartystreets/gunit"))
365 (synopsis "Testing tool for Go, in the style of xUnit")
366 (description
367 "@code{gunit} allows the test author to use a struct as the scope for a
368group of related test cases, in the style of xUnit fixtures. This makes
369extraction of setup/teardown behavior (as well as invoking the system under
370test) much simpler.")
371 (home-page "https://github.com/smartystreets/gunit")
372 (license license:expat)))
373
7952804c
CB
374(define-public go-github.com-smartystreets-assertions
375 (package
376 (name "go-github.com-smartystreets-assertions")
377 (version "1.8.1")
378 (source (origin
379 (method git-fetch)
380 (uri (git-reference
381 (url "https://github.com/smartystreets/assertions")
382 (commit version)))
383 (file-name (git-file-name name version))
384 (sha256
385 (base32
386 "1j0adgbykl55rf2945g0n5bmqdsnjcqlx5dcmpfh4chki43hiwg9"))))
387 (build-system go-build-system)
388 (arguments
389 '(#:import-path "github.com/smartystreets/assertions"))
390 (native-inputs
391 `(("go-github.com-smartystreets-gunit" ,go-github.com-smartystreets-gunit)))
392 (synopsis "Assertions for testing with Go")
393 (description
394 "The @code{assertions} package provides convinient assertion functions
395for writing tests in Go.")
396 (home-page "https://github.com/smartystreets/assertions")
397 (license license:expat)))
398
8d54ace7
CB
399(define-public go-github.com-smartystreets-goconvey
400 (package
401 (name "go-github.com-smartystreets-goconvey")
402 (version "1.6.3")
403 (source (origin
404 (method git-fetch)
405 (uri (git-reference
406 (url "https://github.com/smartystreets/goconvey")
407 (commit version)))
408 (file-name (git-file-name name version))
409 (sha256
410 (base32
411 "1ph18rkl3ns3fgin5i4j54w5a69grrmf3apcsmnpdn1wlrbs3dxh"))))
412 (build-system go-build-system)
413 (arguments
414 '(#:import-path "github.com/smartystreets/goconvey"))
415 (propagated-inputs
416 `(("go-github.com-jtolds-gls" ,go-github.com-jtolds-gls)
417 ("go-github.com-smartystreets-assertions" ,go-github.com-smartystreets-assertions)))
418 (synopsis "Go testing tool with both a web and terminal user interface")
419 (description
420 "GoConvey is a testing tool for Go. It integrates with go test, can show
421test coverage and has a web user interface that will refresh automatically.")
422 (home-page "https://github.com/smartystreets/goconvey")
423 (license license:expat)))
424
8cb3a0cf
TGR
425;; XXX When updating, check whether ZNC's GOOGLETEST-SOURCES can be
426;; switched back to simply using (PACKAGE-SOURCE ...).
5f6aba6b
LG
427(define-public googletest
428 (package
429 (name "googletest")
84e36a56 430 (version "1.8.0")
5f6aba6b
LG
431 (source
432 (origin
433 (method url-fetch)
434 (uri (string-append "https://github.com/google/googletest/archive/"
435 "release-" version ".tar.gz"))
436 (file-name (string-append name "-" version ".tar.gz"))
437 (sha256
438 (base32
84e36a56
BW
439 "1n5p1m2m3fjrjdj752lf92f9wq3pl5cbsfrb49jqbg52ghkz99jq"))))
440 (build-system cmake-build-system)
2d5bf32b
MR
441 (arguments
442 `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
5f6aba6b 443 (native-inputs
84e36a56 444 `(("python-2" ,python-2)))
5f6aba6b
LG
445 (home-page "https://github.com/google/googletest/")
446 (synopsis "Test discovery and XUnit test framework")
447 (description "Google Test features an XUnit test framework, automated test
448discovery, death tests, assertions, parameterized tests and XML test report
449generation.")
ac257f12 450 (license license:bsd-3)))
c61794cf 451
452(define-public cpputest
453 (package
454 (name "cpputest")
455 (version "3.8")
456 (source
457 (origin
458 (method url-fetch)
459 (uri (string-append "https://github.com/cpputest/cpputest/releases/download/v"
460 version "/cpputest-" version ".tar.gz"))
461 (sha256
462 (base32
463 "0mk48xd3klyqi7wf3f4wn4zqxxzmvrhhl32r25jzrixzl72wq7f8"))))
464 (build-system gnu-build-system)
465 (native-inputs
466 `(("googletest" ,googletest)))
467 (home-page "https://cpputest.github.io/")
468 (synopsis "Unit testing and mocking framework for C/C++")
469 (description
470 "CppUTest is a C/C++ based unit xUnit test framework. It is written in
471C++ but is used in C and C++ projects and frequently used in embedded systems
472but it works for any C/C++ project.")
ac257f12 473 (license license:bsd-3)))
63aa8558
RW
474
475(define-public python-parameterized
476 (package
477 (name "python-parameterized")
478 (version "0.6.1")
479 (source
480 (origin
481 (method url-fetch)
482 (uri (pypi-uri "parameterized" version))
483 (sha256
484 (base32
485 "1qj1939shm48d9ql6fm1nrdy4p7sdyj8clz1szh5swwpf1qqxxfa"))))
486 (build-system python-build-system)
487 (arguments '(#:tests? #f)) ; there are no tests
488 (home-page "https://github.com/wolever/parameterized")
489 (synopsis "Parameterized testing with any Python test framework")
490 (description
491 "Parameterized is a Python library that aims to fix parameterized testing
492for every Python test framework. It supports nose, py.test, and unittest.")
ac257f12 493 (license license:bsd-2)))
63aa8558
RW
494
495(define-public python2-parameterized
496 (package-with-python2 python-parameterized))
ac257f12
RW
497
498(define-public python-mock
499 (package
500 (name "python-mock")
2dd12924 501 (version "2.0.0")
ac257f12
RW
502 (source
503 (origin
504 (method url-fetch)
505 (uri (pypi-uri "mock" version))
506 (sha256
507 (base32
2dd12924
MB
508 "1flbpksir5sqrvq2z0dp8sl4bzbadg21sj4d42w3klpdfvgvcn5i"))))
509 (propagated-inputs
510 `(("python-pbr" ,python-pbr-minimal)
511 ("python-six" ,python-six)))
ac257f12 512 (build-system python-build-system)
2dd12924
MB
513 (native-inputs
514 `(("python-unittest2" ,python-unittest2)))
515 (arguments
516 `(#:phases
517 (modify-phases %standard-phases
518 (replace 'check
519 (lambda _
520 (zero? (system* "unit2")))))))
ac257f12
RW
521 (home-page "https://github.com/testing-cabal/mock")
522 (synopsis "Python mocking and patching library for testing")
523 (description
524 "Mock is a library for testing in Python. It allows you to replace parts
525of your system under test with mock objects and make assertions about how they
526have been used.")
2dd12924 527 (properties `((python2-variant . ,(delay python2-mock))))
ac257f12
RW
528 (license license:expat)))
529
530(define-public python2-mock
2dd12924
MB
531 (let ((base (package-with-python2
532 (strip-python2-variant python-mock))))
533 (package (inherit base)
534 (propagated-inputs
535 `(("python2-functools32" ,python2-functools32)
536 ("python2-funcsigs" ,python2-funcsigs)
537 ,@(package-propagated-inputs base))))))
ac257f12
RW
538
539(define-public python-nose
540 (package
541 (name "python-nose")
542 (version "1.3.7")
543 (source
544 (origin
545 (method url-fetch)
546 (uri (pypi-uri "nose" version))
547 (sha256
548 (base32
549 "164a43k7k2wsqqk1s6vavcdamvss4mz0vd6pwzv2h9n8rgwzxgzi"))))
550 (build-system python-build-system)
551 (arguments
552 '(#:tests? #f)) ; FIXME: test suite fails
553 (home-page "http://readthedocs.org/docs/nose/")
554 (synopsis "Python testing library")
555 (description
556 "Nose extends the unittest library to make testing easier.")
557 (license license:lgpl2.0+)))
558
559(define-public python2-nose
560 (package-with-python2 python-nose))
561
562(define-public python-nose2
563 (package
564 (name "python-nose2")
565 (version "0.6.5")
566 (source
567 (origin
568 (method url-fetch)
569 (uri (pypi-uri "nose2" version))
570 (sha256
571 (base32
572 "1x4zjq1zlyrh8b9ba0cmafd3w94pxhid408kibyjd3s6h1lap6s7"))))
573 (build-system python-build-system)
574 (arguments `(#:tests? #f)) ; 'module' object has no attribute 'collector'
575 (propagated-inputs
576 `(("python-cov-core" ,python-cov-core)
577 ("python-pytest-cov" ,python-pytest-cov)
578 ("python-six" ,python-six)))
579 (home-page "https://github.com/nose-devs/nose2")
580 (synopsis "Next generation of nicer testing for Python")
581 (description
582 "Nose2 is the next generation of nicer testing for Python, based on the
583plugins branch of unittest2. Nose2 aims to improve on nose by providing a
584better plugin api, being easier for users to configure, and simplifying internal
585interfaces and processes.")
586 (license license:bsd-2)))
587
588(define-public python2-nose2
589 (package-with-python2 python-nose2))
590
591(define-public python-unittest2
592 (package
593 (name "python-unittest2")
2dd12924 594 (version "1.1.0")
ac257f12
RW
595 (source
596 (origin
597 (method url-fetch)
2dd12924
MB
598 (uri (pypi-uri "unittest2" version))
599 (patches
600 (search-patches "python-unittest2-python3-compat.patch"
601 "python-unittest2-remove-argparse.patch"))
ac257f12
RW
602 (sha256
603 (base32
2dd12924 604 "0y855kmx7a8rnf81d3lh5lyxai1908xjp0laf4glwa4c8472m212"))))
ac257f12 605 (build-system python-build-system)
2dd12924
MB
606 (arguments
607 '(#:phases
608 (modify-phases %standard-phases
609 (replace 'check
610 (lambda _
611 (zero? (system* "python" "-m" "unittest2" "discover" "--verbose")))))))
612 (propagated-inputs
613 `(("python-six" ,python-six)
614 ("python-traceback2" ,python-traceback2)))
ac257f12
RW
615 (home-page "http://pypi.python.org/pypi/unittest2")
616 (synopsis "Python unit testing library")
617 (description
618 "Unittest2 is a replacement for the unittest module in the Python
619standard library.")
620 (license license:psfl)))
621
622(define-public python2-unittest2
2dd12924 623 (package-with-python2 python-unittest2))
ac257f12
RW
624
625(define-public python-pytest
626 (package
627 (name "python-pytest")
ad8ae693 628 (version "3.8.0")
ac257f12
RW
629 (source
630 (origin
631 (method url-fetch)
2dd12924 632 (uri (pypi-uri "pytest" version))
ac257f12
RW
633 (sha256
634 (base32
ad8ae693 635 "17grcfvd6ggvvqmprwv5y8g319nayam70hr43ssjwj40ws27z858"))))
ac257f12 636 (build-system python-build-system)
2dd12924
MB
637 (arguments
638 `(#:phases
639 (modify-phases %standard-phases
640 (add-before 'check 'disable-invalid-tests
641 (lambda _
642 ;; Some tests involves the /usr directory, and fails.
643 (substitute* "testing/test_argcomplete.py"
644 (("def test_remove_dir_prefix\\(self\\):")
645 "@pytest.mark.xfail\n def test_remove_dir_prefix(self):"))
646 (substitute* "testing/test_argcomplete.py"
647 (("def test_remove_dir_prefix" line)
648 (string-append "@pytest.mark.skip"
649 "(reason=\"Assumes that /usr exists.\")\n "
650 line)))
4750b3a2
MB
651 #t))
652 (replace 'check (lambda _ (invoke "pytest" "-vv"))))))
ac257f12 653 (propagated-inputs
a9ae30b7
MB
654 `(("python-atomicwrites" ,python-atomicwrites)
655 ("python-attrs" ,python-attrs-bootstrap)
7ad5c6dd
AI
656 ("python-more-itertools" ,python-more-itertools)
657 ("python-pluggy" ,python-pluggy)
658 ("python-py" ,python-py)
659 ("python-six" ,python-six-bootstrap)))
ac257f12
RW
660 (native-inputs
661 `(;; Tests need the "regular" bash since 'bash-final' lacks `compgen`.
662 ("bash" ,bash)
2dd12924 663 ("python-hypothesis" ,python-hypothesis)
ac257f12 664 ("python-nose" ,python-nose)
2dd12924 665 ("python-mock" ,python-mock)
4750b3a2 666 ("python-pytest" ,python-pytest-bootstrap)
2dd12924 667 ("python-setuptools-scm" ,python-setuptools-scm)))
ac257f12
RW
668 (home-page "http://pytest.org")
669 (synopsis "Python testing library")
670 (description
671 "Pytest is a testing tool that provides auto-discovery of test modules
672and functions, detailed info on failing assert statements, modular fixtures,
673and many external plugins.")
7ad5c6dd
AI
674 (license license:expat)
675 (properties `((python2-variant . ,(delay python2-pytest))))))
ac257f12
RW
676
677(define-public python2-pytest
7ad5c6dd
AI
678 (let ((pytest (package-with-python2
679 (strip-python2-variant python-pytest))))
680 (package
681 (inherit pytest)
682 (propagated-inputs
683 `(("python2-funcsigs" ,python2-funcsigs)
e2da8bcd 684 ("python2-pathlib2" ,python2-pathlib2)
7ad5c6dd 685 ,@(package-propagated-inputs pytest))))))
ac257f12 686
2dd12924 687(define-public python-pytest-bootstrap
ac257f12 688 (package
7ad5c6dd 689 (inherit (strip-python2-variant python-pytest))
2dd12924
MB
690 (name "python-pytest-bootstrap")
691 (native-inputs `(("python-setuptools-scm" ,python-setuptools-scm)))
7ad5c6dd
AI
692 (arguments `(#:tests? #f))
693 (properties `((python2-variant . ,(delay python2-pytest-bootstrap))))))
ac257f12 694
2dd12924 695(define-public python2-pytest-bootstrap
7ad5c6dd
AI
696 (let ((pytest (package-with-python2
697 (strip-python2-variant python-pytest-bootstrap))))
698 (package (inherit pytest)
699 (propagated-inputs
700 `(("python2-funcsigs" ,python2-funcsigs-bootstrap)
e2da8bcd 701 ("python2-pathlib2" ,python2-pathlib2-bootstrap)
7ad5c6dd 702 ,@(package-propagated-inputs pytest))))))
ac257f12
RW
703
704(define-public python-pytest-cov
705 (package
706 (name "python-pytest-cov")
9f585a52 707 (version "2.5.1")
ac257f12
RW
708 (source
709 (origin
710 (method url-fetch)
711 (uri (pypi-uri "pytest-cov" version))
712 (sha256
713 (base32
9f585a52 714 "0bbfpwdh9k3636bxc88vz9fa7vf4akchgn513ql1vd0xy4n7bah3"))))
ac257f12
RW
715 (build-system python-build-system)
716 (arguments
717 `(#:phases
718 (modify-phases %standard-phases
719 (replace 'check
720 (lambda _
721 ;; options taken from tox.ini
722 ;; TODO: make "--restructuredtext" tests pass. They currently fail
723 ;; with "Duplicate implicit target name"
29594404
MW
724 (invoke "python" "./setup.py" "check"
725 "--strict" "--metadata"))))))
ac257f12
RW
726 (propagated-inputs
727 `(("python-coverage" ,python-coverage)
728 ("python-pytest" ,python-pytest)))
729 (home-page "https://github.com/pytest-dev/pytest-cov")
730 (synopsis "Pytest plugin for measuring coverage")
731 (description
732 "Pytest-cov produces coverage reports. It supports centralised testing and
733distributed testing in both @code{load} and @code{each} modes. It also
734supports coverage of subprocesses.")
735 (license license:expat)))
736
737(define-public python2-pytest-cov
738 (package-with-python2 python-pytest-cov))
739
740(define-public python-pytest-runner
741 (package
742 (name "python-pytest-runner")
fb4c6115 743 (version "4.2")
ac257f12
RW
744 (source
745 (origin
746 (method url-fetch)
747 (uri (pypi-uri "pytest-runner" version))
748 (sha256
749 (base32
fb4c6115 750 "1gkpyphawxz38ni1gdq1fmwyqcg02m7ypzqvv46z06crwdxi2gyj"))))
ac257f12 751 (build-system python-build-system)
ac257f12 752 (native-inputs
2dd12924 753 `(("python-pytest" ,python-pytest-bootstrap)
ac257f12
RW
754 ("python-setuptools-scm" ,python-setuptools-scm)))
755 (home-page "https://github.com/pytest-dev/pytest-runner")
756 (synopsis "Invoke py.test as a distutils command")
757 (description
758 "This package provides a @command{pytest-runner} command that
759@file{setup.py} files can use to run tests.")
760 (license license:expat)))
761
762(define-public python2-pytest-runner
763 (package-with-python2 python-pytest-runner))
764
765(define-public python-pytest-mock
766 (package
767 (name "python-pytest-mock")
25ccb993 768 (version "1.10.0")
ac257f12
RW
769 (source
770 (origin
771 (method url-fetch)
f7bd4f23 772 (uri (pypi-uri "pytest-mock" version))
ac257f12
RW
773 (sha256
774 (base32
25ccb993 775 "1h6lgpmsvs9s8j2s80v06f9f3iaw1n1rc51mbrxk1f12sw4q56nq"))))
ac257f12
RW
776 (build-system python-build-system)
777 (native-inputs
f7bd4f23 778 `(("python-setuptools-scm" ,python-setuptools-scm)))
ac257f12
RW
779 (propagated-inputs
780 `(("python-pytest" ,python-pytest)))
781 (home-page "https://github.com/pytest-dev/pytest-mock/")
782 (synopsis "Thin-wrapper around the mock package for easier use with py.test")
783 (description
784 "This plugin installs a @code{mocker} fixture which is a thin-wrapper
785around the patching API provided by the @code{mock} package, but with the
786benefit of not having to worry about undoing patches at the end of a test.
787The mocker fixture has the same API as @code{mock.patch}, supporting the
788same arguments.")
789 (properties `((python2-variant . ,(delay python2-pytest-mock))))
790 (license license:expat)))
791
792(define-public python2-pytest-mock
793 (let ((base (package-with-python2
794 (strip-python2-variant python-pytest-mock))))
795 (package (inherit base)
796 (propagated-inputs
797 `(("python2-mock" ,python2-mock)
798 ,@(package-propagated-inputs base))))))
799
800(define-public python-pytest-xdist
801 (package
802 (name "python-pytest-xdist")
803 (version "1.14")
804 (source
805 (origin
806 (method url-fetch)
807 (uri (pypi-uri "pytest-xdist" version ".zip"))
808 (sha256
809 (base32
810 "08rn2l39ds60xshs4js787l84pfckksqklfq2wq9x8ig2aci2pja"))
811 (modules '((guix build utils)))
812 (snippet
813 '(begin
814 ;; Remove pre-compiled .pyc files from source.
815 (for-each delete-file-recursively
816 (find-files "." "__pycache__" #:directories? #t))
817 (for-each delete-file (find-files "." "\\.pyc$"))
818 #t))))
819 (build-system python-build-system)
820 (arguments
821 '(#:tests? #f)) ;FIXME: Some tests are failing.
822 ;; #:phases
823 ;; (modify-phases %standard-phases
824 ;; (delete 'check)
825 ;; (add-after 'install 'check
826 ;; (lambda* (#:key inputs outputs #:allow-other-keys)
827 ;; (add-installed-pythonpath inputs outputs)
828 ;; (zero? (system* "py.test" "-v")))))
829 (native-inputs
830 `(("unzip" ,unzip)
831 ("python-setuptools-scm" ,python-setuptools-scm)))
832 (propagated-inputs
833 `(("python-execnet" ,python-execnet)
834 ("python-pytest" ,python-pytest)
835 ("python-py" ,python-py)))
836 (home-page
837 "https://github.com/pytest-dev/pytest-xdist")
838 (synopsis
839 "Plugin for py.test with distributed testing and loop-on-failing modes")
840 (description
841 "The pytest-xdist plugin extends py.test with some unique test execution
842modes: parallelization, running tests in boxed subprocesses, the ability
843to run tests repeatedly when failed, and the ability to run tests on multiple
844Python interpreters or platforms. It uses rsync to copy the existing
845program code to a remote location, executes there, and then syncs the
846result back.")
847 (license license:expat)))
848
849(define-public python2-pytest-xdist
850 (package-with-python2 python-pytest-xdist))
851
852(define-public python-scripttest
853 (package
854 (name "python-scripttest")
855 (version "1.3")
856 (source
857 (origin
858 (method url-fetch)
859 (uri (string-append
860 "https://pypi.python.org/packages/source/s/scripttest/scripttest-"
861 version ".tar.gz"))
862 (sha256
863 (base32
864 "0f4w84k8ck82syys7yg9maz93mqzc8p5ymis941x034v44jzq74m"))))
865 (build-system python-build-system)
866 (native-inputs
867 `(("python-pytest" ,python-pytest)))
868 (home-page "http://pythonpaste.org/scripttest/")
869 (synopsis "Python library to test command-line scripts")
870 (description "Scripttest is a Python helper library for testing
871interactive command-line applications. With it you can run a script in a
872subprocess and see the output as well as any file modifications.")
873 (license license:expat)))
874
875(define-public python2-scripttest
876 (package-with-python2 python-scripttest))
877
8b93f7e4 878(define-public python-testtools-bootstrap
ac257f12 879 (package
8b93f7e4
MB
880 (name "python-testtools-bootstrap")
881 (version "2.3.0")
ac257f12
RW
882 (source
883 (origin
884 (method url-fetch)
885 (uri (pypi-uri "testtools" version))
886 (sha256
887 (base32
0ea6af99
EF
888 "0n8519lk8aaa91vymz842831181wf7fss98hyllhygi3z1nfq9sq"))
889 (patches (search-patches "python-testtools.patch"))))
ac257f12 890 (build-system python-build-system)
8b93f7e4 891 (arguments '(#:tests? #f))
ac257f12 892 (propagated-inputs
8b93f7e4
MB
893 `(("python-extras" ,python-extras)
894 ("python-fixtures" ,python-fixtures-bootstrap)
895 ("python-mimeparse" ,python-mimeparse)
896 ("python-pbr" ,python-pbr-minimal)
897 ("python-six" ,python-six)
898 ("python-traceback2" ,python-traceback2)
899 ("python-unittest2" ,python-unittest2)))
ac257f12
RW
900 (home-page "https://github.com/testing-cabal/testtools")
901 (synopsis
902 "Extensions to the Python standard library unit testing framework")
8b93f7e4
MB
903 (description
904 "This package is only for bootstrapping. Do not use this.")
905 (license license:psfl)))
906
907(define-public python2-testtools-bootstrap
908 (package-with-python2 python-testtools-bootstrap))
909
910(define-public python-testtools
911 (package
912 (inherit python-testtools-bootstrap)
913 (name "python-testtools")
914 (arguments
915 `(#:phases (modify-phases %standard-phases
916 (replace 'check
917 (lambda _
918 (invoke "python" "-m" "testtools.run"
919 "testtools.tests.test_suite"))))))
920 (propagated-inputs
921 `(("python-extras" ,python-extras)
922 ("python-fixtures" ,python-fixtures)
923 ("python-mimeparse" ,python-mimeparse)
924 ("python-pbr" ,python-pbr)
925 ("python-six" ,python-six)
926 ("python-traceback2" ,python-traceback2)
927 ("python-unittest2" ,python-unittest2)))
928 (native-inputs
929 `(("python-testscenarios" ,python-testscenarios-bootstrap)))
ac257f12
RW
930 (description
931 "Testtools extends the Python standard library unit testing framework to
932provide matchers, more debugging information, and cross-Python
8b93f7e4 933compatibility.")))
ac257f12
RW
934
935(define-public python2-testtools
936 (package-with-python2 python-testtools))
937
8b93f7e4 938(define-public python-testscenarios-bootstrap
ac257f12 939 (package
8b93f7e4 940 (name "python-testscenarios-bootstrap")
ae565a9a 941 (version "0.5.0")
ac257f12
RW
942 (source
943 (origin
944 (method url-fetch)
ae565a9a 945 (uri (pypi-uri "testscenarios" version))
ac257f12
RW
946 (sha256
947 (base32
ae565a9a 948 "1dm2aydqpv76vnsk1pw7k8n42hq58cfi4n1ixy7nyzpaj1mwnmy2"))))
ac257f12 949 (build-system python-build-system)
ae565a9a
MB
950 (arguments
951 `(#:phases (modify-phases %standard-phases
952 (replace 'check
953 (lambda _
954 (invoke "python" "-m" "testtools.run"
955 "testscenarios.test_suite"))))))
ac257f12 956 (propagated-inputs
ae565a9a
MB
957 `(("python-pbr" ,python-pbr-minimal)
958 ("python-testtools" ,python-testtools-bootstrap)))
ac257f12
RW
959 (home-page "https://launchpad.net/testscenarios")
960 (synopsis "Pyunit extension for dependency injection")
961 (description
8b93f7e4 962 "This package is only for bootstrapping. Don't use this.")
ac257f12
RW
963 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
964
8b93f7e4
MB
965(define-public python2-testscenarios-bootstrap
966 (package-with-python2 python-testscenarios-bootstrap))
967
968(define-public python-testscenarios
969 (package
970 (inherit python-testscenarios-bootstrap)
971 (name "python-testscenarios")
972 (propagated-inputs
ae565a9a
MB
973 `(("python-pbr" ,python-pbr)
974 ("python-testtools" ,python-testtools)))
8b93f7e4
MB
975 (description
976 "Testscenarios provides clean dependency injection for Python unittest
977style tests.")))
978
ac257f12
RW
979(define-public python2-testscenarios
980 (package-with-python2 python-testscenarios))
981
bc69104a
MB
982;; Testresources requires python-pbr at runtime, but pbr needs it for its
983;; own tests. Hence this bootstrap variant.
984(define-public python-testresources-bootstrap
ac257f12 985 (package
bc69104a
MB
986 (name "python-testresources-bootstrap")
987 (version "2.0.1")
988 (source (origin
989 (method url-fetch)
990 (uri (pypi-uri "testresources" version))
991 (sha256
992 (base32
993 "05s4dsli9g17m1r3b1gvwicbbgq011hnpb2b9qnj27ja2n11k7gf"))))
ac257f12 994 (build-system python-build-system)
bc69104a
MB
995 (arguments '(#:tests? #f))
996 (propagated-inputs
997 `(("python-pbr" ,python-pbr-minimal)))
ac257f12
RW
998 (home-page "https://launchpad.net/testresources")
999 (synopsis
1000 "Pyunit extension for managing test resources")
1001 (description
bc69104a
MB
1002 "This package is only here for bootstrapping purposes. Use the regular
1003testresources package instead.")
ac257f12
RW
1004 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
1005
bc69104a
MB
1006(define-public python2-testresources-bootstrap
1007 (package-with-python2 python-testresources-bootstrap))
1008
1009(define-public python-testresources
1010 (package
1011 (inherit python-testresources-bootstrap)
1012 (name "python-testresources")
1013 (propagated-inputs
1014 `(("python-pbr" ,python-pbr)))
1015 (arguments '())
1016 (native-inputs
1017 `(("python-fixtures" ,python-fixtures)
1018 ("python-testtols" ,python-testtools)))
1019 (description
1020 "Testresources is an extension to Python's unittest to allow declarative
1021use of resources by test cases.")))
1022
ac257f12
RW
1023(define-public python2-testresources
1024 (package-with-python2 python-testresources))
1025
8b93f7e4 1026(define-public python-subunit-bootstrap
ac257f12 1027 (package
8b93f7e4 1028 (name "python-subunit-bootstrap")
151f32a7 1029 (version "1.2.0")
ac257f12
RW
1030 (source
1031 (origin
1032 (method url-fetch)
8b93f7e4 1033 (uri (pypi-uri "python-subunit" version))
ac257f12
RW
1034 (sha256
1035 (base32
151f32a7 1036 "1yii2gx3z6323as3iraj1yphj76dy7i3h6kj63pnc5y0hwjs5sgx"))))
ac257f12
RW
1037 (build-system python-build-system)
1038 (propagated-inputs
1039 `(("python-extras" ,python-extras)
8b93f7e4 1040 ("python-testtools" ,python-testtools-bootstrap)))
ac257f12 1041 (native-inputs
151f32a7
MB
1042 `(("python-fixtures" ,python-fixtures-bootstrap)
1043 ("python-hypothesis" ,python-hypothesis)
8b93f7e4 1044 ("python-testscenarios" ,python-testscenarios-bootstrap)))
ac257f12
RW
1045 (home-page "http://launchpad.net/subunit")
1046 (synopsis "Python implementation of the subunit protocol")
1047 (description
8b93f7e4
MB
1048 "This package is here for bootstrapping purposes only. Use the regular
1049python-subunit package instead.")
ac257f12
RW
1050 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
1051
8b93f7e4
MB
1052(define-public python2-subunit-bootstrap
1053 (package-with-python2 python-subunit-bootstrap))
1054
1055(define-public python-subunit
1056 (package
1057 (inherit python-subunit-bootstrap)
1058 (name "python-subunit")
1059 (propagated-inputs
1060 `(("python-extras" ,python-extras)
1061 ("python-testtools" ,python-testtools)))
1062 (native-inputs
1063 `(("python-fixtures" ,python-fixtures)
1064 ("python-hypothesis" ,python-hypothesis)
1065 ("python-testscenarios" ,python-testscenarios)))
1066 (description
1067 "Python-subunit is a Python implementation of the subunit test streaming
1068protocol.")))
1069
ac257f12
RW
1070(define-public python2-subunit
1071 (package-with-python2 python-subunit))
1072
335c9e39
MB
1073;; Fixtures requires python-pbr at runtime, but pbr uses fixtures for its
1074;; own tests. Hence this bootstrap variant.
1075(define-public python-fixtures-bootstrap
ac257f12 1076 (package
335c9e39 1077 (name "python-fixtures-bootstrap")
9c77852e 1078 (version "3.0.0")
335c9e39
MB
1079 (source (origin
1080 (method url-fetch)
1081 (uri (pypi-uri "fixtures" version))
1082 (sha256
1083 (base32
9c77852e 1084 "1vxj29bzz3rd4pcy51d05wng9q9dh4jq6wx92yklsm7i6h1ddw7w"))))
ac257f12 1085 (build-system python-build-system)
335c9e39
MB
1086 (arguments `(#:tests? #f))
1087 (propagated-inputs
1088 `(("python-pbr-minimal" ,python-pbr-minimal)
1089 ("python-six" ,python-six)))
1090 (home-page "https://launchpad.net/python-fixtures")
1091 (synopsis "Python test fixture library")
1092 (description
1093 "This package is only used for bootstrapping. Use the regular
1094python-fixtures package instead.")
1095 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
1096
1097(define-public python2-fixtures-bootstrap
1098 (package-with-python2 python-fixtures-bootstrap))
1099
1100(define-public python-fixtures
1101 (package
1102 (inherit python-fixtures-bootstrap)
1103 (name "python-fixtures")
ac257f12
RW
1104 (arguments
1105 '(#:phases
1106 (modify-phases %standard-phases
1107 (replace 'check
1108 (lambda _
29594404
MW
1109 (invoke "python" "-m" "testtools.run"
1110 "fixtures.test_suite"))))))
ac257f12 1111 (propagated-inputs
335c9e39
MB
1112 ;; Fixtures uses pbr at runtime to check versions, etc.
1113 `(("python-pbr" ,python-pbr)
1114 ("python-six" ,python-six)))
ac257f12
RW
1115 (native-inputs
1116 `(("python-mock" ,python-mock)
8b93f7e4 1117 ("python-testtools" ,python-testtools-bootstrap)))
ac257f12
RW
1118 (description
1119 "Fixtures provides a way to create reusable state, useful when writing
335c9e39 1120Python tests.")))
ac257f12
RW
1121
1122(define-public python2-fixtures
1123 (package-with-python2 python-fixtures))
1124
335c9e39 1125(define-public python-testrepository-bootstrap
ac257f12 1126 (package
335c9e39
MB
1127 (name "python-testrepository-bootstrap")
1128 (version "0.0.20")
ac257f12
RW
1129 (source
1130 (origin
1131 (method url-fetch)
1132 (uri (string-append
1133 "https://pypi.python.org/packages/source/t/testrepository/testrepository-"
1134 version ".tar.gz"))
1135 (sha256
1136 (base32
1137 "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m"))))
1138 (build-system python-build-system)
335c9e39
MB
1139 (arguments '(#:tests? #f))
1140 (propagated-inputs
1141 `(("python-fixtures" ,python-fixtures-bootstrap)
8b93f7e4
MB
1142 ("python-subunit" ,python-subunit-bootstrap)
1143 ("python-testtools" ,python-testtools-bootstrap)))
335c9e39
MB
1144 (native-inputs
1145 `(("python-mimeparse" ,python-mimeparse)))
1146 (home-page "https://launchpad.net/testrepository")
1147 (synopsis "Database for Python test results")
1148 (description
1149 "Bootstrap package for python-testrepository. Don't use this.")
1150 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
1151
1152(define-public python2-testrepository-bootstrap
1153 (package-with-python2 python-testrepository-bootstrap))
1154
1155(define-public python-testrepository
1156 (package
1157 (inherit python-testrepository-bootstrap)
1158 (name "python-testrepository")
ac257f12
RW
1159 (arguments
1160 ;; FIXME: Many tests are failing.
1161 '(#:tests? #f))
1162 (propagated-inputs
1163 `(("python-fixtures" ,python-fixtures)
1164 ("python-subunit" ,python-subunit)
1165 ("python-testtools" ,python-testtools)))
1166 (native-inputs
335c9e39 1167 `(("python-mimeparse" ,python-mimeparse)))
ac257f12
RW
1168 (description "Testrepository provides a database of test results which can
1169be used as part of a developer's workflow to check things such as what tests
335c9e39 1170have failed since the last commit or what tests are currently failing.")))
ac257f12
RW
1171
1172(define-public python2-testrepository
1173 (package-with-python2 python-testrepository))
1174
1175(define-public python-coverage
1176 (package
1177 (name "python-coverage")
2dd12924 1178 (version "4.4.1")
ac257f12
RW
1179 (source
1180 (origin
1181 (method url-fetch)
1182 (uri (pypi-uri "coverage" version))
1183 (sha256
1184 (base32
2dd12924 1185 "097l4s3ssxm1vncsn0nw3a1pbzah28773q36c1ab9wz01r04973s"))))
ac257f12
RW
1186 (build-system python-build-system)
1187 (arguments
1188 ;; FIXME: 95 tests failed, 539 passed, 6 skipped, 2 errors.
1189 '(#:tests? #f))
1190 (home-page "http://nedbatchelder.com/code/coverage")
1191 (synopsis "Code coverage measurement for Python")
1192 (description
1193 "Coverage measures code coverage, typically during test execution. It
1194uses the code analysis tools and tracing hooks provided in the Python standard
1195library to determine which lines are executable, and which have been
1196executed.")
1197 (license license:bsd-3)))
1198
1199(define-public python2-coverage
1200 (package-with-python2 python-coverage))
1201
1202(define-public python-cov-core
1203 (package
1204 (name "python-cov-core")
1205 (version "1.15.0")
1206 (source
1207 (origin
1208 (method url-fetch)
1209 (uri (pypi-uri "cov-core" version))
1210 (sha256
1211 (base32
1212 "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a"))))
1213 (build-system python-build-system)
1214 (propagated-inputs
1215 `(("python-coverage" ,python-coverage)))
1216 (home-page "https://github.com/schlamar/cov-core")
1217 (synopsis "Coverage plugin core for pytest-cov, nose-cov and nose2-cov")
1218 (description
1219 "This is a library package for use by @code{pytest-cov}, @code{nose-cov}
1220and @code{nose2-cov}. It is useful for developing coverage plugins for these
1221testing frameworks.")
1222 (license license:expat)))
1223
1224(define-public python2-cov-core
1225 (package-with-python2 python-cov-core))
1226
c3f9a6ce
EF
1227(define-public python-codecov
1228 (package
1229 (name "python-codecov")
1230 (version "2.0.15")
1231 (source
1232 (origin
1233 (method url-fetch)
1234 (uri (pypi-uri "codecov" version))
1235 (sha256
1236 (base32
1237 "1217c0vqf7ii65635gvl27a5pfhv0r7zhrpdp9cx640hg73bgn4f"))))
1238 (build-system python-build-system)
1239 (native-inputs
1240 `(("python-unittest2" ,python-unittest2)))
1241 (propagated-inputs
1242 `(("python-coverage" ,python-coverage)
1243 ("python-requests" ,python-requests)))
1244 (home-page "http://github.com/codecov/codecov-python")
1245 (synopsis "Upload code coverage reports to @code{codecov.io}")
1246 (description
1247 "Codecov collects code coverage reports from code written in Python, Java,
1248C/C++, R, and more, and uploads it to the @code{codecov.io} service.")
1249 (license license:asl2.0)))
1250
ac257f12
RW
1251(define-public python-testpath
1252 (package
1253 (name "python-testpath")
1254 (version "0.2")
1255 (source
1256 (origin
52305b0a
EF
1257 (method git-fetch)
1258 (uri (git-reference
1259 (url "https://github.com/jupyter/testpath")
1260 (commit version)))
1261 (file-name (git-file-name name version))
ac257f12
RW
1262 (sha256
1263 (base32
52305b0a 1264 "0r4iiizjql6ny1ln7ciw7rrbjadz1s9zrf2hl0xkgnh3ypd8936f"))))
ac257f12
RW
1265 (build-system python-build-system)
1266 (arguments
1267 `(#:tests? #f ; this package does not even have a setup.py
1268 #:modules ((guix build python-build-system)
1269 (guix build utils)
1270 (srfi srfi-1))
1271 #:imported-modules (,@%python-build-system-modules
1272 (srfi srfi-1))
1273 #:phases
1274 (modify-phases %standard-phases
1275 (delete 'install)
1276 (replace 'build
1277 (lambda* (#:key inputs outputs #:allow-other-keys)
1278 (let* ((version (last
1279 (string-split (assoc-ref inputs "python") #\-)))
1280 (x.y (string-join (take (string-split version #\.) 2)
1281 "."))
1282 (dir (string-append
1283 (assoc-ref outputs "out")
1284 "/lib/python" x.y "/site-packages/testpath")))
1285 (mkdir-p dir)
1286 (copy-recursively "testpath" dir))
1287 #t)))))
1288 (home-page "https://github.com/takluyver/testpath")
1289 (synopsis "Test utilities for code working with files and commands")
1290 (description
1291 "Testpath is a collection of utilities for Python code working with files
162a1374 1292and commands. It contains functions to check things on the file system, and
ac257f12
RW
1293tools for mocking system commands and recording calls to those.")
1294 (license license:expat)))
1295
1296(define-public python2-testpath
1297 (package-with-python2 python-testpath))
1298
1299(define-public python-testlib
1300 (package
1301 (name "python-testlib")
1302 (version "0.6.5")
1303 (source
1304 (origin
1305 (method url-fetch)
1306 (uri (string-append
1307 "https://pypi.python.org/packages/source/t/testlib/testlib-"
1308 version ".zip"))
1309 (sha256
1310 (base32 "1mz26cxn4x8bbgv0rn0mvj2z05y31rkc8009nvdlb3lam5b4mj3y"))))
1311 (build-system python-build-system)
1312 (native-inputs
1313 `(("unzip" ,unzip))) ; for unpacking the source
1314 (synopsis "Python micro test suite harness")
1315 (description "A micro unittest suite harness for Python.")
1316 (home-page "https://github.com/trentm/testlib")
1317 (license license:expat)))
1318
1319(define-public python2-testlib
1320 (package-with-python2 python-testlib))
1321
1322;;; The software provided by this package was integrated into pytest 2.8.
1323(define-public python-pytest-cache
1324 (package
1325 (name "python-pytest-cache")
1326 (version "1.0")
1327 (source (origin
1328 (method url-fetch)
1329 (uri (pypi-uri "pytest-cache" version))
1330 (sha256
1331 (base32
1332 "1a873fihw4rhshc722j4h6j7g3nj7xpgsna9hhg3zn6ksknnhx5y"))))
1333 (build-system python-build-system)
1334 (propagated-inputs
1335 `(("python-apipkg" ,python-apipkg)
1336 ("python-execnet" ,python-execnet)
1337 ("python-py" ,python-py)
1338 ("python-pytest" ,python-pytest)))
1339 (synopsis "Py.test plugin with mechanisms for caching across test runs")
1340 (description "The pytest-cache plugin provides tools to rerun failures from
1341the last py.test invocation.")
1342 (home-page "https://bitbucket.org/hpk42/pytest-cache/")
1343 (license license:expat)))
1344
1345(define-public python2-pytest-cache
1346 (package-with-python2 python-pytest-cache))
1347
1348(define-public python-pytest-localserver
1349 (package
1350 (name "python-pytest-localserver")
74854d11 1351 (version "0.5.0")
ac257f12 1352 (source (origin
74854d11
EF
1353 (method url-fetch)
1354 (uri (pypi-uri "pytest-localserver" version))
1355 (sha256
1356 (base32
1357 "1hpgpxrpfq5c731ndnsay2lc0y9nh2wy9fn1f83s3z8xkn82fm1s"))))
ac257f12
RW
1358 (build-system python-build-system)
1359 (arguments
45a2346f
EF
1360 '(#:phases
1361 (modify-phases %standard-phases
ac257f12
RW
1362 (replace 'check
1363 (lambda _
45a2346f 1364 (invoke "py.test" "-v"))))))
ac257f12
RW
1365 (native-inputs
1366 `(("python-pytest" ,python-pytest)
1367 ("python-requests" ,python-requests)
1368 ("python-six" ,python-six)))
1369 (propagated-inputs
1370 `(("python-werkzeug" ,python-werkzeug)))
1371 (synopsis "Py.test plugin to test server connections locally")
1372 (description "Pytest-localserver is a plugin for the pytest testing
1373framework which enables you to test server connections locally.")
1374 (home-page "https://pypi.python.org/pypi/pytest-localserver")
1375 (license license:expat)))
1376
1377(define-public python-pytest-xprocess
1378 (package
1379 (name "python-pytest-xprocess")
1380 (version "0.9.1")
1381 (source (origin
1382 (method url-fetch)
1383 (uri (pypi-uri "pytest-xprocess" version))
1384 (sha256
1385 (base32
1386 "17zlql1xqw3ywcgwwbqmw633aly99lab12hm02asr8awvg5603pp"))))
1387 (build-system python-build-system)
1388 (propagated-inputs
1389 `(("python-pytest" ,python-pytest)
1390 ("python-pytest-cache" ,python-pytest-cache)
1391 ("python-psutil" ,python-psutil)))
1392 (synopsis "Pytest plugin to manage external processes across test runs")
1393 (description "Pytest-xprocess is an experimental py.test plugin for managing
1394processes across test runs.")
1395 (home-page "https://bitbucket.org/pytest-dev/pytest-xprocess")
1396 (license license:expat)))
1397
1398(define-public python-pytest-subtesthack
1399 (package
1400 (name "python-pytest-subtesthack")
1401 (version "0.1.1")
1402 (source (origin
1403 (method url-fetch)
1404 (uri (pypi-uri "pytest-subtesthack" version))
1405 (sha256
1406 (base32
1407 "15kzcr5pchf3id4ikdvlv752rc0j4d912n589l4rifp8qsj19l1x"))))
1408 (build-system python-build-system)
1409 (propagated-inputs
1410 `(("python-pytest" ,python-pytest)))
1411 (synopsis "Set-up and tear-down fixtures for unit tests")
1412 (description "This plugin allows you to set up and tear down fixtures within
1413unit test functions that use @code{py.test}. This is useful for using
1414@command{hypothesis} inside py.test, as @command{hypothesis} will call the test
1415function multiple times, without setting up or tearing down fixture state as is
1416normally the case.")
1417 (home-page "https://github.com/untitaker/pytest-subtesthack/")
1418 (license license:unlicense)))
1419
1420(define-public python2-pytest-subtesthack
1421 (package-with-python2 python-pytest-subtesthack))
1422
7600513a
CB
1423(define-public python-pytest-sugar
1424 (package
1425 (name "python-pytest-sugar")
1426 (version "0.9.2")
1427 (source
1428 (origin
1429 (method url-fetch)
1430 (uri (pypi-uri "pytest-sugar" version))
1431 (sha256
1432 (base32
1433 "1asq7yc4g8bx2sn7yy974mhc9ywvaihasjab4inkirdwn9s7mn7w"))))
1434 (build-system python-build-system)
1435 (propagated-inputs
1436 `(("python-packaging" ,python-packaging)
1437 ("python-pytest" ,python-pytest)
1438 ("python-termcolor" ,python-termcolor)))
1439 (home-page "https://pivotfinland.com/pytest-sugar/")
1440 (synopsis "Plugin for pytest that changes the default look and feel")
1441 (description
1442 "@code{pytest-sugar} is a plugin for py.test that changes the default
1443look and feel of py.test, using a progress bar and showing failures and errors
1444instantly.")
1445 (license license:bsd-3)))
1446
ac257f12
RW
1447(define-public python-hypothesis
1448 (package
1449 (name "python-hypothesis")
5d948c0c 1450 (version "3.70.3")
ac257f12
RW
1451 (source (origin
1452 (method url-fetch)
1453 (uri (pypi-uri "hypothesis" version))
1454 (sha256
1455 (base32
5d948c0c 1456 "1rshs1japfmwgar98yrkq4hg4z2q76hlnq7w2n3lfbjnscn1jd9b"))))
ac257f12
RW
1457 (build-system python-build-system)
1458 (native-inputs
545da9fd
MB
1459 `(;; FIXME: Change to python-flake8 in the next rebuild cycle.
1460 ("python-flake8" ,python-flake8-3.5)
2dd12924 1461 ("python-pytest" ,python-pytest-bootstrap)))
b19a960f
AI
1462 (propagated-inputs
1463 `(("python-attrs" ,python-attrs-bootstrap)
1464 ("python-coverage" ,python-coverage)))
ac257f12
RW
1465 (synopsis "Library for property based testing")
1466 (description "Hypothesis is a library for testing your Python code against a
1467much larger range of examples than you would ever want to write by hand. It’s
1468based on the Haskell library, Quickcheck, and is designed to integrate
1469seamlessly into your existing Python unit testing work flow.")
b19a960f 1470 (home-page "https://github.com/HypothesisWorks/hypothesis-python")
ac257f12
RW
1471 (license license:mpl2.0)
1472 (properties `((python2-variant . ,(delay python2-hypothesis))))))
1473
1474(define-public python2-hypothesis
1475 (let ((hypothesis (package-with-python2
1476 (strip-python2-variant python-hypothesis))))
1477 (package (inherit hypothesis)
1478 (propagated-inputs
1479 `(("python2-enum34" ,python2-enum34)
1480 ,@(package-propagated-inputs hypothesis))))))
1481
1482(define-public python-lit
1483 (package
1484 (name "python-lit")
8c2781f0 1485 (version "0.5.1")
ac257f12
RW
1486 (source
1487 (origin
1488 (method url-fetch)
1489 (uri (pypi-uri "lit" version))
1490 (sha256
1491 (base32
8c2781f0 1492 "0z651m3vkbk85y41larnsjxrszkbi58x9gzml3lb6ga7qwcrsg97"))))
ac257f12 1493 (build-system python-build-system)
39afd2a8
DM
1494 (arguments
1495 `(#:phases
1496 (modify-phases %standard-phases
1497 (replace 'check
1498 (lambda _
40899635 1499 (invoke "python" "lit.py" "tests"))))))
39afd2a8 1500 (native-inputs
40899635 1501 `(("llvm" ,llvm)))
ac97dce1 1502 (home-page "https://llvm.org/")
ac257f12
RW
1503 (synopsis "LLVM Software Testing Tool")
1504 (description "@code{lit} is a portable tool for executing LLVM and Clang
1505style test suites, summarizing their results, and providing indication of
1506failures.")
1507 (license license:ncsa)))
1508
1509(define-public python2-lit
1510 (package-with-python2 python-lit))
1511
1512(define-public python-pytest-pep8
1513 (package
1514 (name "python-pytest-pep8")
1515 (version "1.0.6")
1516 (source (origin
1517 (method url-fetch)
1518 (uri (pypi-uri "pytest-pep8" version))
1519 (sha256
1520 (base32
1521 "06032agzhw1i9d9qlhfblnl3dw5hcyxhagn7b120zhrszbjzfbh3"))))
1522 (build-system python-build-system)
1523 (arguments
1524 `(#:tests? #f)) ; Fails with recent pytest and pep8. See upstream issues #8 and #12.
1525 (native-inputs
1526 `(("python-pytest" ,python-pytest)))
1527 (propagated-inputs
1528 `(("python-pep8" ,python-pep8)))
1529 (home-page "https://bitbucket.org/pytest-dev/pytest-pep8")
1530 (synopsis "Py.test plugin to check PEP8 requirements")
1531 (description "Pytest plugin for checking PEP8 compliance.")
1532 (license license:expat)))
1533
1534(define-public python2-pytest-pep8
1535 (package-with-python2 python-pytest-pep8))
1536
1537(define-public python-pytest-flakes
1538 (package
1539 (name "python-pytest-flakes")
1540 (version "1.0.1")
1541 (source (origin
1542 (method url-fetch)
1543 (uri (pypi-uri "pytest-flakes" version))
1544 (sha256
1545 (base32
1546 "0flag3n33kbhyjrhzmq990rvg4yb8hhhl0i48q9hw0ll89jp28lw"))))
1547 (build-system python-build-system)
1548 (arguments
1549 `(#:phases
1550 (modify-phases %standard-phases
1551 (delete 'check)
1552 (add-after 'install 'check
1553 (lambda* (#:key outputs inputs #:allow-other-keys)
1554 ;; It's easier to run tests after install.
1555 ;; Make installed package available for running the tests
1556 (add-installed-pythonpath inputs outputs)
29594404 1557 (invoke "py.test" "-vv"))))))
ac257f12
RW
1558 (native-inputs
1559 `(("python-coverage" ,python-coverage)
1560 ("python-pytest" ,python-pytest)
1561 ("python-pytest-cache" ,python-pytest-cache)
1562 ("python-pytest-pep8" ,python-pytest-pep8)))
1563 (propagated-inputs
1564 `(("python-pyflakes" ,python-pyflakes)))
1565 (home-page "https://github.com/fschulze/pytest-flakes")
1566 (synopsis "Py.test plugin to check source code with pyflakes")
1567 (description "Pytest plugin for checking Python source code with pyflakes.")
1568 (license license:expat)))
1569
1570(define-public python2-pytest-flakes
1571 (package-with-python2 python-pytest-flakes))
1572
1573(define-public python2-coverage-test-runner
1574 (package
1575 (name "python2-coverage-test-runner")
1576 (version "1.11")
1577 (source
1578 (origin
1579 (method url-fetch)
1580 (uri (string-append
1581 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/"
1582 "coverage-test-runner/snapshot/coverage-test-runner-"
1583 version ".tar.gz"))
1584 (sha256
1585 (base32
1586 "0y1m7z3dl63kmhcmydl1mwg0hacnf6ghrx9dah17j9iasssfa3g7"))))
1587 (build-system python-build-system)
1588 (arguments
1589 `(#:python ,python-2
1590 #:phases
1591 (modify-phases %standard-phases
1592 (replace 'check
1593 (lambda _
29594404 1594 (invoke "./testrun"))))))
ac257f12
RW
1595 (propagated-inputs
1596 `(("python2-coverage" ,python2-coverage)))
1597 (home-page "https://liw.fi/coverage-test-runner/")
1598 (synopsis "Python module for running unit tests")
1599 (description "@code{CoverageTestRunner} is a python module for running
1600unit tests and failing them if the unit test module does not exercise all
1601statements in the module it tests.")
1602 (license license:gpl3+)))
1603
1604(define-public python-pylint
1605 (package
1606 (name "python-pylint")
1607 (version "1.7.2")
1608 (source
1609 (origin
1610 (method url-fetch)
1611 (uri (string-append
1612 "https://github.com/PyCQA/pylint/archive/pylint-"
1613 version ".tar.gz"))
1614 (sha256
1615 (base32
1616 "0mzn1czhf1mgr2wiqfihb274sja02h899b85kywdpivppa9nwrmp"))))
1617 (build-system python-build-system)
1618 (native-inputs
1619 `(("python-pytest" ,python-pytest)
1620 ("python-pytest-runner" ,python-pytest-runner)
1621 ("python-tox" ,python-tox)))
1622 (propagated-inputs
1623 `(("python-astroid" ,python-astroid)
1624 ("python-isort" ,python-isort)
1625 ("python-mccabe" ,python-mccabe)
1626 ("python-six" ,python-six)))
1627 (arguments
1628 `(#:phases
1629 (modify-phases %standard-phases
1630 (replace 'check
1631 (lambda _
1632 ;; Somehow, tests for python2-pylint
1633 ;; fail if run from the build directory
1634 (let ((work "/tmp/work"))
1635 (mkdir-p work)
1636 (setenv "PYTHONPATH"
1637 (string-append (getenv "PYTHONPATH") ":" work))
1638 (copy-recursively "." work)
1639 (with-directory-excursion "/tmp"
29594404
MW
1640 (invoke "python" "-m" "unittest" "discover"
1641 "-s" (string-append work "/pylint/test")
1642 "-p" "*test_*.py"))))))))
ac257f12
RW
1643 (home-page "https://github.com/PyCQA/pylint")
1644 (synopsis "Python source code analyzer which looks for coding standard
1645errors")
1646 (description "Pylint is a Python source code analyzer which looks
1647for programming errors, helps enforcing a coding standard and sniffs
1648for some code smells (as defined in Martin Fowler's Refactoring book).
1649
1650Pylint has many rules enabled by default, way too much to silence them
1651all on a minimally sized program. It's highly configurable and handle
1652pragmas to control it from within your code. Additionally, it is
1653possible to write plugins to add your own checks.")
1654 (properties `((python2-variant . ,(delay python2-pylint))))
1655 (license license:gpl2+)))
1656
1657(define-public python2-pylint
1658 (let ((pylint (package-with-python2
1659 (strip-python2-variant python-pylint))))
1660 (package (inherit pylint)
1661 (propagated-inputs
1662 `(("python2-backports-functools-lru-cache"
1663 ,python2-backports-functools-lru-cache)
1664 ("python2-configparser" ,python2-configparser)
1665 ,@(package-propagated-inputs pylint))))))
1666
1667(define-public python-paramunittest
1668 (package
1669 (name "python-paramunittest")
1670 (version "0.2")
1671 (source
1672 (origin
1673 (method url-fetch)
1674 (uri (pypi-uri "ParamUnittest" version))
1675 (sha256
1676 (base32
1677 "0kp793hws5xv1wvycxq7jw2pwy36f35k39jg8hx5qikij5a0jid1"))))
1678 (build-system python-build-system)
1679 (home-page
1680 "https://github.com/rik0/ParamUnittest")
1681 (synopsis
1682 "Simple extension to have parametrized unit tests")
1683 (description
1684 "This package allows to create parametrized unit-tests that work with the standard
1685unittest package. A parametrized test case is automatically converted to multiple test
1686cases. Since they are TestCase subclasses, they work with other test suites that
1687recognize TestCases.")
1688 (license license:bsd-2)))
1689
1690(define-public python2-python-paramunittest
1691 (package-with-python2 python-paramunittest))
1692
1693(define-public python-pytest-warnings
1694 (package
1695 (name "python-pytest-warnings")
1696 (version "0.2.0")
1697 (source
1698 (origin
1699 (method url-fetch)
1700 (uri (pypi-uri "pytest-warnings" version))
1701 (sha256
1702 (base32
1703 "0gf2dpahpl5igb7jh1sr9acj3z3gp7zahqdqb69nk6wx01c8kc1g"))))
1704 (build-system python-build-system)
1705 (propagated-inputs
2dd12924 1706 `(("pytest" ,python-pytest)))
ac257f12
RW
1707 (home-page "https://github.com/fschulze/pytest-warnings")
1708 (synopsis "Pytest plugin to list Python warnings in pytest report")
1709 (description
1710 "Python-pytest-warnings is a pytest plugin to list Python warnings in
1711pytest report.")
29f25f29
MB
1712 (license license:expat)
1713 (properties `((python2-variant . ,(delay python2-pytest-warnings))
1714 ;; This package is part of pytest as of version 3.1.0.
1715 (superseded . ,python-pytest)))))
ac257f12
RW
1716
1717(define-public python2-pytest-warnings
29f25f29
MB
1718 (package (inherit (package-with-python2
1719 (strip-python2-variant python-pytest-warnings)))
1720 (properties `((superseded . ,python2-pytest)))))
ac257f12
RW
1721
1722(define-public python-pytest-capturelog
1723 (package
1724 (name "python-pytest-capturelog")
1725 (version "0.7")
1726 (source
1727 (origin
1728 (method url-fetch)
1729 (uri (pypi-uri "pytest-capturelog" version ".tar.gz"))
1730 (sha256
1731 (base32
1732 "038049nyjl7di59ycnxvc9nydivc5m8np3hqq84j2iirkccdbs5n"))))
1733 (build-system python-build-system)
1734 (propagated-inputs
2dd12924 1735 `(("pytest" ,python-pytest)))
a7f27da7 1736 (home-page "https://bitbucket.org/memedough/pytest-capturelog/overview")
ac257f12
RW
1737 (synopsis "Pytest plugin to catch log messages")
1738 (description
1739 "Python-pytest-catchlog is a pytest plugin to catch log messages.")
1740 (license license:expat)))
1741
1742(define-public python2-pytest-capturelog
1743 (package-with-python2 python-pytest-capturelog))
1744
1745(define-public python-pytest-catchlog
1746 (package
1747 (name "python-pytest-catchlog")
1748 (version "1.2.2")
1749 (source
1750 (origin
1751 (method url-fetch)
1752 (uri (pypi-uri "pytest-catchlog" version ".zip"))
1753 (sha256
1754 (base32
1755 "1w7wxh27sbqwm4jgwrjr9c2gy384aca5jzw9c0wzhl0pmk2mvqab"))))
1756 (build-system python-build-system)
1757 (native-inputs
1758 `(("unzip" ,unzip)))
1759 (propagated-inputs
2dd12924 1760 `(("pytest" ,python-pytest)))
ac257f12
RW
1761 (home-page "https://github.com/eisensheng/pytest-catchlog")
1762 (synopsis "Pytest plugin to catch log messages")
1763 (description
1764 "Python-pytest-catchlog is a pytest plugin to catch log messages. This is
1765a fork of pytest-capturelog.")
1766 (license license:expat)))
1767
1768(define-public python2-pytest-catchlog
1769 (package-with-python2 python-pytest-catchlog))
1770
1771(define-public python-nosexcover
1772 (package
1773 (name "python-nosexcover")
1774 (version "1.0.11")
1775 (source (origin
1776 (method url-fetch)
1777 (uri (pypi-uri "nosexcover" version))
1778 (sha256
1779 (base32
1780 "10xqr12qv62k2flxwqhh8cr00cjhn7sfjrm6p35gd1x5bmjkr319"))))
1781 (build-system python-build-system)
1782 (propagated-inputs
1783 `(("python-coverage" ,python-coverage)
1784 ("python-nose" ,python-nose)))
1785 (home-page "http://github.com/cmheisel/nose-xcover")
1786 (synopsis "Extends nose.plugins.cover to add Cobertura-style XML reports")
1787 (description "Nose-xcover is a companion to the built-in
1788@code{nose.plugins.cover}. This plugin will write out an XML coverage report
1789to a file named coverage.xml.
1790
1791It will honor all the options you pass to the Nose coverage plugin,
1792especially -cover-package.")
1793 (license license:expat)))
1794
1795(define-public python2-nosexcover
1796 (package-with-python2 python-nosexcover))
1797
1798(define-public python-discover
1799 (package
1800 (name "python-discover")
1801 (version "0.4.0")
1802 (source
1803 (origin
1804 (method url-fetch)
1805 (uri (string-append
1806 "https://pypi.python.org/packages/source/d/discover/discover-"
1807 version ".tar.gz"))
1808 (sha256
1809 (base32
1810 "0y8d0zwiqar51kxj8lzmkvwc3b8kazb04gk5zcb4nzg5k68zmhq5"))))
1811 (build-system python-build-system)
1812 (home-page "http://pypi.python.org/pypi/discover/")
1813 (synopsis
1814 "Python test discovery for unittest")
1815 (description
1816 "Discover provides test discovery for unittest, a feature that has been
1817backported from Python 2.7 for Python 2.4+.")
1818 (license license:bsd-3)))
1819
1820(define-public python2-discover
1821 (package-with-python2 python-discover))
1822
1823(define-public behave
1824 (package
1825 (name "behave")
eddb9dac 1826 (version "1.2.6")
ac257f12
RW
1827 (source (origin
1828 (method url-fetch)
eddb9dac 1829 (uri (pypi-uri "behave" version))
ac257f12
RW
1830 (sha256
1831 (base32
eddb9dac 1832 "11hsz365qglvpp1m1w16239c3kiw15lw7adha49lqaakm8kj6rmr"))))
ac257f12 1833 (build-system python-build-system)
1e257d3d
KK
1834 (native-inputs
1835 `(("python-mock" ,python-mock)
1836 ("python-nose" ,python-nose)
eddb9dac
MB
1837 ("python-pathpy" ,python-pathpy)
1838 ("python-pyhamcrest" ,python-pyhamcrest)
1839 ("python-pytest" ,python-pytest)))
ac257f12
RW
1840 (propagated-inputs
1841 `(("python-six" ,python-six)
1842 ("python-parse" ,python-parse)
1843 ("python-parse-type" ,python-parse-type)))
1e257d3d
KK
1844 (arguments
1845 '(#:test-target "behave_test"))
ac257f12
RW
1846 (home-page "https://github.com/behave/behave")
1847 (synopsis "Python behavior-driven development")
1848 (description
1849 "Behave is a tool for behavior-driven development in python.
1850Behavior-driven development (or BDD) is an agile software development
1851technique that encourages collaboration between developers, QA and
1852non-technical or business participants in a software project. Behave uses
1853tests written in a natural language style, backed up by Python code.")
1854 (license license:x11)))
1855
1856(define-public python-behave-web-api
1857 (package
1858 (name "python-behave-web-api")
1859 (version "1.0.6")
1860 (source
1861 (origin
1862 (method url-fetch)
1863 (uri (pypi-uri "behave-web-api" version))
1864 (sha256
1865 (base32
1866 "03kpq2xsy1gab3jy0dccbxlsg7vwfy4lagss0qldwmx3xz6b3i19"))))
1867 (build-system python-build-system)
1868 (arguments
1869 `(#:phases
1870 (modify-phases %standard-phases
1871 (add-after 'unpack 'fix-dependencies
1872 (lambda _
1873 (substitute* "setup.py"
1874 (("'wheel'") "") ; We don't use it.
29594404
MW
1875 (("'ordereddict==1.1'") "")) ; Python >= 2.7 has it built-in.
1876 #t)))))
ac257f12
RW
1877 (propagated-inputs
1878 `(("behave" ,behave)
1879 ("python-requests" ,python-requests)))
1880 (home-page "https://github.com/jefersondaniel/behave-web-api")
1881 (synopsis "Provides testing for JSON APIs with Behave for Python")
1882 (description "This package provides testing utility modules for testing
1883JSON APIs with Behave.")
1884 (license license:expat)))
1885
1886(define-public python2-behave-web-api
1887 (package-with-python2 python-behave-web-api))
1888
1889(define-public python-rednose
1890 (package
1891 (name "python-rednose")
a431b035 1892 (version "1.2.3")
ac257f12
RW
1893 (source
1894 (origin
1895 (method url-fetch)
1896 (uri (pypi-uri "rednose" version))
1897 (sha256
1898 (base32
a431b035 1899 "11x5nx5b4wdq04s7vj1gcdl07jvvkfb37p0r5lg773gr5rr8mj6h"))))
ac257f12 1900 (build-system python-build-system)
c2f0e5a4
MB
1901 (arguments
1902 `(#:phases (modify-phases %standard-phases
1903 (add-after 'unpack 'patch-setup.py
1904 (lambda _
1905 ;; Six is only required for tests and later versions
1906 ;; work fine.
1907 (substitute* "setup.py"
1908 (("six==1.10.0") "six"))
1909 #t)))))
ac257f12
RW
1910 (propagated-inputs
1911 `(("python-colorama" ,python-colorama)
1912 ("python-termstyle" ,python-termstyle)))
1913 (native-inputs
1914 `(("python-six" ,python-six)
1915 ("python-nose" ,python-nose)))
1916 (home-page "https://github.com/JBKahn/rednose")
1917 (synopsis "Colored output for Python nosetests")
1918 (description "This package provides colored output for the
1919@command{nosetests} command of the Python Nose unit test framework.")
1920 (license license:bsd-3)))
1921
1922(define-public python2-rednose
1923 (package-with-python2 python-rednose))
1924
1925(define-public python-nose-randomly
1926 (package
1927 (name "python-nose-randomly")
1928 (version "1.2.5")
1929 (source
1930 (origin
1931 (method url-fetch)
1932 (uri (pypi-uri "nose-randomly" version))
1933 (sha256
1934 (base32
1935 "1cw9dlr1zh3w4i438kin7z0rm8092ki52hayisyc43h9pcplq7rn"))))
1936 (build-system python-build-system)
1937 (native-inputs
1938 `(("python-nose" ,python-nose)
1939 ("python-numpy" ,python-numpy)))
1940 (home-page "https://github.com/adamchainz/nose-randomly")
1941 (synopsis
1942 "Nose plugin to randomly order tests and control random.seed")
1943 (description
1944 "This is a @code{Nose} plugin to randomly order tests which can be quite
1945powerful in discovering hidden flaws in the tests themselves, while helping to
1946reduce inter-test dependencies. It also helps in controlling @code{random.seed},
1947by resetting it to a repeatable number for each test, enabling the tests to
1948create data based on random numbers and yet remain repeatable.")
1949 (license license:bsd-3)))
1950
1951(define-public python2-nose-randomly
1952 (package-with-python2 python-nose-randomly))
1953
1954(define-public python-nose-timer
1955 (package
1956 (name "python-nose-timer")
238d950b 1957 (version "0.7.3")
ac257f12
RW
1958 (source
1959 (origin
1960 (method url-fetch)
1961 (uri (pypi-uri "nose-timer" version))
ac257f12
RW
1962 (sha256
1963 (base32
238d950b 1964 "0hfz5aqnhf493i9kyb6prm4zm8vx7wmfsyg3nvsnh24lzh2kwx44"))))
ac257f12
RW
1965 (build-system python-build-system)
1966 (propagated-inputs
1967 `(("python-nose" ,python-nose)
1968 ("python-termcolor" ,python-termcolor)))
1969 (home-page "https://github.com/mahmoudimus/nose-timer")
1970 (synopsis "Timer plugin for nosetests")
1971 (description "Shows how much time was needed to run individual tests.")
1972 (license license:expat)))
1973
1974(define-public python2-nose-timer
1975 (package-with-python2 python-nose-timer))
762b5a89
RW
1976
1977(define-public python-freezegun
1978 (package
1979 (name "python-freezegun")
ef0d7656 1980 (version "0.3.10")
762b5a89
RW
1981 (source
1982 (origin
1983 (method url-fetch)
1984 (uri (pypi-uri "freezegun" version))
1985 (sha256
1986 (base32
ef0d7656 1987 "08m6b42yxb9hk5lv747v9n2qsxyadmkb0k6yg0gxdanwap0slg3h"))))
762b5a89
RW
1988 (build-system python-build-system)
1989 (native-inputs
1990 `(("python-mock" ,python-mock)
1991 ("python-nose" ,python-nose)
1992 ("python-coverage" ,python-coverage)))
1993 (propagated-inputs
1994 `(("python-six" ,python-six)
1995 ("python-dateutil" ,python-dateutil)))
1996 (arguments
1997 `(#:phases
1998 (modify-phases %standard-phases
1999 ;; The tests are normally executed via `make test`, but the PyPi
2000 ;; package does not include the Makefile.
2001 (replace 'check
2002 (lambda _
19611b7a 2003 (invoke "nosetests" "./tests/"))))))
762b5a89
RW
2004 (home-page "https://github.com/spulec/freezegun")
2005 (synopsis "Test utility for mocking the datetime module")
2006 (description
2007 "FreezeGun is a library that allows your python tests to travel through
2008time by mocking the datetime module.")
2009 (license license:asl2.0)))
2010
2011(define-public python2-freezegun
2012 (package-with-python2 python-freezegun))
2013
2014(define-public python-flexmock
2015 (package
2016 (name "python-flexmock")
2017 (version "0.10.2")
2018 (source (origin
2019 (method url-fetch)
2020 (uri (pypi-uri "flexmock" version))
2021 (sha256
2022 (base32
2023 "0arc6njvs6i9v9hgvzk5m50296g7zy5m9d7pyb43vdsdgxrci5gy"))))
2024 (build-system python-build-system)
2025 (home-page "https://flexmock.readthedocs.org")
2026 (synopsis "Testing library for Python")
2027 (description
2028 "flexmock is a testing library for Python that makes it easy to create
2029mocks, stubs and fakes.")
2030 (license license:bsd-3)))
2031
2032(define-public python2-flexmock
2033 (package-with-python2 python-flexmock))
2034
2035(define-public python-flaky
2036 (package
2037 (name "python-flaky")
2038 (version "3.4.0")
2039 (source (origin
2040 (method url-fetch)
2041 (uri (pypi-uri "flaky" version))
2042 (sha256
2043 (base32
2044 "18pkmf79rfkfpy1d2rrx3v55nxj762ilyk9rvd6s6dccxw58imsa"))))
2045 (build-system python-build-system)
2046 (arguments
2047 ;; TODO: Tests require 'coveralls' and 'genty' which are not in Guix yet.
2048 '(#:tests? #f))
2049 (home-page "https://github.com/box/flaky")
2050 (synopsis "Automatically rerun flaky tests")
2051 (description
2052 "Flaky is a plugin for @code{nose} or @code{py.test} that automatically
2053reruns flaky tests.
2054
2055Ideally, tests reliably pass or fail, but sometimes test fixtures must rely
2056on components that aren't 100% reliable. With flaky, instead of removing
2057those tests or marking them to @code{@@skip}, they can be automatically
2058retried.")
2059 (license license:asl2.0)))
2060
2061(define-public python2-flaky
2062 (package-with-python2 python-flaky))
18a4d6df
FT
2063
2064(define-public python-pyhamcrest
2065 (package
2066 (name "python-pyhamcrest")
2067 (version "1.9.0")
2068 (source (origin
0afd0660
EF
2069 ;; Tests not distributed from pypi release.
2070 (method git-fetch)
2071 (uri (git-reference
2072 (url "https://github.com/hamcrest/PyHamcrest")
2073 (commit (string-append "V" version))))
2074 (file-name (git-file-name name version))
18a4d6df
FT
2075 (sha256
2076 (base32
0afd0660 2077 "01qnzj9qnzz0y78qa3ing24ssvszb0adw59xc4qqmdn5wryy606b"))))
18a4d6df
FT
2078 (native-inputs ; All native inputs are for tests
2079 `(("python-pytest-cov" ,python-pytest-cov)
2080 ("python-mock" ,python-mock)
4adb40bf 2081 ("python-pytest" ,python-pytest)
18a4d6df
FT
2082 ("python-hypothesis" ,python-hypothesis)))
2083 (propagated-inputs
2084 `(("python-six" ,python-six)))
2085 (build-system python-build-system)
2086 (home-page "http://hamcrest.org/")
2087 (synopsis "Hamcrest matchers for Python")
2088 (description
2089 "PyHamcrest is a framework for writing matcher objects,
2090 allowing you to declaratively define \"match\" rules.")
2091 (license license:bsd-3)))
2092
2093(define-public python2-pyhamcrest
2094 (package-with-python2 python-pyhamcrest))
bebe3a4f
FT
2095
2096(define-public unittest-cpp
2097 (package
2098 (name "unittest-cpp")
2099 (version "2.0.0")
2100 (source (origin
8aedb3ad
EF
2101 (method git-fetch)
2102 (uri (git-reference
2103 (url "https://github.com/unittest-cpp/unittest-cpp")
2104 (commit (string-append "v" version))))
2105 (file-name (git-file-name name version))
bebe3a4f 2106 (sha256
8aedb3ad 2107 (base32 "0sxb3835nly1jxn071f59fwbdzmqi74j040r81fanxyw3s1azw0i"))))
bebe3a4f
FT
2108 (arguments
2109 `(#:tests? #f)) ; It's run after build automatically.
2110 (build-system cmake-build-system)
2111 (home-page "https://github.com/unittest-cpp/unittest-cpp")
2112 (synopsis "Lightweight unit testing framework for C++")
2113 (description "UnitTest++ is a lightweight unit testing framework for C++.
2114It was designed to do test-driven development on a wide variety of platforms.
2115Simplicity, portability, speed, and small footprint are all very important
2116aspects of UnitTest++. UnitTest++ is mostly standard C++ and makes minimal use
2117of advanced library and language features, which means it should be easily
2118portable to just about any platform.")
2119 (license license:expat)))
85b28320
LC
2120
2121(define-public libfaketime
2122 (package
2123 (name "libfaketime")
2124 (version "0.9.7")
2125 (home-page "https://github.com/wolfcw/libfaketime")
2126 (source (origin
2127 (method git-fetch)
2128 (uri (git-reference
2129 (url home-page)
2130 (commit (string-append "v" version))))
2131 (sha256
2132 (base32
2133 "1cin1pqwpsswcv7amiwijirvcg3x1zf2l00s1x84nxc5602fzr5c"))
2134 (file-name (git-file-name name version))))
2135 (build-system gnu-build-system)
2136 (arguments
2137 '(#:phases (modify-phases %standard-phases
2138 (replace 'configure
2139 (lambda* (#:key outputs #:allow-other-keys)
2140 (let ((out (assoc-ref outputs "out")))
2141 (setenv "CC" "gcc")
2142 (setenv "PREFIX" out)
2143 #t)))
2144 (add-before 'check 'pre-check
2145 (lambda _
2146 (substitute* "test/functests/test_exclude_mono.sh"
2147 (("/bin/bash") (which "bash")))
2148 #t)))
2149 #:test-target "test"))
2150 (native-inputs
2151 `(("perl" ,perl))) ;for tests
2152 (synopsis "Fake the system time for single applications")
2153 (description
2154 "The libfaketime library allows users to modify the system time that an
2155application \"sees\". It is meant to be loaded using the dynamic linker's
2156@code{LD_PRELOAD} environment variable. The @command{faketime} command
2157provides a simple way to achieve this.")
2158 (license license:gpl2)))