def test_validation(self): """ test other validations beside mandatory variables """ self.contents = '\n'.join([ 'name = "pi"', 'version = "3.14"', 'homepage = "http://google.com"', 'description = "test easyconfig"', 'toolchain = {"name":"dummy", "version": "dummy"}', 'stop = "notvalid"', ]) self.prep() eb = EasyConfig(self.eb_file, validate=False, valid_stops=self.all_stops) self.assertErrorRegex(EasyBuildError, r"\w* provided '\w*' is not valid", eb.validate) eb['stop'] = 'patch' # this should now not crash eb.validate() eb['osdependencies'] = ['non-existent-dep'] self.assertErrorRegex(EasyBuildError, "OS dependencies were not found", eb.validate) # dummy toolchain, installversion == version self.assertEqual(eb.get_installversion(), "3.14") os.chmod(self.eb_file, 0000) self.assertErrorRegex(EasyBuildError, "Unexpected IOError", EasyConfig, self.eb_file) os.chmod(self.eb_file, 0755) self.contents += "\nsyntax_error'" self.prep() self.assertErrorRegex(EasyBuildError, "SyntaxError", EasyConfig, self.eb_file)
def test_templating(self): """ test easyconfig templating """ inp = { 'name':'PI', 'version':'3.14', 'namelower':'pi', 'cmd': 'tar xfvz %s', } # don't use any escaping insanity here, since it is templated itself self.contents = '\n'.join([ 'name = "%(name)s"', 'version = "%(version)s"', 'homepage = "http://google.com"', 'description = "test easyconfig %%(name)s"', 'toolchain = {"name":"dummy", "version": "dummy2"}', 'source_urls = [(GOOGLECODE_SOURCE)]', 'sources = [SOURCE_TAR_GZ, (SOURCELOWER_TAR_GZ, "%(cmd)s")]', 'sanity_check_paths = {"files": [], "dirs": ["libfoo.%%s" %% SHLIB_EXT]}', ]) % inp self.prep() eb = EasyConfig(self.eb_file, validate=False, valid_stops=self.all_stops) eb.validate() eb.generate_template_values() self.assertEqual(eb['description'], "test easyconfig PI") const_dict = dict([(x[0], x[1]) for x in easyconfig.templates.TEMPLATE_CONSTANTS]) self.assertEqual(eb['sources'][0], const_dict['SOURCE_TAR_GZ'] % inp) self.assertEqual(eb['sources'][1][0], const_dict['SOURCELOWER_TAR_GZ'] % inp) self.assertEqual(eb['sources'][1][1], 'tar xfvz %s') self.assertEqual(eb['source_urls'][0], const_dict['GOOGLECODE_SOURCE'] % inp) self.assertEqual(eb['sanity_check_paths']['dirs'][0], 'libfoo.%s' % get_shared_lib_ext()) # test the escaping insanity here (ie all the crap we allow in easyconfigs) eb['description'] = "test easyconfig % %% %s% %%% %(name)s %%(name)s %%%(name)s %%%%(name)s" self.assertEqual(eb['description'], "test easyconfig % %% %s% %%% PI %(name)s %PI %%(name)s")
def test_validation(self): """ test other validations beside mandatory parameters """ self.contents = '\n'.join([ 'easyblock = "ConfigureMake"', 'name = "pi"', 'version = "3.14"', 'homepage = "http://example.com"', 'description = "test easyconfig"', 'toolchain = {"name":"dummy", "version": "dummy"}', 'stop = "notvalid"', ]) self.prep() ec = EasyConfig(self.eb_file, validate=False) self.assertErrorRegex(EasyBuildError, r"\w* provided '\w*' is not valid", ec.validate) ec['stop'] = 'patch' # this should now not crash ec.validate() ec['osdependencies'] = ['non-existent-dep'] self.assertErrorRegex(EasyBuildError, "OS dependencies were not found", ec.validate) # dummy toolchain, installversion == version self.assertEqual(det_full_ec_version(ec), "3.14") os.chmod(self.eb_file, 0000) self.assertErrorRegex(EasyBuildError, "Permission denied", EasyConfig, self.eb_file) os.chmod(self.eb_file, 0755) self.contents += "\nsyntax_error'" self.prep() self.assertErrorRegex(EasyBuildError, "SyntaxError", EasyConfig, self.eb_file)
def runTest(self): """ test easyconfig templating """ eb = EasyConfig(self.eb_file, validate=False, valid_stops=self.all_stops) eb.validate() eb.generate_template_values() self.assertEqual(eb['description'], "test easyconfig PI") const_dict = dict([(x[0], x[1]) for x in easyconfig.templates.TEMPLATE_CONSTANTS]) self.assertEqual(eb['sources'][0], const_dict['SOURCE_TAR_GZ'] % self.inp) self.assertEqual(eb['sources'][1][0], const_dict['SOURCELOWER_TAR_GZ'] % self.inp) self.assertEqual(eb['sources'][1][1], 'tar xfvz %s') self.assertEqual(eb['source_urls'][0], const_dict['GOOGLECODE_SOURCE'] % self.inp) # test the escaping insanity here (ie all the crap we allow in easyconfigs) eb['description'] = "test easyconfig % %% %s% %%% %(name)s %%(name)s %%%(name)s %%%%(name)s" self.assertEqual(eb['description'], "test easyconfig % %% %s% %%% PI %(name)s %PI %%(name)s")
def runTest(self): """ test other validations beside mandatory variables """ eb = EasyConfig(self.eb_file, validate=False, valid_stops=self.all_stops) self.assertErrorRegex(EasyBuildError, r"\w* provided '\w*' is not valid", eb.validate) eb['stop'] = 'patch' # this should now not crash eb.validate() eb['osdependencies'] = ['non-existent-dep'] self.assertErrorRegex(EasyBuildError, "OS dependencies were not found", eb.validate) # dummy toolchain, installversion == version self.assertEqual(eb.get_installversion(), "3.14") os.chmod(self.eb_file, 0000) self.assertErrorRegex(EasyBuildError, "Unexpected IOError", EasyConfig, self.eb_file) os.chmod(self.eb_file, 0755) self.contents += "\nsyntax_error'" self.setUp() self.assertErrorRegex(EasyBuildError, "SyntaxError", EasyConfig, self.eb_file)
def test_validation(self): """ test other validations beside mandatory variables """ self.contents = '\n'.join([ 'name = "pi"', 'version = "3.14"', 'homepage = "http://google.com"', 'description = "test easyconfig"', 'toolchain = {"name":"dummy", "version": "dummy"}', 'stop = "notvalid"', ]) self.prep() ec = EasyConfig(self.eb_file, validate=False, valid_stops=self.all_stops) self.assertErrorRegex(EasyBuildError, r"\w* provided '\w*' is not valid", ec.validate) ec['stop'] = 'patch' # this should now not crash ec.validate() ec['osdependencies'] = ['non-existent-dep'] self.assertErrorRegex(EasyBuildError, "OS dependencies were not found", ec.validate) # dummy toolchain, installversion == version self.assertEqual(det_full_ec_version(ec), "3.14") os.chmod(self.eb_file, 0000) self.assertErrorRegex(EasyBuildError, "Permission denied", EasyConfig, self.eb_file) os.chmod(self.eb_file, 0755) self.contents += "\nsyntax_error'" self.prep() self.assertErrorRegex(EasyBuildError, "SyntaxError", EasyConfig, self.eb_file)
def test_templating(self): """ test easyconfig templating """ inp = { 'name': 'PI', 'version': '3.14', 'namelower': 'pi', 'cmd': 'tar xfvz %s', } # don't use any escaping insanity here, since it is templated itself self.contents = '\n'.join([ 'name = "%(name)s"', 'version = "%(version)s"', 'homepage = "http://example.com/%%(nameletter)s/%%(nameletterlower)s"', 'description = "test easyconfig %%(name)s"', 'toolchain = {"name":"dummy", "version": "dummy2"}', 'source_urls = [(GOOGLECODE_SOURCE)]', 'sources = [SOURCE_TAR_GZ, (SOURCELOWER_TAR_GZ, "%(cmd)s")]', 'sanity_check_paths = {"files": [], "dirs": ["libfoo.%%s" %% SHLIB_EXT]}', ]) % inp self.prep() eb = EasyConfig(self.eb_file, validate=False) eb.validate() eb.generate_template_values() self.assertEqual(eb['description'], "test easyconfig PI") const_dict = dict([(x[0], x[1]) for x in easyconfig.templates.TEMPLATE_CONSTANTS]) self.assertEqual(eb['sources'][0], const_dict['SOURCE_TAR_GZ'] % inp) self.assertEqual(eb['sources'][1][0], const_dict['SOURCELOWER_TAR_GZ'] % inp) self.assertEqual(eb['sources'][1][1], 'tar xfvz %s') self.assertEqual(eb['source_urls'][0], const_dict['GOOGLECODE_SOURCE'] % inp) self.assertEqual(eb['sanity_check_paths']['dirs'][0], 'libfoo.%s' % get_shared_lib_ext()) self.assertEqual(eb['homepage'], "http://example.com/P/p") # test the escaping insanity here (ie all the crap we allow in easyconfigs) eb['description'] = "test easyconfig % %% %s% %%% %(name)s %%(name)s %%%(name)s %%%%(name)s" self.assertEqual(eb['description'], "test easyconfig % %% %s% %%% PI %(name)s %PI %%(name)s")