# Copyright 2018 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

if (is_fuchsia) {
  import("//build/fuchsia/sdk.gni")
}

config("gtest_private_config") {
  visibility = [ ":*" ]
  include_dirs = [ "src/googletest" ]
}

config("gtest_config") {
  include_dirs = [ "src/googletest/include" ]
}

static_library("gtest") {
  testonly = true
  public = [
    "src/googletest/include/gtest/gtest-spi.h",
    "src/googletest/include/gtest/gtest.h",
  ]
  sources = [
    "src/googletest/include/gtest/gtest-death-test.h",
    "src/googletest/include/gtest/gtest-message.h",
    "src/googletest/include/gtest/gtest-param-test.h",
    "src/googletest/include/gtest/gtest-printers.h",
    "src/googletest/include/gtest/gtest-test-part.h",
    "src/googletest/include/gtest/gtest-typed-test.h",
    "src/googletest/include/gtest/gtest_pred_impl.h",
    "src/googletest/include/gtest/gtest_prod.h",
    "src/googletest/include/gtest/internal/custom/gtest-port.h",
    "src/googletest/include/gtest/internal/custom/gtest-printers.h",
    "src/googletest/include/gtest/internal/custom/gtest.h",
    "src/googletest/include/gtest/internal/gtest-death-test-internal.h",
    "src/googletest/include/gtest/internal/gtest-filepath.h",
    "src/googletest/include/gtest/internal/gtest-internal.h",
    "src/googletest/include/gtest/internal/gtest-linked_ptr.h",
    "src/googletest/include/gtest/internal/gtest-param-util-generated.h",
    "src/googletest/include/gtest/internal/gtest-param-util.h",
    "src/googletest/include/gtest/internal/gtest-port-arch.h",
    "src/googletest/include/gtest/internal/gtest-port.h",
    "src/googletest/include/gtest/internal/gtest-string.h",
    "src/googletest/include/gtest/internal/gtest-tuple.h",
    "src/googletest/include/gtest/internal/gtest-type-util.h",
    "src/googletest/src/gtest-all.cc",
    "src/googletest/src/gtest-death-test.cc",
    "src/googletest/src/gtest-filepath.cc",
    "src/googletest/src/gtest-internal-inl.h",
    "src/googletest/src/gtest-matchers.cc",
    "src/googletest/src/gtest-port.cc",
    "src/googletest/src/gtest-printers.cc",
    "src/googletest/src/gtest-test-part.cc",
    "src/googletest/src/gtest-typed-test.cc",
    "src/googletest/src/gtest.cc",
  ]
  sources -= [ "src/googletest/src/gtest-all.cc" ]
  public_configs = [ ":gtest_config" ]
  configs += [ ":gtest_private_config" ]

  # Avoid failure when subtracting if not already present.
  configs += [ "//build/config:no_rtti" ]
  configs -= [ "//build/config:no_rtti" ]

  if (is_fuchsia) {
    if (using_fuchsia_sdk) {
      deps = [
        "$fuchsia_sdk_root/pkg:fdio",
        "$fuchsia_sdk_root/pkg:zx",
      ]
    } else {
      deps = [
        "//sdk/lib/fdio",
        "//zircon/system/ulib/zx",
      ]
    }
  }

  metadata = {
    # Used by the fuchsia_test_component_manifest() template.
    test_component_manifest_cml = [
      {
        include = [ "//src/sys/test_runners/gtest/default.shard.cml" ]
      },
    ]
  }
}

# Library that defines the FRIEND_TEST macro.
source_set("gtest_prod") {
  testonly = false
  public = [ "src/googletest/include/gtest/gtest_prod.h" ]
  public_configs = [ ":gtest_config" ]
}

static_library("gtest_main") {
  # In-tree tests should prefer //src/lib/fxl/test:gtest_main which includes
  # Fuchsia-specific setup.
  visibility = [
    ":*",
    "//src/developer/forensics/feedback/tests:feedback_integration_test_exe",
    "//testing/gtest:gtest_main",
    "//third_party/protobuf:*",
  ]
  testonly = true
  sources = [ "src/googletest/src/gtest_main.cc" ]
  public_deps = [ ":gtest" ]
}

