aboutsummaryrefslogtreecommitdiff
path: root/tests/errors/context.test.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/errors/context.test.py')
-rw-r--r--tests/errors/context.test.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/tests/errors/context.test.py b/tests/errors/context.test.py
index 6595e92..60e7add 100644
--- a/tests/errors/context.test.py
+++ b/tests/errors/context.test.py
@@ -1,5 +1,6 @@
"""Tests for the caller-source-location capture helpers in :mod:`edify.errors.context`."""
+import linecache
from unittest import mock
from edify.errors.context import CallerContext, capture_caller_context
@@ -10,7 +11,21 @@ def test_capture_caller_context_returns_none_when_every_frame_is_inside_edify():
assert capture_caller_context() is None
-def test_caller_context_dataclass_is_frozen_and_holds_all_five_fields():
- context = CallerContext(filename="a.py", lineno=1, colno=1, end_colno=5, source_line="x = 1")
+def test_caller_context_dataclass_is_frozen_and_holds_position_fields():
+ context = CallerContext(filename="a.py", lineno=1, colno=1, end_colno=5)
assert context.filename == "a.py"
+ assert context.lineno == 1
+ assert context.colno == 1
+ assert context.end_colno == 5
+
+
+def test_caller_context_source_line_property_reads_lazily_via_linecache():
+ filename = "/tmp/lazy_source_test.py"
+ linecache.cache[filename] = (5, None, ["x = 1\n"], filename)
+ context = CallerContext(filename=filename, lineno=1, colno=1, end_colno=5)
assert context.source_line == "x = 1"
+
+
+def test_caller_context_source_line_returns_empty_string_when_line_is_unreadable():
+ context = CallerContext(filename="/tmp/no_such_file.py", lineno=999, colno=1, end_colno=1)
+ assert context.source_line == ""