| # 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. |
| |
| import("//build/config/ios/ios_test_runner_wrapper.gni") |
| import("//build/config/ios/rules.gni") |
| import("//ios/public/provider/chrome/browser/build_config.gni") |
| |
| template("ios_eg2_test_app_host") { |
| ios_app_bundle(target_name) { |
| testonly = true |
| forward_variables_from(invoker, "*") |
| |
| configs += [ "//build/config/ios:xctest_config" ] |
| |
| if (!defined(bundle_deps)) { |
| bundle_deps = [] |
| } |
| bundle_deps += [ "//ios/third_party/earl_grey2:app_framework+bundle" ] |
| if (!defined(include_provider_resources)) { |
| include_provider_resources = true |
| } |
| if (include_provider_resources) { |
| bundle_deps += ios_providers_resources_targets |
| } |
| if (!defined(deps)) { |
| deps = [] |
| } |
| deps += [ "//ios/third_party/earl_grey2:app_framework+link" ] |
| |
| # Xcode needs the following frameworks installed in the application (and |
| # signed) for the XCTest to run, so install them using |
| # extra_system_frameworks. |
| extra_system_frameworks = [ |
| "$ios_sdk_platform_path/Developer/Library/Frameworks/XCTest.framework", |
| "$ios_sdk_platform_path/Developer/Library/PrivateFrameworks/XCTAutomationSupport.framework", |
| ] |
| |
| # Xcode 13 now depends on XCTestCore. To keep things future proof, copy over |
| # everything that Xcode copies. |
| if (xcode_version_int >= 1300) { |
| extra_system_frameworks += [ |
| "$ios_sdk_platform_path/Developer/Library/PrivateFrameworks/XCTestCore.framework", |
| "$ios_sdk_platform_path/Developer/Library/PrivateFrameworks/XCUIAutomation.framework", |
| "$ios_sdk_platform_path/Developer/Library/PrivateFrameworks/XCUnit.framework", |
| "$ios_sdk_platform_path/Developer/usr/lib/libXCTestSwiftSupport.dylib", |
| ] |
| } |
| |
| if (!defined(ldflags)) { |
| ldflags = [] |
| } |
| ldflags += [ |
| "-Wl,-rpath,@executable_path/Frameworks", |
| "-Wl,-rpath,@loader_path/Frameworks", |
| ] |
| } |
| } |
| |
| set_defaults("ios_eg2_test_app_host") { |
| configs = default_executable_configs |
| } |
| |
| # EarlGrey2 tests are just XCUITests that also depends on EarlGrey2. |
| template("ios_eg2_test") { |
| assert(defined(invoker.xcode_test_application_name), |
| "xcode_test_application_name must be defined for $target_name") |
| assert( |
| defined(invoker.deps), |
| "deps must be defined for $target_name to include at least one earl grey test file.") |
| |
| _target_name = target_name |
| _test_target = "${target_name}_test" |
| ios_xcuitest_test(_test_target) { |
| forward_variables_from(invoker, |
| [ |
| "xcode_test_application_name", |
| "xctest_bundle_principal_class", |
| "bundle_deps", |
| "deps", |
| "data_deps", |
| ]) |
| |
| if (!defined(deps)) { |
| deps = [] |
| } |
| deps += [ "//ios/third_party/earl_grey2:test_lib" ] |
| |
| # TODO(crbug.com/1056328) Because we change the target name, the subnodes |
| # are going to append with the _test in the naming, which won't be backwards |
| # compatible during migration from iOS recipe to Chromium. |
| output_name = "${_target_name}" |
| } |
| |
| ios_test_runner_wrapper(target_name) { |
| forward_variables_from(invoker, |
| [ |
| "data", |
| "data_deps", |
| "deps", |
| "executable_args", |
| "retries", |
| "shards", |
| "xcode_test_application_name", |
| ]) |
| _root_build_dir = rebase_path("${root_build_dir}", root_build_dir) |
| |
| if (!defined(data_deps)) { |
| data_deps = [] |
| } |
| |
| # Include the top ios_eg2_test target, and the host app |
| data_deps += [ ":${_test_target}" ] |
| |
| if (!defined(executable_args)) { |
| executable_args = [] |
| } |
| |
| # EG2 tests app are bundled as *-Runner.app, while the host app is bundled |
| # as *.app. |
| executable_args += [ |
| "--app", |
| "@WrappedPath(${_root_build_dir}/${target_name}-Runner.app)", |
| ] |
| executable_args += [ |
| "--host-app", |
| "@WrappedPath(${_root_build_dir}/${xcode_test_application_name}.app)", |
| ] |
| } |
| } |
| |
| set_defaults("ios_eg2_test") { |
| configs = default_shared_library_configs |
| } |