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

# This file was generated by the `fx create` command. The template
# is located at `//tools/create/templates/component-default/BUILD.gn.tmpl-rust`.
# If you find something broken, we are eager to review fixes.

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

group("mock") {
  testonly = true
  deps = [
    ":package",
    ":tests",
  ]
}

group("tests") {
  testonly = true
  deps = [ "integration/tests" ]
}

rustc_binary("bin") {
  testonly = true
  output_name = "mock"
  edition = "2021"

  # Generates a GN target for unit-tests with the label `bin_test`, and
  # a binary named `mock_bin_test`.
  with_unit_tests = true

  deps = [
    "fidl:fuchsia.hwinfo.mock_rust",
    "//sdk/fidl/fuchsia.hwinfo:fuchsia.hwinfo_rust",
    "//src/lib/diagnostics/inspect/runtime/rust",
    "//src/lib/diagnostics/inspect/rust",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:lazy_static",
    "//third_party/rust_crates:tracing",
  ]

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

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

fuchsia_package("package") {
  testonly = true
  package_name = "hwinfo-mock"
  deps = [ ":component" ]
}
