def _det_module_name_with(self, mns_method, ec, force_visible=False): """ Determine module name using specified module naming scheme method, based on supplied easyconfig. Returns a string representing the module name, e.g. 'GCC/4.6.3', 'Python/2.7.5-ictce-4.1.13', with the following requirements: - module name is specified as a relative path - string representing module name has length > 0 - module name only contains printable characters (string.printable, except carriage-control chars) """ """ Returns a string representing the module name, e.g. 'GCC/4.6.3', 'Python/2.7.5-ictce-4.1.13', with the following requirements: - module name is specified as a relative path - string representing module name has length > 0 - module name only contains printable characters (string.printable, except carriage-control chars) """ mod_name = mns_method(self.check_ec_type(ec)) if not is_valid_module_name(mod_name): self.log.error("%s is not a valid module name" % str(mod_name)) # check whether module name should be hidden or not # ec may be either a dict or an EasyConfig instance, 'force_visible' argument overrules if (ec.get('hidden', False) or getattr(ec, 'hidden', False)) and not force_visible: mod_name = det_hidden_modname(mod_name) return mod_name
def det_short_module_name(self, ec): """Determine module name according to module naming scheme.""" self.log.debug("Determining module name for %s" % ec) mod_name = self.mns.det_short_module_name(self.check_ec_type(ec)) if not is_valid_module_name(mod_name): self.log.error("%s is not a valid module name" % str(mod_name)) else: self.log.debug("Obtained valid module name %s" % mod_name) return mod_name
def det_full_module_name(self, ec): """ Determine full module name by selected module naming scheme, based on supplied easyconfig. Returns a string representing the module name, e.g. 'GCC/4.6.3', 'Python/2.7.5-ictce-4.1.13', with the following requirements: - module name is specified as a relative path - string representing module name has length > 0 - module name only contains printable characters (string.printable, except carriage-control chars) """ self.log.debug("Determining full module name for %s" % ec) mod_name = self.mns.det_full_module_name(self.check_ec_type(ec)) if not is_valid_module_name(mod_name): self.log.error("%s is not a valid full module name" % str(mod_name)) else: self.log.debug("Obtained valid full module name %s" % mod_name) return mod_name
def test_mod_name_validation(self): """Test module naming validation.""" # module name must be a string self.assertTrue(not is_valid_module_name(('foo', 'bar'))) self.assertTrue(not is_valid_module_name(['foo', 'bar'])) self.assertTrue(not is_valid_module_name(123)) # module name must be relative self.assertTrue(not is_valid_module_name('/foo/bar')) # module name must only contain valid characters self.assertTrue(not is_valid_module_name('foo\x0bbar')) self.assertTrue(not is_valid_module_name('foo\x0cbar')) self.assertTrue(not is_valid_module_name('foo\rbar')) self.assertTrue(not is_valid_module_name('foo\0bar')) # valid module name must be accepted self.assertTrue(is_valid_module_name('gzip/goolf-1.4.10-suffix')) self.assertTrue(is_valid_module_name('GCC/4.7.2')) self.assertTrue(is_valid_module_name('foo-bar/1.2.3')) self.assertTrue(is_valid_module_name('ictce'))