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

rustc_test("collections_integration_test_bin") {
  name = "collections_integration_test"
  edition = "2018"
  source_root = "integration_test.rs"
  deps = [
    "//garnet/lib/rust/io_util",
    "//sdk/fidl/fuchsia.component:fuchsia.component-rustc",
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//sdk/fidl/fuchsia.sys2:fuchsia.sys2-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/sys/component_manager/tests/fidl:components-rustc",
    "//third_party/rust_crates:anyhow",
  ]

  sources = [ "integration_test.rs" ]
}

fuchsia_component("trigger_a") {
  testonly = true
  deps = [ "//src/sys/component_manager/tests:trigger_bin" ]
  manifest = "meta/trigger_a.cml"
}

fuchsia_component("trigger_b") {
  testonly = true
  deps = [ "//src/sys/component_manager/tests:trigger_bin" ]
  manifest = "meta/trigger_b.cml"
}

fuchsia_component("trigger_realm") {
  testonly = true
  manifest = "meta/trigger_realm.cml"
}

fuchsia_unittest_package("collections_integration_test") {
  manifest = "meta/collections_integration_test.cml"
  deps = [
    ":collections_integration_test_bin",
    ":trigger_a",
    ":trigger_b",
    ":trigger_realm",
    "//examples/components/routing/echo_server:echo_server_component",
  ]
}
