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

rustc_library("runner") {
  version = "0.1.0"
  edition = "2021"
  with_unit_tests = true

  deps = [
    "//sdk/fidl/fuchsia.component:fuchsia.component_rust",
    "//sdk/fidl/fuchsia.component.runner:fuchsia.component.runner_rust",
    "//sdk/fidl/fuchsia.component.sandbox:fuchsia.component.sandbox_rust",
    "//sdk/fidl/fuchsia.data:fuchsia.data_rust",
    "//sdk/fidl/fuchsia.io:fuchsia.io_rust",
    "//sdk/fidl/fuchsia.mem:fuchsia.mem_rust",
    "//sdk/fidl/fuchsia.process:fuchsia.process_rust",
    "//sdk/rust/zx",
    "//sdk/rust/zx-status",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-runtime",
    "//src/sys/lib/cm_types",
    "//src/sys/lib/library_loader:library_loader",
    "//src/sys/lib/namespace",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:lazy_static",
    "//third_party/rust_crates:log",
    "//third_party/rust_crates:serde",
    "//third_party/rust_crates:thiserror",
  ]

  test_deps = [
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-fs",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:assert_matches",
    "//third_party/rust_crates:paste",
    "//third_party/rust_crates:serde_json",
    "//third_party/rust_crates:test-case",
    "//tools/lib/cml",
  ]

  sources = [
    "src/component.rs",
    "src/lib.rs",
    "src/serde.rs",
  ]
}

fuchsia_unittest_package("runner_tests") {
  deps = [ ":runner_test" ]
  test_specs = {
  }
}

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