# 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.

assert(is_fuchsia, "These targets are only compiled in the fuchsia toolchain.")

import("//build/components.gni")
import("//build/rust/rustc_test.gni")

rustc_test("ergonomic_inspect_tests") {
  name = "ergonomic_inspect_tests"
  edition = "2021"

  source_root = "src/main.rs"

  deps = [
    "//src/lib/diagnostics/inspect/derive",
    "//src/lib/diagnostics/inspect/rust",
    "//src/lib/diagnostics/testing/diagnostics-assertions/rust:diagnostics-assertions",
  ]

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

fuchsia_unittest_package("ergonomic-inspect-tests") {
  deps = [ ":ergonomic_inspect_tests" ]
}

group("rust-ergonomic") {
  testonly = true
  deps = [ ":hermetic_tests" ]
}

group("hermetic_tests") {
  testonly = true
  deps = [ ":ergonomic-inspect-tests" ]
}
