@@ -148,13 +148,18 @@ def test_mandatory(self):
148148 ])
149149 self .prep ()
150150
151- eb = EasyConfig (self .eb_file )
151+ ec = EasyConfig (self .eb_file )
152152
153- self .assertEqual (eb ['name' ], "pi" )
154- self .assertEqual (eb ['version' ], "3.14" )
155- self .assertEqual (eb ['homepage' ], "http://example.com" )
156- self .assertEqual (eb ['toolchain' ], {"name" : "system" , "version" : "system" })
157- self .assertEqual (eb ['description' ], "test easyconfig" )
153+ self .assertEqual (ec ['name' ], "pi" )
154+ self .assertEqual (ec ['version' ], "3.14" )
155+ self .assertEqual (ec ['homepage' ], "http://example.com" )
156+ self .assertEqual (ec ['toolchain' ], {"name" : "system" , "version" : "system" })
157+ self .assertEqual (ec ['description' ], "test easyconfig" )
158+
159+ for key in ['name' , 'version' , 'homepage' , 'toolchain' , 'description' ]:
160+ self .assertTrue (ec .is_mandatory_param (key ))
161+ for key in ['buildopts' , 'dependencies' , 'easyblock' , 'sources' ]:
162+ self .assertFalse (ec .is_mandatory_param (key ))
158163
159164 def test_validation (self ):
160165 """ test other validations beside mandatory parameters """
@@ -318,24 +323,26 @@ def test_extra_options(self):
318323
319324 extra_vars = {'custom_key' : ['default' , "This is a default key" , easyconfig .CUSTOM ]}
320325
321- eb = EasyConfig (self .eb_file , extra_options = extra_vars )
322- self .assertEqual (eb ['custom_key' ], 'default' )
326+ ec = EasyConfig (self .eb_file , extra_options = extra_vars )
327+ self .assertEqual (ec ['custom_key' ], 'default' )
328+
329+ self .assertFalse (ec .is_mandatory_param ('custom_key' ))
323330
324- eb ['custom_key' ] = "not so default"
325- self .assertEqual (eb ['custom_key' ], 'not so default' )
331+ ec ['custom_key' ] = "not so default"
332+ self .assertEqual (ec ['custom_key' ], 'not so default' )
326333
327334 self .contents += "\n custom_key = 'test'"
328335
329336 self .prep ()
330337
331- eb = EasyConfig (self .eb_file , extra_options = extra_vars )
332- self .assertEqual (eb ['custom_key' ], 'test' )
338+ ec = EasyConfig (self .eb_file , extra_options = extra_vars )
339+ self .assertEqual (ec ['custom_key' ], 'test' )
333340
334- eb ['custom_key' ] = "not so default"
335- self .assertEqual (eb ['custom_key' ], 'not so default' )
341+ ec ['custom_key' ] = "not so default"
342+ self .assertEqual (ec ['custom_key' ], 'not so default' )
336343
337344 # test if extra toolchain options are being passed
338- self .assertEqual (eb .toolchain .options ['static' ], True )
345+ self .assertEqual (ec .toolchain .options ['static' ], True )
339346
340347 # test extra mandatory parameters
341348 extra_vars .update ({'mandatory_key' : ['default' , 'another mandatory key' , easyconfig .MANDATORY ]})
@@ -345,9 +352,23 @@ def test_extra_options(self):
345352 self .contents += '\n mandatory_key = "value"'
346353 self .prep ()
347354
348- eb = EasyConfig (self .eb_file , extra_options = extra_vars )
355+ ec = EasyConfig (self .eb_file , extra_options = extra_vars )
356+
357+ self .assertEqual (ec ['mandatory_key' ], 'value' )
358+ self .assertTrue (ec .is_mandatory_param ('mandatory_key' ))
359+
360+ # check whether mandatory key is retained in dumped easyconfig file, even if it's set to the default value
361+ ec ['mandatory_key' ] = 'default'
362+ test_ecfile = os .path .join (self .test_prefix , 'test_dump_mandatory.eb' )
363+ ec .dump (test_ecfile )
364+
365+ regex = re .compile ("^mandatory_key = 'default'$" , re .M )
366+ ectxt = read_file (test_ecfile )
367+ self .assertTrue (regex .search (ectxt ), "Pattern '%s' found in: %s" % (regex .pattern , ectxt ))
349368
350- self .assertEqual (eb ['mandatory_key' ], 'value' )
369+ # parsing again should work fine (if mandatory easyconfig parameters are indeed retained)
370+ ec = EasyConfig (test_ecfile , extra_options = extra_vars )
371+ self .assertEqual (ec ['mandatory_key' ], 'default' )
351372
352373 def test_exts_list (self ):
353374 """Test handling of list of extensions."""
0 commit comments