blob: 7623cb51f52b0cc46150bdbc22ffb1bd2872847a [file] [log] [blame]
# Copyright 2016 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/mac/tweak_info_plist.gni")
import("//build/config/ios/ios_sdk.gni")
import("//ios/build/chrome_build.gni")
import("//ios/public/provider/chrome/browser/build_config.gni")
import("//ios/third_party/earl_grey/ios_eg_test.gni")
# Template wrapping ios_eg_test, setting default values for EarlGrey test
# based on //ios/chrome/app:chrome.
#
# Arguments:
#
# info_plist:
# (optional) string, path to the Info.plist file that will be used for
# the bundle.
#
# info_plist_target:
# (optional) string, if the info_plist is generated from an action,
# rather than a regular source file, specify the target name in lieu
# of info_plist. The two arguments are mutually exclusive.
#
# extra_info_plists:
# (optional) string array, extra list of plist files that will be merged
# and tweaked; ignored if either info_plist or info_plist_target is set.
#
# entitlements_path:
# (optional) path to the template to use to generate the application
# entitlements by performing variable substitutions, defaults to
# //build/config/ios/entitlements.plist.
#
# entitlements_target:
# (optional) label of the target generating the application
# entitlements (must generate a single file as output); cannot be
# defined if entitlements_path is set.
#
# deps
# list of labels to depends on.
#
# This template defines two targets, one named "${target_name}" is the EarlGrey
# test application, and the other named "${target_name}_deps_group" is a group
# target that depends on the template "deps" property (used to implement the
# test suite running the FLAKY_ tests).
#
template("chrome_ios_eg_test") {
if (!defined(entitlements_path) && !defined(entitlements_target)) {
_target_name = target_name
_tweak_entitlements = target_name + "_tweak_entitlements"
compile_plist(_tweak_entitlements) {
format = "xml1"
substitutions = [ "IOS_BUNDLE_ID_PREFIX=$ios_app_bundle_id_prefix" ]
output_name = "$target_gen_dir/$_target_name.entitlements"
plist_templates =
[ "//ios/chrome/test/earl_grey/resources/Chrome.entitlements" ]
if (ios_egtests_entitlements_additions != []) {
plist_templates += ios_egtests_entitlements_additions
}
}
}
if (!defined(info_plist) && !defined(info_plist_target)) {
_tweak_info_plist = target_name + "_tweak_info_plist"
tweak_info_plist(_tweak_info_plist) {
info_plists = [
"//ios/chrome/app/resources/Info.plist",
"//ios/chrome/app/resources/EarlGreyAddition+Info.plist",
]
if (ios_chrome_info_plist_additions != []) {
info_plists += ios_chrome_info_plist_additions
}
if (defined(invoker.extra_info_plists)) {
info_plists += invoker.extra_info_plists
}
args = [
"--breakpad=$breakpad_enabled_as_int",
"--branding=$chromium_short_name",
"--version-overrides=MINOR=9999",
]
}
}
_deps_group_name = target_name + "_deps_group"
group(_deps_group_name) {
testonly = true
public_deps = invoker.deps
if (defined(invoker.public_deps)) {
public_deps += invoker.public_deps
}
}
ios_eg_test(target_name) {
forward_variables_from(invoker,
"*",
[
"deps",
"entitlements_path",
"entitlements_target",
"eg_main_application_delegate",
"info_plist",
"info_plist_target",
"public_deps",
])
if (!defined(entitlements_path) && !defined(entitlements_target)) {
entitlements_target = ":$_tweak_entitlements"
}
if (!defined(info_plist) && !defined(info_plist_target)) {
info_plist_target = ":$_tweak_info_plist"
}
_eg_main_application_delegate = "MainApplicationDelegate"
if (defined(invoker.eg_main_application_delegate)) {
_eg_main_application_delegate = invoker.eg_main_application_delegate
}
deps = [
":$_deps_group_name",
"//ios/chrome/app:main",
"//ios/chrome/test/earl_grey:hooks",
"//ios/testing:http_server_bundle_data",
]
if (!defined(bundle_deps)) {
bundle_deps = []
}
bundle_deps += [ "//ios/chrome/app/resources" ]
if (!defined(extra_substitutions)) {
extra_substitutions = []
}
extra_substitutions += [
"CHROMIUM_HANDOFF_ID=$chromium_handoff_id",
"CHROMIUM_SHORT_NAME=$target_name",
"CHROMIUM_URL_SCHEME_1=$url_unsecure_scheme",
"CHROMIUM_URL_SCHEME_2=$url_secure_scheme",
"CHROMIUM_URL_SCHEME_3=$url_x_callback_scheme",
"CHROMIUM_URL_SCHEME_4=$url_channel_scheme",
"EG_MAIN_APPLICATION_DELEGATE=$_eg_main_application_delegate",
"SSOAUTH_URL_SCHEME=$url_ssoauth_scheme",
]
if (ios_automatically_manage_certs) {
# Use the same bundle identifier for EarlGrey tests as for unit tests
# when managing certificates as the number of free certs is limited.
extra_substitutions +=
[ "CHROMIUM_BUNDLE_ID=gtest.${ios_generic_test_bundle_id_suffix}" ]
} else {
extra_substitutions += [ "CHROMIUM_BUNDLE_ID=gtest.$target_name" ]
}
}
}
set_defaults("chrome_ios_eg_test") {
configs = default_executable_configs
}