# Copyright 2022 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.
# Generated by `fx testgen`

import("//build/components.gni")
import("//build/rust/rustc_test.gni")

rustc_test("echo_client_compiletest") {
  name = "echo_client_compiletest"
  edition = "2021"
  source_root = "src/echo_client_test.rs"
  sources = [
    "src/echo_client_test.rs",
    "src/lib.rs",
  ]
  deps = [
    "//examples/components/routing/fidl:echo-rustc",
    "//sdk/fidl/fuchsia.sys2:fuchsia.sys2-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-component-test",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:futures",
  ]
}

fuchsia_component("echo_client_test") {
  testonly = true
  manifest = "meta/echo_client_test.cml"
  deps = [ ":echo_client_compiletest" ]
}

fuchsia_test_package("integration_test_pkg") {
  package_name = "echo_client_test"
  test_components = [ ":echo_client_test" ]
  deps = [
    ":echo_client_test",
    "//examples/components/routing/rust/echo_client:echo_client_component",
  ]
}

group("tests") {
  testonly = true
  public_deps = [ ":integration_test_pkg" ]
}
