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

  # Silence undefined macro warnings in gtest-port.h when -Wundef flag is used
  # (e.g. in Pigweed libraries).
  configs = [ "//build/config:Wno-undef" ]
}

static_library("gtest_no_testonly") {
  # In-tree tests should prefer //third_party/googletest:gtest because that enforces that only
  # testonly code uses gtest. This target should be used for tests or dependencies of tests that are
  # packaged into the SDK, since they cannot be testonly.
  visibility = [
    ":*",
    "//sdk/lib/driver/testing/cpp:*",
    "//src/devices/testing/mock-mmio-reg:*",
    "//src/graphics/examples/vkproto/driver-tests:*",
    "//src/graphics/magma/lib/magma_client/test_util:*",
    "//src/graphics/magma/tests/integration:*",
    "//src/graphics/tests/benchmark:*",
    "//src/graphics/tests/common:*",
    "//src/graphics/tests/vkext:*",
    "//src/graphics/tests/vkloop:*",
    "//src/graphics/tests/vkreadback:*",
    "//src/lib/fxl/test:*",
    "//src/lib/testing/loop_fixture:*",
  ]

  public = [
    "src/googletest/include/gtest/gtest-spi.h",
    "src/googletest/include/gtest/gtest.h",
  ]

  sources = [
    "src/googletest/include/gtest/gtest-assertion-result.h",
    "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-assertion-result.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" ]
      },
    ]
  }
}

group("gtest") {
  testonly = true
  public_deps = [ ":gtest_no_testonly" ]
}

# 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_no_testonly") {
  # In-tree tests should prefer //third_party/googletest:gmock.
  visibility = [
    ":*",
    "//third_party/pigweed/*",
  ]
  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" ]
  public_deps = [ ":gtest_no_testonly" ]
}

group("gmock") {
  testonly = true
  public_deps = [ ":gmock_no_testonly" ]
}

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