def make_test(id, should_pass):
    """Make a test."""
    if should_pass:
        case = Case("passing")
    else:
        case = FailingCase()
    return clone_test_with_new_id(case, id)
Example #2
0
def make_integration_tests():
    from unittest import TestSuite
    from testtools import clone_test_with_new_id

    runners = [
        ("RunTest", RunTest),
        ("SynchronousDeferredRunTest", SynchronousDeferredRunTest),
        ("AsynchronousDeferredRunTest", AsynchronousDeferredRunTest),
    ]

    tests = [
        X.BaseExceptionRaised,
        X.ErrorInSetup,
        X.ErrorInTest,
        X.ErrorInTearDown,
        X.FailureInTest,
        X.ErrorInCleanup,
        X.ExpectThatFailure,
    ]
    base_test = X.TestIntegration("test_runner")
    integration_tests = []
    for runner_name, runner in runners:
        for test in tests:
            new_test = clone_test_with_new_id(base_test, "%s(%s, %s)" % (base_test.id(), runner_name, test.__name__))
            new_test.test_factory = test
            new_test.runner = runner
            integration_tests.append(new_test)
    return TestSuite(integration_tests)
def make_integration_tests():
    from unittest import TestSuite
    from testtools import clone_test_with_new_id
    runners = [
        ('RunTest', RunTest),
        ('SynchronousDeferredRunTest', SynchronousDeferredRunTest),
        ('AsynchronousDeferredRunTest', AsynchronousDeferredRunTest),
        ]

    tests = [
        X.ErrorInSetup,
        X.ErrorInTest,
        X.ErrorInTearDown,
        X.FailureInTest,
        X.ErrorInCleanup,
        ]
    base_test = X.TestIntegration('test_runner')
    integration_tests = []
    for runner_name, runner in runners:
        for test in tests:
            new_test = clone_test_with_new_id(
                base_test, '%s(%s, %s)' % (
                    base_test.id(),
                    runner_name,
                    test.__name__))
            new_test.test_factory = test
            new_test.runner = runner
            integration_tests.append(new_test)
    return TestSuite(integration_tests)
def make_integration_tests():
    from unittest import TestSuite
    from testtools import clone_test_with_new_id
    runners = [
        ('RunTest', RunTest),
        ('SynchronousDeferredRunTest', SynchronousDeferredRunTest),
        ('AsynchronousDeferredRunTest', AsynchronousDeferredRunTest),
    ]

    tests = [
        X.BaseExceptionRaised,
        X.ErrorInSetup,
        X.ErrorInTest,
        X.ErrorInTearDown,
        X.FailureInTest,
        X.ErrorInCleanup,
    ]
    base_test = X.TestIntegration('test_runner')
    integration_tests = []
    for runner_name, runner in runners:
        for test in tests:
            new_test = clone_test_with_new_id(
                base_test,
                '%s(%s, %s)' % (base_test.id(), runner_name, test.__name__))
            new_test.test_factory = test
            new_test.runner = runner
            integration_tests.append(new_test)
    return TestSuite(integration_tests)
Example #5
0
def test_suite():
    test = ScriptsTestCase('test_script')
    test_id = test.id()
    suite = unittest.TestSuite()
    for script_path in find_lp_scripts():
        new_test = clone_test_with_new_id(
            test, make_new_id(test_id, script_path))
        new_test.script_path = script_path
        suite.addTest(new_test)
    return suite
Example #6
0
def report_test_tree(output, flaky_tests):
    """
    Print all flaky tests as a tree.
    """
    reporter = TreeReporter(output)
    for (test, flaky) in flaky_tests:
        new_test = clone_test_with_new_id(test, '{}({})'.format(test.id(), ', '.join(flaky.jira_keys)))
        reporter.startTest(new_test)
        reporter.addSuccess(new_test)
        reporter.stopTest(new_test)
    reporter.done()
 def test_clone_test_with_new_id(self):
     class FooTestCase(TestCase):
         def test_foo(self):
             pass
     test = FooTestCase('test_foo')
     oldName = test.id()
     newName = self.getUniqueString()
     newTest = clone_test_with_new_id(test, newName)
     self.assertEqual(newName, newTest.id())
     self.assertEqual(oldName, test.id(),
         "the original test instance should be unchanged.")
 def test_cloned_testcase_does_not_share_details(self):
     """A cloned TestCase does not share the details dict."""
     class Test(TestCase):
         def test_foo(self):
             self.addDetail(
                 'foo', content.Content('text/plain', lambda: 'foo'))
     orig_test = Test('test_foo')
     cloned_test = clone_test_with_new_id(orig_test, self.getUniqueString())
     orig_test.run(unittest.TestResult())
     self.assertEqual('foo', orig_test.getDetails()['foo'].iter_bytes())
     self.assertEqual(None, cloned_test.getDetails().get('foo'))
Example #9
0
 def test_cloned_testcase_does_not_share_details(self):
     """A cloned TestCase does not share the details dict."""
     class Test(TestCase):
         def test_foo(self):
             self.addDetail(
                 'foo', content.Content('text/plain', lambda: 'foo'))
     orig_test = Test('test_foo')
     cloned_test = clone_test_with_new_id(orig_test, self.getUniqueString())
     orig_test.run(unittest.TestResult())
     self.assertEqual('foo', orig_test.getDetails()['foo'].iter_bytes())
     self.assertEqual(None, cloned_test.getDetails().get('foo'))
