git: 7db055349957 - main - devel/py-pytest4: preserve 4.x version of devel/py-pytest

From: Dmitry Marakasov <amdmi3_at_FreeBSD.org>
Date: Fri, 18 Mar 2022 17:12:25 UTC
The branch main has been updated by amdmi3:

URL: https://cgit.FreeBSD.org/ports/commit/?id=7db055349957ee7f79e5c2452430c71a3e86b6eb

commit 7db055349957ee7f79e5c2452430c71a3e86b6eb
Author:     Dmitry Marakasov <amdmi3@FreeBSD.org>
AuthorDate: 2022-03-18 16:24:00 +0000
Commit:     Dmitry Marakasov <amdmi3@FreeBSD.org>
CommitDate: 2022-03-18 17:11:37 +0000

    devel/py-pytest4: preserve 4.x version of devel/py-pytest
    
    - Preserve 4.x version of pytest for the ports which are not
      compatible with pytest 6.x. This is a prerequisite for updating
      pytest.
    
    PR:             256624
    Approved by:    maintainer timeout (python@, many months)
---
 devel/Makefile                                     |  1 +
 devel/py-pytest/Makefile                           |  2 +
 devel/py-pytest4/Makefile                          | 61 ++++++++++++++++++++++
 devel/py-pytest4/distinfo                          |  3 ++
 .../files/patch-testing-test_parseopt.py           | 11 ++++
 devel/py-pytest4/pkg-descr                         | 12 +++++
 6 files changed, 90 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index 6378c44bcb02..f05e073de828 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -5115,6 +5115,7 @@
     SUBDIR += py-pytest-virtualenv
     SUBDIR += py-pytest-xdist
     SUBDIR += py-pytest-xprocess
+    SUBDIR += py-pytest4
     SUBDIR += py-python-Levenshtein
     SUBDIR += py-python-application
     SUBDIR += py-python-bugzilla
diff --git a/devel/py-pytest/Makefile b/devel/py-pytest/Makefile
index ffb7ee853788..e5bd19934673 100644
--- a/devel/py-pytest/Makefile
+++ b/devel/py-pytest/Makefile
@@ -11,6 +11,8 @@ COMMENT=	Simple powerful testing with Python
 LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}pytest4
+
 BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}setuptools_scm>=0:devel/py-setuptools_scm@${PY_FLAVOR}
 RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}atomicwrites>=1.0:devel/py-atomicwrites@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}attrs>=17.4.0:devel/py-attrs@${PY_FLAVOR} \
