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

# NOTE: Ensure that //src/sys/component_manager:component-manager is
# also built as part of your test. Currently it is not possible to
# create this dependency automatically.
#
# TODO(fxbug.dev/64460): Create a stronger dependency between test_utils_lib
# and //src/sys/component_manager:component-manager

rustc_library("test_utils_lib") {
  name = "test_utils_lib"
  edition = "2018"
  with_unit_tests = true
  source_root = "lib.rs"

  deps = [
    "//examples/components/routing/fidl:echo-rustc",
    "//garnet/lib/rust/files_async",
    "//garnet/lib/rust/io_util",
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//sdk/fidl/fuchsia.sys:fuchsia.sys-rustc",
    "//sdk/fidl/fuchsia.sys2:fuchsia.sys2-rustc",
    "//src/lib/fdio/rust:fdio",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/storage/vfs/rust:vfs",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/sys/component_manager/tests/fidl:components-rustc",
    "//src/sys/component_manager/tests/fidl:echofactory-rustc",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:log",
    "//third_party/rust_crates:paste",
    "//third_party/rust_crates:rand",
    "//third_party/rust_crates:regex",
    "//third_party/rust_crates:thiserror",
  ]

  sources = [
    "descriptor.rs",
    "echo_capability.rs",
    "echo_factory_capability.rs",
    "events.rs",
    "injectors.rs",
    "interposers.rs",
    "lib.rs",
    "log.rs",
    "matcher.rs",
    "opaque_test.rs",
    "sequence.rs",
    "trigger_capability.rs",
  ]
}

fuchsia_unittest_package("test-utils-unittests") {
  manifest = "meta/test-utils-unittests.cmx"
  deps = [ ":test_utils_lib_test" ]
}
