# 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 = "starnix_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.io:fuchsia.io_rust",
    "//sdk/fidl/fuchsia.process:fuchsia.process_rust",
    "//sdk/fidl/fuchsia.test:fuchsia.test_rust",
    "//sdk/fidl/fuchsia.test:rust_measure_tape_for_case",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-fs",
    "//src/lib/fuchsia-runtime",
    "//src/lib/fuchsia-sync",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/performance/lib/fuchsiaperf",
    "//src/sys/lib/namespace",
    "//src/sys/lib/runner",
    "//src/sys/test_runners:lib",
    "//src/sys/test_runners/gtest:lib",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:heck",
    "//third_party/rust_crates:serde",
    "//third_party/rust_crates:serde_json",
    "//third_party/rust_crates:tracing",
    "//third_party/rust_crates:uuid",
    "//third_party/rust_crates:xml-rs",
  ]

  sources = [
    "src/binder_latency.rs",
    "src/gbenchmark.rs",
    "src/gtest.rs",
    "src/helpers.rs",
    "src/ltp.rs",
    "src/main.rs",
    "src/results_parser.rs",
    "src/runner.rs",
    "src/test_suite.rs",
  ]
}

fuchsia_component("test_runners") {
  testonly = true
  manifest = "meta/starnix_test_runners.cml"
  component_name = "starnix_test_runners"
}

fuchsia_component("starnix_test_runner") {
  testonly = true
  manifest = "meta/starnix_test_runner.cml"
  component_name = "starnix_test_runner"
  deps = [ ":bin" ]
}

fuchsia_component("starnix_unit_test_runner") {
  testonly = true
  manifest = "meta/starnix_unit_test_runner.cml"
  component_name = "starnix_unit_test_runner"
  deps = [ "//src/sys/test_runners/rust:bin" ]
}

fuchsia_package("starnix-test-runners") {
  testonly = true
  visibility = [
    ":*",
    "//bundles/assembly/*",
    "//sdk/ctf/*",
    "//src/sys/test_manager:*",
  ]
  deps = [
    ":starnix_test_runner",
    ":starnix_unit_test_runner",
    ":test_runners",
  ]
}

fuchsia_unittest_package("starnix-test-runner-tests") {
  deps = [ ":bin_test" ]

  manifest = "meta/starnix_test_runner_tests.cml"

  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
  }
}

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