# Copyright 2023 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_library.gni")

group("tests") {
  testonly = true
  deps = [ ":sandbox-unittests" ]
}

rustc_library("sandbox") {
  edition = "2021"
  with_unit_tests = true

  deps = [
    "//sdk/fidl/fuchsia.component.sandbox:fuchsia.component.sandbox_rust",
    "//sdk/fidl/fuchsia.io:fuchsia.io_rust",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/from-enum",
    "//src/lib/fuchsia-async",
    "//src/lib/zircon/rust:fuchsia-zircon-status",
    "//src/sys/component_manager/lib/router_error",
    "//src/sys/lib/cm_types",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:derivative",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:thiserror",
  ]

  test_deps = [
    "//src/lib/fdio/rust:fdio",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-fs",
    "//src/lib/test_util",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:assert_matches",
  ]

  sources = [
    "src/capability.rs",
    "src/component.rs",
    "src/connector.rs",
    "src/data.rs",
    "src/dict.rs",
    "src/directory.rs",
    "src/fidl/capability.rs",
    "src/fidl/component.rs",
    "src/fidl/connector.rs",
    "src/fidl/data.rs",
    "src/fidl/dict.rs",
    "src/fidl/directory.rs",
    "src/fidl/handle.rs",
    "src/fidl/mod.rs",
    "src/fidl/router.rs",
    "src/fidl/unit.rs",
    "src/handle.rs",
    "src/lib.rs",
    "src/receiver.rs",
    "src/router.rs",
    "src/unit.rs",
  ]

  if (!is_host) {
    deps += [
      "//src/lib/zircon/rust:fuchsia-zircon",
      "//src/storage/lib/vfs/rust:vfs",
      "//third_party/rust_crates:lazy_static",
      "//third_party/rust_crates:scopeguard",
      "//third_party/rust_crates:tracing",
    ]
    sources += [
      "src/fidl/registry.rs",
      "src/open.rs",
    ]
  }

  visibility = [
    "//src/sys/component_manager/*",
    "//src/sys/lib/elf_runner/*",
    "//src/sys/lib/routing/*",
  ]
}

fuchsia_unittest_package("sandbox-unittests") {
  deps = [ ":sandbox_test" ]
}
