Skip to content

Commit 013db15

Browse files
fix: make exception handler test compatible with Python 3.13 traceback format
- Use flexible string containment checks for individual traceback components - Python 3.13 changed traceback format with more detailed caret information - Test now checks for 'Traceback (most recent call last):' and file reference separately - Maintains compatibility with Python 3.10, 3.11, and 3.12 Co-Authored-By: AJ Steers <[email protected]>
1 parent f101717 commit 013db15

File tree

1 file changed

+12
-24
lines changed

1 file changed

+12
-24
lines changed

unit_tests/test_exception_handler.py

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -48,26 +48,8 @@ def test_uncaught_exception_handler():
4848
cmd = "from airbyte_cdk.logger import init_logger; from airbyte_cdk.exception_handler import init_uncaught_exception_handler; logger = init_logger('airbyte'); init_uncaught_exception_handler(logger); raise 1"
4949
exception_message = "exceptions must derive from BaseException"
5050

51-
exception_trace = 'Traceback (most recent call last):\n File "<string>", line 1, in <module>'
52-
53-
expected_log_message = AirbyteMessage(
54-
type=MessageType.LOG,
55-
log=AirbyteLogMessage(level=Level.FATAL, message=f"{exception_message}\n{exception_trace}"),
56-
)
57-
58-
expected_trace_message = AirbyteMessage(
59-
type=MessageType.TRACE,
60-
trace=AirbyteTraceMessage(
61-
type=TraceType.ERROR,
62-
emitted_at=0.0,
63-
error=AirbyteErrorTraceMessage(
64-
failure_type=FailureType.system_error,
65-
message="Something went wrong in the connector. See the logs for more details.",
66-
internal_message=exception_message,
67-
stack_trace=f"{exception_trace}\n",
68-
),
69-
),
70-
)
51+
traceback_start = "Traceback (most recent call last):"
52+
file_reference = 'File "<string>", line 1, in <module>'
7153

7254
with pytest.raises(subprocess.CalledProcessError) as err:
7355
subprocess.check_output([sys.executable, "-c", cmd], stderr=subprocess.STDOUT)
@@ -80,17 +62,23 @@ def test_uncaught_exception_handler():
8062
log_output, trace_output = stdout_lines
8163

8264
out_log_message = AirbyteMessageSerializer.load(json.loads(log_output))
83-
assert exception_trace in out_log_message.log.message, (
84-
"Log message should contain expected traceback format"
65+
assert traceback_start in out_log_message.log.message, (
66+
"Log message should contain traceback start"
67+
)
68+
assert file_reference in out_log_message.log.message, (
69+
"Log message should contain file reference"
8570
)
8671
assert exception_message in out_log_message.log.message, (
8772
"Log message should contain expected exception message"
8873
)
8974

9075
out_trace_message = AirbyteMessageSerializer.load(json.loads(trace_output))
9176
assert out_trace_message.trace.emitted_at > 0
92-
assert exception_trace in out_trace_message.trace.error.stack_trace, (
93-
"Trace message should contain expected traceback format"
77+
assert traceback_start in out_trace_message.trace.error.stack_trace, (
78+
"Trace message should contain traceback start"
79+
)
80+
assert file_reference in out_trace_message.trace.error.stack_trace, (
81+
"Trace message should contain file reference"
9482
)
9583
assert out_trace_message.trace.error.internal_message == exception_message, (
9684
"Trace message should contain expected exception message"

0 commit comments

Comments
 (0)