# 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/config/ios/rules.gni")
import("//ios/third_party/firebase/firebase.gni")

# EarlGrey tests are just XCTests that also depends on EarlGrey.
template("ios_eg_test") {
  ios_xctest_test(target_name) {
    forward_variables_from(invoker, "*")
    if (!defined(bundle_deps)) {
      bundle_deps = []
    }
    bundle_deps += [
      "//ios/third_party/earl_grey:earl_grey+bundle",
      "//ios/third_party/gtx:gtx+bundle",
      "//ios/third_party/ochamcrest:ochamcrest+bundle",
    ]
    if (ios_enable_firebase_sdk) {
      assert(ios_firebase_resources_target != "",
             "ios_firebase_resources_target must be defined if Firebase SDK " +
                 "is enabled.")
      bundle_deps += [ ios_firebase_resources_target ]
    }
    if (!defined(deps)) {
      deps = []
    }
    deps += [
      "//ios/third_party/earl_grey:earl_grey+link",
      "//ios/third_party/ochamcrest:ochamcrest+link",
    ]
  }
}

set_defaults("ios_eg_test") {
  configs = default_executable_configs
}
