Ejemplo n.º 1
0
    def rerun_failed_tests(self):
        self.ns.verbose = True
        self.ns.failfast = False
        self.ns.verbose3 = False

        self.first_result = self.get_tests_result()

        print()
        print("Re-running failed tests in verbose mode")
        self.rerun = self.bad[:]
        for test_name in self.rerun:
            print(f"Re-running {test_name} in verbose mode", flush=True)
            self.ns.verbose = True
            result = runtest(self.ns, test_name)

            self.accumulate_result(result, rerun=True)

            if result.result == INTERRUPTED:
                break

        if self.bad:
            print(count(len(self.bad), 'test'), "failed again:")
            printlist(self.bad)

        self.display_result()
Ejemplo n.º 2
0
    def rerun_failed_tests(self):
        self.ns.verbose = True
        self.ns.failfast = False
        self.ns.verbose3 = False

        self.first_result = self.get_tests_result()

        print()
        print("Re-running failed tests in verbose mode")
        self.rerun = self.bad[:]
        for test_name in self.rerun:
            print("Re-running test %r in verbose mode" % test_name, flush=True)
            self.ns.verbose = True
            ok = runtest(self.ns, test_name)

            if ok[0] in {PASSED, ENV_CHANGED, SKIPPED, RESOURCE_DENIED}:
                self.bad.remove(test_name)

            if ok.result == INTERRUPTED:
                self.interrupted = True
                break
        else:
            if self.bad:
                print(count(len(self.bad), 'test'), "failed again:")
                printlist(self.bad)

        self.display_result()
Ejemplo n.º 3
0
    def rerun_failed_tests(self):
        self.ns.verbose = True
        self.ns.failfast = False
        self.ns.verbose3 = False

        self.first_result = self.get_tests_result()

        print()
        print("Re-running failed tests in verbose mode")
        self.rerun = self.bad[:]
        for test in self.rerun:
            print("Re-running test %r in verbose mode" % test, flush=True)
            try:
                self.ns.verbose = True
                ok = runtest(self.ns, test)
            except KeyboardInterrupt:
                self.interrupted = True
                # print a newline separate from the ^C
                print()
                break
            else:
                if ok[0] in {PASSED, ENV_CHANGED, SKIPPED, RESOURCE_DENIED}:
                    self.bad.remove(test)
        else:
            if self.bad:
                print(count(len(self.bad), 'test'), "failed again:")
                printlist(self.bad)

        self.display_result()
Ejemplo n.º 4
0
    def rerun_failed_tests(self):
        self.ns.verbose = True
        self.ns.failfast = False
        self.ns.verbose3 = False

        self.first_result = self.get_tests_result()

        print()
        print("Re-running failed tests in verbose mode")
        self.rerun = self.bad[:]
        for test in self.rerun:
            print("Re-running test %r in verbose mode" % test, flush=True)
            try:
                self.ns.verbose = True
                ok = runtest(self.ns, test)
            except KeyboardInterrupt:
                self.interrupted = True
                # print a newline separate from the ^C
                print()
                break
            else:
                if ok[0] in {PASSED, ENV_CHANGED, SKIPPED, RESOURCE_DENIED}:
                    self.bad.remove(test)
        else:
            if self.bad:
                print(count(len(self.bad), 'test'), "failed again:")
                printlist(self.bad)

        self.display_result()
Ejemplo n.º 5
0
    def rerun_failed_tests(self):
        self.log()

        if self.ns.python:
            # Temp patch for https://github.com/python/cpython/issues/94052
            self.log("Re-running failed tests is not supported with --python "
                     "host runner option.")
            return

        self.ns.verbose = True
        self.ns.failfast = False
        self.ns.verbose3 = False

        self.first_result = self.get_tests_result()

        self.log("Re-running failed tests in verbose mode")
        rerun_list = list(self.need_rerun)
        self.need_rerun.clear()
        for result in rerun_list:
            test_name = result.name
            self.rerun.append(test_name)

            errors = result.errors or []
            failures = result.failures or []
            error_names = [
                test_full_name.split(" ")[0] for (test_full_name, *_) in errors
            ]
            failure_names = [
                test_full_name.split(" ")[0]
                for (test_full_name, *_) in failures
            ]
            self.ns.verbose = True
            orig_match_tests = self.ns.match_tests
            if errors or failures:
                if self.ns.match_tests is None:
                    self.ns.match_tests = []
                self.ns.match_tests.extend(error_names)
                self.ns.match_tests.extend(failure_names)
                matching = "matching: " + ", ".join(self.ns.match_tests)
                self.log(
                    f"Re-running {test_name} in verbose mode ({matching})")
            else:
                self.log(f"Re-running {test_name} in verbose mode")
            result = runtest(self.ns, test_name)
            self.ns.match_tests = orig_match_tests

            self.accumulate_result(result, rerun=True)

            if isinstance(result, Interrupted):
                break

        if self.bad:
            print(count(len(self.bad), 'test'), "failed again:")
            printlist(self.bad)

        self.display_result()
