diff options
Diffstat (limited to 'tests/errors')
| -rw-r--r-- | tests/errors/context.test.py | 93 | ||||
| -rw-r--r-- | tests/errors/errors.test.py | 35 |
2 files changed, 1 insertions, 127 deletions
diff --git a/tests/errors/context.test.py b/tests/errors/context.test.py index fff9e09..6595e92 100644 --- a/tests/errors/context.test.py +++ b/tests/errors/context.test.py @@ -2,37 +2,7 @@ from unittest import mock -from edify.errors.context import ( - CallerContext, - _context_for_frame, - capture_caller_context, -) - - -class _FakeCode: - """A stand-in for ``types.CodeType`` used to force specific ``co_positions`` behaviour.""" - - def __init__(self, filename: str, positions: list[tuple]) -> None: - self.co_filename = filename - self._positions = list(positions) - - def co_positions(self): - return iter(self._positions) - - -class _FakeFrame: - """A stand-in for ``types.FrameType`` shaped for :func:`_context_for_frame`.""" - - def __init__( - self, - filename: str, - f_lineno: int, - f_lasti: int, - positions: list[tuple], - ) -> None: - self.f_code = _FakeCode(filename, positions) - self.f_lineno = f_lineno - self.f_lasti = f_lasti +from edify.errors.context import CallerContext, capture_caller_context def test_capture_caller_context_returns_none_when_every_frame_is_inside_edify(): @@ -40,67 +10,6 @@ def test_capture_caller_context_returns_none_when_every_frame_is_inside_edify(): assert capture_caller_context() is None -def test_context_for_frame_uses_lineno_fallback_when_instruction_index_out_of_range(): - frame = _FakeFrame( - filename="/tmp/fake.py", - f_lineno=42, - f_lasti=999, - positions=[], - ) - context = _context_for_frame(frame) - assert context.lineno == 42 - assert context.colno == 1 - assert context.end_colno == 1 - - -def test_context_for_frame_defaults_start_line_when_position_start_line_is_none(): - frame = _FakeFrame( - filename="/tmp/fake.py", - f_lineno=99, - f_lasti=0, - positions=[(None, None, None, None)], - ) - context = _context_for_frame(frame) - assert context.lineno == 99 - - -def test_context_for_frame_defaults_end_line_when_position_end_line_is_none(): - frame = _FakeFrame( - filename="/tmp/fake.py", - f_lineno=7, - f_lasti=0, - positions=[(5, None, 2, 4)], - ) - context = _context_for_frame(frame) - assert context.lineno == 5 - assert context.colno == 3 - assert context.end_colno == 5 - - -def test_context_for_frame_defaults_start_col_when_position_start_col_is_none(): - frame = _FakeFrame( - filename="/tmp/fake.py", - f_lineno=1, - f_lasti=0, - positions=[(1, 1, None, 5)], - ) - context = _context_for_frame(frame) - assert context.colno == 1 - assert context.end_colno == 6 - - -def test_context_for_frame_defaults_end_col_when_position_end_col_is_none(): - frame = _FakeFrame( - filename="/tmp/fake.py", - f_lineno=1, - f_lasti=0, - positions=[(1, 1, 3, None)], - ) - context = _context_for_frame(frame) - assert context.colno == 4 - assert context.end_colno == 4 - - 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") assert context.filename == "a.py" diff --git a/tests/errors/errors.test.py b/tests/errors/errors.test.py index 74acaa4..632045d 100644 --- a/tests/errors/errors.test.py +++ b/tests/errors/errors.test.py @@ -16,12 +16,6 @@ from edify.errors.input import ( MustBeSingleCharacterError, MustHaveASmallerValueError, ) -from edify.errors.internal import ( - FailedToCompileRegexError, - NonFusableElementError, - UnexpectedFrameTypeError, - UnknownElementTypeError, -) from edify.errors.naming import ( CannotCreateDuplicateNamedGroupError, NamedGroupDoesNotExistError, @@ -188,31 +182,6 @@ def test_cannot_call_subexpression(): assert "capture" in text -def test_unknown_element_type(): - error = UnknownElementTypeError("WeirdElement") - text = str(error) - assert "unknown element type 'WeirdElement'" in text - - -def test_non_fusable_element(): - error = NonFusableElementError("DigitElement") - text = str(error) - assert "cannot fuse element 'DigitElement' into a character class" in text - - -def test_unexpected_frame_type(): - error = UnexpectedFrameTypeError("DigitElement") - text = str(error) - assert "stack frame anchored at unexpected element 'DigitElement'" in text - - -def test_failed_to_compile_regex(): - error = FailedToCompileRegexError("missing )") - text = str(error) - assert "rejected by the re engine" in text - assert "missing )" in text - - def test_every_annotated_error_message_starts_with_error_prefix(): errors = [ StartInputAlreadyDefinedError(), @@ -234,10 +203,6 @@ def test_every_annotated_error_message_starts_with_error_prefix(): NamedGroupDoesNotExistError("x"), CannotEndWhileBuildingRootExpressionError(), CannotCallSubexpressionError("capture"), - UnknownElementTypeError("X"), - NonFusableElementError("X"), - UnexpectedFrameTypeError("X"), - FailedToCompileRegexError("boom"), ] for error in errors: text = str(error) |
