diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2021-10-26 09:01:09 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2021-10-26 18:34:01 -0400 |
commit | 88c02676be5b37e8cd5eed128375d1bde3ff8107 (patch) | |
tree | b3bc514cab004ee2c57f2ba01d5a39ed4fabf358 /tests/test_report.py | |
parent | 8e8fdb4308c56375a1463fa65de7e84303610522 (diff) | |
download | python-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.py | 50 |
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") |