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

source_set("lib") {
  testonly = true

  sources = [
    "env_config.cc",
    "env_config.h",
    "run_test_component.cc",
    "run_test_component.h",
    "test_metadata.cc",
    "test_metadata.h",
  ]

  public_deps = [
    "//garnet/lib/cmx",
    "//garnet/public/lib/component/cpp",
    "//garnet/public/lib/fxl",
    "//garnet/public/lib/json",
    "//garnet/public/lib/pkg_url",
    "//third_party/rapidjson",
  ]
}

executable("bin") {
  testonly = true
  output_name = "run_test_component"

  sources = [
    "main.cc",
  ]

  deps = [
    ":lib",
    "//garnet/public/fidl/fuchsia.sys",
    "//garnet/public/lib/component/cpp",
    "//garnet/public/lib/component/cpp/testing",
    "//zircon/public/fidl/fuchsia-logger",
    "//zircon/public/lib/async-loop-cpp",
  ]
}

package("run_test_component") {
  testonly = true
  deprecated_system_image = true

  deps = [
    ":bin",
  ]

  binaries = [
    {
      name = "run_test_component"
    },
  ]

  resources = [
    {
      dest = "run_test_component/environment.config"
      path = rebase_path("environment.config")
    },
  ]
}

executable("test_bin") {
  testonly = true
  output_name = "run_test_component_unittests"

  sources = [
    "env_config_unittest.cc",
    "run_test_component_unittest.cc",
    "test_metadata_unittest.cc",
  ]

  deps = [
    ":lib",
    "//garnet/public/lib/fxl/test:gtest_main",
    "//third_party/googletest:gmock",
  ]
}

test_package("run_test_component_unittests") {
  deps = [
    ":test_bin",
  ]

  tests = [
    {
      name = "run_test_component_unittests"
    },
  ]
}
