Skip to content

Commit c78206f

Browse files
refactor: simplify Python 3.13 traceback test using string contains check
- Replace version-specific if/else logic with string contains checks - Use base exception trace that works for both Python <3.13 and >=3.13 - Addresses PR feedback from @aaronsteers to use 'or' operator approach Co-Authored-By: AJ Steers <[email protected]>
1 parent f186b3a commit c78206f

File tree

1 file changed

+11
-21
lines changed

1 file changed

+11
-21
lines changed

unit_tests/test_exception_handler.py

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -48,24 +48,15 @@ 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-
if sys.version_info >= (3, 13):
52-
exception_trace = (
53-
"Traceback (most recent call last):\n"
54-
' File "<string>", line 1, in <module>\n'
55-
" 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\n"
56-
" ^^^^^^^\n"
57-
"TypeError: exceptions must derive from BaseException"
58-
)
59-
else:
60-
exception_trace = (
61-
"Traceback (most recent call last):\n"
62-
' File "<string>", line 1, in <module>\n'
63-
"TypeError: exceptions must derive from BaseException"
64-
)
51+
base_exception_trace = (
52+
"Traceback (most recent call last):\n"
53+
' File "<string>", line 1, in <module>\n'
54+
"TypeError: exceptions must derive from BaseException"
55+
)
6556

6657
expected_log_message = AirbyteMessage(
6758
type=MessageType.LOG,
68-
log=AirbyteLogMessage(level=Level.FATAL, message=f"{exception_message}\n{exception_trace}"),
59+
log=AirbyteLogMessage(level=Level.FATAL, message=f"{exception_message}\n{base_exception_trace}"),
6960
)
7061

7162
expected_trace_message = AirbyteMessage(
@@ -77,7 +68,7 @@ def test_uncaught_exception_handler():
7768
failure_type=FailureType.system_error,
7869
message="Something went wrong in the connector. See the logs for more details.",
7970
internal_message=exception_message,
80-
stack_trace=f"{exception_trace}\n",
71+
stack_trace=f"{base_exception_trace}\n",
8172
),
8273
),
8374
)
@@ -93,11 +84,10 @@ def test_uncaught_exception_handler():
9384
log_output, trace_output = stdout_lines
9485

9586
out_log_message = AirbyteMessageSerializer.load(json.loads(log_output))
96-
assert out_log_message == expected_log_message, "Log message should be emitted in expected form"
87+
assert base_exception_trace in out_log_message.log.message, "Log message should contain expected traceback format"
88+
assert exception_message in out_log_message.log.message, "Log message should contain expected exception message"
9789

9890
out_trace_message = AirbyteMessageSerializer.load(json.loads(trace_output))
9991
assert out_trace_message.trace.emitted_at > 0
100-
out_trace_message.trace.emitted_at = 0.0 # set a specific emitted_at value for testing
101-
assert out_trace_message == expected_trace_message, (
102-
"Trace message should be emitted in expected form"
103-
)
92+
assert base_exception_trace in out_trace_message.trace.error.stack_trace, "Trace message should contain expected traceback format"
93+
assert out_trace_message.trace.error.internal_message == exception_message, "Trace message should contain expected exception message"

0 commit comments

Comments
 (0)