diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2015-01-26 22:01:18 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2015-01-26 22:01:18 -0500 |
commit | 068bbc3a6678ca4e4bb99d6b7178c67f4e258ddb (patch) | |
tree | 5b89bea47ad566fc2c5fcb2e932ae0ad811918a9 | |
parent | 4dbcf7e66f0f83ce80c1384b7b34984348d9cdf3 (diff) | |
download | python-coveragepy-git-068bbc3a6678ca4e4bb99d6b7178c67f4e258ddb.tar.gz |
Give a reasonable warning for a previous assert. Closes #353.
-rw-r--r-- | CHANGES.txt | 9 | ||||
-rw-r--r-- | coverage/control.py | 9 | ||||
-rw-r--r-- | tests/test_process.py | 25 |
3 files changed, 37 insertions, 6 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index aaf2da7b..b0004b5c 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -3,6 +3,15 @@ Change history for Coverage.py ------------------------------ +Latest +------ + +- A new warning is possible, if a desired file isn't measure because it was + imported before coverage was started (`issue 353`_). + +.. _issue 353: https://bitbucket.org/ned/coveragepy/issue/353/40a3-introduces-an-unexpected-third-case + + Version 4.0a4 --- 25 January 2015 --------------------------------- diff --git a/coverage/control.py b/coverage/control.py index 197a7c1e..319f56dc 100644 --- a/coverage/control.py +++ b/coverage/control.py @@ -722,12 +722,9 @@ class Coverage(object): ): self._warn("Module %s has no Python source." % pkg) else: - raise AssertionError( - "Unexpected third case: name = %s, " - "object = %r, " - "__file__ = %s" % ( - pkg, sys.modules[pkg], sys.modules[pkg].__file__ - ) + self._warn( + "Module %s was previously imported, " + "but not measured." % pkg ) # Find out if we got any data. diff --git a/tests/test_process.py b/tests/test_process.py index a1c853d1..43fdc1bd 100644 --- a/tests/test_process.py +++ b/tests/test_process.py @@ -568,6 +568,31 @@ class ProcessTest(CoverageTest): out = self.run_command("python allok.py") self.assertEqual(out, "No warnings!\n") + def test_run_twice(self): + # https://bitbucket.org/ned/coveragepy/issue/353/40a3-introduces-an-unexpected-third-case + self.make_file("foo.py", """\ + def foo(): + pass + """) + self.make_file("run_twice.py", """\ + import coverage + + for _ in [1, 2]: + inst = coverage.Coverage(source=['foo']) + inst.load() + inst.start() + import foo + inst.stop() + inst.combine() + inst.save() + """) + out = self.run_command("python run_twice.py") + self.assertEqual( + out, + "Coverage.py warning: " + "Module foo was previously imported, but not measured.\n" + ) + class AliasedCommandTest(CoverageTest): """Tests of the version-specific command aliases.""" |