blob: 03ca1ae9d85bc0f151a6a7026558924d0de8e09d [file] [log] [blame]
# 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/config/chrome_build.gni")
import("//testing/test.gni")
# Convenience meta-target for all of Blimp's production & test code.
group("blimp") {
# In spite of the name, this really just means that non-test targets
# cannot depend on this one, and that it can depend on test targets,
# which fits how we intend to use it.
testonly = true
deps = [
":blimp_tests",
"//blimp/client",
"//blimp/common",
]
if (is_linux) {
deps += [
":client_engine_integration",
"//blimp/engine",
"//blimp/engine:blimp_engine_bundle",
]
if (is_official_build) {
deps += [ "//blimp/engine:blimp_symbols" ]
}
}
}
# Builds all Blimp test code (unit tests, test APKs).
group("blimp_tests") {
testonly = true
deps = [
":blimp_unittests",
"//blimp/client:test_binaries",
]
if (is_linux) {
deps += [
":blimp_browsertests",
"//blimp/test/fake_engine:fake_engine_app_tests",
]
}
}
test("blimp_unittests") {
deps = [
"//blimp/client:unit_tests",
"//blimp/common:unit_tests",
"//blimp/helium:unit_tests",
"//blimp/net:unit_tests",
"//blimp/test:run_all_unittests",
]
if (is_linux) {
deps += [ "//blimp/engine:unit_tests" ]
}
if (is_android) {
deps += [ "//blimp/client:blimp_unittests_java_deps" ]
}
}
if (is_linux) {
test("blimp_browsertests") {
deps = [
"//blimp/engine:browser_tests",
"//tools/xdisplaycheck",
]
data = [
"test/data/",
]
}
_blimp_engine_env_tests_runtime_deps =
"$root_gen_dir/blimp-tests.runtime_deps"
_rebased_blimp_engine_env_tests_runtime_deps =
rebase_path(_blimp_engine_env_tests_runtime_deps, root_out_dir)
# This group contains Blimp Engine tests and tests of the various components
# the Blimp Engine depends on. The idea is that if this group of tests pass
# on a given system there is a high probability the Engine will also work on
# that platform.
group("blimp_engine_env_tests_group") {
testonly = true
# Additional environment test targets should be added here.
# Executable targets and those executable targets' transitive
# dependencies are not considered unless that executable is listed in
# "data_deps". Otherwise, GN assumes that the executable (and
# everything it requires) is a build-time dependency only.
data_deps = [
":blimp_browsertests",
":blimp_unittests",
"//base:base_unittests",
"//breakpad:generate_test_dump",
"//content/test:content_unittests",
"//ipc:ipc_tests",
"//net:net_unittests",
"//sandbox/linux:sandbox_linux_unittests",
"//blimp/test/fake_engine:fake_engine_app",
]
write_runtime_deps = _blimp_engine_env_tests_runtime_deps
}
_blimp_engine_env_tests_manifest = "$root_gen_dir/blimp-tests-manifest.txt"
_rebased_blimp_engine_env_tests_manifest =
rebase_path(_blimp_engine_env_tests_manifest, root_out_dir)
_rebased_blimp_engine_env_tests_blacklist =
rebase_path("//blimp/tools/tests-manifest-blacklist.txt")
action("generate_blimp_engine_env_tests_manifest") {
testonly = true
script = "//blimp/tools/generate-target-manifest.py"
args = [
"--blacklist",
_rebased_blimp_engine_env_tests_blacklist,
"--runtime-deps-file",
_rebased_blimp_engine_env_tests_runtime_deps,
"--output",
_rebased_blimp_engine_env_tests_manifest,
]
inputs = [
_rebased_blimp_engine_env_tests_blacklist,
_blimp_engine_env_tests_runtime_deps,
]
outputs = [
_blimp_engine_env_tests_manifest,
]
# By specifying a dependency (not a data_dependency) on :blimp_tests_group,
# we can be sure that everything is built before the action is
# complete (though not necessarily before we generate the manifest
# itself).
deps = [
":blimp_engine_env_tests_group",
]
}
# Builds and bundles the tests into a tarball that can be used to build a
# Docker image.
action("blimp_engine_env_tests_bundle") {
testonly = true
script = "//blimp/tools/create-bundle.py"
# These form the arguments to the script.
_rebased_out_dir = rebase_path(root_out_dir)
_rebased_dockerfile = rebase_path("//blimp/engine/testing/Dockerfile")
_rebased_dockerfile_base = rebase_path("//blimp/tools/Dockerfile.base")
_bundle = "$root_out_dir/blimp_engine_env_tests_bundle.tar.gz"
# Depending on this ensures that both the manifest is generated
# and everything listed in the manifest has been built.
deps = [
":generate_blimp_engine_env_tests_manifest",
]
sources = [
_blimp_engine_env_tests_manifest,
_rebased_dockerfile,
_rebased_dockerfile_base,
]
outputs = [
_bundle,
]
args = [
"--build-dir",
_rebased_out_dir,
"--filelist",
_rebased_dockerfile,
_rebased_dockerfile_base,
"--manifest",
_rebased_blimp_engine_env_tests_manifest,
"--output",
rebase_path(_bundle),
"--tar-contents-rooted-in",
rebase_path("//"),
]
}
# Wraps and Builds the Blimp client and engine integration script and
# ends up in root_out_dir/bin.
action("client_engine_integration") {
_wrapped_script = "//blimp/tools/client_engine_integration.py"
_script_basename = get_path_info(_wrapped_script, "name")
_output_path = "${root_out_dir}/bin/${_script_basename}"
script = "//build/android/gyp/create_tool_wrapper.py"
inputs = [
_wrapped_script,
]
outputs = [
_output_path,
]
args = [
"--output",
rebase_path(_output_path, root_build_dir),
"--target",
rebase_path(_wrapped_script, root_build_dir),
"--output-directory",
rebase_path(root_out_dir, root_build_dir),
"--flag-name=--output-linux-directory",
]
}
}