diff --git a/tests/test_html.py b/tests/test_html.py index d5cc0f301..01b81f623 100644 --- a/tests/test_html.py +++ b/tests/test_html.py @@ -1203,6 +1203,36 @@ def test_bug_1828(self) -> None: '3 ccc"]', ] + @pytest.mark.parametrize( + "leader", ["", "f", "r", "fr", "rf"], + ids=["string", "f-string", "raw_string", "f-raw_string", "raw_f-string"] + ) + def test_bug_1836(self, leader) -> None: + # https://github.com/nedbat/coveragepy/issues/1836 + self.make_file("py312_fstrings.py", f"""\ + prog_name = 'bug.py' + err_msg = {leader}'''\\ + {{prog_name}}: ERROR: This is the first line of the error. + {{prog_name}}: ERROR: This is the second line of the error. + \\ + {{prog_name}}: ERROR: This is the third line of the error. + ''' + """) + + cov = coverage.Coverage() + py312_fstrings = self.start_import_stop(cov, "py312_fstrings") + cov.html_report(py312_fstrings) + + assert self.get_html_report_text_lines("py312_fstrings.py") == [ + "1" + "prog_name = 'bug.py'", + "2" + f"err_msg = {leader}'''\\", + "3" + "{prog_name}: ERROR: This is the first line of the error.", + "4" + "{prog_name}: ERROR: This is the second line of the error.", + "5" + "\\", + "6" + "{prog_name}: ERROR: This is the third line of the error.", + "7" + "'''", + ] + def test_unicode(self) -> None: surrogate = "\U000e0100"