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

group("outdir") {
  testonly = true
  deps = [ ":appmgr_out_dir_integration_test" ]
}

rustc_binary("bin") {
  name = "appmgr_out_dir_integration_test"
  edition = "2021"

  deps = [
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//sdk/fidl/fuchsia.sys.internal:fuchsia.sys.internal-rustc",
    "//src/lib/fdio/rust:fdio",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-fs",
    "//src/lib/fuchsia-runtime",
    "//src/lib/scoped_task",
    "//src/lib/storage/vfs/rust:vfs",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/sys/appmgr/integration_tests/fidl:echo-rustc",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:assert_matches",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:thiserror",
    "//third_party/rust_crates:void",
  ]

  sources = [ "src/main.rs" ]
}

fuchsia_unittest_package("appmgr_out_dir_integration_test") {
  manifest = "meta/appmgr_out_dir_integration_test.cmx"
  deps = [
    ":bin",
    "//src/sys/appmgr:bin",
    "//src/sys/appmgr/integration_tests:echo_server",
    "//src/sys/sysmgr:sysmgr_component",
  ]
  test_specs = {
  }
}
