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"