summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick McLean <chutzpah@gentoo.org>2019-11-15 23:57:33 -0800
committerPatrick McLean <chutzpah@gentoo.org>2019-11-15 23:57:33 -0800
commit8b121a58741c04aea2468260ca1c1bb1b815740e (patch)
tree2ba149325833b614be664e45b76ebb0bf8c3ee26 /dev-python/coverage
parentmail-filter/zdkimfilter: Initial commit (diff)
downloadgentoo-8b121a58741c04aea2468260ca1c1bb1b815740e.tar.gz
gentoo-8b121a58741c04aea2468260ca1c1bb1b815740e.tar.bz2
gentoo-8b121a58741c04aea2468260ca1c1bb1b815740e.zip
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@gentoo.org>
Diffstat (limited to 'dev-python/coverage')
-rw-r--r--dev-python/coverage/coverage-4.5.4.ebuild26
-rw-r--r--dev-python/coverage/files/coverage-4.5.4-tests.patch104
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 f6b95bdeabdb..75ac87bd7a1a 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 000000000000..193c4e88ef91
--- /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()