diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2017-01-19 06:30:04 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2017-01-19 06:30:04 -0500 |
commit | ee0526d8cee7413b857b7260ed1921a530196aa7 (patch) | |
tree | 3201d76852fb048e7a1cf8bb9c4d3aef4e98ebdd | |
parent | adb5c8f6247d688ae001801dc300bb0ff8076648 (diff) | |
download | python-coveragepy-git-ee0526d8cee7413b857b7260ed1921a530196aa7.tar.gz |
More-precise no-coverage pragmas
-rw-r--r-- | coverage/misc.py | 4 | ||||
-rw-r--r-- | coverage/parser.py | 2 | ||||
-rw-r--r-- | metacov.ini | 19 | ||||
-rw-r--r-- | tests/osinfo.py | 6 | ||||
-rw-r--r-- | tests/test_arcs.py | 4 | ||||
-rw-r--r-- | tests/test_farm.py | 8 | ||||
-rw-r--r-- | tests/test_oddball.py | 2 | ||||
-rw-r--r-- | tests/test_parser.py | 2 | ||||
-rw-r--r-- | tests/test_process.py | 12 |
9 files changed, 38 insertions, 21 deletions
diff --git a/coverage/misc.py b/coverage/misc.py index 534ef179..cb9248d2 100644 --- a/coverage/misc.py +++ b/coverage/misc.py @@ -76,7 +76,7 @@ if env.TESTING: return func(*args, **kwargs) return _wrapped return _decorator -else: # pragma: not covered +else: # pragma: not testing # We aren't using real PyContracts, so just define our decorators as # stunt-double no-ops. contract = dummy_decorator_with_args @@ -152,7 +152,7 @@ def expensive(fn): return fn(self) return _wrapped else: - return fn # pragma: not covered + return fn # pragma: not testing def bool_or_none(b): diff --git a/coverage/parser.py b/coverage/parser.py index c44ba22e..6e9bd54a 100644 --- a/coverage/parser.py +++ b/coverage/parser.py @@ -138,7 +138,7 @@ class PythonParser(object): tokgen = generate_tokens(self.text) for toktype, ttext, (slineno, _), (elineno, _), ltext in tokgen: - if self.show_tokens: # pragma: not covered + if self.show_tokens: # pragma: debugging print("%10s %5s %-20r %r" % ( tokenize.tok_name.get(toktype, toktype), nice_pair((slineno, elineno)), ttext, ltext diff --git a/metacov.ini b/metacov.ini index 23806587..b25af6eb 100644 --- a/metacov.ini +++ b/metacov.ini @@ -14,11 +14,28 @@ source = # We set a different pragma so our code won't be confused with test code. exclude_lines = pragma: not covered + + # Lines in test code that isn't covered: we are nested inside ourselves. pragma: nested + + # Lines that are only executed when we are debugging coverage.py. def __repr__ - raise AssertionError pragma: debugging + + # Lines that are only executed when we are not testing coverage.py. + pragma: not testing + + # Lines that we can't run during metacov. + pragma: no metacov + + # These lines only happen if tests fail. + raise AssertionError pragma: only failure + + # OS error conditions that we can't (or don't care to) replicate. + pragma: cant happen + + # Jython needs special care. pragma: only jython skip.*Jython diff --git a/tests/osinfo.py b/tests/osinfo.py index f586c51c..094fb097 100644 --- a/tests/osinfo.py +++ b/tests/osinfo.py @@ -35,7 +35,7 @@ if env.WINDOWS: ctypes.sizeof(mem_struct) ) if not ret: # pragma: part covered - return 0 # pragma: not covered + return 0 # pragma: cant happen return mem_struct.PrivateUsage elif env.LINUX: @@ -50,13 +50,13 @@ elif env.LINUX: # Get pseudo file /proc/<pid>/status with open('/proc/%d/status' % os.getpid()) as t: v = t.read() - except IOError: # pragma: not covered + except IOError: # pragma: cant happen return 0 # non-Linux? # Get VmKey line e.g. 'VmRSS: 9999 kB\n ...' i = v.index(key) v = v[i:].split(None, 3) if len(v) < 3: # pragma: part covered - return 0 # pragma: not covered + return 0 # pragma: cant happen # Convert Vm value to bytes. return int(float(v[1]) * _scale[v[2].lower()]) diff --git a/tests/test_arcs.py b/tests/test_arcs.py index de59bf21..7df623bf 100644 --- a/tests/test_arcs.py +++ b/tests/test_arcs.py @@ -408,7 +408,7 @@ class LoopArcTest(CoverageTest): def test_other_comprehensions(self): if env.PYVERSION < (2, 7): - self.skipTest("No set or dict comprehensions before 2.7") # pragma: not covered + self.skipTest("No set or dict comprehensions before 2.7") # Set comprehension: self.check_coverage("""\ o = ((1,2), (3,4)) @@ -432,7 +432,7 @@ class LoopArcTest(CoverageTest): def test_multiline_dict_comp(self): if env.PYVERSION < (2, 7): - self.skipTest("No set or dict comprehensions before 2.7") # pragma: not covered + self.skipTest("No set or dict comprehensions before 2.7") if env.PYVERSION < (3, 5): arcz = "-42 2B B-4 2-4" else: diff --git a/tests/test_farm.py b/tests/test_farm.py index 4a80be47..8e497363 100644 --- a/tests/test_farm.py +++ b/tests/test_farm.py @@ -119,7 +119,7 @@ class FarmTestCase(ModuleAwareMixin, SysPathAwareMixin, unittest.TestCase): glo['clean'] = clean else: glo = dict((fn, globals()[fn]) for fn in fns) - if self.dont_clean: # pragma: not covered + if self.dont_clean: # pragma: debugging glo['clean'] = noop with change_dir(self.dir): @@ -328,7 +328,7 @@ def clean(cleandir): if os.path.exists(cleandir): try: shutil.rmtree(cleandir) - except OSError: # pragma: not covered + except OSError: # pragma: cant happen if tries == 1: raise else: @@ -369,7 +369,7 @@ def scrub(strdata, scrubs): return strdata -def main(): # pragma: not covered +def main(): # pragma: debugging """Command-line access to farm tests. Commands: @@ -400,5 +400,5 @@ def main(): # pragma: not covered print(main.__doc__) # So that we can run just one farm run.py at a time. -if __name__ == '__main__': # pragma: not covered +if __name__ == '__main__': # pragma: debugging main() diff --git a/tests/test_oddball.py b/tests/test_oddball.py index fe841bd5..1cdadf6f 100644 --- a/tests/test_oddball.py +++ b/tests/test_oddball.py @@ -506,7 +506,7 @@ class GettraceTest(CoverageTest): ) @pytest.mark.expensive - def test_atexit_gettrace(self): # pragma: not covered + def test_atexit_gettrace(self): # pragma: no metacov # This is not a test of coverage at all, but of our understanding # of this edge-case behavior in various Pythons. if env.METACOV: diff --git a/tests/test_parser.py b/tests/test_parser.py index 0053e932..aa96b592 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -243,7 +243,7 @@ class ParserMissingArcDescriptionTest(CoverageTest): def test_missing_arc_descriptions_for_small_callables(self): # We use 2.7 features here, so just skip this test on 2.6 if env.PYVERSION < (2, 7): - self.skipTest("No dict or set comps in 2.6") # pragma: not covered + self.skipTest("No dict or set comps in 2.6") parser = self.parse_text(u"""\ callables = [ diff --git a/tests/test_process.py b/tests/test_process.py index 4a52a946..666d3cc4 100644 --- a/tests/test_process.py +++ b/tests/test_process.py @@ -581,7 +581,7 @@ class ProcessTest(CoverageTest): self.assertEqual(infos[0]['note'], u"These are musical notes: ♫𝅗𝅥♩") @pytest.mark.expensive - def test_fullcoverage(self): # pragma: not covered + def test_fullcoverage(self): # pragma: no metacov if env.PY2: # This doesn't work on Python 2. self.skipTest("fullcoverage doesn't work on Python 2.") # It only works with the C tracer, and if we aren't measuring ourselves. @@ -1193,13 +1193,13 @@ def find_writable_pth_directory(): with open(try_it, "w") as f: try: f.write("foo") - except (IOError, OSError): # pragma: not covered + except (IOError, OSError): # pragma: cant happen continue os.remove(try_it) return pth_dir - return None + return None # pragma: cant happen WORKER = os.environ.get('PYTEST_XDIST_WORKER', '') PTH_DIR = find_writable_pth_directory() @@ -1241,7 +1241,7 @@ class ProcessStartupTest(ProcessCoverageMixin, CoverageTest): f.close() """) - def test_subprocess_with_pth_files(self): # pragma: not covered + def test_subprocess_with_pth_files(self): # pragma: no metacov if env.METACOV: self.skipTest("Can't test sub-process pth file suppport during metacoverage") @@ -1268,7 +1268,7 @@ class ProcessStartupTest(ProcessCoverageMixin, CoverageTest): data.read_file(".mycovdata") self.assertEqual(data.line_counts()['sub.py'], 3) - def test_subprocess_with_pth_files_and_parallel(self): # pragma: not covered + def test_subprocess_with_pth_files_and_parallel(self): # pragma: no metacov # https://bitbucket.org/ned/coveragepy/issues/492/subprocess-coverage-strange-detection-of if env.METACOV: self.skipTest("Can't test sub-process pth file suppport during metacoverage") @@ -1315,7 +1315,7 @@ class ProcessStartupWithSourceTest(ProcessCoverageMixin, CoverageTest): def assert_pth_and_source_work_together( self, dashm, package, source - ): # pragma: not covered + ): # pragma: no metacov """Run the test for a particular combination of factors. The arguments are all strings: |