def test_get_all(self): folder = os.path.dirname(os.path.abspath(__file__)) test_driller = Driller(os.path.join(folder, 'cnfg_simple.yml')) test_driller.drill_batch() n_matcher = NodeMatcher(test_driller.graph) r_matcher = RelationshipMatcher(test_driller.graph) f_miner = FileMiner(test_driller.graph, n_matcher, r_matcher) all_files = f_miner.get_all() assert len(all_files) == 6 # get readme file readme = f_miner.query(name='README.MD') assert readme['name'] == 'README.MD' # get file history f_hash = 'f85f4af5b20ddd617f93da13c7789a65fb972e68a8d634d5f253abab' update_history = f_miner.get_change_history(f_hash) assert len(update_history) == 3 # test file get methods current_m = f_miner.get_current_methods(f_hash) assert len(current_m) == 2 test_driller.clean()
def test_rel_index(self): folder = os.path.dirname(os.path.abspath(__file__)) test_driller = Driller(os.path.join(folder, 'cnfg_simple.yml')) test_driller.drill_batch() # test that all relationships were indexed rel_matcher = RelationshipMatcher(test_driller.graph) all_branch = list(rel_matcher.match(None, "BranchCommit")) assert len(all_branch) == 8 all_authorship = list(rel_matcher.match(None, "Author")) assert len(all_authorship) == 8 all_parent = list(rel_matcher.match(None, "Parent")) assert len(all_parent) == 8 all_updadedfile = list(rel_matcher.match(None, "UpdateFile")) assert len(all_updadedfile) == 9 all_hasmethod = list(rel_matcher.match(None, "Method")) assert len(all_hasmethod) == 5 all_updatemethod = list(rel_matcher.match(None, "UpdateMethod")) assert len(all_updatemethod) == 9 test_driller.clean()
def test_indexing(self): folder = os.path.dirname(os.path.abspath(__file__)) test_driller = Driller(os.path.join(folder, 'cnfg_init.yml')) test_driller.drill_batch() records = [r for r in test_driller.graph.run( "MATCH(n) RETURN n")] assert len(records) == 22 test_driller.clean()
def test_index_save(self): folder = os.path.dirname(os.path.abspath(__file__)) test_driller = Driller(os.path.join(folder, 'cnfg_init.yml')) test_driller.drill_batch(save_path='data/graphrepo.json') records = [r for r in test_driller.graph.run( "MATCH(n) RETURN n")] assert len(records) == 22 test_driller.clean() test_driller.index_from_file(file_path='data/graphrepo.json') records = [r for r in test_driller.graph.run( "MATCH(n) RETURN n")] assert len(records) == 22 os.remove('data/graphrepo.json') test_driller.clean()
def test_get_all(self): folder = os.path.dirname(os.path.abspath(__file__)) test_driller = Driller(os.path.join(folder, 'cnfg_simple.yml')) test_driller.drill_batch() n_matcher = NodeMatcher(test_driller.graph) r_matcher = RelationshipMatcher(test_driller.graph) m_miner = MethodMiner(test_driller.graph, n_matcher, r_matcher) all_methods = m_miner.get_all() assert len(all_methods) == 5 m_hash = '417e845b5d0702fcb26954809407f0919dfa229308e520de01e0cf6e' met = m_miner.query(hash=m_hash) assert met['name'] == 'get_name' history = m_miner.get_change_history(m_hash) assert len(history) == 2 test_driller.clean()
def test_get_all(self): folder = os.path.dirname(os.path.abspath(__file__)) test_driller = Driller(os.path.join(folder, 'cnfg_simple.yml')) test_driller.drill_batch() n_matcher = NodeMatcher(test_driller.graph) r_matcher = RelationshipMatcher(test_driller.graph) m_miner = MethodMiner(test_driller.graph, n_matcher, r_matcher) all_methods = m_miner.get_all() assert len(all_methods) == 5 m_hash = '45ce8dcd8b0cd8ed42e592ce828ab6418e7c79713b8dc99805bcb7ea' met = m_miner.query(hash=m_hash) assert met['name'] == 'get_name' history = m_miner.get_change_history(m_hash) assert len(history) == 2 test_driller.clean()
def test_gets(self): folder = os.path.dirname(os.path.abspath(__file__)) test_driller = Driller(os.path.join(folder, 'cnfg_simple.yml')) test_driller.drill_batch() st_date = datetime.strptime('14 May, 2020 00:00', '%d %B, %Y %H:%M').timestamp() end_date = datetime.strptime('15 May, 2020 02:00', '%d %B, %Y %H:%M').timestamp() n_matcher = NodeMatcher(test_driller.graph) r_matcher = RelationshipMatcher(test_driller.graph) com_miner = CommitMiner(test_driller.graph, n_matcher, r_matcher) all_com = com_miner.get_all() assert len(all_com) == 8 all_com_dates = com_miner.get_between_dates(st_date, end_date) assert len(all_com_dates) == 8 c_files = com_miner.get_commit_files( 'ad98f8594c15b1ebc4be4f20d849bcc0edf69ec574c33dfd84b7792d') assert len(c_files) == 3 c_file_updates = com_miner.get_commit_file_updates( 'ad98f8594c15b1ebc4be4f20d849bcc0edf69ec574c33dfd84b7792d') assert len(c_file_updates) == 3 c_methods = com_miner.get_commit_methods( 'ad98f8594c15b1ebc4be4f20d849bcc0edf69ec574c33dfd84b7792d') assert len(c_methods) == 3 c_method_updates = com_miner.get_commit_method_updates( 'ad98f8594c15b1ebc4be4f20d849bcc0edf69ec574c33dfd84b7792d') assert len(c_method_updates) == 3 test_driller.clean()
def test_nodes_index(self): folder = os.path.dirname(os.path.abspath(__file__)) test_driller = Driller(os.path.join(folder, 'cnfg_simple.yml')) test_driller.drill_batch() # test that all nodes were indexed node_matcher = NodeMatcher(test_driller.graph) all_commits = list(node_matcher.match("Commit")) assert len(all_commits) == 8 all_devs = list(node_matcher.match("Developer")) assert len(all_devs) == 2 all_files = list(node_matcher.match("File")) assert len(all_files) == 6 all_methods = list(node_matcher.match("Method")) assert len(all_methods) == 5 all_branches = list(node_matcher.match("Branch")) assert len(all_branches) == 1 test_driller.clean()
def test_custom_attributes_rel(self): folder = os.path.dirname(os.path.abspath(__file__)) test_driller = Driller(os.path.join(folder, 'cnfg_simple.yml')) test_driller.drill_batch() node_matcher = NodeMatcher(test_driller.graph) rel_matcher = RelationshipMatcher(test_driller.graph) commit = node_matcher.match( "Commit", hash="aa6fa504ccb0fa919acc3cb31e510dc2048314eb0656f34babada15c" ).first() assert commit['is_merge'] == 0 update_file_rel = rel_matcher.match([commit], "UpdateFile").first() assert update_file_rel['complexity'] == 2 assert update_file_rel['nloc'] == 8 assert update_file_rel['old_path'] == 'gr_test/default_class.py' assert update_file_rel['path'] == 'gr_test/default_class.py' assert update_file_rel['token_count'] == 42 assert update_file_rel['type'] == 'MODIFY' assert update_file_rel['removed'] == 6 assert update_file_rel['added'] == 0 update_method_rel = rel_matcher.match([commit], 'UpdateMethod').first() # assert update_method_rel['type'] == 'DELETE' assert update_method_rel['nloc'] == 5 assert update_method_rel['complexity'] == 2 assert update_method_rel['token_count'] == 21 assert update_method_rel['length'] == 5 assert update_method_rel['fan_in'] == 0 assert update_method_rel['fan_out'] == 0 assert update_method_rel['start_line'] == 11 assert update_method_rel['end_line'] == 15 test_driller.clean()
def test_gets(self): folder = os.path.dirname(os.path.abspath(__file__)) test_driller = Driller(os.path.join(folder, 'cnfg_simple.yml')) test_driller.drill_batch() st_date = datetime.strptime( "14 May, 2020 00:00", '%d %B, %Y %H:%M').timestamp() end_date = datetime.strptime( "15 May, 2020 02:00", '%d %B, %Y %H:%M').timestamp() n_matcher = NodeMatcher(test_driller.graph) r_matcher = RelationshipMatcher(test_driller.graph) dev_miner = DeveloperMiner(test_driller.graph, n_matcher, r_matcher) all_devs = dev_miner.get_all() assert len(all_devs) == 2 all_commits = dev_miner.get_commits( dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb") assert len(all_commits) == 7 all_com_id = dev_miner.get_commits( dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb", project_id=test_driller.config.ct.project_id ) assert len(all_com_id) == 7 all_com_id_dates = dev_miner.get_commits( dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb", project_id=test_driller.config.ct.project_id, start_date=st_date, end_date=end_date ) assert len(all_com_id_dates) == 7 all_files = dev_miner.get_files( dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb" ) assert len(all_files) == 6 all_files_id_dates = dev_miner.get_files( dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb", project_id=test_driller.config.ct.project_id, start_date=st_date, end_date=end_date ) assert len(all_files_id_dates) == 6 files_updates = dev_miner.get_files_updates( dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb" ) assert len(files_updates) == 9 files_updates_id_dates = dev_miner.get_files_updates( dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb", project_id=test_driller.config.ct.project_id, start_date=st_date, end_date=end_date ) assert len(files_updates_id_dates) == 9 all_methods = dev_miner.get_methods( dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb" ) assert len(all_methods) == 5 all_methods_id_dates = dev_miner.get_methods( dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb", project_id=test_driller.config.ct.project_id, start_date=st_date, end_date=end_date ) assert len(all_methods_id_dates) == 5 method_updates = dev_miner.get_method_updates( dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb" ) assert len(method_updates) == 9 method_updates_id_dates = dev_miner.get_method_updates( dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb", project_id=test_driller.config.ct.project_id, start_date=st_date, end_date=end_date ) assert len(method_updates_id_dates) == 9 test_driller.clean()