diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2018-08-08 22:15:06 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2018-08-08 22:15:06 -0400 |
commit | 44beff7f1ce7b8320943abc61a7c70410ab8dbdf (patch) | |
tree | 0fd59d0066fe7da164cb9c09f3103d8572b3171d | |
parent | 839a1a0209f2ed27215c8f2fb75c710806346b38 (diff) | |
parent | b44dae19881b970b05913b09911dea5c3951eaf9 (diff) | |
download | python-coveragepy-git-44beff7f1ce7b8320943abc61a7c70410ab8dbdf.tar.gz |
Merge branch 'master' into nedbat/data-sqlite
-rw-r--r-- | .travis.yml | 2 | ||||
-rw-r--r-- | coverage/cmdline.py | 4 | ||||
-rw-r--r-- | requirements/pytest.pip | 1 | ||||
-rw-r--r-- | tests/test_cmdline.py | 16 | ||||
-rw-r--r-- | tests/test_process.py | 64 |
5 files changed, 32 insertions, 55 deletions
diff --git a/.travis.yml b/.travis.yml index 8b0165ae..c2840e29 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,9 +20,11 @@ env: install: - pip install -r requirements/ci.pip + - pip freeze script: - tox + - pip freeze - if [[ $COVERAGE_COVERAGE == 'yes' ]]; then python igor.py combine_html; fi - if [[ $COVERAGE_COVERAGE == 'yes' ]]; then pip install codecov; fi - if [[ $COVERAGE_COVERAGE == 'yes' ]]; then codecov -X gcov --file coverage.xml; fi diff --git a/coverage/cmdline.py b/coverage/cmdline.py index 5a9233ab..1b7955d3 100644 --- a/coverage/cmdline.py +++ b/coverage/cmdline.py @@ -619,10 +619,6 @@ class CoverageScript(object): ) return ERR - if not self.coverage.get_option("run:parallel"): - if not options.append: - self.coverage.erase() - # Run the script. self.coverage.start() code_ran = True diff --git a/requirements/pytest.pip b/requirements/pytest.pip index 23264ee9..e8c59d29 100644 --- a/requirements/pytest.pip +++ b/requirements/pytest.pip @@ -4,5 +4,6 @@ # The pytest specifics used by coverage.py pytest==3.7.1 +pluggy>=0.7 # pytest needs this, but pip doesn't understand pytest-xdist==1.22.5 flaky==3.4.0 diff --git a/tests/test_cmdline.py b/tests/test_cmdline.py index 7fda7961..ecd4d8b3 100644 --- a/tests/test_cmdline.py +++ b/tests/test_cmdline.py @@ -358,7 +358,6 @@ class CmdLineTest(BaseCmdLineTest): # run calls coverage.erase first. self.cmd_executes("run foo.py", """\ .Coverage() - .erase() .start() .run_python_file('foo.py', ['foo.py']) .stop() @@ -386,7 +385,6 @@ class CmdLineTest(BaseCmdLineTest): # --timid sets a flag, and program arguments get passed through. self.cmd_executes("run --timid foo.py abc 123", """\ .Coverage(timid=True) - .erase() .start() .run_python_file('foo.py', ['foo.py', 'abc', '123']) .stop() @@ -395,7 +393,6 @@ class CmdLineTest(BaseCmdLineTest): # -L sets a flag, and flags for the program don't confuse us. self.cmd_executes("run -p -L foo.py -a -b", """\ .Coverage(cover_pylib=True, data_suffix=True) - .erase() .start() .run_python_file('foo.py', ['foo.py', '-a', '-b']) .stop() @@ -403,7 +400,6 @@ class CmdLineTest(BaseCmdLineTest): """) self.cmd_executes("run --branch foo.py", """\ .Coverage(branch=True) - .erase() .start() .run_python_file('foo.py', ['foo.py']) .stop() @@ -411,7 +407,6 @@ class CmdLineTest(BaseCmdLineTest): """) self.cmd_executes("run --rcfile=myrc.rc foo.py", """\ .Coverage(config_file="myrc.rc") - .erase() .start() .run_python_file('foo.py', ['foo.py']) .stop() @@ -419,7 +414,6 @@ class CmdLineTest(BaseCmdLineTest): """) self.cmd_executes("run --include=pre1,pre2 foo.py", """\ .Coverage(include=["pre1", "pre2"]) - .erase() .start() .run_python_file('foo.py', ['foo.py']) .stop() @@ -427,7 +421,6 @@ class CmdLineTest(BaseCmdLineTest): """) self.cmd_executes("run --omit=opre1,opre2 foo.py", """\ .Coverage(omit=["opre1", "opre2"]) - .erase() .start() .run_python_file('foo.py', ['foo.py']) .stop() @@ -435,7 +428,6 @@ class CmdLineTest(BaseCmdLineTest): """) self.cmd_executes("run --include=pre1,pre2 --omit=opre1,opre2 foo.py", """\ .Coverage(include=["pre1", "pre2"], omit=["opre1", "opre2"]) - .erase() .start() .run_python_file('foo.py', ['foo.py']) .stop() @@ -443,7 +435,6 @@ class CmdLineTest(BaseCmdLineTest): """) self.cmd_executes("run --source=quux,hi.there,/home/bar foo.py", """\ .Coverage(source=["quux", "hi.there", "/home/bar"]) - .erase() .start() .run_python_file('foo.py', ['foo.py']) .stop() @@ -451,7 +442,6 @@ class CmdLineTest(BaseCmdLineTest): """) self.cmd_executes("run --concurrency=gevent foo.py", """\ .Coverage(concurrency='gevent') - .erase() .start() .run_python_file('foo.py', ['foo.py']) .stop() @@ -459,7 +449,6 @@ class CmdLineTest(BaseCmdLineTest): """) self.cmd_executes("run --concurrency=multiprocessing foo.py", """\ .Coverage(concurrency='multiprocessing') - .erase() .start() .run_python_file('foo.py', ['foo.py']) .stop() @@ -492,7 +481,6 @@ class CmdLineTest(BaseCmdLineTest): def test_run_debug(self): self.cmd_executes("run --debug=opt1 foo.py", """\ .Coverage(debug=["opt1"]) - .erase() .start() .run_python_file('foo.py', ['foo.py']) .stop() @@ -500,7 +488,6 @@ class CmdLineTest(BaseCmdLineTest): """) self.cmd_executes("run --debug=opt1,opt2 foo.py", """\ .Coverage(debug=["opt1","opt2"]) - .erase() .start() .run_python_file('foo.py', ['foo.py']) .stop() @@ -510,7 +497,6 @@ class CmdLineTest(BaseCmdLineTest): def test_run_module(self): self.cmd_executes("run -m mymodule", """\ .Coverage() - .erase() .start() .run_python_module('mymodule', ['mymodule']) .stop() @@ -518,7 +504,6 @@ class CmdLineTest(BaseCmdLineTest): """) self.cmd_executes("run -m mymodule -qq arg1 arg2", """\ .Coverage() - .erase() .start() .run_python_module('mymodule', ['mymodule', '-qq', 'arg1', 'arg2']) .stop() @@ -526,7 +511,6 @@ class CmdLineTest(BaseCmdLineTest): """) self.cmd_executes("run --branch -m mymodule", """\ .Coverage(branch=True) - .erase() .start() .run_python_module('mymodule', ['mymodule']) .stop() diff --git a/tests/test_process.py b/tests/test_process.py index 341ad37c..ede86691 100644 --- a/tests/test_process.py +++ b/tests/test_process.py @@ -25,14 +25,6 @@ from tests.helpers import re_lines class ProcessTest(CoverageTest): """Tests of the per-process behavior of coverage.py.""" - def data_files(self): - """Return the names of coverage data files in this directory.""" - return [f for f in os.listdir('.') if (f.startswith('.coverage.') or f == '.coverage')] - - def number_of_data_files(self): - """Return the number of coverage data files in this directory.""" - return len(self.data_files()) - def test_save_on_exit(self): self.make_file("mycode.py", """\ h = "Hello" @@ -79,21 +71,21 @@ class ProcessTest(CoverageTest): out = self.run_command("coverage run -p b_or_c.py b") self.assertEqual(out, 'done\n') self.assert_doesnt_exist(".coverage") - self.assertEqual(self.number_of_data_files(), 1) + self.assert_file_count(".coverage.*", 1) out = self.run_command("coverage run -p b_or_c.py c") self.assertEqual(out, 'done\n') self.assert_doesnt_exist(".coverage") # After two -p runs, there should be two .coverage.machine.123 files. - self.assertEqual(self.number_of_data_files(), 2) + 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.assertEqual(self.number_of_data_files(), 1) + self.assert_file_count(".coverage.*", 0) # Read the coverage file and see that b_or_c.py has all 8 lines # executed. @@ -117,14 +109,14 @@ class ProcessTest(CoverageTest): out = self.run_command("coverage run -p b_or_c.py b") self.assertEqual(out, 'done\n') self.assert_doesnt_exist(".coverage") - self.assertEqual(self.number_of_data_files(), 1) + self.assert_file_count(".coverage.*", 1) out = self.run_command("coverage run -p b_or_c.py c") self.assertEqual(out, 'done\n') self.assert_doesnt_exist(".coverage") # After two -p runs, there should be two .coverage.machine.123 files. - self.assertEqual(self.number_of_data_files(), 2) + self.assert_file_count(".coverage.*", 2) # Make a bogus data file. self.make_file(".coverage.bad", "This isn't a coverage data file.") @@ -140,7 +132,7 @@ class ProcessTest(CoverageTest): self.assertRegex(out, warning_regex) # After combining, those two should be the only data files. - self.assertEqual(self.number_of_data_files(), 2) + self.assert_file_count(".coverage.*", 1) # Read the coverage file and see that b_or_c.py has all 8 lines # executed. @@ -154,7 +146,7 @@ class ProcessTest(CoverageTest): out = self.run_command("coverage run b_or_c.py b") self.assertEqual(out, 'done\n') self.assert_exists(".coverage") - self.assertEqual(self.number_of_data_files(), 1) + self.assert_file_count(".coverage.*", 0) # Make bogus data files. self.make_file(".coverage.bad1", "This isn't a coverage data file.") @@ -174,7 +166,8 @@ class ProcessTest(CoverageTest): self.assertRegex(out, r"No usable data files") # After combining, we should have a main file and two parallel files. - self.assertEqual(self.number_of_data_files(), 3) + 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). @@ -188,24 +181,24 @@ class ProcessTest(CoverageTest): out = self.run_command("coverage run -p b_or_c.py b") self.assertEqual(out, 'done\n') self.assert_doesnt_exist(".coverage") - self.assertEqual(self.number_of_data_files(), 1) + 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.assertEqual(self.number_of_data_files(), 1) + self.assert_file_count(".coverage.*", 0) out = self.run_command("coverage run -p b_or_c.py c") self.assertEqual(out, 'done\n') self.assert_exists(".coverage") - self.assertEqual(self.number_of_data_files(), 2) + 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.assertEqual(self.number_of_data_files(), 1) + self.assert_file_count(".coverage.*", 0) # Read the coverage file and see that b_or_c.py has all 8 lines # executed. @@ -219,17 +212,17 @@ class ProcessTest(CoverageTest): out = self.run_command("coverage run -p b_or_c.py b") self.assertEqual(out, 'done\n') self.assert_doesnt_exist(".coverage") - self.assertEqual(self.number_of_data_files(), 1) + 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.assertEqual(self.number_of_data_files(), 1) + self.assert_file_count(".coverage.*", 0) out = self.run_command("coverage run -p b_or_c.py c") self.assertEqual(out, 'done\n') self.assert_exists(".coverage") - self.assertEqual(self.number_of_data_files(), 2) + self.assert_file_count(".coverage.*", 1) # Combine the parallel coverage data files into .coverage, but don't # use the data in .coverage already. @@ -237,7 +230,7 @@ class ProcessTest(CoverageTest): self.assert_exists(".coverage") # After combining, there should be only the .coverage file. - self.assertEqual(self.number_of_data_files(), 1) + 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. @@ -251,12 +244,12 @@ class ProcessTest(CoverageTest): out = self.run_command("coverage run b_or_c.py b") self.assertEqual(out, 'done\n') self.assert_exists(".coverage") - self.assertEqual(self.number_of_data_files(), 1) + self.assert_file_count(".coverage.*", 0) out = self.run_command("coverage run --append b_or_c.py c") self.assertEqual(out, 'done\n') self.assert_exists(".coverage") - self.assertEqual(self.number_of_data_files(), 1) + self.assert_file_count(".coverage.*", 0) # Read the coverage file and see that b_or_c.py has all 8 lines # executed. @@ -294,7 +287,7 @@ class ProcessTest(CoverageTest): 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) + self.assert_file_count(".coverage.*", 0) # Read the coverage file and see that b_or_c.py has only 6 lines # executed. @@ -319,7 +312,7 @@ class ProcessTest(CoverageTest): self.assert_doesnt_exist(".coverage") # After two runs, there should be two .coverage.machine.123 files. - self.assertEqual(self.number_of_data_files(), 2) + self.assert_file_count(".coverage.*", 2) # Combine the parallel coverage data files into .coverage . self.run_command("coverage combine") @@ -327,7 +320,7 @@ class ProcessTest(CoverageTest): self.assert_exists(".coveragerc") # After combining, there should be only the .coverage file. - self.assertEqual(self.number_of_data_files(), 1) + self.assert_file_count(".coverage.*", 0) # Read the coverage file and see that b_or_c.py has all 8 lines # executed. @@ -375,13 +368,13 @@ class ProcessTest(CoverageTest): out = self.run_command("coverage run " + os.path.normpath("d2/x.py")) self.assertEqual(out, '4 5\n') - self.assertEqual(self.number_of_data_files(), 2) + self.assert_file_count(".coverage.*", 2) self.run_command("coverage combine") self.assert_exists(".coverage") # After combining, there should be only the .coverage file. - self.assertEqual(self.number_of_data_files(), 1) + self.assert_file_count(".coverage.*", 0) # Read the coverage data file and see that the two different x.py # files have been combined together. @@ -534,19 +527,20 @@ class ProcessTest(CoverageTest): # After running the forking program, there should be two # .coverage.machine.123 files. - self.assertEqual(self.number_of_data_files(), 2) + self.assert_file_count(".coverage.*", 2) # The two data files should have different random numbers at the end of # the file name. - nums = set(name.rpartition(".")[-1] for name in self.data_files()) - self.assertEqual(len(nums), 2, "Same random: %s" % (self.data_files(),)) + data_files = glob.glob(".coverage.*") + nums = set(name.rpartition(".")[-1] for name in data_files) + self.assertEqual(len(nums), 2, "Same random: %s" % (data_files,)) # 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.assertEqual(self.number_of_data_files(), 1) + self.assert_file_count(".coverage.*", 0) data = coverage.CoverageData() data.read() |