summaryrefslogtreecommitdiff
path: root/tests/test_process.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_process.py')
-rw-r--r--tests/test_process.py203
1 files changed, 5 insertions, 198 deletions
diff --git a/tests/test_process.py b/tests/test_process.py
index 567f9ace..fdd71f0f 100644
--- a/tests/test_process.py
+++ b/tests/test_process.py
@@ -71,209 +71,16 @@ class ProcessTest(CoverageTest):
# Together, they run 8 lines.
self.make_file("b_or_c.py", """\
import sys
- a = 1
+ a = 2
if sys.argv[1] == 'b':
- b = 1
+ b = 4
else:
- c = 1
- c2 = 2
- d = 1
+ c = 6
+ c2 = 7
+ d = 8
print('done')
""")
- def test_combine_parallel_data(self):
- self.make_b_or_c_py()
- out = self.run_command("coverage run -p b_or_c.py b")
- assert out == 'done\n'
- self.assert_doesnt_exist(".coverage")
- self.assert_file_count(".coverage.*", 1)
-
- out = self.run_command("coverage run -p b_or_c.py c")
- assert out == 'done\n'
- self.assert_doesnt_exist(".coverage")
-
- # After two -p runs, there should be two .coverage.machine.123 files.
- self.assert_file_count(".coverage.*", 2)
-
- # Combine the parallel coverage data files into .coverage .
- self.run_command("coverage combine")
- self.assert_exists(".coverage")
-
- # After combining, there should be only the .coverage file.
- self.assert_file_count(".coverage.*", 0)
-
- # Read the coverage file and see that b_or_c.py has all 8 lines
- # executed.
- data = coverage.CoverageData()
- data.read()
- assert line_counts(data)['b_or_c.py'] == 8
-
- # Running combine again should fail, because there are no parallel data
- # files to combine.
- status, out = self.run_command_status("coverage combine")
- assert status == 1
- assert out == "No data to combine\n"
-
- # And the originally combined data is still there.
- data = coverage.CoverageData()
- data.read()
- assert line_counts(data)['b_or_c.py'] == 8
-
- def test_combine_parallel_data_with_a_corrupt_file(self):
- self.make_b_or_c_py()
- out = self.run_command("coverage run -p b_or_c.py b")
- assert out == 'done\n'
- self.assert_doesnt_exist(".coverage")
- self.assert_file_count(".coverage.*", 1)
-
- out = self.run_command("coverage run -p b_or_c.py c")
- assert out == 'done\n'
- self.assert_doesnt_exist(".coverage")
-
- # After two -p runs, there should be two .coverage.machine.123 files.
- self.assert_file_count(".coverage.*", 2)
-
- # Make a bogus data file.
- self.make_file(".coverage.bad", "This isn't a coverage data file.")
-
- # Combine the parallel coverage data files into .coverage .
- out = self.run_command("coverage combine")
- self.assert_exists(".coverage")
- self.assert_exists(".coverage.bad")
- warning_regex = (
- r"CoverageWarning: Couldn't use data file '.*\.coverage\.bad': " +
- r"file (is encrypted or )?is not a database"
- )
- assert re.search(warning_regex, out)
-
- # After combining, those two should be the only data files.
- self.assert_file_count(".coverage.*", 1)
-
- # Read the coverage file and see that b_or_c.py has all 8 lines
- # executed.
- data = coverage.CoverageData()
- data.read()
- assert line_counts(data)['b_or_c.py'] == 8
-
- def test_combine_no_usable_files(self):
- # https://github.com/nedbat/coveragepy/issues/629
- self.make_b_or_c_py()
- out = self.run_command("coverage run b_or_c.py b")
- assert out == 'done\n'
- self.assert_exists(".coverage")
- self.assert_file_count(".coverage.*", 0)
-
- # Make bogus data files.
- self.make_file(".coverage.bad1", "This isn't a coverage data file.")
- self.make_file(".coverage.bad2", "This isn't a coverage data file.")
-
- # Combine the parallel coverage data files into .coverage, but nothing is readable.
- status, out = self.run_command_status("coverage combine")
- assert status == 1
-
- for n in "12":
- self.assert_exists(f".coverage.bad{n}")
- warning_regex = (
- fr"CoverageWarning: Couldn't use data file '.*\.coverage.bad{n}': " +
- r"file (is encrypted or )?is not a database"
- )
- assert re.search(warning_regex, out)
- assert re.search(r"No usable data files", out)
-
- # After combining, we should have a main file and two parallel files.
- self.assert_exists(".coverage")
- self.assert_file_count(".coverage.*", 2)
-
- # Read the coverage file and see that b_or_c.py has 6 lines
- # executed (we only did b, not c).
- data = coverage.CoverageData()
- data.read()
- assert line_counts(data)['b_or_c.py'] == 6
-
- def test_combine_parallel_data_in_two_steps(self):
- self.make_b_or_c_py()
-
- out = self.run_command("coverage run -p b_or_c.py b")
- assert out == 'done\n'
- self.assert_doesnt_exist(".coverage")
- self.assert_file_count(".coverage.*", 1)
-
- # Combine the (one) parallel coverage data file into .coverage .
- self.run_command("coverage combine")
- self.assert_exists(".coverage")
- self.assert_file_count(".coverage.*", 0)
-
- out = self.run_command("coverage run -p b_or_c.py c")
- assert out == 'done\n'
- self.assert_exists(".coverage")
- self.assert_file_count(".coverage.*", 1)
-
- # Combine the parallel coverage data files into .coverage .
- self.run_command("coverage combine --append")
- self.assert_exists(".coverage")
-
- # After combining, there should be only the .coverage file.
- self.assert_file_count(".coverage.*", 0)
-
- # Read the coverage file and see that b_or_c.py has all 8 lines
- # executed.
- data = coverage.CoverageData()
- data.read()
- assert line_counts(data)['b_or_c.py'] == 8
-
- def test_combine_parallel_data_no_append(self):
- self.make_b_or_c_py()
-
- out = self.run_command("coverage run -p b_or_c.py b")
- assert out == 'done\n'
- self.assert_doesnt_exist(".coverage")
- self.assert_file_count(".coverage.*", 1)
-
- # Combine the (one) parallel coverage data file into .coverage .
- self.run_command("coverage combine")
- self.assert_exists(".coverage")
- self.assert_file_count(".coverage.*", 0)
-
- out = self.run_command("coverage run -p b_or_c.py c")
- assert out == 'done\n'
- self.assert_exists(".coverage")
- self.assert_file_count(".coverage.*", 1)
-
- # Combine the parallel coverage data files into .coverage, but don't
- # use the data in .coverage already.
- self.run_command("coverage combine")
- self.assert_exists(".coverage")
-
- # After combining, there should be only the .coverage file.
- self.assert_file_count(".coverage.*", 0)
-
- # Read the coverage file and see that b_or_c.py has only 7 lines
- # because we didn't keep the data from running b.
- data = coverage.CoverageData()
- data.read()
- assert line_counts(data)['b_or_c.py'] == 7
-
- def test_combine_parallel_data_keep(self):
- self.make_b_or_c_py()
- out = self.run_command("coverage run -p b_or_c.py b")
- assert out == 'done\n'
- self.assert_doesnt_exist(".coverage")
- self.assert_file_count(".coverage.*", 1)
-
- out = self.run_command("coverage run -p b_or_c.py c")
- assert out == 'done\n'
- self.assert_doesnt_exist(".coverage")
-
- # After two -p runs, there should be two .coverage.machine.123 files.
- self.assert_file_count(".coverage.*", 2)
-
- # Combine the parallel coverage data files into .coverage with the keep flag.
- self.run_command("coverage combine --keep")
-
- # After combining, the .coverage file & the original combined file should still be there.
- self.assert_exists(".coverage")
- self.assert_file_count(".coverage.*", 2)
-
def test_append_data(self):
self.make_b_or_c_py()