mirror of
https://fuchsia.googlesource.com/third_party/github.com/pylint-dev/pylint
synced 2024-09-21 16:19:21 +00:00
relation extraction tests
--HG-- branch : astng2
This commit is contained in:
parent
57a4a49081
commit
7af79e6021
|
@ -35,6 +35,7 @@ CONFIG = Config()
|
|||
HANDLER = DiadefsHandler(CONFIG)
|
||||
|
||||
def _process_classes(classes):
|
||||
"""extract class names of a list"""
|
||||
result = []
|
||||
for classe in classes:
|
||||
result.append({'node' : isinstance(classe.node, astng.Class),
|
||||
|
@ -43,6 +44,7 @@ def _process_classes(classes):
|
|||
return result
|
||||
|
||||
def _process_modules(modules):
|
||||
"""extract module names from a list"""
|
||||
result = []
|
||||
for module in modules:
|
||||
result.append({'node' : isinstance(module.node, astng.Module),
|
||||
|
@ -50,6 +52,19 @@ def _process_modules(modules):
|
|||
result.sort()
|
||||
return result
|
||||
|
||||
def _process_relations(relations):
|
||||
"""extract relation indices from a relation list"""
|
||||
result = []
|
||||
print "processing relations"
|
||||
for rel_type, rels in relations.items():
|
||||
print rel_type
|
||||
for rel in rels:
|
||||
result.append( (rel_type, rel.from_object.title,
|
||||
rel.to_object.title) )
|
||||
result.sort()
|
||||
return result
|
||||
|
||||
|
||||
class DiaDefGeneratorTC(unittest.TestCase):
|
||||
def test_option_values(self):
|
||||
"""test for ancestor, associated and module options"""
|
||||
|
@ -107,6 +122,29 @@ class DefaultDiadefGeneratorTC(unittest.TestCase):
|
|||
{'node': True, 'name': 'Specialization'}]
|
||||
)
|
||||
|
||||
def test_exctract_relations(self):
|
||||
"""test extract_relations between classes"""
|
||||
cd = DefaultDiadefGenerator(Linker(PROJECT), HANDLER).visit(PROJECT)[1]
|
||||
cd.extract_relationships()
|
||||
relations = _process_relations(cd.relationships)
|
||||
should = [('association', 'DoNothing', 'Specialization'),
|
||||
('implements', 'Ancestor', 'Interface'),
|
||||
('specialization', 'Specialization', 'Ancestor')]
|
||||
self._relations = should
|
||||
self.assertEquals(relations, should)
|
||||
|
||||
def test_functional_relation_extraction(self):
|
||||
"""functional test of relations extraction;
|
||||
different classes possibly in different modules"""
|
||||
# XXX should be catching pyreverse environnement problem but doesn't
|
||||
# pyreverse doesn't extracts the relations but this test ok
|
||||
project = ASTNGManager().project_from_files(['data'], astng_wrapper)
|
||||
handler = DiadefsHandler( Config() )
|
||||
diadefs = handler.get_diadefs(project, Linker(project, tag=True) )
|
||||
cd = diadefs[1]
|
||||
relations = _process_relations(cd.relationships)
|
||||
self.assertEquals(relations, self._relations)
|
||||
|
||||
def test_known_values2(self):
|
||||
project = ASTNGManager().project_from_files(['data.clientmodule_test'], astng_wrapper)
|
||||
dd = DefaultDiadefGenerator(Linker(project), HANDLER).visit(project)
|
||||
|
|
|
@ -104,15 +104,16 @@ def get_project(module, name=None):
|
|||
return manager.project_from_files([module], _astng_wrapper,
|
||||
project_name=name)
|
||||
|
||||
attrs = {'all_ancestors': None, 'show_associated': None, 'module_names': None,
|
||||
'output_format': 'dot', 'diadefs_file': None, 'quiet': 0,
|
||||
'show_ancestors': None, 'classes': (), 'all_associated': None,
|
||||
'mode': 'PUB_ONLY', 'show_builtin': False, 'only_classnames': False}
|
||||
DEFAULTS = {'all_ancestors': None, 'show_associated': None,
|
||||
'module_names': None,
|
||||
'output_format': 'dot', 'diadefs_file': None, 'quiet': 0,
|
||||
'show_ancestors': None, 'classes': (), 'all_associated': None,
|
||||
'mode': 'PUB_ONLY', 'show_builtin': False, 'only_classnames': False}
|
||||
|
||||
class Config(object):
|
||||
"""config object for tests"""
|
||||
def __init__(self):
|
||||
for attr, value in attrs.items():
|
||||
for attr, value in DEFAULTS.items():
|
||||
setattr(self, attr, value)
|
||||
|
||||
class FileTC(unittest.TestCase):
|
||||
|
|
Loading…
Reference in New Issue
Block a user