123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- # Copyright 2018 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- """Check the basic functionalities of WPT tools.
- This PRESUBMIT guards against rolling a broken version of WPT tooling. It does
- some smoke checks of WPT functionality.
- """
- USE_PYTHON3 = True
- def _TestWPTLint(input_api, output_api):
- # We test 'wpt lint' by deferring to the web_tests/external presubmit test,
- # which runs 'wpt lint' against web_tests/external/wpt.
- abspath_to_test = input_api.os_path.join(
- input_api.change.RepositoryRoot(),
- 'third_party', 'blink', 'web_tests', 'external', 'PRESUBMIT_test.py'
- )
- command = input_api.Command(
- name='web_tests/external/PRESUBMIT_test.py',
- cmd=[abspath_to_test],
- kwargs={},
- message=output_api.PresubmitError,
- python3=True
- )
- if input_api.verbose:
- print('Running ' + abspath_to_test)
- return input_api.RunTests([command])
- def _TestWPTManifest(input_api, output_api):
- # We test 'wpt manifest' by making a copy of the base manifest and updating
- # it. A copy is used so that this PRESUBMIT doesn't change files in the tree.
- blink_path = input_api.os_path.join(
- input_api.change.RepositoryRoot(), 'third_party', 'blink')
- base_manifest = input_api.os_path.join(
- blink_path, 'web_tests', 'external', 'WPT_BASE_MANIFEST_8.json')
- with input_api.CreateTemporaryFile(mode = 'wt') as f:
- f.write(input_api.ReadFile(base_manifest))
- f.close()
- wpt_exec_path = input_api.os_path.join(
- input_api.change.RepositoryRoot(), 'third_party', 'wpt_tools', 'wpt', 'wpt')
- external_wpt = input_api.os_path.join(
- blink_path, 'web_tests', 'external', 'wpt')
- try:
- input_api.subprocess.check_output(
- ['python3', wpt_exec_path, 'manifest', '--no-download',
- '--path', f.name, '--tests-root', external_wpt])
- except input_api.subprocess.CalledProcessError as exc:
- return [output_api.PresubmitError('wpt manifest failed:', long_text=exc.output)]
- return []
- def CheckChangeOnUpload(input_api, output_api):
- results = []
- results += _TestWPTLint(input_api, output_api)
- results += _TestWPTManifest(input_api, output_api)
- return results
- def CheckChangeOnCommit(input_api, output_api):
- results = []
- results += _TestWPTLint(input_api, output_api)
- results += _TestWPTManifest(input_api, output_api)
- return results
|