diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /js/src/tests/lib/wptreport.py | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/tests/lib/wptreport.py')
-rw-r--r-- | js/src/tests/lib/wptreport.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/js/src/tests/lib/wptreport.py b/js/src/tests/lib/wptreport.py new file mode 100644 index 0000000000..95fa9b1ed7 --- /dev/null +++ b/js/src/tests/lib/wptreport.py @@ -0,0 +1,85 @@ +# 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/. + +# Integration between the jstests harness and `WptreportFormatter`. +# +# `WptreportFormatter` uses the data format specified in +# <https://firefox-source-docs.mozilla.org/mozbase/mozlog.html>. + +from time import time + +from wptrunner.formatters.wptreport import WptreportFormatter + + +class WptreportHandler(object): + def __init__(self, out): + """ + Initialize the WptreportHandler handler. + + :param str out: path to a file to write output to. + """ + self.out = out + self.formatter = WptreportFormatter() + + def suite_start(self): + """ + Produce the "suite_start" message at the present time. + """ + self.formatter.suite_start( + { + "time": time(), + "run_info": {}, + } + ) + + def suite_end(self): + """ + Produce the "suite_end" message at the present time and write the + results to the file path given in the constructor. + """ + result = self.formatter.suite_end( + { + "time": time(), + } + ) + with open(self.out, "w") as fp: + fp.write(result) + + def test(self, result, duration): + """ + Produce the "test_start", "test_status" and "test_end" messages, as + appropriate. + + :param dict result: a dictionary with the test results. It should + include the following keys: + * "name": the ID of the test; + * "status": the actual status of the whole test; + * "expected": the expected status of the whole test; + * "subtests": a list of dicts with keys "test", + "subtest", "status" and "expected". + :param float duration: the runtime of the test + """ + testname = result["name"] + + end_time = time() + start_time = end_time - duration + + self.formatter.test_start( + { + "test": testname, + "time": start_time, + } + ) + + for subtest in result["subtests"]: + self.formatter.test_status(subtest) + + self.formatter.test_end( + { + "test": testname, + "time": end_time, + "status": result["status"], + "expected": result["expected"], + } + ) |