Skip to content

Commit

Permalink
MFH: r522860 r522861
Browse files Browse the repository at this point in the history
net/py-suds-jurko: Fix tests installed into shared location [1]

This package installs its 'tests' module into a non-package-specific
location in the root site-packages directory. Python packages should/usually
address this by excluding tests from installation using
setup.py: find_packages(exclude[ "<package-glob>" ]).

Unfortunately the above 'simple' change cannot be used because it doesn't
allow the package to be tested on Python 3.x, as the tests package is not
processed by 2to3, and the tests need to be run on the processed (by 2to3)
sources. This may be the original reason upstream didn't remove them from
the build, not grokking the ramifications.

Accordingly, this change moves the tests into the main package namespace
and runs the tests on the processed sources in the resulting build/*
directory. Remove CONFLICTS_INSTALL (to py-suds) accordingly.

While I'm here:

Patch the tests to support pytest > 4 and hack around the
inability to reference parametrized tests (test[foo]) in pytests -k
expressions. [1][2]

Level up ports compliance: LICENSE_FILE, USE{S} ordering, match COMMENT
to setup.py:description, match pkg-descr WWW URL to setup.py:homepage

QA: All tests pass on Python 2.7-3.8

[1] pytest-dev/pytest#5881
[2] pytest-dev/pytest#6177

PR:		226077
Reported by:	yuri [1]
Approved by:	portmgr (blanket: ports compliance)

net/py-suds-jurko: Bump PORTREVISION missed in ports r522860

PR:	226077

Approved by:	ports-secteam (blanket(s): ports compliance, port bugfixes)
  • Loading branch information
koobs committed Jan 13, 2020
1 parent ac2785e commit 7a5dfa0
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 6 deletions.
51 changes: 47 additions & 4 deletions net/py-suds-jurko/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,63 @@

PORTNAME= suds-jurko
PORTVERSION= 0.6
PORTREVISION= 1
CATEGORIES= net python
MASTER_SITES= CHEESESHOP
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}

MAINTAINER= alexander.nusov@nfvexpress.com
COMMENT= Lightweight SOAP client (jurko's fork)
COMMENT= Lightweight SOAP client (Jurko's fork)

LICENSE= LGPL3
LICENSE_FILE= ${WRKSRC}/LICENSE.txt

TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pytest>0:devel/py-pytest@${PY_FLAVOR}

USES= dos2unix python tar:bz2
USE_PYTHON= autoplist distutils

NO_ARCH= yes

CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}suds-[0-9]*
post-patch:
# Move the tests into the main package so
# they are processed by 2to3 so we can test Python 3
${MV} ${WRKSRC}/tests ${WRKSRC}/suds/tests
# Compensate for the package/module name change
${REINPLACE_CMD} -e 's|import tests|import suds.tests|g' \
${WRKSRC}/suds/tests/test_argument_parser.py \
${WRKSRC}/suds/tests/test_date_time.py \
${WRKSRC}/suds/tests/test_input_parameters.py \
${WRKSRC}/suds/tests/test_reply_handling.py \
${WRKSRC}/suds/tests/test_request_construction.py \
${WRKSRC}/suds/tests/test_suds.py \
${WRKSRC}/suds/tests/test_timezone.py
${REINPLACE_CMD} -e 's|tests.|suds.tests.|g' \
${WRKSRC}/suds/tests/conftest.py \
${WRKSRC}/suds/tests/test_reply_handling.py \
${WRKSRC}/suds/tests/test_suds.py \
${WRKSRC}/suds/tests/test_request_construction.py \
${WRKSRC}/suds/tests/test_input_parameters.py \
${WRKSRC}/suds/tests/test_argument_parser.py

USES= python tar:bz2
USE_PYTHON= autoplist distutils
# lambda: foo needed due to wanting to exclude parametrized tests
# https://github.com/pytest-dev/pytest/issues/5881
# https://github.com/pytest-dev/pytest/issues/6177
#
# Must call tests from the build/ dir because the source dir
# hasn't been processed by 2to3, so tests fail to start on Python 3
#
# Must call the tests from build/lib/suds/tests because
# Defining 'pytest_plugins' in a non-top-level conftest is no longer supported
# https://docs.pytest.org/en/latest/deprecations.html#pytest-plugins-in-non-top-level-conftest-files

do-test:
cd ${WRKSRC} && ${SETENV} ${TEST_ENV} ${PYTHON_CMD} -m pytest -v -rs -o addopts= \
-k "not test_document_literal_request_for_single_element_input \
and not (lambda: locals)()()['test_binding_uses_argument_parsing[binding_style1]'] \
and not (lambda: locals)()()['test_choice_containing_an_empty_sequence[test_args_required0]'] \
and not (lambda: locals)()()['test_choice_explicitly_marked_as_optional[choice0]'] \
and not test_sending_unicode_data" \
build/lib/suds/tests

.include <bsd.port.mk>
14 changes: 14 additions & 0 deletions net/py-suds-jurko/files/patch-setup.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# [pytest] section in setup.cfg files is no longer supported
# TODO: Upstream

--- setup.cfg.orig 2020-01-13 04:27:33 UTC
+++ setup.cfg
@@ -4,7 +4,7 @@ optimize = 1
[sdist]
formats = bztar,zip

-[pytest]
+[tool:pytest]
norecursedirs = .git .hg .svn build dist

[egg_info]
23 changes: 23 additions & 0 deletions net/py-suds-jurko/files/patch-tests_indirect__parametrize.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# pytest_namespace() was removed in 4.x
# See: https://docs.pytest.org/en/latest/deprecations.html#pytest-namespacehttps://docs.pytest.org/en/latest/deprecations.html#pytest-namespace
# TODO: Upstream

--- tests/indirect_parametrize.py.orig 2014-01-21 19:06:03 UTC
+++ tests/indirect_parametrize.py
@@ -112,6 +112,7 @@ def pytest_configure(config):
"argument list and keyword argument dictionary) based on the received "
"input data. For more detailed information see the "
"indirect_parametrize pytest plugin implementation module.")
+ pytest.indirect_parametrize = indirect_parametrize


def pytest_generate_tests(metafunc):
@@ -123,8 +124,3 @@ def pytest_generate_tests(metafunc):
return
args, kwargs = mark.args[0](*mark.args[1:], **mark.kwargs)
metafunc.parametrize(*args, **kwargs)
-
-
-def pytest_namespace():
- """pytest hook publishing references in the toplevel pytest namespace."""
- return {'indirect_parametrize': indirect_parametrize}
7 changes: 5 additions & 2 deletions net/py-suds-jurko/pkg-descr
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
Lightweight SOAP client written in Python (jurko's fork).
Based on the original 'suds' project by Jeff Ortel (jortel at redhat
dot com) hosted at 'http://fedorahosted.org/suds'.

WWW: https://pypi.org/project/suds-jurko/
'Suds' is a lightweight SOAP-based web service client for Python

WWW: https://bitbucket.org/jurko/suds

0 comments on commit 7a5dfa0

Please sign in to comment.