@@ -3544,6 +3544,33 @@ def test_parse_external_modules_metadata(self):
35443544 err_msg = "Different length for lists of names/versions in metadata for external module"
35453545 self .assertErrorRegex (EasyBuildError , err_msg , parse_external_modules_metadata , [testcfg ])
35463546
3547+ # if path to non-existing file is used, an error is reported
3548+ doesnotexist = os .path .join (self .test_prefix , 'doesnotexist' )
3549+ error_pattern = "Specified path for file with external modules metadata does not exist"
3550+ self .assertErrorRegex (EasyBuildError , error_pattern , parse_external_modules_metadata , [doesnotexist ])
3551+
3552+ # glob pattern can be used to specify file locations to parse_external_modules_metadata
3553+ cfg1 = os .path .join (self .test_prefix , 'cfg_one.ini' )
3554+ write_file (cfg1 , '\n ' .join (['[one/1.0]' , 'name = one' , 'version = 1.0' ]))
3555+ cfg2 = os .path .join (self .test_prefix , 'cfg_two.ini' )
3556+ write_file (cfg2 , '\n ' .join ([
3557+ '[two/2.0]' , 'name = two' , 'version = 2.0' ,
3558+ '[two/2.1]' , 'name = two' , 'version = 2.1' ,
3559+ ]))
3560+ cfg3 = os .path .join (self .test_prefix , 'cfg3.ini' )
3561+ write_file (cfg3 , '\n ' .join (['[three/3.0]' , 'name = three' , 'version = 3.0' ]))
3562+ cfg4 = os .path .join (self .test_prefix , 'cfg_more.ini' )
3563+ write_file (cfg4 , '\n ' .join (['[one/1.2.3]' , 'name = one' , 'version = 1.2.3' , 'prefix = /one/1.2.3/' ]))
3564+
3565+ metadata = parse_external_modules_metadata ([os .path .join (self .test_prefix , 'cfg*.ini' )])
3566+
3567+ self .assertEqual (sorted (metadata .keys ()), ['one/1.0' , 'one/1.2.3' , 'three/3.0' , 'two/2.0' , 'two/2.1' ])
3568+ self .assertEqual (metadata ['one/1.0' ], {'name' : ['one' ], 'version' : ['1.0' ]})
3569+ self .assertEqual (metadata ['one/1.2.3' ], {'name' : ['one' ], 'version' : ['1.2.3' ], 'prefix' : '/one/1.2.3/' })
3570+ self .assertEqual (metadata ['two/2.0' ], {'name' : ['two' ], 'version' : ['2.0' ]})
3571+ self .assertEqual (metadata ['two/2.1' ], {'name' : ['two' ], 'version' : ['2.1' ]})
3572+ self .assertEqual (metadata ['three/3.0' ], {'name' : ['three' ], 'version' : ['3.0' ]})
3573+
35473574 def test_zip_logs (self ):
35483575 """Test use of --zip-logs"""
35493576
0 commit comments