# 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/component/config.gni")
import("//build/rust/rustc_test.gni")
import("//src/sys/build/components.gni")

rustc_test("bin") {
  name = "component_manager_for_test_integration_test"
  edition = "2018"
  source_root = "src/main.rs"

  deps = [
    "//sdk/fidl/fuchsia.sys:fuchsia.sys-rustc",
    "//sdk/fidl/fuchsia.test:fuchsia.test-rustc",
    "//sdk/fidl/fuchsia.test.manager:fuchsia.test.manager-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//third_party/rust_crates:anyhow",
  ]

  sources = [ "src/main.rs" ]
}

component_config("component_manager_config") {
  sources = [ "config.json" ]
}

resource("component_manager_config_resource") {
  deps = [ ":component_manager_config" ]
  sources = [ "${target_gen_dir}/component_manager_config" ]
  outputs = [ "data/component_manager_config" ]
}

fuchsia_unittest_package("component_manager_for_test_integration_test") {
  manifest = "meta/component_manager_for_test_integration_test.cmx"
  deps = [
    ":bin",
    ":component_manager_config_resource",
    "//examples/tests:passing-test-example",
    "//src/sys/component_manager_for_test:component_manager_for_test_cmp",
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":component_manager_for_test_integration_test",
    "//src/sys/component_manager_for_test",
  ]
}
