Skip to content

Commit 7eb50a5

Browse files
authored
Make application error type default to unqualified type name (#295)
Fixes #294
1 parent ec7212b commit 7eb50a5

File tree

3 files changed

+15
-13
lines changed

3 files changed

+15
-13
lines changed

temporalio/lib/temporalio/converters/failure_converter.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ def to_failure(error, converter)
8686
)
8787
else
8888
failure.application_failure_info = Api::Failure::V1::ApplicationFailureInfo.new(
89-
type: error.class.name
89+
type: error.class.name.to_s.split('::').last
9090
)
9191
end
9292

temporalio/test/converters/failure_converter_test.rb

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@
77

88
module Converters
99
class FailureConverterTest < Test
10+
class CustomError < StandardError; end
11+
1012
def test_failure_with_causes
1113
# Make multiple nested errors
1214
orig_err = assert_raises do
1315
begin
1416
begin
15-
raise 'Unset error class'
17+
raise CustomError, 'Custom error class'
1618
rescue StandardError
1719
raise Temporalio::Error::ApplicationError, 'Application error no details'
1820
end
@@ -45,8 +47,8 @@ def test_failure_with_causes
4547
assert_instance_of Temporalio::Error::ApplicationError, orig_err.cause.cause
4648
assert_equal 'Application error no details', orig_err.cause.cause.message
4749
assert_empty orig_err.cause.cause.details
48-
assert_instance_of RuntimeError, orig_err.cause.cause.cause
49-
assert_equal 'Unset error class', orig_err.cause.cause.cause.message
50+
assert_instance_of CustomError, orig_err.cause.cause.cause
51+
assert_equal 'Custom error class', orig_err.cause.cause.cause.message
5052

5153
# Confirm serialized as expected
5254
failure = Temporalio::Converters::DataConverter.default.to_failure(orig_err)
@@ -63,8 +65,8 @@ def test_failure_with_causes
6365
refute_nil failure.cause.application_failure_info.details
6466
assert_equal 'Application error no details', failure.cause.cause.message
6567
assert_empty failure.cause.cause.application_failure_info.details.payloads
66-
assert_equal 'Unset error class', failure.cause.cause.cause.message
67-
assert_equal 'RuntimeError', failure.cause.cause.cause.application_failure_info.type
68+
assert_equal 'Custom error class', failure.cause.cause.cause.message
69+
assert_equal 'CustomError', failure.cause.cause.cause.application_failure_info.type
6870

6971
# Confirm deserialized as expected
7072
new_err = Temporalio::Converters::DataConverter.default.from_failure(failure) #: untyped
@@ -83,8 +85,8 @@ def test_failure_with_causes
8385
assert_empty new_err.cause.cause.details
8486
assert_instance_of Temporalio::Error::ApplicationError, new_err.cause.cause.cause
8587
assert_equal orig_err.cause.cause.cause.backtrace, new_err.cause.cause.cause.backtrace
86-
assert_equal 'Unset error class', new_err.cause.cause.cause.message
87-
assert_equal 'RuntimeError', new_err.cause.cause.cause.type
88+
assert_equal 'Custom error class', new_err.cause.cause.cause.message
89+
assert_equal 'CustomError', new_err.cause.cause.cause.type
8890
end
8991

9092
# TODO(cretz): Test with encoded

temporalio/test/worker_workflow_test.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -417,12 +417,12 @@ def test_timer
417417
err = assert_raises(Temporalio::Error::WorkflowFailedError) { execute_workflow(TimerWorkflow, :timeout_stdlib) }
418418
assert_instance_of Temporalio::Error::ApplicationError, err.cause
419419
assert_equal 'execution expired', err.cause.message
420-
assert_equal 'Timeout::Error', err.cause.type
420+
assert_equal 'Error', err.cause.type
421421

422422
err = assert_raises(Temporalio::Error::WorkflowFailedError) { execute_workflow(TimerWorkflow, :timeout_workflow) }
423423
assert_instance_of Temporalio::Error::ApplicationError, err.cause
424424
assert_equal 'execution expired', err.cause.message
425-
assert_equal 'Timeout::Error', err.cause.type
425+
assert_equal 'Error', err.cause.type
426426

427427
err = assert_raises(Temporalio::Error::WorkflowFailedError) do
428428
execute_workflow(TimerWorkflow, :timeout_custom_info)
@@ -707,15 +707,15 @@ def test_task_failure
707707
execute_workflow(TaskFailureWorkflow, 1, workflow_failure_exception_types: [TaskFailureError1])
708708
end
709709
assert_equal 'one', err.cause.message
710-
assert_equal 'WorkerWorkflowTest::TaskFailureError1', err.cause.type
710+
assert_equal 'TaskFailureError1', err.cause.type
711711

712712
# Fails workflow when configured on workflow, including inherited
713713
err = assert_raises(Temporalio::Error::WorkflowFailedError) { execute_workflow(TaskFailureWorkflow, 2) }
714714
assert_equal 'two', err.cause.message
715-
assert_equal 'WorkerWorkflowTest::TaskFailureError2', err.cause.type
715+
assert_equal 'TaskFailureError2', err.cause.type
716716
err = assert_raises(Temporalio::Error::WorkflowFailedError) { execute_workflow(TaskFailureWorkflow, 4) }
717717
assert_equal 'four', err.cause.message
718-
assert_equal 'WorkerWorkflowTest::TaskFailureError4', err.cause.type
718+
assert_equal 'TaskFailureError4', err.cause.type
719719

720720
# Also supports stdlib errors
721721
err = assert_raises(Temporalio::Error::WorkflowFailedError) do

0 commit comments

Comments
 (0)