# 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/test/test_package.gni")

rustc_binary("bin") {
  name = "component_manager_for_test_bin"
  edition = "2018"
  deps = [
    "//garnet/lib/rust/files_async",
    "//garnet/lib/rust/io_util",
    "//sdk/fidl/fuchsia.test.manager:fuchsia.test.manager-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-runtime",
    "//src/lib/storage/pseudo-fs",
    "//src/lib/syslog/rust:syslog",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/sys/component_manager:lib",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:log",
    "//third_party/rust_crates:thiserror",
    "//zircon/system/fidl/fuchsia-io:fuchsia-io-rustc",
  ]

  non_rust_deps = [
    "//zircon/public/lib/async",
    "//zircon/public/lib/async-default",
    "//zircon/public/lib/async-loop",
    "//zircon/public/lib/async-loop-default",
    "//zircon/public/lib/memfs",
    "//zircon/public/lib/sync",
  ]
}

package("component_manager_for_test_pkg") {
  deps = [ ":bin" ]
  package_name = "component_manager_for_test"

  binaries = [
    {
      name = "component_manager_for_test_bin"
    },
  ]

  meta = [
    {
      path = rebase_path("meta/component_manager_for_test.cmx")
      dest = "component_manager_for_test.cmx"
    },
    {
      path = rebase_path("meta/test_manager_envelope.cml")
      dest = "test_manager_envelope.cm"
    },
  ]
}

group("tests") {
  testonly = true
  deps = [ "tests" ]
}

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