blob: 6799d8ef77f015b5138608412e34da52a8c0940e [file] [log] [blame]
# Copyright 2023 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Top-level presubmit script for `web_tests/platform/`.
See https://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
for more details about the presubmit API built into depot_tools.
"""
import os
def _CheckForExtraPlatformBaselines(input_api, output_api):
"""Checks that expectations are not added/modified for platforms that do not exist
"""
# This test does not work on Windows because of the dependencies of
# the imported blinkpy code below.
if os.name == 'nt':
return []
os_path = input_api.os_path
local_dir = os_path.relpath(
os_path.normpath('{0}/'.format(input_api.PresubmitLocalPath().replace(
os_path.sep, '/'))), input_api.change.RepositoryRoot())
check_files = []
for f in input_api.AffectedFiles(include_deletes=False):
local_path = f.LocalPath()
assert local_path.startswith(local_dir)
local_path = os_path.relpath(local_path, local_dir)
path_components = local_path.split(os_path.sep)
if len(path_components) > 1:
check_files.append((local_path, path_components[0]))
if len(check_files) == 0:
return []
from blinkpy.common.host import Host
port_factory = Host().port_factory
all_ports_with_builders = [
port_factory.get(port_name)
for port_name in port_factory.all_port_names() +
['android', 'ios', 'webview']
]
# get any additional supported versions (that might not currently have
# builders)
all_ports = [
port_factory.get(port_name) for port_name in set([
"{}-{}".format(port.port_name, supported_version)
for port in all_ports_with_builders
for supported_version in port.SUPPORTED_VERSIONS
])
]
known_platforms = set([
fallback_path for port in all_ports
for fallback_path in port.FALLBACK_PATHS[port.version()]
])
results = []
for (f, platform) in check_files:
if not platform in known_platforms:
path = os_path.relpath(
os_path.join(input_api.PresubmitLocalPath(), f),
input_api.change.RepositoryRoot())
results.append(
output_api.PresubmitError(
"This CL adds a new baseline %s, but %s is not a known platform."
% (path, platform)))
return results
def CheckChangeOnUpload(input_api, output_api):
results = []
results.extend(_CheckForExtraPlatformBaselines(input_api, output_api))
return results
def CheckChangeOnCommit(input_api, output_api):
results = []
results.extend(_CheckForExtraPlatformBaselines(input_api, output_api))
return results