executable("gtest_all_test") {
  testonly = true
  sources = [
    "src/googletest/test/gtest-death-test_test.cc",
    "src/googletest/test/gtest-filepath_test.cc",
    "src/googletest/test/gtest-linked_ptr_test.cc",
    "src/googletest/test/gtest-message_test.cc",
    "src/googletest/test/gtest-options_test.cc",
    "src/googletest/test/gtest-port_test.cc",
    "src/googletest/test/gtest-printers_test.cc",
    "src/googletest/test/gtest-test-part_test.cc",
    "src/googletest/test/gtest-typed-test2_test.cc",
    "src/googletest/test/gtest-typed-test_test.cc",
    "src/googletest/test/gtest-typed-test_test.h",
    "src/googletest/test/gtest_main_unittest.cc",
    "src/googletest/test/gtest_pred_impl_unittest.cc",
    "src/googletest/test/gtest_prod_test.cc",
    "src/googletest/test/gtest_unittest.cc",
    "src/googletest/test/production.cc",
    "src/googletest/test/production.h",
  ]
  configs += [ ":gtest_private_config" ]
  deps = [
    ":gtest",
    ":gtest_main",
  ]
}

executable("gtest_environment_test") {
  testonly = true
  sources = [ "src/googletest/test/gtest_environment_test.cc" ]
  configs += [ ":gtest_private_config" ]
  deps = [ ":gtest" ]
}

executable("gtest_listener_test") {
  testonly = true
  sources = [ "src/googletest/test/gtest-listener_test.cc" ]
  deps = [ ":gtest" ]
}

executable("gtest_no_test") {
  testonly = true
  sources = [ "src/googletest/test/gtest_no_test_unittest.cc" ]
  deps = [ ":gtest" ]
}

executable("gtest_param_test") {
  testonly = true
  sources = [
    "src/googletest/test/gtest-param-test2_test.cc",
    "src/googletest/test/gtest-param-test_test.cc",
    "src/googletest/test/gtest-param-test_test.h",
  ]
  configs += [ ":gtest_private_config" ]
  deps = [ ":gtest" ]
}

executable("gtest_premature_exit_test") {
  testonly = true
  sources = [ "src/googletest/test/gtest_premature_exit_test.cc" ]
  deps = [ ":gtest" ]
}

executable("gtest_repeat_test") {
  testonly = true
  sources = [ "src/googletest/test/gtest_repeat_test.cc" ]
  configs += [ ":gtest_private_config" ]
  deps = [ ":gtest" ]
}

executable("gtest_sole_header_test") {
  testonly = true
  sources = [ "src/googletest/test/gtest_sole_header_test.cc" ]
  deps = [
    ":gtest",
    ":gtest_main",
  ]
}

executable("gtest_stress_test") {
  testonly = true
  sources = [ "src/googletest/test/gtest_stress_test.cc" ]
  configs += [ ":gtest_private_config" ]
  deps = [ ":gtest" ]
}

executable("gtest_unittest_api_test") {
  testonly = true
  sources = [ "src/googletest/test/gtest-unittest-api_test.cc" ]
  deps = [ ":gtest" ]
}

group("gtest_all_tests") {
  testonly = true
  deps = [
    ":gtest_all_test",
    ":gtest_environment_test",
    ":gtest_listener_test",
    ":gtest_no_test",
    ":gtest_param_test",
    ":gtest_premature_exit_test",
    ":gtest_repeat_test",
    ":gtest_sole_header_test",
    ":gtest_stress_test",
    ":gtest_unittest_api_test",
  ]
}

config("gmock_private_config") {
  visibility = [ ":*" ]
  include_dirs = [ "src/googlemock" ]
}

config("gmock_config") {
  include_dirs = [ "src/googlemock/include" ]
}

