| # 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", | 
 |     ] | 
 |   } | 
 | } |