@@ -61,6 +61,9 @@ def setUp(self):
6161 '' ,
6262 'def pre_install_hook(self):' ,
6363 ' print("this is run before install step")' ,
64+ '' ,
65+ 'def pre_extension_hook(ext):' ,
66+ ' print("this is run before installing an extension")' ,
6467 ])
6568 write_file (self .test_hooks_pymod , test_hooks_pymod_txt )
6669
@@ -71,8 +74,9 @@ def test_load_hooks(self):
7174
7275 hooks = load_hooks (self .test_hooks_pymod )
7376
74- self .assertEqual (len (hooks ), 4 )
75- self .assertEqual (sorted (hooks .keys ()), ['parse_hook' , 'post_configure_hook' , 'pre_install_hook' , 'start_hook' ])
77+ self .assertEqual (len (hooks ), 5 )
78+ expected = ['parse_hook' , 'post_configure_hook' , 'pre_extension_hook' , 'pre_install_hook' , 'start_hook' ]
79+ self .assertEqual (sorted (hooks .keys ()), expected )
7680 self .assertTrue (all (callable (h ) for h in hooks .values ()))
7781
7882 # test caching of hooks
@@ -101,6 +105,7 @@ def test_find_hook(self):
101105
102106 post_configure_hook = [hooks [k ] for k in hooks if k == 'post_configure_hook' ][0 ]
103107 pre_install_hook = [hooks [k ] for k in hooks if k == 'pre_install_hook' ][0 ]
108+ pre_extension_hook = [hooks [k ] for k in hooks if k == 'pre_extension_hook' ][0 ]
104109 start_hook = [hooks [k ] for k in hooks if k == 'start_hook' ][0 ]
105110
106111 self .assertEqual (find_hook ('configure' , hooks ), None )
@@ -111,6 +116,14 @@ def test_find_hook(self):
111116 self .assertEqual (find_hook ('install' , hooks , pre_step_hook = True ), pre_install_hook )
112117 self .assertEqual (find_hook ('install' , hooks , post_step_hook = True ), None )
113118
119+ self .assertEqual (find_hook ('extension' , hooks ), None )
120+ self .assertEqual (find_hook ('extension' , hooks , pre_step_hook = True ), pre_extension_hook )
121+ self .assertEqual (find_hook ('extension' , hooks , post_step_hook = True ), None )
122+
123+ self .assertEqual (find_hook ('extensions' , hooks ), None )
124+ self .assertEqual (find_hook ('extensions' , hooks , pre_step_hook = True ), None )
125+ self .assertEqual (find_hook ('extensions' , hooks , post_step_hook = True ), None )
126+
114127 self .assertEqual (find_hook ('build' , hooks ), None )
115128 self .assertEqual (find_hook ('build' , hooks , pre_step_hook = True ), None )
116129 self .assertEqual (find_hook ('build' , hooks , post_step_hook = True ), None )
@@ -136,6 +149,11 @@ def test_run_hook(self):
136149 run_hook ('build' , hooks , post_step_hook = True , args = [None ])
137150 run_hook ('install' , hooks , pre_step_hook = True , args = [None ])
138151 run_hook ('install' , hooks , post_step_hook = True , args = [None ])
152+ run_hook ('extensions' , hooks , pre_step_hook = True , args = [None ])
153+ for x in range (3 ):
154+ run_hook ('extension' , hooks , pre_step_hook = True , args = [None ])
155+ run_hook ('extension' , hooks , post_step_hook = True , args = [None ])
156+ run_hook ('extensions' , hooks , post_step_hook = True , args = [None ])
139157 stdout = self .get_stdout ()
140158 stderr = self .get_stderr ()
141159 self .mock_stdout (False )
@@ -151,6 +169,12 @@ def test_run_hook(self):
151169 "running foo helper method" ,
152170 "== Running pre-install hook..." ,
153171 "this is run before install step" ,
172+ "== Running pre-extension hook..." ,
173+ "this is run before installing an extension" ,
174+ "== Running pre-extension hook..." ,
175+ "this is run before installing an extension" ,
176+ "== Running pre-extension hook..." ,
177+ "this is run before installing an extension" ,
154178 ])
155179
156180 self .assertEqual (stdout .strip (), expected_stdout )
0 commit comments