Skip to content

Commit 12961cb

Browse files
committed
Fix more doctest failures
1 parent 4f51b5d commit 12961cb

2 files changed

Lines changed: 45 additions & 6 deletions

File tree

src/sage/doctest/parsing.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -592,7 +592,7 @@ def parse_marked_output(source: str, want: str) -> str | MarkedOutput:
592592
# strip_string_literals replaces comments
593593
comment = literals[comment]
594594
if random_marker.search(comment):
595-
want = MarkedOutput(want).update(random=True)
595+
return MarkedOutput(want).update(random=True)
596596
else:
597597
m = tolerance_pattern.search(comment)
598598
if m:
@@ -606,18 +606,25 @@ def parse_marked_output(source: str, want: str) -> str | MarkedOutput:
606606
want = MarkedOutput(want).update(abs_tol=epsilon)
607607
else:
608608
raise RuntimeError
609+
else:
610+
want = MarkedOutput(want)
609611

610-
want_32 = ""
611-
want_64 = ""
612+
want_32 = []
613+
want_64 = []
612614
for line in want.split("\n"):
613615
bitness = bitness_marker.search(line)
614616
if bitness:
615617
if bitness.groups()[0] == "32":
616-
want_32 += line[: bitness.start()] + "\n"
618+
want_32.append(line[: bitness.start()])
617619
else:
618-
want_64 += line[: bitness.start()] + "\n"
619-
if want_32 == "" and want_64 == "":
620+
want_64.append(line[: bitness.start()])
621+
else:
622+
want_32.append(line)
623+
want_64.append(line)
624+
if want_32 == want_64:
620625
return want
626+
want_32 = "\n".join(want_32)
627+
want_64 = "\n".join(want_64)
621628
return want.update(bitness_32=want_32, bitness_64=want_64)
622629

623630

src/sage/doctest/parsing_test.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,28 @@ def test_parse_bitness_with_tolerance():
137137
)
138138

139139

140+
def test_parse_bitness_multiline():
141+
parser = SageDocTestParser(("sage",))
142+
input = textwrap.dedent(
143+
"""
144+
sage: sys.maxsize > (1 << 32)
145+
something else
146+
True # 64-bit
147+
False # 32-bit
148+
"""
149+
)
150+
parsed = parser.parse(input)[1]
151+
assert isinstance(parsed, doctest.Example)
152+
assert (
153+
parsed.want.bitness_64
154+
== MarkedOutput("something else\nTrue # 64-bit\nFalse # 32-bit\n")
155+
.update(
156+
bitness_32="something else\nFalse \n", bitness_64="something else\nTrue \n"
157+
)
158+
.bitness_64
159+
)
160+
161+
140162
def test_check_output_bitness():
141163
checker = SageOutputChecker()
142164
expected = MarkedOutput("True # 64-bit\nFalse # 32-bit\n").update(
@@ -155,3 +177,13 @@ def test_check_output_bitness_with_tolerance():
155177
abs_tol="0.001",
156178
)
157179
assert checker.check_output(expected, f"{sys.maxsize} \n", 0)
180+
181+
182+
def test_check_output_bitness_multiline():
183+
checker = SageOutputChecker()
184+
expected = MarkedOutput("something else\nTrue # 64-bit\nFalse # 32-bit\n").update(
185+
bitness_32="something else\nFalse \n", bitness_64="something else\nTrue \n"
186+
)
187+
assert checker.check_output(
188+
expected, f"something else\n{bitness_value == 64} \n", 0
189+
)

0 commit comments

Comments
 (0)