~ruther/guix-local

248199863cbdc3e13d5aa62fad6fe1c6a027b149 — Ludovic Courtès 4 years ago b1fd953
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.
3 files changed, 84 insertions(+), 0 deletions(-)

M gnu/local.mk
A gnu/packages/patches/python-werkzeug-tests.patch
M gnu/packages/python-web.scm
M gnu/local.mk => gnu/local.mk +1 -0
@@ 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 			\

A gnu/packages/patches/python-werkzeug-tests.patch => gnu/packages/patches/python-werkzeug-tests.patch +58 -0
@@ 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)
 

M gnu/packages/python-web.scm => gnu/packages/python-web.scm +25 -0
@@ 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")