diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2011-08-08 22:24:51 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2011-08-08 22:24:51 -0400 |
commit | 669a609f88de252d41cd5b8510160c87ef6e65ba (patch) | |
tree | 5f9ffad31beaac55c7b88fbccfa2fcbad702f799 | |
parent | 829215d157dca64cd1d88be27908e73a084715a7 (diff) | |
download | python-coveragepy-git-669a609f88de252d41cd5b8510160c87ef6e65ba.tar.gz |
Control the test better; don't use os when cleaning up the path
-rw-r--r-- | coverage/collector.py | 2 | ||||
-rw-r--r-- | coverage/fullcoverage/encodings.py | 6 | ||||
-rw-r--r-- | coverage/tracer.c | 4 | ||||
-rw-r--r-- | test/coveragetest.py | 2 | ||||
-rw-r--r-- | test/test_process.py | 45 |
5 files changed, 32 insertions, 27 deletions
diff --git a/coverage/collector.py b/coverage/collector.py index 5498cc6c..8b8b1ffc 100644 --- a/coverage/collector.py +++ b/coverage/collector.py @@ -233,7 +233,7 @@ class Collector(object): self._collectors[-1].pause() self._collectors.append(self) #print >>sys.stderr, "Started: %r" % self._collectors - + # Check to see whether we had a fullcoverage tracer installed. traces0 = None if hasattr(sys, "gettrace"): diff --git a/coverage/fullcoverage/encodings.py b/coverage/fullcoverage/encodings.py index 4e1ab354..9409b7d7 100644 --- a/coverage/fullcoverage/encodings.py +++ b/coverage/fullcoverage/encodings.py @@ -43,8 +43,8 @@ sys.settrace(FullCoverageTracer().fullcoverage_trace) # happen last, since all of the symbols in this module will become None # at that exact moment, including "sys". -import os -this = os.path.dirname(__file__) -sys.path.remove(this) +parentdirs = [ d for d in sys.path if __file__.startswith(d) ] +parentdirs.sort(key=len) +sys.path.remove(parentdirs[-1]) del sys.modules['encodings'] import encodings diff --git a/coverage/tracer.c b/coverage/tracer.c index e9fc56b4..2e7c7a55 100644 --- a/coverage/tracer.c +++ b/coverage/tracer.c @@ -473,7 +473,7 @@ Tracer_trace(Tracer *self, PyFrameObject *frame, int what, PyObject *arg_unused) * optional keyword argument: * * def Tracer_call(frame, event, arg, lineno=0) - * + * * If provided, the lineno argument is used as the line number, and the * frame's f_lineno member is ignored. */ @@ -500,7 +500,7 @@ Tracer_call(Tracer *self, PyObject *args, PyObject *kwds) static char *kwlist[] = {"frame", "event", "arg", "lineno", NULL}; - if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!O!O|i:Tracer_call", kwlist, + if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!O!O|i:Tracer_call", kwlist, &PyFrame_Type, &frame, &MyText_Type, &what_str, &arg, &lineno)) { goto done; } diff --git a/test/coveragetest.py b/test/coveragetest.py index 9bff27eb..627635f1 100644 --- a/test/coveragetest.py +++ b/test/coveragetest.py @@ -426,7 +426,7 @@ class CoverageTest(TestCase): here = os.path.dirname(self.nice_file(coverage.__file__, "..")) testmods = self.nice_file(here, 'test/modules') zipfile = self.nice_file(here, 'test/zipmods.zip') - pypath = os.getenv('PYTHONPATH') + pypath = os.getenv('PYTHONPATH', '') if pypath: pypath += os.pathsep pypath += testmods + os.pathsep + zipfile diff --git a/test/test_process.py b/test/test_process.py index e62fce22..1bdb1400 100644 --- a/test/test_process.py +++ b/test/test_process.py @@ -292,23 +292,28 @@ class ProcessTest(CoverageTest): self.assertTrue("No module named no_such_module" in out) self.assertTrue("warning" not in out) - if sys.version_info >= (2, 7): # Need coverage runnable as a module. - def test_fullcoverage(self): - # fullcoverage is a trick to get stdlib modules measured from the - # very beginning of the process. Here we import os and then check - # how many lines are measured. - self.make_file("getenv.py", """\ - import os - print("FOOEY == %s" % os.getenv("FOOEY")) - """) - - fullcov = os.path.join(os.path.dirname(coverage.__file__), "fullcoverage") - self.set_environ("FOOEY", "BOO") - self.set_environ("PYTHONPATH", fullcov) - out = self.run_command("python -m coverage run -L getenv.py") - self.assertEqual(out, "FOOEY == BOO\n") - data = coverage.CoverageData() - data.read_file(".coverage") - # The actual number of lines in os.py executed when it is imported - # is 120 or so. Just running os.getenv executes about 5. - self.assertGreater(data.summary()['os.py'], 50) + if sys.version_info >= (3, 0): # This only works on 3.x for now. + # It only works with the C tracer. + if os.getenv('COVERAGE_TEST_TRACER', 'c') == 'c': + def test_fullcoverage(self): + # fullcoverage is a trick to get stdlib modules measured from + # the very beginning of the process. Here we import os and + # then check how many lines are measured. + self.make_file("getenv.py", """\ + import os + print("FOOEY == %s" % os.getenv("FOOEY")) + """) + + fullcov = os.path.join( + os.path.dirname(coverage.__file__), "fullcoverage" + ) + self.set_environ("FOOEY", "BOO") + self.set_environ("PYTHONPATH", fullcov) + out = self.run_command("python -m coverage run -L getenv.py") + self.assertEqual(out, "FOOEY == BOO\n") + data = coverage.CoverageData() + data.read_file(".coverage") + # The actual number of executed lines in os.py when it's + # imported is 120 or so. Just running os.getenv executes + # about 5. + self.assertGreater(data.summary()['os.py'], 50) |