Gentoo Archives: gentoo-commits

From: Patrick McLean <chutzpah@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-python/coverage/files/, dev-python/coverage/
Date: Sat, 16 Nov 2019 07:57:57
Message-Id: 1573891053.8b121a58741c04aea2468260ca1c1bb1b815740e.chutzpah@gentoo
1 commit: 8b121a58741c04aea2468260ca1c1bb1b815740e
2 Author: Patrick McLean <chutzpah <AT> gentoo <DOT> org>
3 AuthorDate: Sat Nov 16 07:57:33 2019 +0000
4 Commit: Patrick McLean <chutzpah <AT> gentoo <DOT> org>
5 CommitDate: Sat Nov 16 07:57:33 2019 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8b121a58
7
8 dev-python/coverage: Fix tests with cpython in 4.5.4
9
10 Package-Manager: Portage-2.3.79, Repoman-2.3.18
11 Signed-off-by: Patrick McLean <chutzpah <AT> gentoo.org>
12
13 dev-python/coverage/coverage-4.5.4.ebuild | 26 +++++-
14 .../coverage/files/coverage-4.5.4-tests.patch | 104 +++++++++++++++++++++
15 2 files changed, 126 insertions(+), 4 deletions(-)
16
17 diff --git a/dev-python/coverage/coverage-4.5.4.ebuild b/dev-python/coverage/coverage-4.5.4.ebuild
18 index f6b95bdeabd..75ac87bd7a1 100644
19 --- a/dev-python/coverage/coverage-4.5.4.ebuild
20 +++ b/dev-python/coverage/coverage-4.5.4.ebuild
21 @@ -28,9 +28,15 @@ BDEPEND="
22 )
23 "
24
25 +DISTUTILS_IN_SOURCE_BUILD=1
26 +
27 +PATCHES=(
28 + "${FILESDIR}/coverage-4.5.4-tests.patch"
29 +)
30 +
31 src_prepare() {
32 - # avoid the dep on xdist
33 - sed -i -e '/^addopts/s:-n3::' setup.cfg || die
34 + # avoid the dep on xdist, run tests verbosely
35 + sed -i -e '/^addopts/s:-n3:-v:' setup.cfg || die
36 distutils-r1_src_prepare
37 }
38
39 @@ -45,6 +51,18 @@ python_compile() {
40
41 python_test() {
42 distutils_install_for_testing
43 - "${EPYTHON}" igor.py test_with_tracer py || die
44 - "${EPYTHON}" igor.py test_with_tracer c || die
45 + local bindir=${TEST_DIR}/scripts
46 +
47 + pushd tests/eggsrc >/dev/null || die
48 + distutils_install_for_testing
49 + popd >/dev/null || die
50 +
51 + "${EPYTHON}" igor.py zip_mods || die
52 + PATH="${bindir}:${PATH}" "${EPYTHON}" igor.py test_with_tracer py || die
53 +
54 + # No C extensions under pypy
55 + if [[ ${EPYTHON} != pypy* ]]; then
56 + cp -l -- "${TEST_DIR}"/lib/*/coverage/*.so coverage/ || die
57 + PATH="${bindir}:${PATH}" "${EPYTHON}" igor.py test_with_tracer c || die
58 + fi
59 }
60
61 diff --git a/dev-python/coverage/files/coverage-4.5.4-tests.patch b/dev-python/coverage/files/coverage-4.5.4-tests.patch
62 new file mode 100644
63 index 00000000000..193c4e88ef9
64 --- /dev/null
65 +++ b/dev-python/coverage/files/coverage-4.5.4-tests.patch
66 @@ -0,0 +1,104 @@
67 +diff --git a/tests/farm/run/run_timid.py b/tests/farm/run/run_timid.py
68 +index 0370cf84..4e3cf1ca 100644
69 +--- a/tests/farm/run/run_timid.py
70 ++++ b/tests/farm/run/run_timid.py
71 +@@ -38,6 +38,10 @@ if os.environ.get('COVERAGE_TEST_TRACER', 'c') == 'c':
72 + else:
73 + # If the Python trace function is being tested, then regular running will
74 + # also show the Python function.
75 +- contains("out_timid/showtraceout.txt", "regular PyTracer")
76 ++ #
77 ++ # tox.ini deletes compiled c modules to make this test work, not feasible
78 ++ # to do this from the ebuild environment
79 ++ #contains("out_timid/showtraceout.txt", "regular PyTracer")
80 ++ pass
81 +
82 + clean("out_timid")
83 +diff --git a/tests/test_concurrency.py b/tests/test_concurrency.py
84 +index 578cc679..ae340099 100644
85 +--- a/tests/test_concurrency.py
86 ++++ b/tests/test_concurrency.py
87 +@@ -11,6 +11,7 @@ import time
88 +
89 + from flaky import flaky
90 +
91 ++import unittest
92 + import coverage
93 + from coverage import env
94 + from coverage.backward import import_local_file
95 +@@ -271,6 +272,7 @@ class ConcurrencyTest(CoverageTest):
96 + code = SIMPLE.format(QLIMIT=self.QLIMIT)
97 + self.try_some_code(code, "gevent", gevent)
98 +
99 ++ @unittest.skip("greenlet tests don't work with python tracer")
100 + def test_greenlet(self):
101 + GREENLET = """\
102 + from greenlet import greenlet
103 +@@ -289,6 +291,7 @@ class ConcurrencyTest(CoverageTest):
104 + """
105 + self.try_some_code(GREENLET, "greenlet", greenlet, "hello world\n42\n")
106 +
107 ++ @unittest.skip("greenlet tests don't work with python tracer")
108 + def test_greenlet_simple_code(self):
109 + code = SIMPLE.format(QLIMIT=self.QLIMIT)
110 + self.try_some_code(code, "greenlet", greenlet)
111 +diff --git a/tests/test_filereporter.py b/tests/test_filereporter.py
112 +index 91e47762..121c3260 100644
113 +--- a/tests/test_filereporter.py
114 ++++ b/tests/test_filereporter.py
115 +@@ -4,6 +4,7 @@
116 + """Tests for FileReporters"""
117 +
118 + import os
119 ++import unittest
120 +
121 + from coverage.plugin import FileReporter
122 + from coverage.python import PythonFileReporter
123 +@@ -87,6 +88,7 @@ class FileReporterTest(UsingModulesMixin, CoverageTest):
124 + assert acu < bcu and acu <= bcu and acu != bcu
125 + assert bcu > acu and bcu >= acu and bcu != acu
126 +
127 ++ @unittest.skip("we don't install zip eggs on gentoo")
128 + def test_egg(self):
129 + # Test that we can get files out of eggs, and read their source files.
130 + # The egg1 module is installed by an action in igor.py.
131 +diff --git a/tests/test_oddball.py b/tests/test_oddball.py
132 +index aa2f333c..bc63395a 100644
133 +--- a/tests/test_oddball.py
134 ++++ b/tests/test_oddball.py
135 +@@ -405,7 +405,9 @@ class DoctestTest(CoverageTest):
136 + # well with coverage. Nose fixes the problem by monkeypatching doctest.
137 + # I want to be sure there's no monkeypatch and that I'm getting the
138 + # doctest module that users of coverage will get.
139 +- assert 'doctest' not in sys.modules
140 ++
141 ++ # gentoo is not running these tests via nose, so there is no monkeypatching
142 ++ #assert 'doctest' not in sys.modules
143 +
144 + def test_doctest(self):
145 + self.check_coverage('''\
146 +diff --git a/tests/test_process.py b/tests/test_process.py
147 +index 62dc80a5..7fa9b2ba 100644
148 +--- a/tests/test_process.py
149 ++++ b/tests/test_process.py
150 +@@ -620,11 +620,16 @@ class ProcessTest(CoverageTest):
151 + print("FOOEY == %s" % os.getenv("FOOEY"))
152 + """)
153 +
154 +- fullcov = os.path.join(
155 +- os.path.dirname(coverage.__file__), "fullcoverage"
156 +- )
157 ++ # we want to use the coverage module we are testing, not the system installation
158 ++ paths = [
159 ++ os.path.join(
160 ++ os.path.dirname(coverage.__file__), "fullcoverage"
161 ++ ),
162 ++ os.path.dirname(os.path.dirname(coverage.__file__))
163 ++ ]
164 + self.set_environ("FOOEY", "BOO")
165 +- self.set_environ("PYTHONPATH", fullcov)
166 ++ self.set_environ("PYTHONPATH", ':'.join(paths))
167 ++ print(paths)
168 + out = self.run_command("python -m coverage run -L getenv.py")
169 + self.assertEqual(out, "FOOEY == BOO\n")
170 + data = coverage.CoverageData()