Ejemplo n.º 6
0
    def display_result(self):
        # If running the test suite for PGO then no one cares about results.
        if self.ns.pgo:
            return

        print()
        print("== Tests result: %s ==" % self.get_tests_result())

        if self.interrupted:
            print()
            # print a newline after ^C
            print("Test suite interrupted by signal SIGINT.")
            executed = set(self.good) | set(self.bad) | set(self.skipped)
            omitted = set(self.selected) - executed
            print(count(len(omitted), "test"), "omitted:")
            printlist(omitted)

        if self.good and not self.ns.quiet:
            print()
            if (not self.bad
                and not self.skipped
                and not self.interrupted
                and len(self.good) > 1):
                print("All", end=' ')
            print(count(len(self.good), "test"), "OK.")

        if self.ns.print_slow:
            self.test_times.sort(reverse=True)
            print()
            print("10 slowest tests:")
            for time, test in self.test_times[:10]:
                print("- %s: %s" % (test, format_duration(time)))

        if self.bad:
            print()
            print(count(len(self.bad), "test"), "failed:")
            printlist(self.bad)

        if self.environment_changed:
            print()
            print("{} altered the execution environment:".format(
                     count(len(self.environment_changed), "test")))
            printlist(self.environment_changed)

        if self.skipped and not self.ns.quiet:
            print()
            print(count(len(self.skipped), "test"), "skipped:")
            printlist(self.skipped)

        if self.rerun:
            print()
            print("%s:" % count(len(self.rerun), "re-run test"))
            printlist(self.rerun)
Ejemplo n.º 7
0
    def display_result(self):
        # If running the test suite for PGO then no one cares about results.
        if self.ns.pgo:
            return

        print()
        print("== Tests result: %s ==" % self.get_tests_result())

        if self.interrupted:
            print()
            # print a newline after ^C
            print("Test suite interrupted by signal SIGINT.")
            executed = set(self.good) | set(self.bad) | set(self.skipped)
            omitted = set(self.selected) - executed
            print(count(len(omitted), "test"), "omitted:")
            printlist(omitted)

        if self.good and not self.ns.quiet:
            print()
            if (not self.bad
                and not self.skipped
                and not self.interrupted
                and len(self.good) > 1):
                print("All", end=' ')
            print(count(len(self.good), "test"), "OK.")

        if self.ns.print_slow:
            self.test_times.sort(reverse=True)
            print()
            print("10 slowest tests:")
            for time, test in self.test_times[:10]:
                print("- %s: %s" % (test, format_duration(time)))

        if self.bad:
            print()
            print(count(len(self.bad), "test"), "failed:")
            printlist(self.bad)

        if self.environment_changed:
            print()
            print("{} altered the execution environment:".format(
                     count(len(self.environment_changed), "test")))
            printlist(self.environment_changed)

        if self.skipped and not self.ns.quiet:
            print()
            print(count(len(self.skipped), "test"), "skipped:")
            printlist(self.skipped)

        if self.rerun:
            print()
            print("%s:" % count(len(self.rerun), "re-run test"))
            printlist(self.rerun)
Ejemplo n.º 8
0
    def list_cases(self):
        support.verbose = False
        support.set_match_tests(self.ns.match_tests, self.ns.ignore_tests)

        for test_name in self.selected:
            abstest = get_abs_module(self.ns, test_name)
            try:
                suite = unittest.defaultTestLoader.loadTestsFromName(abstest)
                self._list_cases(suite)
            except unittest.SkipTest:
                self.skipped.append(test_name)

        if self.skipped:
            print(file=sys.stderr)
            print(count(len(self.skipped), "test"), "skipped:", file=sys.stderr)
            printlist(self.skipped, file=sys.stderr)
Ejemplo n.º 9
0
    def list_cases(self):
        support.verbose = False
        support.set_match_tests(self.ns.match_tests)

        for test in self.selected:
            abstest = get_abs_module(self.ns, test)
            try:
                suite = unittest.defaultTestLoader.loadTestsFromName(abstest)
                self._list_cases(suite)
            except unittest.SkipTest:
                self.skipped.append(test)

        if self.skipped:
            print(file=sys.stderr)
            print(count(len(self.skipped), "test"), "skipped:", file=sys.stderr)
            printlist(self.skipped, file=sys.stderr)
Ejemplo n.º 10
0
    def rerun_failed_tests(self):
        self.ns.verbose = True
        self.ns.failfast = False
        self.ns.verbose3 = False

        self.first_result = self.get_tests_result()

        self.log()
        self.log("Re-running failed tests in verbose mode")
        rerun_list = self.rerun[:]
        self.rerun = []
        for result in rerun_list:
            test_name = result.name
            errors = result.errors or []
            failures = result.failures or []
            error_names = [
                test_full_name.split(" ")[0] for (test_full_name, *_) in errors
            ]
            failure_names = [
                test_full_name.split(" ")[0]
                for (test_full_name, *_) in failures
            ]
            self.ns.verbose = True
            orig_match_tests = self.ns.match_tests
            if errors or failures:
                if self.ns.match_tests is None:
                    self.ns.match_tests = []
                self.ns.match_tests.extend(error_names)
                self.ns.match_tests.extend(failure_names)
                matching = "matching: " + ", ".join(self.ns.match_tests)
                self.log(
                    f"Re-running {test_name} in verbose mode ({matching})")
            else:
                self.log(f"Re-running {test_name} in verbose mode")
            result = runtest(self.ns, test_name)
            self.ns.match_tests = orig_match_tests

            self.accumulate_result(result, rerun=True)

            if isinstance(result, Interrupted):
                break

        if self.bad:
            print(count(len(self.bad), 'test'), "failed again:")
            printlist(self.bad)

        self.display_result()