| Index: third_party/WebKit/LayoutTests/imported/wpt/check_stability.py
|
| diff --git a/third_party/WebKit/LayoutTests/imported/wpt/check_stability.py b/third_party/WebKit/LayoutTests/imported/wpt/check_stability.py
|
| index 25496801c5e7a082791a260aa1097cb8696d8313..2c5ad269f3f1a9a1a33bb5c307bbff96b018be62 100644
|
| --- a/third_party/WebKit/LayoutTests/imported/wpt/check_stability.py
|
| +++ b/third_party/WebKit/LayoutTests/imported/wpt/check_stability.py
|
| @@ -15,20 +15,34 @@ from urlparse import urljoin
|
|
|
| import requests
|
|
|
| -wptrunner = None
|
| -wptcommandline = None
|
| -reader = None
|
| +BaseHandler = None
|
| +LogActionFilter = None
|
| LogHandler = None
|
| +LogLevelFilter = None
|
| +StreamHandler = None
|
| +TbplFormatter = None
|
| +reader = None
|
| +wptcommandline = None
|
| +wptrunner = None
|
| +
|
|
|
| logger = logging.getLogger(os.path.splitext(__file__)[0])
|
|
|
|
|
| def do_delayed_imports():
|
| - global wptrunner, wptcommandline, reader
|
| - from wptrunner import wptrunner
|
| - from wptrunner import wptcommandline
|
| + global BaseHandler
|
| + global LogLevelFilter
|
| + global StreamHandler
|
| + global TbplFormatter
|
| + global reader
|
| + global wptcommandline
|
| + global wptrunner
|
| from mozlog import reader
|
| + from mozlog.formatters import TbplFormatter
|
| + from mozlog.handlers import BaseHandler, LogLevelFilter, StreamHandler
|
| + from wptrunner import wptcommandline, wptrunner
|
| setup_log_handler()
|
| + setup_action_filter()
|
|
|
|
|
| def setup_logging():
|
| @@ -41,6 +55,26 @@ def setup_logging():
|
| setup_logging()
|
|
|
|
|
| +def setup_action_filter():
|
| + global LogActionFilter
|
| +
|
| + class LogActionFilter(BaseHandler):
|
| + """Handler that filters out messages with action of log and a level
|
| + lower than some specified level.
|
| +
|
| + :param inner: Handler to use for messages that pass this filter
|
| + :param level: Minimum log level to process
|
| + """
|
| + def __init__(self, inner, actions):
|
| + BaseHandler.__init__(self, inner)
|
| + self.inner = inner
|
| + self.actions = actions
|
| +
|
| + def __call__(self, item):
|
| + if item["action"] in self.actions:
|
| + return self.inner(item)
|
| +
|
| +
|
| class GitHub(object):
|
| def __init__(self, org, repo, token):
|
| self.token = token
|
| @@ -134,7 +168,6 @@ class Firefox(Browser):
|
| # This is used rather than an API call to avoid rate limits
|
| tags = call("git", "ls-remote", "--tags", "--refs",
|
| "https://github.com/mozilla/geckodriver.git")
|
| - logger.debug("Found tags:\n%s" % tags)
|
| release_re = re.compile(".*refs/tags/v(\d+)\.(\d+)\.(\d+)")
|
| latest_release = 0
|
| for item in tags.split("\n"):
|
| @@ -382,6 +415,7 @@ def table(headings, data, log):
|
| log("|%s|" % "|".join("-" * max_widths[i] for i in cols))
|
| for row in data:
|
| log("|%s|" % "|".join(" %s" % row[i].ljust(max_widths[i] - 1) for i in cols))
|
| + log("")
|
|
|
|
|
| def write_inconsistent(inconsistent, iterations):
|
| @@ -391,10 +425,22 @@ def write_inconsistent(inconsistent, iterations):
|
| table(["Test", "Subtest", "Results"], strings, logger.error)
|
|
|
|
|
| -def write_results(results, iterations):
|
| +def write_results(results, iterations, comment_pr):
|
| logger.info("## All results ##\n")
|
| for test, test_results in results.iteritems():
|
| - logger.info("### %s ###" % test)
|
| + baseurl = "http://w3c-test.org/submissions"
|
| + if "https" in os.path.splitext(test)[0].split(".")[1:]:
|
| + baseurl = "https://w3c-test.org/submissions"
|
| + pr_number = None
|
| + if comment_pr:
|
| + try:
|
| + pr_number = int(comment_pr)
|
| + except ValueError:
|
| + pass
|
| + if pr_number:
|
| + logger.info("### [%s](%s/%s%s) ###" % (test, baseurl, pr_number, test))
|
| + else:
|
| + logger.info("### %s ###" % test)
|
| parent = test_results.pop(None)
|
| strings = [("", err_string(parent, iterations))]
|
| strings.extend(((subtest if subtest else "", err_string(results, iterations))
|
| @@ -484,10 +530,22 @@ def main():
|
|
|
| print >> sys.stderr, "travis_fold:end:browser_setup"
|
| print >> sys.stderr, "travis_fold:start:running_tests"
|
| + logger.info("Starting %i test iterations" % args.iterations)
|
| with open("raw.log", "wb") as log:
|
| wptrunner.setup_logging(kwargs,
|
| - {"tbpl": sys.stdout,
|
| - "raw": log})
|
| + {"raw": log})
|
| + # Setup logging for wptrunner that keeps process output and
|
| + # warning+ level logs only
|
| + wptrunner.logger.add_handler(
|
| + LogActionFilter(
|
| + LogLevelFilter(
|
| + StreamHandler(
|
| + sys.stdout,
|
| + TbplFormatter()
|
| + ),
|
| + "WARNING"),
|
| + ["log", "process_output"]))
|
| +
|
| wptrunner.run_tests(**kwargs)
|
|
|
| with open("raw.log", "rb") as log:
|
| @@ -502,7 +560,7 @@ def main():
|
| else:
|
| logger.info("All results were stable\n")
|
| print >> sys.stderr, "travis_fold:start:full_results"
|
| - write_results(results, args.iterations)
|
| + write_results(results, args.iterations, args.comment_pr)
|
| print >> sys.stderr, "travis_fold:end:full_results"
|
| else:
|
| logger.info("No tests run.")
|
|
|