@@ -1746,7 +1746,7 @@ def test_fetch_patches(self):
17461746 self .assertEqual (eb .patches [1 ]['level' ], 4 )
17471747 self .assertEqual (eb .patches [2 ]['name' ], toy_patch )
17481748 self .assertEqual (eb .patches [2 ]['sourcepath' ], 'foobar' )
1749- self .assertEqual (eb .patches [3 ]['name' ], 'toy-0.0.tar.gz' ),
1749+ self .assertEqual (eb .patches [3 ]['name' ], 'toy-0.0.tar.gz' )
17501750 self .assertEqual (eb .patches [3 ]['copy' ], 'some/path' )
17511751 self .assertEqual (eb .patches [4 ]['name' ], toy_patch )
17521752 self .assertEqual (eb .patches [4 ]['level' ], 0 )
@@ -2280,18 +2280,25 @@ def test_extension_set_start_dir(self):
22802280 cwd = os .getcwd ()
22812281 self .assertExists (cwd )
22822282
2283- def check_ext_start_dir (expected_start_dir , unpack_src = True ):
2283+ def check_ext_start_dir (expected_start_dir , unpack_src = True , parent_startdir = None ):
22842284 """Check start dir."""
22852285 # make sure we're in an existing directory at the start
22862286 change_dir (cwd )
2287+
22872288 eb = EasyBlock (ec ['ec' ])
2289+ if not os .path .exists (eb .builddir ):
2290+ eb .make_builddir () # Required to exist for samefile
2291+ eb .cfg ['start_dir' ] = parent_startdir
2292+
22882293 eb .extensions_step (fetch = True , install = False )
22892294 # extract sources of the extension
22902295 ext = eb .ext_instances [- 1 ]
22912296 ext .install_extension (unpack_src = unpack_src )
22922297
22932298 if expected_start_dir is None :
22942299 self .assertIsNone (ext .start_dir )
2300+ # Without a start dir we don't change the CWD
2301+ self .assertEqual (os .getcwd (), cwd )
22952302 else :
22962303 self .assertTrue (os .path .isabs (ext .start_dir ))
22972304 if ext .start_dir != os .sep :
@@ -2301,14 +2308,8 @@ def check_ext_start_dir(expected_start_dir, unpack_src=True):
23012308 else :
23022309 abs_expected_start_dir = os .path .join (eb .builddir , expected_start_dir )
23032310 self .assertEqual (ext .start_dir , abs_expected_start_dir )
2304- if not os .path .exists (eb .builddir ):
2305- eb .make_builddir () # Required to exist for samefile
23062311 self .assertTrue (os .path .samefile (ext .start_dir , abs_expected_start_dir ))
2307- if unpack_src :
23082312 self .assertTrue (os .path .samefile (os .getcwd (), abs_expected_start_dir ))
2309- else :
2310- # When not unpacking we don't change the CWD
2311- self .assertEqual (os .getcwd (), cwd )
23122313 remove_dir (eb .builddir )
23132314
23142315 ec ['ec' ]['exts_defaultclass' ] = 'DummyExtension'
@@ -2337,11 +2338,8 @@ def check_ext_start_dir(expected_start_dir, unpack_src=True):
23372338 'start_dir' : 'nonexistingdir' }),
23382339 ]
23392340 with self .mocked_stdout_stderr ():
2340- err_pattern = "Failed to change from .* barbar/barbar-0.0 to nonexistingdir .*"
2341+ err_pattern = r"Provided start dir \(nonexistingdir\) for extension barbar does not exist: .*"
23412342 self .assertErrorRegex (EasyBuildError , err_pattern , check_ext_start_dir , 'whatever' )
2342- stderr = self .get_stderr ()
2343- warning_pattern = "WARNING: Provided start dir (nonexistingdir) for extension barbar does not exist"
2344- self .assertIn (warning_pattern , stderr )
23452343
23462344 # No error when using relative path in non-extracted source for some reason
23472345 ec ['ec' ]['exts_list' ] = [
@@ -2371,6 +2369,15 @@ def check_ext_start_dir(expected_start_dir, unpack_src=True):
23712369 check_ext_start_dir (os .sep , unpack_src = False )
23722370 self .assertFalse (self .get_stderr ())
23732371
2372+ # Go to ECs start dir if nosource is used
2373+ ec ['ec' ]['exts_list' ] = [
2374+ ('barbar' , '0.0' , {
2375+ 'nosource' : True }),
2376+ ]
2377+ with self .mocked_stdout_stderr ():
2378+ check_ext_start_dir (self .test_prefix , parent_startdir = self .test_prefix )
2379+ self .assertFalse (self .get_stderr ())
2380+
23742381 def test_prepare_step (self ):
23752382 """Test prepare step (setting up build environment)."""
23762383 test_easyconfigs = os .path .join (os .path .abspath (os .path .dirname (__file__ )), 'easyconfigs' , 'test_ecs' )
0 commit comments