Skip to content

Commit 57f3d3b

Browse files
dyackzantylerjw
andauthored
Add exception type to error output (#753)
* Add exception type to error output Knowing the type of exception that occurred provides more context and makes launch exceptions easier to track down. * Add invalid_launch_file_error test Signed-off-by: David Yackzan <[email protected]> Co-authored-by: Tyler Weaver <[email protected]>
1 parent 2dc7f93 commit 57f3d3b

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

launch/launch/invalid_launch_file_error.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def __init__(self, extension='', *, likely_errors=None):
3232
).format('multiple exceptions' if len(self._likely_errors) > 1 else 'exception',
3333
self._extension)
3434
for error in self._likely_errors:
35-
self._error_message += '\n - {}'.format(error)
35+
self._error_message += '\n - {}: {}'.format(type(error).__name__, error)
3636

3737
self.__cause__ = self._likely_errors[0]
3838

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Copyright 2024 Open Source Robotics Foundation, Inc.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
from launch.invalid_launch_file_error import InvalidLaunchFileError
16+
17+
18+
def test_invalid_launch_file_error():
19+
try:
20+
exception = KeyError('Test')
21+
raise InvalidLaunchFileError(extension='.py', likely_errors=[exception])
22+
except InvalidLaunchFileError as ex:
23+
assert 'KeyError' in ex.__str__()
24+
25+
26+
def test_invalid_launch_file_errors():
27+
try:
28+
exceptions = [ValueError('Test1'), AttributeError('Test2'), BufferError('Test3')]
29+
raise InvalidLaunchFileError(extension='.py', likely_errors=exceptions)
30+
except InvalidLaunchFileError as ex:
31+
assert 'ValueError' in ex.__str__()
32+
assert 'AttributeError' in ex.__str__()
33+
assert 'BufferError' in ex.__str__()

0 commit comments

Comments
 (0)