# 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.

import("//build/config.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")

###############################################################################
# GROUPS
###############################################################################
group("tests") {
  testonly = true

  public_deps = [
    ":crash-reports-tests",
    ":invalid_override_config",
    ":valid_override_config",

    # To run the Crashpad tests.
    "//third_party/crashpad:crashpad_test",

    # Packages for the components that we are injecting in the integration tests.
    "//src/cobalt/bin/testing/mock_cobalt",
    "//src/connectivity/network/netstack",
    "//src/developer/feedback/crash_reports:fake-crash-reports",
    "//src/developer/feedback/crash_reports:fake-crash-reports-invalid-override-config",
    "//src/developer/feedback/crash_reports:fake-crash-reports-valid-override-config",
    "//src/developer/feedback/testing/fakes:fake-device-id-provider",
    "//src/developer/feedback/testing/fakes:fake_data_provider",
    "//src/diagnostics/archivist",
    "//src/sys/pkg/bin/system-update-checker",
    "//src/sys/timekeeper",
  ]
}

###############################################################################
# PACKAGES
###############################################################################
test_package("crash-reports-tests") {
  tests = [
    {
      name = "crash_reporter_unittest"
    },
    {
      # Binary name on the host. We prefix it with "crash_reports" to reduce collisions.
      name = "crash_reports_config_unittest"

      # Component and binary name on the target. Confined to the package so no risk of collisions.
      dest = "config_unittest"
    },
    {
      # Binary name on the host. We prefix it with "crash_reports" to reduce collisions.
      name = "crash_reports_database_unittest"

      # Component and binary name on the target. Confined to the package so no risk of collisions.
      dest = "database_unittest"
    },
    {
      # Binary name on the host. We prefix it with "crash_reports" to reduce collisions.
      name = "crash_reports_inspect_manager_unittest"

      # Component and binary name on the target. Confined to the package so no risk of collisions.
      dest = "inspect_manager_unittest"
    },
    {
      name = "crash_reports_integration_test"
    },
    {
      # Binary name on the host. Shared across all integration test components.
      name = "crash_reports_integration_test"

      # Component and binary name on the target. Specific to each integration test component.
      dest = "crash_reports_integration_test_invalid_override_config"
    },
    {
      # Binary name on the host. Shared across all integration test components.
      name = "crash_reports_integration_test"

      # Component and binary name on the target. Specific to each integration test component.
      dest = "crash_reports_integration_test_valid_override_config"
    },
    {
      # Binary name on the host. We prefix it with "crash_reports" to reduce collisions.
      name = "crash_reports_main_service_unittest"

      # Component and binary name on the target. Confined to the package so no risk of collisions.
      dest = "main_service_unittest"
    },
    {
      name = "privacy_settings_ptr_unittest"
    },
    {
      name = "queue_unittest"
    },
  ]

  resources = [
    # needed for config_unittest
    {
      path = "configs/valid_upload_disabled.json"
      dest = "valid_config_upload_disabled.json"
    },

    # needed for config_unittest
    {
      path = "configs/valid_upload_enabled.json"
      dest = "valid_config_upload_enabled.json"
    },

    # needed for config_unittest
    {
      path = "configs/valid_upload_read_from_privacy_settings.json"
      dest = "valid_config_upload_read_from_privacy_settings.json"
    },

    # needed for config_unittest
    {
      path = "configs/valid_upload_disabled_spurious_server.json"
      dest = "valid_config_upload_disabled_spurious_server.json"
    },

    # needed for config_unittest
    {
      path = "configs/bad_schema_spurious_field.json"
      dest = "bad_schema_spurious_field_config.json"
    },

    # needed for config_unittest
    {
      path = "configs/bad_schema_missing_required_field.json"
      dest = "bad_schema_missing_required_field_config.json"
    },

    # needed for config_unittest
    {
      path = "configs/bad_schema_missing_server_upload_enabled.json"
      dest = "bad_schema_missing_server_upload_enabled_config.json"
    },

    # needed for config_unittest
    {
      path = "configs/bad_schema_missing_server_upload_read_from_privacy_settings.json"
      dest = "bad_schema_missing_server_upload_read_from_privacy_settings_config.json"
    },

    # needed for config_unittest
    {
      path = "configs/bad_schema_invalid_upload_policy.json"
      dest = "bad_schema_invalid_upload_policy_config.json"
    },
  ]

  deps = [
    ":config_unittest",
    ":crash_reporter_unittest",
    ":crash_reports_integration_test",
    ":database_unittest",
    ":inspect_manager_unittest",
    ":main_service_unittest",
    ":privacy_settings_ptr_unittest",
    ":queue_unittest",
  ]
}

