| Index: chrome/test/base/js2gtest.gni
|
| diff --git a/chrome/test/base/js2gtest.gni b/chrome/test/base/js2gtest.gni
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..35f142f6a63294c7a7947a2a1cf79acb3c32dcb4
|
| --- /dev/null
|
| +++ b/chrome/test/base/js2gtest.gni
|
| @@ -0,0 +1,108 @@
|
| +# Copyright 2015 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.
|
| +
|
| +import("//build/module_args/v8.gni")
|
| +
|
| +template("js2gtest") {
|
| + assert(defined(invoker.test_type) &&
|
| + (invoker.test_type == "webui" || invoker.test_type == "unit" ||
|
| + invoker.test_type == "extension"))
|
| + action_name = target_name + "_action"
|
| + source_set_name = target_name
|
| +
|
| + action_foreach(action_name) {
|
| + testonly = true
|
| + visibility = [ ":$source_set_name" ]
|
| + script = "//tools/gypv8sh.py"
|
| +
|
| + sources = invoker.sources
|
| +
|
| + d8_path = get_label_info("//v8:d8($host_toolchain)", "root_out_dir") + "/d8"
|
| + if (is_win) {
|
| + d8_path += ".exe"
|
| + }
|
| +
|
| + input_js = [
|
| + "//chrome/third_party/mock4js/mock4js.js",
|
| + "//chrome/test/data/webui/test_api.js",
|
| + "//chrome/test/base/js2gtest.js",
|
| + ]
|
| + inputs = [ d8_path ] + input_js
|
| + if (defined(invoker.deps_js)) {
|
| + inputs += [ invoker.deps_js ]
|
| + }
|
| +
|
| + outputs = [
|
| + "$target_gen_dir/{{source_name_part}}-gen.cc",
|
| + "$root_out_dir/test_data/{{source_root_relative_dir}}/{{source_file_part}}",
|
| + ]
|
| +
|
| + args = []
|
| + if (defined(invoker.deps_js)) {
|
| + args += [
|
| + "--deps_js",
|
| + rebase_path(invoker.deps_js, root_build_dir),
|
| + ]
|
| + }
|
| + args += [
|
| + # Need "./" for script to find binary (cur dir is not on path).
|
| + "./" + rebase_path(d8_path, root_build_dir),
|
| + ]
|
| + args += rebase_path(input_js, root_build_dir) + [ invoker.test_type ]
|
| + if (v8_use_external_startup_data) {
|
| + args += [ "--external=y" ]
|
| + } else {
|
| + args += [ "--external=n" ]
|
| + }
|
| + args += [
|
| + "{{source}}",
|
| + "{{source_root_relative_dir}}/{{source_file_part}}",
|
| + ]
|
| + args += rebase_path(outputs, root_build_dir)
|
| +
|
| + deps = [
|
| + "//v8:d8($host_toolchain)",
|
| + ]
|
| + if (defined(invoker.deps)) {
|
| + deps += invoker.deps
|
| + }
|
| + }
|
| +
|
| + if (defined(invoker.extra_js_files)) {
|
| + copy_target_name = target_name + "_copy"
|
| + copy(copy_target_name) {
|
| + visibility = [ ":$source_set_name" ]
|
| + sources = invoker.extra_js_files
|
| + outputs = [
|
| + "$root_out_dir/test_data/{{source_root_relative_dir}}/{{source_file_part}}",
|
| + ]
|
| + }
|
| + }
|
| +
|
| + source_set(source_set_name) {
|
| + testonly = true
|
| + if (defined(invoker.visibility)) {
|
| + visibility = invoker.visibility
|
| + }
|
| + sources = get_target_outputs(":$action_name")
|
| + if (defined(invoker.defines)) {
|
| + defines = invoker.defines
|
| + }
|
| + deps = [
|
| + ":$action_name",
|
| +
|
| + # The generator implicitly makes includes from these targets.
|
| + "//chrome/test:test_support",
|
| + "//testing/gmock",
|
| + "//testing/gtest",
|
| + "//url",
|
| + ]
|
| + if (defined(invoker.deps)) {
|
| + deps += invoker.deps
|
| + }
|
| + if (defined(invoker.extra_js_files)) {
|
| + data_deps = [ ":$copy_target_name" ]
|
| + }
|
| + }
|
| +}
|
|
|