summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-11-21 22:24:21 +0100
committerLudovic Courtès <ludo@gnu.org>2021-11-21 23:01:15 +0100
commit248199863cbdc3e13d5aa62fad6fe1c6a027b149 (patch)
treeb948b93920abc14e431643a94f1025f869697623
parentb1fd9531149b94a7e7cdabc67b08ea6a47b03d3d (diff)
gnu: python-werkzeug: Reintroduce 1.0.1.
* gnu/packages/python-web.scm (python-werkzeug-1.0): New variable. * gnu/packages/patches/python-werkzeug-tests.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it.
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/patches/python-werkzeug-tests.patch58
-rw-r--r--gnu/packages/python-web.scm25
3 files changed, 84 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index ccdc881a88..fcac217354 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1672,6 +1672,7 @@ dist_patch_DATA = \
%D%/packages/patches/python-unittest2-python3-compat.patch \
%D%/packages/patches/python-unittest2-remove-argparse.patch \
%D%/packages/patches/python-waitress-fix-tests.patch \
+ %D%/packages/patches/python-werkzeug-tests.patch \
%D%/packages/patches/qemu-build-info-manual.patch \
%D%/packages/patches/qemu-CVE-2021-20203.patch \
%D%/packages/patches/qemu-glibc-2.27.patch \
diff --git a/gnu/packages/patches/python-werkzeug-tests.patch b/gnu/packages/patches/python-werkzeug-tests.patch
new file mode 100644
index 0000000000..4eca53f30c
--- /dev/null
+++ b/gnu/packages/patches/python-werkzeug-tests.patch
@@ -0,0 +1,58 @@
+Do not leave open files behind as this triggers 'ResourceWarning' and leads
+these tests to fail.
+
+--- Werkzeug-1.0.1/tests/test_datastructures.py 2020-03-31 19:48:06.000000000 +0200
++++ Werkzeug-1.0.1/tests/test_datastructures.py 2021-11-21 18:19:11.304369878 +0100
+@@ -1238,9 +1238,10 @@
+ def test_save_to_pathlib_dst(self, tmp_path):
+ src = tmp_path / "src.txt"
+ src.write_text(u"test")
+- storage = self.storage_class(src.open("rb"))
+- dst = tmp_path / "dst.txt"
+- storage.save(dst)
++ with src.open("rb") as input:
++ storage = self.storage_class(input)
++ dst = tmp_path / "dst.txt"
++ storage.save(dst)
+ assert dst.read_text() == "test"
+
+ def test_save_to_bytes_io(self):
+@@ -1251,11 +1252,12 @@
+
+ def test_save_to_file(self, tmp_path):
+ path = tmp_path / "file.data"
+- storage = self.storage_class(io.BytesIO(b"one\ntwo"))
+- with path.open("wb") as dst:
+- storage.save(dst)
+- with path.open("rb") as src:
+- assert src.read() == b"one\ntwo"
++ with io.BytesIO(b"one\ntwo") as input:
++ storage = self.storage_class(input)
++ with path.open("wb") as dst:
++ storage.save(dst)
++ with path.open("rb") as src:
++ assert src.read() == b"one\ntwo"
+
+
+ @pytest.mark.parametrize("ranges", ([(0, 1), (-5, None)], [(5, None)]))
+--- Werkzeug-1.0.1/tests/test_formparser.py 2020-03-31 19:48:06.000000000 +0200
++++ Werkzeug-1.0.1/tests/test_formparser.py 2021-11-21 22:11:43.654622751 +0100
+@@ -27,7 +27,7 @@
+ from werkzeug.test import create_environ
+ from werkzeug.wrappers import Request
+ from werkzeug.wrappers import Response
+-
++import warnings
+
+ @Request.application
+ def form_data_consumer(request):
+@@ -242,6 +244,9 @@
+
+ class TestMultiPart(object):
+ def test_basic(self):
++ # Ignore leaked file descriptor of unknown origin.
++ warnings.filterwarnings(action="ignore", message="unclosed", category=ResourceWarning)
++
+ resources = join(dirname(__file__), "multipart")
+ client = Client(form_data_consumer, Response)
+
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index f34e352612..cadfa05e3a 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -4088,6 +4088,31 @@ uploads, a powerful URL routing system and a bunch of community-contributed
addon modules.")
(license license:x11)))
+(define-public python-werkzeug-1.0
+ (package
+ (inherit python-werkzeug)
+ (version "1.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "Werkzeug" version))
+ (sha256
+ (base32
+ "0z74sa1xw5h20yin9faj0vvdbq713cgbj84klc72jr9nmpjv303c"))
+ (patches (search-patches "python-werkzeug-tests.patch"))))
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (delete 'check)
+ (add-after 'install 'check
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (add-installed-pythonpath inputs outputs)
+ (invoke "python" "-m" "pytest"))))))
+ (propagated-inputs
+ `(("python-requests" ,python-requests)))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)
+ ("python-pytest-timeout" ,python-pytest-timeout)))))
+
(define-public python-bottle
(package
(name "python-bottle")