###############################################################################
# EXECUTABLES
###############################################################################
executable("config_unittest") {
  testonly = true

  output_name = "crash_reports_config_unittest"

  sources = [ "config_unittest.cc" ]

  deps = [
    "//src/developer/feedback/crash_reports:config",
    "//src/developer/feedback/testing:gtest_with_syslog_main",
    "//third_party/googletest:gtest",
  ]
}

executable("crash_reporter_unittest") {
  testonly = true

  sources = [
    "crash_reporter_unittest.cc",
    "stub_crash_server.cc",
    "stub_crash_server.h",
  ]

  deps = [
    "//sdk/fidl/fuchsia.feedback",
    "//sdk/fidl/fuchsia.settings",
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/inspect/testing/cpp",
    "//src/developer/feedback/crash_reports:constants",
    "//src/developer/feedback/crash_reports:crash_reporter",
    "//src/developer/feedback/crash_reports/info:info",
    "//src/developer/feedback/testing:cobalt_test_fixture",
    "//src/developer/feedback/testing:gtest_with_syslog_main",
    "//src/developer/feedback/testing:unit_test_fixture",
    "//src/developer/feedback/testing/fakes:privacy_settings",
    "//src/developer/feedback/testing/stubs:channel_provider",
    "//src/developer/feedback/testing/stubs:cobalt",
    "//src/developer/feedback/testing/stubs:data_provider",
    "//src/developer/feedback/testing/stubs:device_id_provider",
    "//src/developer/feedback/testing/stubs:network_reachability_provider",
    "//src/developer/feedback/testing/stubs:utc_provider",
    "//src/developer/feedback/utils/cobalt",
    "//src/lib/fsl",
    "//src/lib/syslog/cpp",
    "//src/lib/timekeeper:testing",
    "//src/sys/timekeeper:fuchsia.time",
    "//third_party/crashpad/util",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
    "//zircon/public/lib/zx",
    "//zircon/system/fidl/fuchsia-mem",
  ]
}

executable("crash_reports_integration_test") {
  testonly = true

  sources = [ "crash_reports_integration_test.cc" ]

  deps = [
    "//sdk/fidl/fuchsia.feedback",
    "//sdk/lib/sys/cpp",
    "//src/developer/feedback/testing/fakes:cobalt",
    "//src/developer/feedback/utils/cobalt",
    "//src/lib/fsl",
    "//src/lib/fxl/test:gtest_main",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
    "//zircon/public/lib/zx",
    "//zircon/system/fidl/fuchsia-mem",
  ]
}

executable("main_service_unittest") {
  testonly = true

  output_name = "crash_reports_main_service_unittest"

  sources = [ "main_service_unittest.cc" ]

  deps = [
    "//sdk/lib/inspect/testing/cpp",
    "//src/developer/feedback/crash_reports:constants",
    "//src/developer/feedback/crash_reports:main_service",
    "//src/developer/feedback/crash_reports/info",
    "//src/developer/feedback/testing:cobalt_test_fixture",
    "//src/developer/feedback/testing:gtest_with_syslog_main",
    "//src/developer/feedback/testing:unit_test_fixture",
    "//src/developer/feedback/testing/stubs:cobalt",
    "//src/developer/feedback/testing/stubs:device_id_provider",
    "//src/developer/feedback/testing/stubs:network_reachability_provider",
    "//src/developer/feedback/testing/stubs:utc_provider",
    "//src/lib/syslog/cpp",
    "//src/lib/timekeeper:testing",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
    "//zircon/public/lib/zx",
  ]
}

