commit:     8b121a58741c04aea2468260ca1c1bb1b815740e
Author:     Patrick McLean <chutzpah <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 16 07:57:33 2019 +0000
Commit:     Patrick McLean <chutzpah <AT> gentoo <DOT> org>
CommitDate: Sat Nov 16 07:57:33 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8b121a58

dev-python/coverage: Fix tests with cpython in 4.5.4

Package-Manager: Portage-2.3.79, Repoman-2.3.18
Signed-off-by: Patrick McLean <chutzpah <AT> gentoo.org>

 dev-python/coverage/coverage-4.5.4.ebuild          |  26 +++++-
 .../coverage/files/coverage-4.5.4-tests.patch      | 104 +++++++++++++++++++++
 2 files changed, 126 insertions(+), 4 deletions(-)

diff --git a/dev-python/coverage/coverage-4.5.4.ebuild 
b/dev-python/coverage/coverage-4.5.4.ebuild
index f6b95bdeabd..75ac87bd7a1 100644
--- a/dev-python/coverage/coverage-4.5.4.ebuild
+++ b/dev-python/coverage/coverage-4.5.4.ebuild
@@ -28,9 +28,15 @@ BDEPEND="
        )
 "
 
+DISTUTILS_IN_SOURCE_BUILD=1
+
+PATCHES=(
+       "${FILESDIR}/coverage-4.5.4-tests.patch"
+)
+
 src_prepare() {
-       # avoid the dep on xdist
-       sed -i -e '/^addopts/s:-n3::' setup.cfg || die
+       # avoid the dep on xdist, run tests verbosely
+       sed -i -e '/^addopts/s:-n3:-v:' setup.cfg || die
        distutils-r1_src_prepare
 }
 
