# Copyright 2019 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/package.gni")
import("//build/package/component.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")

executable("bin") {
  output_name = "inspect_unittests"
  testonly = true
  sources = [
    "expose_unittest.cc",
    "inspect_fidl_unittest.cc",
    "inspect_vmo_unittest.cc",
    "reader_unittest.cc",
    "vmo_reader_unittest.cc",
  ]
  deps = [
    "//garnet/public/lib/async_promise",
    "//zircon/public/lib/inspect-vmo",
  ]
  public_deps = [
    "//garnet/public/lib/gtest",
    "//garnet/public/lib/inspect",
    "//garnet/public/lib/inspect:reader",
    "//garnet/public/lib/inspect/testing",
    "//src/lib/fxl/test:gtest_main",
    "//third_party/googletest:gmock",
    "//zircon/public/lib/async-loop-cpp",
  ]
  libs = [ "zircon" ]
}

# TODO(IN-933): Reenable once fuchsia_test_component is supported.
# fuchsia_test_component("inspect_unittests_component") {
#   deps = [
#     ":bin",
#   ]
#
#   binary = "inspect_unittests"
# }

# TODO(IN-933): Convert back to package
test_package("inspect_unittests") {
  deps = [
    ":bin",
  ]

  tests = [
    {
      name = "inspect_unittests"
      environments = basic_envs
    },
  ]
}