executable("database_unittest") {
  testonly = true

  output_name = "crash_reports_database_unittest"

  sources = [
    "crashpad_database_gremlin.cc",
    "crashpad_database_gremlin.h",
    "database_unittest.cc",
  ]

  deps = [
    "//sdk/lib/inspect/testing/cpp",
    "//src/developer/feedback/crash_reports:database",
    "//src/developer/feedback/crash_reports/info:info",
    "//src/developer/feedback/testing:cobalt_test_fixture",
    "//src/developer/feedback/testing:gtest_with_syslog_main",
    "//src/developer/feedback/testing:unit_test_fixture",
    "//src/developer/feedback/testing/stubs:cobalt",
    "//src/developer/feedback/utils/cobalt",
    "//src/lib/fsl",
    "//src/lib/syslog/cpp",
    "//src/lib/timekeeper:testing",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

executable("inspect_manager_unittest") {
  testonly = true

  output_name = "crash_reports_inspect_manager_unittest"

  sources = [ "inspect_manager_unittest.cc" ]

  deps = [
    "//sdk/lib/inspect/testing/cpp",
    "//src/developer/feedback/crash_reports:constants",
    "//src/developer/feedback/crash_reports/info:inspect_manager",
    "//src/developer/feedback/testing:gtest_with_syslog_main",
    "//src/lib/fxl",
    "//src/lib/syslog/cpp",
    "//src/lib/timekeeper:testing",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
    "//zircon/public/lib/zx",
  ]
}

executable("privacy_settings_ptr_unittest") {
  testonly = true

  sources = [ "privacy_settings_ptr_unittest.cc" ]

  deps = [
    "//garnet/public/lib/fostr/fidl/fuchsia.settings",
    "//sdk/fidl/fuchsia.settings",
    "//src/developer/feedback/crash_reports:privacy_settings_ptr",
    "//src/developer/feedback/testing:gtest_with_syslog_main",
    "//src/developer/feedback/testing:unit_test_fixture",
    "//src/developer/feedback/testing/fakes:privacy_settings",
    "//src/lib/files",
    "//src/lib/fxl",
    "//third_party/googletest:gtest",
    "//zircon/public/lib/zx",
  ]
}

executable("queue_unittest") {
  testonly = true

  sources = [
    "queue_unittest.cc",
    "stub_crash_server.cc",
    "stub_crash_server.h",
  ]

  deps = [
    "//sdk/lib/inspect/testing/cpp",
    "//src/developer/feedback/crash_reports:constants",
    "//src/developer/feedback/crash_reports:queue",
    "//src/developer/feedback/crash_reports/info:info",
    "//src/developer/feedback/testing:cobalt_test_fixture",
    "//src/developer/feedback/testing:gtest_with_syslog_main",
    "//src/developer/feedback/testing:unit_test_fixture",
    "//src/developer/feedback/testing/stubs:cobalt",
    "//src/developer/feedback/testing/stubs:network_reachability_provider",
    "//src/lib/fsl:fsl",
    "//src/lib/timekeeper:testing",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

###############################################################################
# CONFIGS
###############################################################################
config_data("invalid_override_config") {
  for_pkg = "fake-crash-reports-invalid-override-config"

  sources = [ "configs/invalid_override.json" ]

  outputs = [ "override_config.json" ]
}

config_data("valid_override_config") {
  for_pkg = "fake-crash-reports-valid-override-config"

  sources = [ "configs/valid_override.json" ]

  outputs = [ "override_config.json" ]
}
