# Copyright 2021 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")

rustc_binary("bin") {
  testonly = true
  name = "inspect_test_runner"
  with_unit_tests = true
  edition = "2021"

  deps = [
    "//sdk/fidl/fuchsia.component.runner:fuchsia.component.runner_rust",
    "//sdk/fidl/fuchsia.data:fuchsia.data_rust",
    "//sdk/fidl/fuchsia.diagnostics:fuchsia.diagnostics_rust",
    "//sdk/fidl/fuchsia.io:fuchsia.io_rust",
    "//sdk/fidl/fuchsia.test:fuchsia.test_rust",
    "//src/diagnostics/lib/triage",
    "//src/lib/diagnostics/reader/rust",
    "//src/lib/diagnostics/selectors",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:itertools",
    "//third_party/rust_crates:maplit",
    "//third_party/rust_crates:serde_json",
    "//third_party/rust_crates:thiserror",
    "//third_party/rust_crates:tracing",
  ]

  sources = [
    "src/error.rs",
    "src/eval.rs",
    "src/main.rs",
    "src/spec.rs",
    "src/test_server.rs",
  ]
}

fuchsia_component("inspect_test_runner") {
  testonly = true
  manifest = "meta/inspect-test-runner.cml"
  component_name = "inspect-test-runner"
  deps = [ ":bin" ]
}

fuchsia_package("inspect-test-runner") {
  testonly = true
  visibility = [
    ":*",
    "//bundles/assembly/*",
    "//sdk/ctf/*",
    "//src/sys/test_manager:*",
  ]
  deps = [ ":inspect_test_runner" ]
}

fuchsia_unittest_component("test-component") {
  deps = [ ":bin_test" ]
}

fuchsia_test_package("inspect-test-runner-test") {
  test_components = [ ":test-component" ]
  deps = []
}

group("tests") {
  testonly = true
  deps = [
    ":inspect-test-runner-test",
    "tests",
  ]
}