diff --git a/devel/py-pytest4/Makefile b/devel/py-pytest4/Makefile
new file mode 100644
index 000000000000..acc95ec7edf3
--- /dev/null
+++ b/devel/py-pytest4/Makefile
@@ -0,0 +1,61 @@
+PORTNAME=	pytest
+PORTVERSION=	4.6.11
+PORTEPOCH=	1
+CATEGORIES=	devel python
+MASTER_SITES=	CHEESESHOP
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+PKGNAMESUFFIX=	4
+
+MAINTAINER=	python@FreeBSD.org
+COMMENT=	Simple powerful testing with Python (legacy version 4)
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}pytest
+
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}setuptools_scm>=0:devel/py-setuptools_scm@${PY_FLAVOR}
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}atomicwrites>=1.0:devel/py-atomicwrites@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}attrs>=17.4.0:devel/py-attrs@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}more-itertools>=4.0.0:devel/py-more-itertools@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}packaging>=0:devel/py-packaging@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pluggy>=0.12<1.0:devel/py-pluggy@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}py>=1.5.0:devel/py-py@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}six>=1.10.0:devel/py-six@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}wcwidth>=0:devel/py-wcwidth@${PY_FLAVOR}
+TEST_DEPENDS=	bash:shells/bash \
+		lsof:sysutils/lsof \
+		${PYTHON_PKGNAMEPREFIX}argcomplete>=0:devel/py-argcomplete@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}decorator>=0:devel/py-decorator@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}hypothesis>=3.56:devel/py-hypothesis@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}Jinja2>=0:devel/py-Jinja2@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}mock>=0:devel/py-mock@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}nose>=0:devel/py-nose@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}numpy>=0,1:math/py-numpy@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pexpect>=0:misc/py-pexpect@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pytest>=0:devel/py-pytest@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pytest-xdist>=1.13:devel/py-pytest-xdist@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}requests>=0:www/py-requests@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}twisted>=0:devel/py-twisted@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}unittest2>=0:devel/py-unittest2@${PY_FLAVOR}
+
+USES=		python:3.6+
+USE_PYTHON=	autoplist concurrent distutils
+
+NO_ARCH=	yes
+
+.include <bsd.port.pre.mk>
+
+.if ${PYTHON_REL} < 30800
+RUN_DEPENDS+=	${PYTHON_PKGNAMEPREFIX}importlib-metadata>=0.12:devel/py-importlib-metadata@${PY_FLAVOR}
+.endif
+
+post-patch:
+	@${REINPLACE_CMD} -e 's|%%PYTHON_CMD%%|${PYTHON_CMD}|' ${WRKSRC}/testing/test_parseopt.py
+
+# test_cache_failure_warns fails
+# https://github.com/pytest-dev/pytest/issues/1845
+do-test:
+	cd ${WRKSRC} && ${PYTHON_CMD} -m pytest -v -rs -k 'not test_cache_failure_warns'
+
+.include <bsd.port.post.mk>
diff --git a/devel/py-pytest4/distinfo b/devel/py-pytest4/distinfo
new file mode 100644
index 000000000000..db173fdad5c5
--- /dev/null
+++ b/devel/py-pytest4/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1620405525
+SHA256 (pytest-4.6.11.tar.gz) = 50fa82392f2120cc3ec2ca0a75ee615be4c479e66669789771f1758332be4353
+SIZE (pytest-4.6.11.tar.gz) = 952305
diff --git a/devel/py-pytest4/files/patch-testing-test_parseopt.py b/devel/py-pytest4/files/patch-testing-test_parseopt.py
new file mode 100644
index 000000000000..22683ffee3af
--- /dev/null
+++ b/devel/py-pytest4/files/patch-testing-test_parseopt.py
@@ -0,0 +1,11 @@
+--- testing/test_parseopt.py.orig	2020-06-05 12:09:03 UTC
++++ testing/test_parseopt.py
+@@ -305,7 +305,7 @@ def test_argcomplete(testdir, monkeypatch):
+         # redirect output from argcomplete to stdin and stderr is not trivial
+         # http://stackoverflow.com/q/12589419/1307905
+         # so we use bash
+-        fp.write('COMP_WORDBREAKS="$COMP_WORDBREAKS" python -m pytest 8>&1 9>&2')
++        fp.write('COMP_WORDBREAKS="$COMP_WORDBREAKS" %%PYTHON_CMD%% -m pytest 8>&1 9>&2')
+     # alternative would be exteneded Testdir.{run(),_run(),popen()} to be able
+     # to handle a keyword argument env that replaces os.environ in popen or
+     # extends the copy, advantage: could not forget to restore
diff --git a/devel/py-pytest4/pkg-descr b/devel/py-pytest4/pkg-descr
new file mode 100644
index 000000000000..fe225513bc2a
--- /dev/null
+++ b/devel/py-pytest4/pkg-descr
@@ -0,0 +1,12 @@
+The pytest testing tool makes it easy to write small tests, yet scales to
+support complex functional testing.
+
+Features:
+
+  * Detailed info on failing assert statements
+  * Auto-discovery of test modules and functions
+  * Modular fixtures to manage small or parametrized long-lived test resources
+  * Can run unittest (or trial), nose test suites out of the box
+  * Rich plugin architecture, with over 315+ external plugins
+
+WWW: https://docs.pytest.org/en/latest/