Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/browser/extensions/webcompat/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 3 kB image not shown  

Quelle  runtests.py

  Sprache: Python
 

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.


import argparse
import glob
import json
import os
import sys
import traceback


class TestHarness:
    def __init__(self, test, verbose):
        self.test = test
        self.verbose = verbose
        self.printed_intro = False
        self.passed = 0
        self.failures = []

    def start(self):
        if self.verbose:
            self.maybe_print_intro()

    def finish(self):
        if self.verbose or self.printed_intro:
            print(f"Finished test {self.test}")

    def maybe_print_intro(self):
        if not self.printed_intro:
            print(f"Starting test {self.test}")
            self.printed_intro = True

    def test_pass(self, msg):
        self.passed += 1
        if self.verbose:
            print(f"TEST-PASS | {msg}")

    def test_fail(self, msg):
        self.maybe_print_intro()
        self.failures.append(msg)
        print(f"TEST-UNEXPECTED-FAIL | {msg}")

    def ok(self, condition, msg):
        if condition:
            self.test_pass(msg)
        else:
            self.test_fail(msg)

    def equals(self, a, b, msg):
        if json.dumps(a, sort_keys=True) == json.dumps(b, sort_keys=True):
            self.test_pass(msg)
        else:
            self.test_fail(f"{msg} | Got {a} expected {b}")

    def should_throw(self, description, exception, code):
        threw = "(no exception)"
        try:
            code()
        except Exception as e:
            threw = f"{type(e).__name__}: {e} {traceback.format_exc()}"
        if threw.startswith(exception):
            self.test_pass(f"{description} - should throw `{exception}`")
        else:
            self.test_fail(
                f"{description} - should throw `{exception}` | Got `{threw}`"
            )


def run_tests(tests, verbose):
    testdir = os.path.join(os.path.dirname(__file__), "tests/build")
    print("testdir", testdir)
    if not tests:
        tests = glob.iglob(os.path.join(testdir, "*.py"))
    sys.path.append(testdir)

    all_passed = 0
    failed_tests = []

    for test in tests:
        (testpath, ext) = os.path.splitext(os.path.basename(test))
        _test = __import__(testpath, globals(), locals(), ["WebCompatBuildTest"])

        harness = TestHarness(test, verbose)
        harness.start()
        try:
            _test.WebCompatBuildTest.__call__(harness)
        except Exception as ex:
            harness.test_fail(f"Unhandled exception in test {testpath}: {ex}")
            print(traceback.format_exc())
        finally:
            harness.finish()
        all_passed += harness.passed
        if harness.failures:
            failed_tests.append((test, harness.failures))

    if verbose or failed_tests:
        print()
        print("Result summary:")
        print(f"Successful: {all_passed}")
        print(f"Unexpected: {sum(len(failures) for _, failures in failed_tests)}")
        for test, failures in failed_tests:
            print(f"{test}:")
            for failure in failures:
                print(f"TEST-UNEXPECTED-FAIL | {failure}")
    return 1 if failed_tests else 0


def get_parser():
    usage = """%(prog)s [OPTIONS] [TESTS]
               Where TESTS are relative to the tests directory."""
    parser = argparse.ArgumentParser(usage=usage)
    parser.add_argument(
        "-q",
        "--quiet",
        action="store_false",
        dest="verbose",
        help="Don't print passing tests.",
        default=None,
    )
    parser.add_argument(
        "-v",
        "--verbose",
        action="store_true",
        dest="verbose",
        help="Run tests in verbose mode.",
    )
    parser.add_argument("tests", nargs="*", help="Tests to run")
    return parser


if __name__ == "__main__":
    parser = get_parser()
    args = parser.parse_args()
    if args.verbose is None:
        args.verbose = True

    sys.exit(run_tests(args.tests, verbose=args.verbose))

Messung V0.5 in Prozent
C=91 H=99 G=94

¤ Dauer der Verarbeitung: 0.2 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.