# Copyright 2021 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")
import("//sdk/ctf/build/ctf.gni")

group("tests") {
  testonly = true
  deps = [
    ":ctf-tests",
    ":fuchsia-hwinfo-tests-package",
  ]
}

group("ctf-tests") {
  testonly = true
  deps = [ ":fuchsia-hwinfo-tests_archive" ]
}

cc_test_executable("hwinfo-test-bin") {
  output_name = "hwinfo-test"
  testonly = true

  sources = [ "hwinfo_test.cc" ]

  deps = [
    "//sdk/fidl/fuchsia.hwinfo:fuchsia.hwinfo_hlcpp",
    "//sdk/lib/async-loop:async-loop-cpp",
    "//sdk/lib/async-loop:async-loop-default",
    "//sdk/lib/sys/cpp",
    "//sdk/testing/fidl:fidl_test_hlcpp",
    "//zircon/system/ulib/zxtest",
  ]
}

fuchsia_component("default") {
  manifest = "meta/default.cml"
  deps = [ ":hwinfo-test-bin" ]
  testonly = true
}

ctf_fuchsia_package("fuchsia-hwinfo-tests") {
  package_name = "fuchsia-hwinfo-tests"
  testonly = true
  deps = [ ":default" ]
}

fuchsia_test_component("test-root") {
  manifest = "meta/test-root.cml"
  test_type = "ctf"
  deps = [ "//sdk/lib/driver_test_realm:static" ]
}

fuchsia_test_package("fuchsia-hwinfo-tests-package") {
  test_components = [ ":test-root" ]
  subpackages = [ ":fuchsia-hwinfo-tests" ]
  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
  }
}
