diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2015-08-03 21:25:02 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2015-08-03 21:25:02 -0400 |
commit | f06e02ebdcea3c5c585b784c568b99ea949cba90 (patch) | |
tree | 440bfbdc207ea12139e5e8f959481cf7f5ca4447 /tests | |
parent | 10f4e01ba81a1d840e43b5888a4d293e6059e1b9 (diff) | |
download | python-coveragepy-git-f06e02ebdcea3c5c585b784c568b99ea949cba90.tar.gz |
Fix --append trying to make a new file. #392
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_cmdline.py | 31 | ||||
-rw-r--r-- | tests/test_process.py | 14 |
2 files changed, 36 insertions, 9 deletions
diff --git a/tests/test_cmdline.py b/tests/test_cmdline.py index 3baa2626..4c54088a 100644 --- a/tests/test_cmdline.py +++ b/tests/test_cmdline.py @@ -63,30 +63,33 @@ class BaseCmdLineTest(CoverageTest): return mk - def mock_command_line(self, args): + def mock_command_line(self, args, path_exists=None): """Run `args` through the command line, with a Mock. Returns the Mock it used and the status code returned. """ m = self.model_object() + m.path_exists.return_value = path_exists + ret = coverage.cmdline.CoverageScript( _covpkg=m, _run_python_file=m.run_python_file, - _run_python_module=m.run_python_module, _help_fn=m.help_fn + _run_python_module=m.run_python_module, _help_fn=m.help_fn, + _path_exists=m.path_exists, ).command_line(shlex.split(args)) + return m, ret - def cmd_executes(self, args, code, ret=OK): + def cmd_executes(self, args, code, ret=OK, path_exists=None): """Assert that the `args` end up executing the sequence in `code`.""" - m1, r1 = self.mock_command_line(args) - self.assertEqual( - r1, ret, "Wrong status: got %s, wanted %s" % (r1, ret) - ) + m1, r1 = self.mock_command_line(args, path_exists=path_exists) + self.assertEqual(r1, ret, "Wrong status: got %r, wanted %r" % (r1, ret)) # Remove all indentation, and change ".foo()" to "m2.foo()". code = re.sub(r"(?m)^\s+", "", code) code = re.sub(r"(?m)^\.", "m2.", code) m2 = self.model_object() + m2.path_exists.return_value = path_exists code_obj = compile(code, "<code>", "exec") eval(code_obj, globals(), { 'm2': m2 }) # pylint: disable=eval-used @@ -351,15 +354,25 @@ class CmdLineTest(BaseCmdLineTest): .stop() .save() """) - # run -a calls coverage.load first without erasing. + # run -a combines with an existing data file before saving. self.cmd_executes("run -a foo.py", """\ .coverage() .start() .run_python_file('foo.py', ['foo.py']) .stop() + .path_exists('.coverage') .combine(data_paths=['.coverage']) .save() - """) + """, path_exists=True) + # run -a doesn't combine anything if the data file doesn't exist. + self.cmd_executes("run -a foo.py", """\ + .coverage() + .start() + .run_python_file('foo.py', ['foo.py']) + .stop() + .path_exists('.coverage') + .save() + """, path_exists=False) # --timid sets a flag, and program arguments get passed through. self.cmd_executes("run --timid foo.py abc 123", """\ .coverage(timid=True) diff --git a/tests/test_process.py b/tests/test_process.py index fcd88827..9bd72119 100644 --- a/tests/test_process.py +++ b/tests/test_process.py @@ -168,6 +168,20 @@ class ProcessTest(CoverageTest): data.read_file(".mycovdata") self.assertEqual(data.line_counts()['b_or_c.py'], 7) + def test_append_can_create_a_data_file(self): + self.make_b_or_c_py() + + out = self.run_command("coverage run --append b_or_c.py b") + self.assertEqual(out, 'done\n') + self.assert_exists(".coverage") + self.assertEqual(self.number_of_data_files(), 1) + + # Read the coverage file and see that b_or_c.py has only 6 lines + # executed. + data = coverage.CoverageData() + data.read_file(".coverage") + self.assertEqual(data.line_counts()['b_or_c.py'], 6) + def test_combine_with_rc(self): self.make_b_or_c_py() |