Skip to content

Commit d20a77c

Browse files
committed
Make return codes consistent: 1 for no data and 2 for fail_under. Now the report command will properly report No data to report if there's no data.
1 parent 7840acd commit d20a77c

File tree

3 files changed

+29
-9
lines changed

3 files changed

+29
-9
lines changed

coverage/html.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,7 @@ def report(self, morfs):
126126
self.index_file()
127127

128128
self.make_local_static_report_files()
129-
130-
return self.totals.pc_covered
129+
return self.totals.n_statements and self.totals.pc_covered
131130

132131
def make_local_static_report_files(self):
133132
"""Make local instances of static files for HTML report."""

coverage/summary.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,5 +98,6 @@ def report(self, morfs, outfile=None):
9898
if self.config.show_missing:
9999
args += ("",)
100100
outfile.write(fmt_coverage % args)
101-
101+
if not total.n_files:
102+
raise CoverageException("No data to report.")
102103
return total.n_statements and total.pc_covered

tests/test_process.py

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -703,17 +703,15 @@ def test_fail_under_in_config(self):
703703
st, _ = self.run_command_status("coverage report")
704704
self.assertEqual(st, 2)
705705

706-
class FailUnderNoDataTest(CoverageTest):
707-
def setUp(self):
708-
super(FailUnderNoDataTest, self).setUp()
709706

707+
class FailUnderNoFilesTest(CoverageTest):
708+
def setUp(self):
709+
super(FailUnderNoFilesTest, self).setUp()
710710
self.make_file(".coveragerc", "[report]\nfail_under = 99\n")
711-
if os.path.exists('.coverage'):
712-
os.remove('.coverage')
713711

714712
def test_report(self):
715713
st, _ = self.run_command_status("coverage report")
716-
self.assertEqual(st, 2)
714+
self.assertEqual(st, 1)
717715

718716
def test_xml(self):
719717
st, _ = self.run_command_status("coverage xml")
@@ -724,6 +722,28 @@ def test_html(self):
724722
self.assertEqual(st, 1)
725723

726724

725+
class FailUnderEmptyFilesTest(CoverageTest):
726+
def setUp(self):
727+
super(FailUnderEmptyFilesTest, self).setUp()
728+
729+
self.make_file(".coveragerc", "[report]\nfail_under = 99\n")
730+
self.make_file("empty.py", "")
731+
st, _ = self.run_command_status("coverage run empty.py")
732+
self.assertEqual(st, 0)
733+
734+
def test_report(self):
735+
st, _ = self.run_command_status("coverage report")
736+
self.assertEqual(st, 2)
737+
738+
def test_xml(self):
739+
st, _ = self.run_command_status("coverage xml")
740+
self.assertEqual(st, 2)
741+
742+
def test_html(self):
743+
st, _ = self.run_command_status("coverage html")
744+
self.assertEqual(st, 2)
745+
746+
727747
def possible_pth_dirs():
728748
"""Produce a sequence of directories for trying to write .pth files."""
729749
# First look through sys.path, and we find a .pth file, then it's a good

0 commit comments

Comments
 (0)