summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_compile.py2
-rw-r--r--Lib/test/test_traceback.py17
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2024-02-28-16-42-17.gh-issue-116034.-Uu9tf.rst1
-rw-r--r--Python/compile.c2
4 files changed, 20 insertions, 2 deletions
diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py
index 815800f..6ed7fe2 100644
--- a/Lib/test/test_compile.py
+++ b/Lib/test/test_compile.py
@@ -1412,7 +1412,7 @@ class TestSourcePositions(unittest.TestCase):
self.assertOpcodeSourcePositionIs(compiled_code, 'CALL',
line=1, end_line=3, column=0, end_column=30, occurrence=1)
self.assertOpcodeSourcePositionIs(compiled_code, 'RAISE_VARARGS',
- line=1, end_line=3, column=0, end_column=30, occurrence=1)
+ line=1, end_line=3, column=8, end_column=16, occurrence=1)
def test_multiline_generator_expression(self):
snippet = textwrap.dedent("""\
diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py
index 61eb0a7..d12b559 100644
--- a/Lib/test/test_traceback.py
+++ b/Lib/test/test_traceback.py
@@ -666,6 +666,23 @@ class TracebackErrorLocationCaretTestBase:
result_lines = self.get_exception(f_with_binary_operator)
self.assertEqual(result_lines, expected_error.splitlines())
+ def test_caret_for_failed_assertion(self):
+ def f_assert():
+ test = 3
+ assert test == 1 and test == 2, "Bug found?"
+
+ lineno_f = f_assert.__code__.co_firstlineno
+ expected_error = (
+ 'Traceback (most recent call last):\n'
+ f' File "{__file__}", line {self.callable_line}, in get_exception\n'
+ ' callable()\n'
+ f' File "{__file__}", line {lineno_f+2}, in f_assert\n'
+ ' assert test == 1 and test == 2, "Bug found?"\n'
+ ' ^^^^^^^^^^^^^^^^^^^^^^^\n'
+ )
+ result_lines = self.get_exception(f_assert)
+ self.assertEqual(result_lines, expected_error.splitlines())
+
def test_traceback_specialization_with_syntax_error(self):
bytecode = compile("1 / 0 / 1 / 2\n", TESTFN, "exec")
diff --git a/Misc/NEWS.d/next/Core and Builtins/2024-02-28-16-42-17.gh-issue-116034.-Uu9tf.rst b/Misc/NEWS.d/next/Core and Builtins/2024-02-28-16-42-17.gh-issue-116034.-Uu9tf.rst
new file mode 100644
index 0000000..c711b63
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2024-02-28-16-42-17.gh-issue-116034.-Uu9tf.rst
@@ -0,0 +1 @@
+Fix location of the error on a failed assertion.
diff --git a/Python/compile.c b/Python/compile.c
index ddd7b5c..a871e9c 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -3883,7 +3883,7 @@ compiler_assert(struct compiler *c, stmt_ty s)
VISIT(c, expr, s->v.Assert.msg);
ADDOP_I(c, LOC(s), CALL, 0);
}
- ADDOP_I(c, LOC(s), RAISE_VARARGS, 1);
+ ADDOP_I(c, LOC(s->v.Assert.test), RAISE_VARARGS, 1);
USE_LABEL(c, end);
return SUCCESS;