summaryrefslogtreecommitdiff
path: root/tests/test_report.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2021-10-26 09:01:09 -0400
committerNed Batchelder <ned@nedbatchelder.com>2021-10-26 18:34:01 -0400
commit88c02676be5b37e8cd5eed128375d1bde3ff8107 (patch)
treeb3bc514cab004ee2c57f2ba01d5a39ed4fabf358 /tests/test_report.py
parent8e8fdb4308c56375a1463fa65de7e84303610522 (diff)
downloadpython-coveragepy-git-88c02676be5b37e8cd5eed128375d1bde3ff8107.tar.gz
test: a true unit test for render_report
Diffstat (limited to 'tests/test_report.py')
-rw-r--r--tests/test_report.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/test_report.py b/tests/test_report.py
new file mode 100644
index 00000000..1a9dd179
--- /dev/null
+++ b/tests/test_report.py
@@ -0,0 +1,50 @@
+# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
+# For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt
+
+"""Tests for helpers in report.py"""
+
+import pytest
+
+from coverage.exceptions import CoverageException
+from coverage.report import render_report
+from tests.coveragetest import CoverageTest
+
+
+class FakeReporter:
+ """A fake implementation of a one-file reporter."""
+
+ def __init__(self, output="", error=False):
+ self.output = output
+ self.error = error
+ self.morfs = None
+
+ def report(self, morfs, outfile):
+ """Fake."""
+ self.morfs = morfs
+ outfile.write(self.output)
+ if self.error:
+ raise CoverageException("You asked for it!")
+
+
+class RenderReportTest(CoverageTest):
+ """Tests of render_report."""
+
+ def test_stdout(self):
+ fake = FakeReporter(output="Hello!\n")
+ render_report("-", fake, [pytest, "coverage"])
+ assert fake.morfs == [pytest, "coverage"]
+ assert self.stdout() == "Hello!\n"
+
+ def test_file(self):
+ fake = FakeReporter(output="Gréètings!\n")
+ render_report("output.txt", fake, [])
+ assert self.stdout() == ""
+ with open("output.txt", "rb") as f:
+ assert f.read() == b"Gr\xc3\xa9\xc3\xa8tings!\n"
+
+ def test_exception(self):
+ fake = FakeReporter(error=True)
+ with pytest.raises(CoverageException, match="You asked for it!"):
+ render_report("output.txt", fake, [])
+ assert self.stdout() == ""
+ self.assert_doesnt_exist("output.txt")