@@ -79,6 +79,9 @@ def setUp(self):
7979 '' ,
8080 'def fail_hook(err):' ,
8181 ' print("EasyBuild FAIL: %s" % err)' ,
82+ '' ,
83+ 'def crash_hook(err):' ,
84+ ' print("EasyBuild CRASHED, oh no! => %s" % err)' ,
8285 ])
8386 write_file (self .test_hooks_pymod , test_hooks_pymod_txt )
8487
@@ -97,8 +100,9 @@ def test_load_hooks(self):
97100
98101 hooks = load_hooks (self .test_hooks_pymod )
99102
100- self .assertEqual (len (hooks ), 8 )
103+ self .assertEqual (len (hooks ), 9 )
101104 expected = [
105+ 'crash_hook' ,
102106 'fail_hook' ,
103107 'parse_hook' ,
104108 'post_configure_hook' ,
@@ -140,6 +144,7 @@ def test_find_hook(self):
140144 pre_single_extension_hook = [hooks [k ] for k in hooks if k == 'pre_single_extension_hook' ][0 ]
141145 start_hook = [hooks [k ] for k in hooks if k == 'start_hook' ][0 ]
142146 pre_run_shell_cmd_hook = [hooks [k ] for k in hooks if k == 'pre_run_shell_cmd_hook' ][0 ]
147+ crash_hook = [hooks [k ] for k in hooks if k == 'crash_hook' ][0 ]
143148 fail_hook = [hooks [k ] for k in hooks if k == 'fail_hook' ][0 ]
144149 pre_build_and_install_loop_hook = [hooks [k ] for k in hooks if k == 'pre_build_and_install_loop_hook' ][0 ]
145150
@@ -175,6 +180,10 @@ def test_find_hook(self):
175180 self .assertEqual (find_hook ('fail' , hooks , pre_step_hook = True ), None )
176181 self .assertEqual (find_hook ('fail' , hooks , post_step_hook = True ), None )
177182
183+ self .assertEqual (find_hook ('crash' , hooks ), crash_hook )
184+ self .assertEqual (find_hook ('crash' , hooks , pre_step_hook = True ), None )
185+ self .assertEqual (find_hook ('crash' , hooks , post_step_hook = True ), None )
186+
178187 hook_name = 'build_and_install_loop'
179188 self .assertEqual (find_hook (hook_name , hooks ), None )
180189 self .assertEqual (find_hook (hook_name , hooks , pre_step_hook = True ), pre_build_and_install_loop_hook )
@@ -209,6 +218,7 @@ def run_hooks():
209218 run_hook ('single_extension' , hooks , post_step_hook = True , args = [None ])
210219 run_hook ('extensions' , hooks , post_step_hook = True , args = [None ])
211220 run_hook ('fail' , hooks , args = [EasyBuildError ('oops' )])
221+ run_hook ('crash' , hooks , args = [RuntimeError ('boom!' )])
212222 stdout = self .get_stdout ()
213223 stderr = self .get_stderr ()
214224 self .mock_stdout (False )
@@ -244,6 +254,8 @@ def run_hooks():
244254 "this is run before installing an extension" ,
245255 "== Running fail hook..." ,
246256 "EasyBuild FAIL: 'oops'" ,
257+ "== Running crash hook..." ,
258+ "EasyBuild CRASHED, oh no! => boom!" ,
247259 ]
248260 expected_stdout = '\n ' .join (expected_stdout_lines )
249261
0 commit comments