コード例 #1
0
 def test_exclude_skips(self):
     filtered_result = pysubunit.TestResultStats(None)
     result_filter = test_results.TestResultFilter(filtered_result,
                                                   filter_skip=True)
     self.run_tests(result_filter)
     self.assertEqual(0, filtered_result.skipped_tests)
     self.assertEqual(2, filtered_result.failed_tests)
     self.assertEqual(3, filtered_result.testsRun)
コード例 #2
0
 def test_exclude_failure(self):
     filtered_result = unittest.TestResult()
     result_filter = test_results.TestResultFilter(filtered_result,
                                                   filter_failure=True)
     self.run_tests(result_filter)
     self.assertEqual(['error'],
                      [error[0].id() for error in filtered_result.errors])
     self.assertEqual(
         [], [failure[0].id() for failure in filtered_result.failures])
     self.assertEqual(3, filtered_result.testsRun)
コード例 #3
0
 def test_fixup_expected_errors(self):
     filtered_result = unittest.TestResult()
     result_filter = test_results.TestResultFilter(
         filtered_result, fixup_expected_failures=set(["error"]))
     self.run_tests(result_filter)
     self.assertEqual(
         ['error', 'todo'],
         [failure[0].id() for failure in filtered_result.expectedFailures])
     self.assertEqual([], filtered_result.errors)
     self.assertEqual(4, filtered_result.testsRun)
コード例 #4
0
 def test_skip_preserved(self):
     subunit_stream = compat._b('\n'.join(["test: foo", "skip: foo", ""]))
     result = doubles.ExtendedTestResult()
     result_filter = test_results.TestResultFilter(result)
     self.run_tests(result_filter, subunit_stream)
     foo = pysubunit.RemotedTestCase('foo')
     self.assertEqual([
         ('startTest', foo),
         ('addSkip', foo, {}),
         ('stopTest', foo),
     ], result._events)
コード例 #5
0
 def test_fixup_unexpected_success(self):
     filtered_result = unittest.TestResult()
     result_filter = test_results.TestResultFilter(
         filtered_result,
         filter_success=False,
         fixup_expected_failures=set(["passed"]))
     self.run_tests(result_filter)
     self.assertEqual(
         ['passed'],
         [passed.id() for passed in filtered_result.unexpectedSuccesses])
     self.assertEqual(5, filtered_result.testsRun)
コード例 #6
0
 def test_exclude_errors(self):
     filtered_result = unittest.TestResult()
     result_filter = test_results.TestResultFilter(filtered_result,
                                                   filter_error=True)
     self.run_tests(result_filter)
     # skips are seen as errors by default python TestResult.
     self.assertEqual([], filtered_result.errors)
     self.assertEqual(
         ['failed'],
         [failure[0].id() for failure in filtered_result.failures])
     self.assertEqual(3, filtered_result.testsRun)
コード例 #7
0
 def test_default(self):
     """The default is to exclude success and include everything else."""
     filtered_result = unittest.TestResult()
     result_filter = test_results.TestResultFilter(filtered_result)
     self.run_tests(result_filter)
     # skips are seen as success by default python TestResult.
     self.assertEqual(['error'],
                      [error[0].id() for error in filtered_result.errors])
     self.assertEqual(
         ['failed'],
         [failure[0].id() for failure in filtered_result.failures])
     self.assertEqual(4, filtered_result.testsRun)
コード例 #8
0
    def test_filter_predicate_with_tags(self):
        """You can filter by predicate callbacks that accept tags"""
        filtered_result = unittest.TestResult()

        def filter_cb(test, outcome, err, details, tags):
            return outcome == 'success'

        result_filter = test_results.TestResultFilter(
            filtered_result, filter_predicate=filter_cb, filter_success=False)
        self.run_tests(result_filter)
        # Only success should pass
        self.assertEqual(1, filtered_result.testsRun)
コード例 #9
0
 def test_include_success(self):
     """Successes can be included if requested."""
     filtered_result = unittest.TestResult()
     result_filter = test_results.TestResultFilter(filtered_result,
                                                   filter_success=False)
     self.run_tests(result_filter)
     self.assertEqual(['error'],
                      [error[0].id() for error in filtered_result.errors])
     self.assertEqual(
         ['failed'],
         [failure[0].id() for failure in filtered_result.failures])
     self.assertEqual(5, filtered_result.testsRun)