static_library("gmock") {
  testonly = true
  public = [ "src/googlemock/include/gmock/gmock.h" ]
  sources = [
    "src/googlemock/include/gmock/gmock-actions.h",
    "src/googlemock/include/gmock/gmock-cardinalities.h",
    "src/googlemock/include/gmock/gmock-generated-actions.h",
    "src/googlemock/include/gmock/gmock-generated-function-mockers.h",
    "src/googlemock/include/gmock/gmock-generated-matchers.h",
    "src/googlemock/include/gmock/gmock-generated-nice-strict.h",
    "src/googlemock/include/gmock/gmock-matchers.h",
    "src/googlemock/include/gmock/gmock-more-actions.h",
    "src/googlemock/include/gmock/gmock-more-matchers.h",
    "src/googlemock/include/gmock/gmock-spec-builders.h",
    "src/googlemock/include/gmock/internal/custom/gmock-generated-actions.h",
    "src/googlemock/include/gmock/internal/custom/gmock-matchers.h",
    "src/googlemock/include/gmock/internal/custom/gmock-port.h",
    "src/googlemock/include/gmock/internal/gmock-generated-internal-utils.h",
    "src/googlemock/include/gmock/internal/gmock-internal-utils.h",
    "src/googlemock/include/gmock/internal/gmock-port.h",
    "src/googlemock/src/gmock-all.cc",
    "src/googlemock/src/gmock-cardinalities.cc",
    "src/googlemock/src/gmock-internal-utils.cc",
    "src/googlemock/src/gmock-matchers.cc",
    "src/googlemock/src/gmock-spec-builders.cc",
    "src/googlemock/src/gmock.cc",
  ]
  sources -= [ "src/googlemock/src/gmock-all.cc" ]
  public_configs = [ ":gmock_config" ]
  configs += [ ":gmock_private_config" ]
  deps = [ ":gtest" ]
}

static_library("gmock_main") {
  testonly = true
  sources = [ "src/googlemock/src/gmock_main.cc" ]
  public_deps = [
    ":gmock",
    ":gtest",
  ]
}

executable("gmock_all_test") {
  testonly = true
  sources = [
    "src/googlemock/test/gmock-actions_test.cc",
    "src/googlemock/test/gmock-cardinalities_test.cc",
    "src/googlemock/test/gmock-generated-actions_test.cc",
    "src/googlemock/test/gmock-generated-function-mockers_test.cc",
    "src/googlemock/test/gmock-generated-internal-utils_test.cc",
    "src/googlemock/test/gmock-generated-matchers_test.cc",
    "src/googlemock/test/gmock-internal-utils_test.cc",
    "src/googlemock/test/gmock-matchers_test.cc",
    "src/googlemock/test/gmock-more-actions_test.cc",
    "src/googlemock/test/gmock-nice-strict_test.cc",
    "src/googlemock/test/gmock-port_test.cc",
    "src/googlemock/test/gmock-spec-builders_test.cc",
    "src/googlemock/test/gmock_test.cc",
  ]
  configs += [
    ":gmock_private_config",
    ":gtest_private_config",
  ]
  deps = [
    ":gmock",
    ":gmock_main",
    ":gtest",
  ]
}

executable("gmock_link_test") {
  testonly = true
  sources = [
    "src/googlemock/test/gmock_link2_test.cc",
    "src/googlemock/test/gmock_link_test.cc",
    "src/googlemock/test/gmock_link_test.h",
  ]
  configs += [ ":gmock_private_config" ]
  deps = [
    ":gmock",
    ":gmock_main",
    ":gtest",
  ]
}

executable("gmock_stress_test") {
  testonly = true
  sources = [ "src/googlemock/test/gmock_stress_test.cc" ]
  configs += [ ":gmock_private_config" ]
  deps = [
    ":gmock",
    ":gtest",
  ]
}

group("gmock_all_tests") {
  testonly = true
  deps = [
    ":gmock_all_test",
    ":gmock_link_test",
    ":gmock_stress_test",
  ]
}
