def test_resolves_current_ns(self): resolver = ns_resolver.NamespaceResolver({'=': 'com.example.murano'}) short_name, full_name = 'Resource', 'com.example.murano.Resource' resolved_name = resolver.resolve_name(short_name) self.assertEqual(full_name, resolved_name)
def test_cuts_empty_prefix(self): resolver = ns_resolver.NamespaceResolver({'=': 'com.example.murano'}) # name without prefix delimiter name = 'some.arbitrary.name' resolved_name = resolver.resolve_name(':' + name) self.assertEqual(name, resolved_name)
def test_resolves_specified_ns_prefix(self): ns = {'sys': 'com.example.murano.system'} resolver = ns_resolver.NamespaceResolver(ns) short_name, full_name = 'sys:File', 'com.example.murano.system.File' resolved_name = resolver.resolve_name(short_name) self.assertEqual(full_name, resolved_name)
def _is_test_suite(class_definition): namespaces = class_definition.get('Namespaces', {}) extends = class_definition.get('Extends') ns_resolver = namespace_resolver.NamespaceResolver(namespaces) parent_name = ns_resolver.resolve_name(extends) return parent_name == 'io.murano.language.tests.TestCase'
def get_class(self, name, create_missing=False): if name in self._loaded_types: return self._loaded_types[name] try: data = self.load_definition(name) package = self._get_package(name) except (exceptions.NoPackageForClassFound, exceptions.NoClassFound): if create_missing: data = {'Name': name} package = None else: raise namespaces = data.get('Namespaces', {}) ns_resolver = namespace_resolver.NamespaceResolver(namespaces) class_parents = data.get('Extends') if class_parents: if not isinstance(class_parents, types.ListType): class_parents = [class_parents] for i, parent_name in enumerate(class_parents): full_name = ns_resolver.resolve_name(parent_name) class_parents[i] = self.get_class(full_name) type_obj = murano_class.MuranoClass(self, ns_resolver, name, package, class_parents) properties = data.get('Properties', {}) for property_name, property_spec in properties.iteritems(): spec = typespec.PropertySpec(property_spec, ns_resolver) type_obj.add_property(property_name, spec) for method_name, payload in data.get('Workflow', {}).iteritems(): type_obj.add_method(method_name, payload) self._loaded_types[name] = type_obj return type_obj
def test_resolves_w_empty_namespaces(self): resolver = ns_resolver.NamespaceResolver({}) resolved_name = resolver.resolve_name('Resource') self.assertEqual('Resource', resolved_name)
def test_resolves_explicit_base_w_empty_namespaces(self): resolver = ns_resolver.NamespaceResolver({}) resolved_name = resolver.resolve_name('File', 'com.base') self.assertEqual('com.base.File', resolved_name)
def test_resolves_explicit_base(self): resolver = ns_resolver.NamespaceResolver({'=': 'com.example.murano'}) resolved_name = resolver.resolve_name('Resource', relative='com.base') self.assertEqual('com.base.Resource', resolved_name)
def test_fails_w_excessive_prefix(self): ns = {'sys': 'com.example.murano.system'} resolver = ns_resolver.NamespaceResolver(ns) invalid_name = 'sys:excessive_ns:muranoResource' self.assertRaises(NameError, resolver.resolve_name, invalid_name)
def test_fails_w_prefix_wo_name(self): resolver = ns_resolver.NamespaceResolver({'=': 'com.example.murano'}) name = 'sys:' self.assertRaises(NameError, resolver.resolve_name, name)
def test_fails_w_unknown_prefix(self): resolver = ns_resolver.NamespaceResolver({'=': 'com.example.murano'}) name = 'unknown_prefix:example.murano' self.assertRaises(KeyError, resolver.resolve_name, name)
def test_fails_w_empty_name(self): resolver = ns_resolver.NamespaceResolver({'=': 'com.example.murano'}) self.assertRaises(ValueError, resolver.resolve_name, None)
def test_class_namespace_resolver(self): resolver = ns_resolver.NamespaceResolver({}) cls = murano_class.MuranoClass(None, resolver, ROOT_CLASS, None) self.assertEqual(resolver, cls.namespace_resolver)