コード例 #10
0
 def test_tag_filter(self):
     tag_filter = test_results.make_tag_filter(['global'], ['local'])
     result = doubles.ExtendedTestResult()
     result_filter = test_results.TestResultFilter(
         result, filter_success=False, filter_predicate=tag_filter)
     self.run_tests(result_filter)
     tests_included = [
         event[1] for event in result._events if event[0] == 'startTest'
     ]
     tests_expected = list(
         map(pysubunit.RemotedTestCase,
             ['passed', 'error', 'skipped', 'todo']))
     self.assertEqual(tests_expected, tests_included)
コード例 #11
0
    def test_filter_predicate(self):
        """You can filter by predicate callbacks"""
        # 0.0.7 and earlier did not support the 'tags' parameter, so we need
        # to test that we still support behaviour without it.
        filtered_result = unittest.TestResult()

        def filter_cb(test, outcome, err, details):
            return outcome == 'success'

        result_filter = test_results.TestResultFilter(
            filtered_result, filter_predicate=filter_cb, filter_success=False)
        self.run_tests(result_filter)
        # Only success should pass
        self.assertEqual(1, filtered_result.testsRun)
コード例 #12
0
def _make_result(output, options, predicate):
    """Make the result that we'll send the test outcomes to."""
    fixup_expected_failures = set()
    for path in options.fixup_expected_failures or ():
        fixup_expected_failures.update(pysubunit.read_test_list(path))
    return testtools.StreamToExtendedDecorator(
        test_results.TestResultFilter(
            testtools.ExtendedToStreamDecorator(
                v2.StreamResultToBytes(output)),
            filter_error=options.error,
            filter_failure=options.failure,
            filter_success=options.success,
            filter_skip=options.skip,
            filter_xfail=options.xfail,
            filter_predicate=predicate,
            fixup_expected_failures=fixup_expected_failures))
コード例 #13
0
 def test_time_passes_through_filtered_tests(self):
     # Passing a subunit stream through TestResultFilter preserves 'time'
     # directives even if a specific test is filtered out.
     date_a = datetime(year=2000, month=1, day=1, tzinfo=iso8601.UTC)
     date_b = datetime(year=2000, month=1, day=2, tzinfo=iso8601.UTC)
     date_c = datetime(year=2000, month=1, day=3, tzinfo=iso8601.UTC)
     subunit_stream = compat._b('\n'.join([
         "time: %s", "test: foo", "time: %s", "success: foo", "time: %s", ""
     ]) % (date_a, date_b, date_c))
     result = doubles.ExtendedTestResult()
     result_filter = test_results.TestResultFilter(result)
     result_filter.startTestRun()
     self.run_tests(result_filter, subunit_stream)
     result_filter.stopTestRun()
     self.maxDiff = None
     self.assertEqual([('startTestRun', ), ('time', date_a),
                       ('time', date_c), ('stopTestRun', )], result._events)
コード例 #14
0
 def test_tags_tracked_correctly(self):
     tag_filter = test_results.make_tag_filter(['a'], [])
     result = doubles.ExtendedTestResult()
     result_filter = test_results.TestResultFilter(
         result, filter_success=False, filter_predicate=tag_filter)
     input_stream = compat._b("test: foo\n"
                              "tags: a\n"
                              "successful: foo\n"
                              "test: bar\n"
                              "successful: bar\n")
     self.run_tests(result_filter, input_stream)
     foo = pysubunit.RemotedTestCase('foo')
     self.assertEqual([
         ('startTest', foo),
         ('tags', set(['a']), set()),
         ('addSuccess', foo),
         ('stopTest', foo),
     ], result._events)
コード例 #15
0
 def test_time_ordering_preserved(self):
     # Passing a subunit stream through TestResultFilter preserves the
     # relative ordering of 'time' directives and any other subunit
     # directives that are still included.
     date_a = datetime(year=2000, month=1, day=1, tzinfo=iso8601.UTC)
     date_b = datetime(year=2000, month=1, day=2, tzinfo=iso8601.UTC)
     date_c = datetime(year=2000, month=1, day=3, tzinfo=iso8601.UTC)
     subunit_stream = compat._b('\n'.join([
         "time: %s", "test: foo", "time: %s", "error: foo", "time: %s", ""
     ]) % (date_a, date_b, date_c))
     result = doubles.ExtendedTestResult()
     result_filter = test_results.TestResultFilter(result)
     self.run_tests(result_filter, subunit_stream)
     foo = pysubunit.RemotedTestCase('foo')
     self.maxDiff = None
     self.assertEqual([('time', date_a), ('time', date_b),
                       ('startTest', foo), ('addError', foo, {}),
                       ('stopTest', foo), ('time', date_c)], result._events)