def test_cycle_only_before(self): after = {} before = {'b': ['a'], 'a': ['b']} sort = Sort(after, before) with self.assertRaises(CMError) as context: sorted_list = sort.sort()
def test_simple(self): after = {'b': ['a'], 'c': ['b']} before = {'a': ['b'], 'b': ['c']} sort = Sort(after, before) sorted_list = sort.sort() CMDependencySortTest._assert_orderings(after, before, sorted_list)
def test_mandbc(self): after = {'a': ['m'], 'b': ['d']} before = {'a': ['b', 'c', 'd', 'n'], 'b': ['c']} sort = Sort(after, before) sorted_list = sort.sort() CMDependencySortTest._assert_orderings(after, before, sorted_list)
def test_one_no_deps(self): sort = Sort({'a': []}) sorted_list = sort.sort() assert sorted_list == ['a'] sort = Sort(None, {'a': []}) sorted_list = sort.sort() assert sorted_list == ['a']
def test_both_no_deps(self): sort = Sort({'a': []}, {'a': []}) sorted_list = sort.sort() assert sorted_list == ['a'] sort = Sort({'a': [], 'b': []}, {'a': [], 'b': []}) sorted_list = sort.sort() assert len(sorted_list) == 2 assert 'a' in sorted_list assert 'b' in sorted_list
def _load_dependencies(self): before_graph = {} after_graph = {} for handler in self._handlers.values(): deps_filename = '{}/{}.deps'.format(self._plugins_path, handler) before_list, after_list = self._read_dependency_file(deps_filename) for before_dep in before_list: if not self._handlers.get(before_dep, None): raise CMError( 'Unexisting handler {} referred in handler {}\'s "Before" dependencies' .format(before_dep, handler)) for after_dep in after_list: if not self._handlers.get(after_dep, None): raise CMError( 'Unexisting handler {} referred in handler {}\'s "After" dependencies' .format(after_dep, handler)) before_graph[str(handler)] = before_list after_graph[str(handler)] = after_list sorter = CMDependencySort(after_graph, before_graph) self._sorted_handlers = sorter.sort()
def test_empty(self): sort = Sort() sorted_list = sort.sort() assert sorted_list == []