# 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/components.gni")
import("//build/testing/cc_test_executable.gni")

group("tests") {
  testonly = true
  deps = [ ":archive_reader_cpp_integration_tests" ]
}

executable("bin") {
  output_name = "archive_reader_test_app"

  sources = [ "program.cc" ]

  deps = [
    "//sdk/lib/async-loop:async-loop-cpp",
    "//sdk/lib/async-loop:async-loop-default",
    "//sdk/lib/inspect/component/cpp",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/syslog/cpp",
  ]
}

cc_test_executable("test") {
  testonly = true
  output_name = "archive_reader_integration_tests"

  sources = [ "test.cc" ]

  deps = [
    "//sdk/lib/diagnostics/reader/cpp",
    "//sdk/lib/sys/component/cpp/testing:cpp",
    "//sdk/lib/sys/cpp",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/testing/loop_fixture:gtest",
    "//third_party/re2",
  ]
}

fuchsia_component("archive_reader_test_app") {
  testonly = true
  manifest = "meta/archive_reader_test_app.cml"
  deps = [ ":bin" ]
}

fuchsia_test_component("archive_reader_tests") {
  manifest = "meta/archive_reader_integration_tests.cml"
  deps = [ ":test" ]
}

fuchsia_test_package("archive_reader_cpp_integration_tests") {
  test_components = [ ":archive_reader_tests" ]
  deps = [ ":archive_reader_test_app" ]

  # We intentionally emit ERROR logs for the purposes of testing.
  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
  }
}