Example #10
0
 def test_clone_test_with_new_id(self):
     class FooTestCase(TestCase):
         def test_foo(self):
             pass
     test = FooTestCase('test_foo')
     oldName = test.id()
     newName = self.getUniqueString()
     newTest = clone_test_with_new_id(test, newName)
     self.assertEqual(newName, newTest.id())
     self.assertEqual(oldName, test.id(),
         "the original test instance should be unchanged.")
Example #11
0
def report_test_tree(output, flaky_tests):
    """
    Print all flaky tests as a tree.
    """
    reporter = TreeReporter(output)
    for (test, flaky) in flaky_tests:
        new_test = clone_test_with_new_id(
            test, '{}({})'.format(test.id(), ', '.join(flaky.jira_keys)))
        reporter.startTest(new_test)
        reporter.addSuccess(new_test)
        reporter.stopTest(new_test)
    reporter.done()
Example #12
0
 def test_unexpected_success(self):
     # Unexpected successes get forwarded too. (Test added because of a
     # NameError in memory repo).
     repo = self.repo_impl.initialise(self.sample_url)
     result = repo.get_inserter()
     legacy_result = testtools.ExtendedToStreamDecorator(result)
     legacy_result.startTestRun()
     test = clone_test_with_new_id(Case('unexpected_success'), 'unexpected_success')
     test.run(legacy_result)
     legacy_result.stopTestRun()
     analyzed = self.get_last_run(repo)
     self.assertEqual(1, analyzed.testsRun)
     self.assertEqual(1, len(analyzed.unexpectedSuccesses))
     self.assertEqual('unexpected_success', analyzed.unexpectedSuccesses[0].id())
 def test_unexpected_success(self):
     # Unexpected successes get forwarded too. (Test added because of a
     # NameError in memory repo).
     repo = self.repo_impl.initialise(self.sample_url)
     result = repo.get_inserter()
     legacy_result = testtools.ExtendedToStreamDecorator(result)
     legacy_result.startTestRun()
     test = clone_test_with_new_id(Case('unexpected_success'), 'unexpected_success')
     test.run(legacy_result)
     legacy_result.stopTestRun()
     analyzed = self.get_last_run(repo)
     self.assertEqual(1, analyzed.testsRun)
     self.assertEqual(1, len(analyzed.unexpectedSuccesses))
     self.assertEqual('unexpected_success', analyzed.unexpectedSuccesses[0].id())
 def testSortingTwelveIndependentIsFast(self):
     # Given twelve independent resource sets, my patience is not exhausted.
     managers = []
     for pos in range(12):
         managers.append(testresources.TestResourceManager())
     # Add more sample tests
     cases = [self.case1, self.case2, self.case3, self.case4]
     for pos in range(5, 13):
         cases.append(
             testtools.clone_test_with_new_id(cases[0], 'case%d' % pos))
     # We care that this is fast in this test, so we don't need to have
     # overlapping resource usage
     for case, manager in zip(cases, managers):
         case.resources = [('_resource', manager)]
 def testSortingTwelveOverlappingIsFast(self):
     # Given twelve connected resource sets, my patience is not exhausted.
     managers = []
     for pos in range(12):
         managers.append(testresources.TestResourceManager())
     # Add more sample tests
     cases = [self.case1, self.case2, self.case3, self.case4]
     for pos in range(5, 13):
         cases.append(
             testtools.clone_test_with_new_id(cases[0], 'case%d' % pos))
     tempdir = testresources.TestResourceManager()
     # give all tests a tempdir, enough to provoke a single partition in
     # the current code.
     for case, manager in zip(cases, managers):
         case.resources = [('_resource', manager), ('tempdir', tempdir)]
 def testSortingTwelveIndependentIsFast(self):
     # Given twelve independent resource sets, my patience is not exhausted.
     managers = []
     for pos in range(12):
         managers.append(testresources.TestResourceManager())
     # Add more sample tests
     cases = [self.case1, self.case2, self.case3, self.case4]
     for pos in range(5,13):
         cases.append(
             testtools.clone_test_with_new_id(cases[0], 'case%d' % pos))
     # We care that this is fast in this test, so we don't need to have
     # overlapping resource usage
     for case, manager in zip(cases, managers):
         case.resources = [('_resource', manager)]
     # Any sort is ok, as long as its the right length :)
     result = self.sortTests(cases)
     self.assertEqual(12, len(result))
 def testSortingTwelveOverlappingIsFast(self):
     # Given twelve connected resource sets, my patience is not exhausted.
     managers = []
     for pos in range(12):
         managers.append(testresources.TestResourceManager())
     # Add more sample tests
     cases = [self.case1, self.case2, self.case3, self.case4]
     for pos in range(5,13):
         cases.append(
             testtools.clone_test_with_new_id(cases[0], 'case%d' % pos))
     tempdir = testresources.TestResourceManager()
     # give all tests a tempdir, enough to provoke a single partition in
     # the current code.
     for case, manager in zip(cases, managers):
         case.resources = [('_resource', manager), ('tempdir', tempdir)]
     # Any sort is ok, as long as its the right length :)
     result = self.sortTests(cases)
     self.assertEqual(12, len(result))
Example #18
0
 def clone(self, suffix):
     # Clone this test with a new suffix.
     test = clone_test_with_new_id(
         self, "%s#%s" % (self.id(), suffix))
     test.cloned = True
     return test
Example #19
0
 def clone(self, suffix):
     # Clone this test with a new suffix.
     test = clone_test_with_new_id(self, "%s#%s" % (self.id(), suffix))
     test.cloned = True
     return test