Commit 94d77dfe authored by Ned Nguyen's avatar Ned Nguyen Committed by Commit Bot

Add generator_script and modify BUILD to generate a wrapper script that runs...

Add generator_script and modify BUILD to generate a wrapper script that runs layout tests with build target prefilled

Bug: 897803
Change-Id: I21c00b8924e38304903cf10840fdf5bea1ebb864
Reviewed-on: https://chromium-review.googlesource.com/c/1296990
Commit-Queue: Ned Nguyen <nednguyen@google.com>
Reviewed-by: default avatarDirk Pranke <dpranke@chromium.org>
Reviewed-by: default avatarJohn Budorick <jbudorick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#605539}
parent 61453ebe
......@@ -26,6 +26,7 @@ import("//ui/ozone/ozone.gni")
import("//v8/gni/v8.gni")
import("//v8/snapshot_toolchain.gni")
import("//gpu/vulkan/features.gni")
import("//testing/test.gni")
if (is_android) {
import("//build/config/android/config.gni")
......@@ -934,8 +935,21 @@ if (!is_ios) {
# and is useful for testing with the regular isolate mechanism.
# To run the full layout test suite you need to use
# :webkit_layout_tests_exparchive, above, instead.
group("webkit_layout_tests") {
testonly = true
generated_script_test("webkit_layout_tests") {
generator_script = "//testing/scripts/generators/gen_run_web_tests_script.py"
extra_args = []
if (is_debug) {
extra_args += [
"--build-type",
"debug",
]
} else {
extra_args += [
"--build-type",
"release",
]
}
data_deps = [
":layout_test_data_mojo_bindings",
":layout_test_data_mojo_bindings_lite",
......
#!/usr/bin/env vpython
#
# 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.
"""Creates a script to run blink tests using
blinkpy/web_tests/run_webkit_tests.py
"""
import argparse
import os
import re
import stat
import sys
CHROMIUM_SRC_DIR = os.path.abspath(
os.path.join(os.path.dirname(__file__), '..', '..', '..'))
BASH_SCRIPT_TEMPLATE = """\
#!/bin/bash
#
# Generated by //testing/scripts/generators/gen_run_web_tests_script.py
{executable_path} {build_config_arg} "$@"
"""
BAT_SCRIPT_TEMPLATE = """\
@echo off
REM Generated by //testing/scripts/generators/gen_run_web_tests_script.py
CALL python {executable_path} {build_config_arg} %*
%*
"""
def main(args):
parser = argparse.ArgumentParser()
parser.add_argument(
'--script-output-path', required=True, help='path to write the file to')
parser.add_argument(
'--build-type', required=True, choices=['debug', 'release'])
options = parser.parse_args(args)
if options.build_type == 'debug':
build_config_arg = '--debug'
else:
build_config_arg = '--release'
executable_path = os.path.join(
CHROMIUM_SRC_DIR, 'third_party', 'blink', 'tools', 'run_web_tests.py')
if options.script_output_path.endswith('.bat'):
contents = BAT_SCRIPT_TEMPLATE.format(
executable_path=executable_path, build_config_arg=build_config_arg)
else:
contents = BASH_SCRIPT_TEMPLATE.format(
executable_path=executable_path, build_config_arg=build_config_arg)
with open(options.script_output_path, 'w') as fp:
fp.write(contents)
os.chmod(options.script_output_path,
stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR |
stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP |
stat.S_IROTH | stat.S_IWOTH | stat.S_IXOTH)
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))
......@@ -368,6 +368,62 @@ template("test") {
}
}
template("generated_script_test") {
# Invoker must define generator_script location which is used to generate
# the executable script. The generator_script will be invoked as follows:
# $ <generator_script> --script-output-path=<path to generate the executable>
# [extra args]
# For this template, it's expected to generate the executable script in bin/
# directory of the output directory.
assert(defined(invoker.generator_script), "Generator script must be defined")
# Invoker can add extra arguments to be passed to the generator script
# through defining |extra_args|.
_extra_args = []
if (defined(invoker.extra_args)) {
_extra_args += invoker.extra_args
}
_generator_script = invoker.generator_script
_gen_runner_target = "${target_name}__runner"
_target_name = target_name
action(_gen_runner_target) {
if (is_win) {
_target_executable = "run_${_target_name}.bat"
} else {
_target_executable = "run_${_target_name}"
}
_wrapper_dir = "${root_build_dir}/bin"
script = _generator_script
inputs = []
outputs = [
"$_wrapper_dir/$_target_executable",
]
args = [
"--script-output-path",
rebase_path(outputs[0], root_build_dir),
]
args += _extra_args
}
group(target_name) {
testonly = true
forward_variables_from(invoker,
[
"deps",
"testonly",
"data",
"data_deps",
])
if (!defined(invoker.deps)) {
deps = []
}
deps += [ ":$_gen_runner_target" ]
}
}
# Test defaults.
set_defaults("test") {
if (is_android) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment