def test_simple_sort(self):
     from proboscis.case import TestPlan
     from proboscis.sorting import TestGraph
     from proboscis import TestRegistry
     registry = TestRegistry()
     registry.register(N2, groups=["blah"], depends_on_classes=[N11])
     registry.register(N3, depends_on_classes=[N11, N2])
     registry.register(N7, depends_on_groups=["blah"])
     registry.register(N11)
     cases = TestPlan.create_cases(registry.tests, [])
     graph = TestGraph(registry.groups, registry.tests, cases)
     sorted_entries = graph.sort()
     result = list(case.entry.home for case in sorted_entries)
    def test_simple_sort(self):
        from proboscis.case import TestPlan
        from proboscis.sorting import TestGraph
        from proboscis import TestRegistry

        registry = TestRegistry()
        registry.register(N2, groups=["blah"], depends_on_classes=[N11])
        registry.register(N3, depends_on_classes=[N11, N2])
        registry.register(N7, depends_on_groups=["blah"])
        registry.register(N11)
        cases = TestPlan.create_cases(registry.tests, [])
        graph = TestGraph(registry.groups, registry.tests, cases)
        sorted_entries = graph.sort()
        result = list(case.entry.home for case in sorted_entries)
        expected = [N11, N2, N3, N7]
        self.assertEqual(4, len(result))
        self.assertEqual(N11, result[0])
        self.assertEqual(N2, result[1])
        self.assertTrue((result[2] == N3 and result[3] == N7) or (result[2] == N7 or result[3] == N2))
    def test_complex_sort(self):
        from proboscis.case import TestPlan
        from proboscis.sorting import TestGraph
        from proboscis import TestRegistry

        registry = TestRegistry()
        registry.register(N2, depends_on_classes=[N11])
        registry.register(N3)
        registry.register(N5)
        registry.register(N7)
        registry.register(N8, depends_on_classes=[N3])
        registry.register(N9, depends_on_classes=[N8, N11])
        registry.register(N10, depends_on_classes=[N3, N11])
        registry.register(N11, depends_on_classes=[N5, N7])
        cases = TestPlan.create_cases(registry.tests, [])
        graph = TestGraph(registry.groups, registry.tests, cases)
        result = graph.sort()
        self.assertEqual(8, len(result))
        msg = assert_sort_order_is_correct(result)
        self.assertEqual(None, msg)
    def test_complex_sort(self):
        from proboscis.case import TestPlan
        from proboscis.sorting import TestGraph
        from proboscis import TestRegistry

        registry = TestRegistry()
        registry.register(N2, depends_on_classes=[N11])
        registry.register(N3)
        registry.register(N5)
        registry.register(N7)
        registry.register(N8, depends_on_classes=[N3])
        registry.register(N9, depends_on_classes=[N8, N11])
        registry.register(N10, depends_on_classes=[N3, N11])
        registry.register(N11, depends_on_classes=[N5, N7])
        cases = TestPlan.create_cases(registry.tests, [])
        graph = TestGraph(registry.groups, registry.tests, cases)
        result = graph.sort()
        self.assertEqual(8, len(result))
        msg = assert_sort_order_is_correct(result)
        self.assertEqual(None, msg)
    def test_do_not_allow_sneaky_cycle(self):
        from proboscis.case import TestPlan
        from proboscis.sorting import TestGraph
        from proboscis import TestRegistry

        registry = TestRegistry()
        registry.register(N2, depends_on_classes=[N11])
        registry.register(N3)
        registry.register(N5, depends_on_groups=["something"])
        registry.register(N7)
        registry.register(N8, depends_on_classes=[N3])
        registry.register(N9, depends_on_classes=[N8, N11])
        registry.register(N10, depends_on_classes=[N3, N11])
        registry.register(N11,
                          groups=["something"],
                          depends_on_classes=[N5, N7])
        cases = TestPlan.create_cases(registry.tests, [])
        graph = TestGraph(registry.groups, registry.tests, cases)

        re = compatability.capture_exception(graph.sort, RuntimeError)
        self.assertTrue(re is not None)
        self.assertTrue(isinstance(re, RuntimeError))
        self.assertTrue(str(re).find("Cycle found") >= 0)
Example #6
0
 def __init__(self, groups, test_entries, factories):
     test_cases = self.create_cases(test_entries, factories)
     graph = TestGraph(groups, test_entries, test_cases)
     self.tests = graph.sort()