Skip to content

Commit f46dd91

Browse files
committed
unpack RunShellCmdResult instance in RunShellCmdError constructor into individual fields
1 parent 98a5720 commit f46dd91

File tree

2 files changed

+28
-21
lines changed

2 files changed

+28
-21
lines changed

easybuild/tools/run.py

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,15 @@ class RunShellCmdError(BaseException):
8484

8585
def __init__(self, cmd_result, caller_info, *args, **kwargs):
8686
"""Constructor for RunShellCmdError."""
87-
self.cmd_result = cmd_result
88-
self.cmd_name = cmd_result.cmd.split(' ')[0]
87+
self.cmd = cmd_result.cmd
88+
self.cmd_name = os.path.basename(self.cmd.split(' ')[0])
89+
self.exit_code = cmd_result.exit_code
90+
self.work_dir = cmd_result.work_dir
91+
self.output = cmd_result.output
92+
self.out_file = cmd_result.out_file
93+
self.stderr = cmd_result.stderr
94+
self.err_file = cmd_result.err_file
95+
8996
self.caller_info = caller_info
9097

9198
msg = f"Shell command '{self.cmd_name}' failed!"
@@ -102,18 +109,18 @@ def pad_4_spaces(msg):
102109
error_info = [
103110
'',
104111
"ERROR: Shell command failed!",
105-
pad_4_spaces(f"full command -> {self.cmd_result.cmd}"),
106-
pad_4_spaces(f"exit code -> {self.cmd_result.exit_code}"),
107-
pad_4_spaces(f"working directory -> {self.cmd_result.work_dir}"),
112+
pad_4_spaces(f"full command -> {self.cmd}"),
113+
pad_4_spaces(f"exit code -> {self.exit_code}"),
114+
pad_4_spaces(f"working directory -> {self.work_dir}"),
108115
]
109116

110-
if self.cmd_result.stderr is None and self.cmd_result.out_file is not None:
111-
error_info.append(pad_4_spaces(f"output (stdout + stderr) -> {self.cmd_result.out_file}"))
117+
if self.stderr is None and self.out_file is not None:
118+
error_info.append(pad_4_spaces(f"output (stdout + stderr) -> {self.out_file}"))
112119
else:
113-
if self.cmd_result.out_file is not None:
114-
error_info.append(pad_4_spaces(f"output (stdout) -> {self.cmd_result.out_file}"))
115-
if self.cmd_result.err_file is not None:
116-
error_info.append(pad_4_spaces(f"error/warnings (stderr) -> {self.cmd_result.err_file}"))
120+
if self.out_file is not None:
121+
error_info.append(pad_4_spaces(f"output (stdout) -> {self.out_file}"))
122+
if self.err_file is not None:
123+
error_info.append(pad_4_spaces(f"error/warnings (stderr) -> {self.err_file}"))
117124

118125
caller_file_name, caller_line_nr, caller_function_name = self.caller_info
119126
called_from_info = f"'{caller_function_name}' function in {caller_file_name} (line {caller_line_nr})"

test/framework/run.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -333,12 +333,12 @@ def handler(signum, _):
333333
self.assertFalse("This should never be reached, RunShellCmdError should occur!")
334334
except RunShellCmdError as err:
335335
self.assertEqual(str(err), "Shell command 'kill' failed!")
336-
self.assertEqual(err.cmd_result.cmd, "kill -9 $$")
336+
self.assertEqual(err.cmd, "kill -9 $$")
337337
self.assertEqual(err.cmd_name, 'kill')
338-
self.assertEqual(err.cmd_result.exit_code, -9)
339-
self.assertEqual(err.cmd_result.work_dir, work_dir)
340-
self.assertEqual(err.cmd_result.output, '')
341-
self.assertEqual(err.cmd_result.stderr, None)
338+
self.assertEqual(err.exit_code, -9)
339+
self.assertEqual(err.work_dir, work_dir)
340+
self.assertEqual(err.output, '')
341+
self.assertEqual(err.stderr, None)
342342
self.assertTrue(isinstance(err.caller_info, tuple))
343343
self.assertEqual(len(err.caller_info), 3)
344344
self.assertEqual(err.caller_info[0], __file__)
@@ -368,12 +368,12 @@ def handler(signum, _):
368368
self.assertFalse("This should never be reached, RunShellCmdError should occur!")
369369
except RunShellCmdError as err:
370370
self.assertEqual(str(err), "Shell command 'kill' failed!")
371-
self.assertEqual(err.cmd_result.cmd, "kill -9 $$")
371+
self.assertEqual(err.cmd, "kill -9 $$")
372372
self.assertEqual(err.cmd_name, 'kill')
373-
self.assertEqual(err.cmd_result.exit_code, -9)
374-
self.assertEqual(err.cmd_result.work_dir, work_dir)
375-
self.assertEqual(err.cmd_result.output, '')
376-
self.assertEqual(err.cmd_result.stderr, '')
373+
self.assertEqual(err.exit_code, -9)
374+
self.assertEqual(err.work_dir, work_dir)
375+
self.assertEqual(err.output, '')
376+
self.assertEqual(err.stderr, '')
377377
self.assertTrue(isinstance(err.caller_info, tuple))
378378
self.assertEqual(len(err.caller_info), 3)
379379
self.assertEqual(err.caller_info[0], __file__)

0 commit comments

Comments
 (0)