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

rustc_binary("echo_test_client") {
  edition = "2018"
  source_root = "echo_test_client.rs"

  deps = [
    "//examples/components/routing/fidl:echo-rustc",
    "//sdk/fidl/fuchsia.test:fuchsia.test-rustc",
    "//sdk/fidl/fuchsia.test:rust_measure_tape_for_case",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/lib/zircon/rust:fuchsia-zircon-sys",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
  ]

  sources = [ "echo_test_client.rs" ]
}

rustc_test("temp_user_bin") {
  name = "temp_user_bin_test"
  edition = "2018"
  source_root = "temp_user.rs"

  deps = [ "//third_party/rust_crates:anyhow" ]

  sources = [ "temp_user.rs" ]
}

fuchsia_component("temp_user_cmp") {
  testonly = true
  manifest = "meta/temp_user.cml"
  deps = [ ":temp_user_bin" ]
}

fuchsia_test_package("temp-user") {
  test_components = [ ":temp_user_cmp" ]
}

group("tests") {
  testonly = true
  deps = [ ":temp-user" ]
}
