commit:     9a086e25fc82093b28b4c3698009a0557f6e7d91
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Apr  9 05:59:51 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Apr  9 06:01:33 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9a086e25

dev-python/werkzeug: Support >=dev-python/pytest-xprocess-1

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 .../files/werkzeug-3.0.2-pytest-xprocess-1.patch   | 21 ++++++
 dev-python/werkzeug/werkzeug-3.0.2-r1.ebuild       | 74 ++++++++++++++++++++++
 2 files changed, 95 insertions(+)

diff --git a/dev-python/werkzeug/files/werkzeug-3.0.2-pytest-xprocess-1.patch 
b/dev-python/werkzeug/files/werkzeug-3.0.2-pytest-xprocess-1.patch
new file mode 100644
index 000000000000..3993b0847957
--- /dev/null
+++ b/dev-python/werkzeug/files/werkzeug-3.0.2-pytest-xprocess-1.patch
@@ -0,0 +1,21 @@
+diff --git a/tests/conftest.py b/tests/conftest.py
+index b73202cd..905f3f4b 100644
+--- a/tests/conftest.py
++++ b/tests/conftest.py
+@@ -107,10 +107,12 @@ def dev_server(xprocess, request, tmp_path):
+             # Unbuffered output so the logs update immediately.
+             env = {**os.environ, "PYTHONPATH": str(tmp_path), 
"PYTHONUNBUFFERED": "1"}
+ 
+-            @cached_property
+-            def pattern(self):
+-                client.request("/ensure")
+-                return "GET /ensure"
++            def startup_check(self):
++                try:
++                    client.request("/ensure")
++                    return True
++                except (ConnectionRefusedError, FileNotFoundError):
++                    return False
+ 
+         # Each test that uses the fixture will have a different log.
+         xp_name = f"dev_server-{request.node.name}"

diff --git a/dev-python/werkzeug/werkzeug-3.0.2-r1.ebuild 
b/dev-python/werkzeug/werkzeug-3.0.2-r1.ebuild
new file mode 100644
index 000000000000..67830a3b7586
--- /dev/null
+++ b/dev-python/werkzeug/werkzeug-3.0.2-r1.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( python3_{10..12} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="Collection of various utilities for WSGI applications"
+HOMEPAGE="
+       https://palletsprojects.com/p/werkzeug/
+       https://pypi.org/project/Werkzeug/
+       https://github.com/pallets/werkzeug/
+"
+SRC_URI="
+       https://github.com/pallets/werkzeug/archive/${PV}.tar.gz
+               -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 
~riscv ~s390 ~sparc ~x86"
+IUSE="test-rust"
+
+RDEPEND="
+       >=dev-python/markupsafe-2.1.1[${PYTHON_USEDEP}]
+"
+# NOTE: remove the loong mask after greenlet gains support for loong
+# see https://github.com/python-greenlet/greenlet/pull/257
+BDEPEND="
+       test? (
+               dev-python/ephemeral-port-reserve[${PYTHON_USEDEP}]
+               dev-python/pytest-timeout[${PYTHON_USEDEP}]
+               >=dev-python/pytest-xprocess-1[${PYTHON_USEDEP}]
+               >=dev-python/watchdog-2.3[${PYTHON_USEDEP}]
+               test-rust? (
+                       dev-python/cryptography[${PYTHON_USEDEP}]
+               )
+               !hppa? ( !ia64? ( !loong? (
+                       $(python_gen_cond_dep '
+                               dev-python/greenlet[${PYTHON_USEDEP}]
+                       ' python3_{10..11})
+               ) ) )
+       )
+"
+
+distutils_enable_tests pytest
+
+PATCHES=(
+       # https://github.com/pallets/werkzeug/issues/2875
+       "${FILESDIR}/${PN}-3.0.2-pytest-xprocess-1.patch"
+)
+
+python_test() {
+       local EPYTEST_DESELECT=(
+               # RequestRedirect class started incidentally being tested
+               # with pytest-8, though the test isn't prepared for that
+               # https://github.com/pallets/werkzeug/issues/2845
+               'tests/test_exceptions.py::test_response_body[RequestRedirect]'
+       )
+       if ! has_version "dev-python/cryptography[${PYTHON_USEDEP}]"; then
+               EPYTEST_DESELECT+=(
+                       "tests/test_serving.py::test_server[https]"
+                       tests/test_serving.py::test_ssl_dev_cert
+                       tests/test_serving.py::test_ssl_object
+               )
+       fi
+
+       # the default portage tempdir is too long for AF_UNIX sockets
+       local -x TMPDIR=/tmp
+       epytest -p no:django -p no:httpbin tests
+}

Reply via email to