# Copyright 2022 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")
import("//build/rust/rustc_test.gni")

rustc_test("bin") {
  output_name = "fuchsia_tests_bin"
  edition = "2021"
  testonly = true
  deps = [
    "//src/lib/diagnostics/data/rust",
    "//src/lib/diagnostics/reader/rust",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-async",
    "//third_party/rust_crates:futures-util",
  ]

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

fuchsia_component("fuchsia-tests-component") {
  testonly = true
  manifest = "meta/fuchsia-tests.cml"
  deps = [ ":bin" ]
}

fuchsia_test_package("fuchsia-tests-package") {
  deps = [ "//src/lib/fuchsia/tests/exit-with-error:component" ]
  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
  }
  test_components = [ ":fuchsia-tests-component" ]
}

group("tests") {
  testonly = true

  deps = [ ":fuchsia-tests-package" ]
}
