gnu: Add python-pyfakefs and python2-pyfakefs.

* gnu/packages/patches/python-pyfakefs-remove-bad-test.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add the patch.
* gnu/packages/check.scm (python-pyfakefs, python2-pyfakefs): New
  variables.
master
Chris Marusich 2019-04-18 00:40:21 -07:00
parent 0406434baa
commit 968e86bd93
No known key found for this signature in database
GPG Key ID: DD409A15D822469D
3 changed files with 74 additions and 0 deletions

View File

@ -1203,6 +1203,7 @@ dist_patch_DATA = \
%D%/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch \
%D%/packages/patches/python-configobj-setuptools.patch \
%D%/packages/patches/python-faker-fix-build-32bit.patch \
%D%/packages/patches/python-pyfakefs-remove-bad-test.patch \
%D%/packages/patches/python-flint-includes.patch \
%D%/packages/patches/python-mox3-python3.6-compat.patch \
%D%/packages/patches/python-testtools.patch \

View File

@ -29,6 +29,7 @@
;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2019 Chris Marusich <cmmarusich@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -2262,3 +2263,52 @@ record the properties and behaviour of particular devices, and to run a
program or test suite under a test bed with the previously recorded devices
loaded.")
(license license:lgpl2.1+)))
(define-public python-pyfakefs
(package
(name "python-pyfakefs")
(version "3.5.8")
(source (origin
(method url-fetch)
;; We use the PyPI URL because there is no proper release
;; available from GitHub. The GitHub project only provides
;; autogenerated tarballs, which are known to change in place.
(uri (pypi-uri "pyfakefs" version))
(sha256
(base32
"0qb9jp0bqhc0dv0rn805fv99029fvx135f3bvka6scfkcl6jgllc"))
(patches (search-patches
"python-pyfakefs-remove-bad-test.patch"))
(file-name (string-append name "-" version ".tar.gz"))))
(arguments
`(#:phases
(modify-phases %standard-phases
;; The default test suite does not run these extra tests.
(add-after 'check 'check-pytest-plugin
(lambda _
(invoke
"python" "-m" "pytest"
"pyfakefs/pytest_tests/pytest_plugin_test.py")
#t)))))
(native-inputs
`(("python-pytest" ,python-pytest)))
(build-system python-build-system)
;; Guix lint doesn't like that this is a permanent redirect to the GitHub
;; page, but the pyfakefs documentation asks us to use this specific URL
;; when linking to the project. Honor their request.
(home-page "http://pyfakefs.org/")
;; TRANSLATORS: In the synopsis, "Mock" is a verb.
(synopsis "Mock file system interactions in tests")
(description
"This package provides a Python library intended for use in automated
tests. One difficulty when testing software is that the code under test might
need to read or write to files in the local file system. If the file system
is not set up in just the right way, it might cause a spurious error during
the test. The pyfakefs library provides a solution to problems like this by
mocking file system interactions. In other words, it arranges for the code
under test to interact with a fake file system instead of the real file
system. The code under test requires no modification to work with pyfakefs.")
(license license:asl2.0)))
(define-public python2-pyfakefs
(package-with-python2 python-pyfakefs))

View File

@ -0,0 +1,23 @@
This test incorrectly assumes that the root user is always available.
However, in the build environment, the root user is not available.
Note that because the original file distributed in the release on PyPi
has lines ending in CRLF, those are retained in the diff below.
--- a/pyfakefs/tests/fake_filesystem_test.py 1969-12-31 16:00:00.000000000 -0800
+++ b/pyfakefs/tests/fake_filesystem_test.py 1969-12-31 16:00:00.000000000 -0800
@@ -1021,15 +1021,6 @@
self.assertEqual(self.path.expanduser('~'),
self.os.environ['HOME'].replace('/', '!'))
- @unittest.skipIf(TestCase.is_windows or TestCase.is_cygwin,
- 'only tested on unix systems')
- def test_expand_root(self):
- if sys.platform == 'darwin':
- roothome = '!var!root'
- else:
- roothome = '!root'
- self.assertEqual(self.path.expanduser('~root'), roothome)
-
def test_getsize_path_nonexistent(self):
file_path = 'foo!bar!baz'
self.assertRaises(os.error, self.path.getsize, file_path)