# Copyright 2020 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/package.gni")
import("//build/rust/rustc_library.gni")
import("//build/rust/rustc_macro.gni")
import("//build/rust/rustc_test.gni")
import("//src/sys/build/components.gni")
import("//src/sys/build/fuchsia_test_package.gni")

rustc_library("inspect-writable") {
  name = "inspect_writable"
  edition = "2018"

  deps = [
    "//src/lib/diagnostics/inspect/rust",
    "//src/sys/time/lib/inspect-writable/macro:inspect-writable-derive",
  ]

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

rustc_test("test_bin") {
  name = "inspect_writable_test"
  edition = "2018"

  deps = [
    ":inspect-writable",
    "//src/lib/diagnostics/inspect/rust",
  ]

  sources = [ "tests/derive_test.rs" ]
  source_root = "tests/derive_test.rs"
}

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

fuchsia_component("inspect_writable_test") {
  testonly = true
  component_name = "inspect_writable_test"
  manifest = "meta/inspect_writable_test.cmx"
  deps = [ ":test_bin" ]
}

fuchsia_test_package("inspect-writable-tests") {
  deps = [ ":test_bin" ]
  test_components = [ ":inspect_writable_test" ]
}