@@ -45,6 +51,18 @@ python_compile() {
 
 python_test() {
        distutils_install_for_testing
-       "${EPYTHON}" igor.py test_with_tracer py || die
-       "${EPYTHON}" igor.py test_with_tracer c || die
+       local bindir=${TEST_DIR}/scripts
+
+       pushd tests/eggsrc >/dev/null || die
+       distutils_install_for_testing
+       popd >/dev/null || die
+
+       "${EPYTHON}" igor.py zip_mods || die
+       PATH="${bindir}:${PATH}" "${EPYTHON}" igor.py test_with_tracer py || die
+
+       # No C extensions under pypy
+       if [[ ${EPYTHON} != pypy* ]]; then
+               cp -l -- "${TEST_DIR}"/lib/*/coverage/*.so coverage/ || die
+               PATH="${bindir}:${PATH}" "${EPYTHON}" igor.py test_with_tracer 
c || die
+       fi
 }

diff --git a/dev-python/coverage/files/coverage-4.5.4-tests.patch 
b/dev-python/coverage/files/coverage-4.5.4-tests.patch
new file mode 100644
index 00000000000..193c4e88ef9
--- /dev/null
+++ b/dev-python/coverage/files/coverage-4.5.4-tests.patch
@@ -0,0 +1,104 @@
+diff --git a/tests/farm/run/run_timid.py b/tests/farm/run/run_timid.py
+index 0370cf84..4e3cf1ca 100644
+--- a/tests/farm/run/run_timid.py
++++ b/tests/farm/run/run_timid.py
+@@ -38,6 +38,10 @@ if os.environ.get('COVERAGE_TEST_TRACER', 'c') == 'c':
+ else:
+     # If the Python trace function is being tested, then regular running will
+     # also show the Python function.
+-    contains("out_timid/showtraceout.txt", "regular PyTracer")
++    #
++    # tox.ini deletes compiled c modules to make this test work, not feasible
++    # to do this from the ebuild environment
++    #contains("out_timid/showtraceout.txt", "regular PyTracer")
++    pass
+ 
+ clean("out_timid")
+diff --git a/tests/test_concurrency.py b/tests/test_concurrency.py
+index 578cc679..ae340099 100644
+--- a/tests/test_concurrency.py
++++ b/tests/test_concurrency.py
+@@ -11,6 +11,7 @@ import time
+ 
+ from flaky import flaky
+ 
++import unittest
+ import coverage
+ from coverage import env
+ from coverage.backward import import_local_file
+@@ -271,6 +272,7 @@ class ConcurrencyTest(CoverageTest):
+         code = SIMPLE.format(QLIMIT=self.QLIMIT)
+         self.try_some_code(code, "gevent", gevent)
+ 
++    @unittest.skip("greenlet tests don't work with python tracer")
+     def test_greenlet(self):
+         GREENLET = """\
+             from greenlet import greenlet
+@@ -289,6 +291,7 @@ class ConcurrencyTest(CoverageTest):
+             """
+         self.try_some_code(GREENLET, "greenlet", greenlet, "hello 
world\n42\n")
+ 
++    @unittest.skip("greenlet tests don't work with python tracer")
+     def test_greenlet_simple_code(self):
+         code = SIMPLE.format(QLIMIT=self.QLIMIT)
+         self.try_some_code(code, "greenlet", greenlet)
+diff --git a/tests/test_filereporter.py b/tests/test_filereporter.py
+index 91e47762..121c3260 100644
+--- a/tests/test_filereporter.py
++++ b/tests/test_filereporter.py
+@@ -4,6 +4,7 @@
+ """Tests for FileReporters"""
+ 
+ import os
++import unittest
+ 
+ from coverage.plugin import FileReporter
+ from coverage.python import PythonFileReporter
+@@ -87,6 +88,7 @@ class FileReporterTest(UsingModulesMixin, CoverageTest):
+         assert acu < bcu and acu <= bcu and acu != bcu
+         assert bcu > acu and bcu >= acu and bcu != acu
+ 
++    @unittest.skip("we don't install zip eggs on gentoo")
+     def test_egg(self):
+         # Test that we can get files out of eggs, and read their source files.
+         # The egg1 module is installed by an action in igor.py.
+diff --git a/tests/test_oddball.py b/tests/test_oddball.py
+index aa2f333c..bc63395a 100644
+--- a/tests/test_oddball.py
++++ b/tests/test_oddball.py
+@@ -405,7 +405,9 @@ class DoctestTest(CoverageTest):
+         # well with coverage. Nose fixes the problem by monkeypatching 
doctest.
+         # I want to be sure there's no monkeypatch and that I'm getting the
+         # doctest module that users of coverage will get.
+-        assert 'doctest' not in sys.modules
++
++        # gentoo is not running these tests via nose, so there is no 
monkeypatching
++        #assert 'doctest' not in sys.modules
+ 
+     def test_doctest(self):
+         self.check_coverage('''\
+diff --git a/tests/test_process.py b/tests/test_process.py
+index 62dc80a5..7fa9b2ba 100644
+--- a/tests/test_process.py
++++ b/tests/test_process.py
+@@ -620,11 +620,16 @@ class ProcessTest(CoverageTest):
+             print("FOOEY == %s" % os.getenv("FOOEY"))
+             """)
+ 
+-        fullcov = os.path.join(
+-            os.path.dirname(coverage.__file__), "fullcoverage"
+-            )
++        # we want to use the coverage module we are testing, not the system 
installation
++        paths = [
++            os.path.join(
++                os.path.dirname(coverage.__file__), "fullcoverage"
++            ),
++            os.path.dirname(os.path.dirname(coverage.__file__))
++        ]
+         self.set_environ("FOOEY", "BOO")
+-        self.set_environ("PYTHONPATH", fullcov)
++        self.set_environ("PYTHONPATH", ':'.join(paths))
++        print(paths)
+         out = self.run_command("python -m coverage run -L getenv.py")
+         self.assertEqual(out, "FOOEY == BOO\n")
+         data = coverage.CoverageData()

Reply via email to