# Copyright 2019 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")
import("//build/testing/environments.gni")

rustc_binary("bin") {
  name = "fake_factory_items"
  edition = "2021"

  deps = [
    "//sdk/fidl/fuchsia.boot:fuchsia.boot_rust",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:serde",
    "//third_party/rust_crates:serde_json",
  ]

  sources = [
    "src/config.rs",
    "src/fake_factory_items_server.rs",
    "src/main.rs",
  ]
}

fuchsia_component("fake_factory_items_comp") {
  component_name = "fake_factory_items"
  manifest = "meta/fake_factory_items.cml"
  deps = [ ":bin" ]
}

fuchsia_package("fake_factory_items") {
  deps = [ ":fake_factory_items_comp" ]
}

rustc_test("fake_factory_items_test") {
  edition = "2021"
  source_root = "tests/fake_factory_items_test.rs"

  deps = [
    "//sdk/fidl/fuchsia.boot:fuchsia.boot_rust",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//third_party/rust_crates:anyhow",
  ]

  sources = [ "tests/fake_factory_items_test.rs" ]
}

resource("testdata") {
  testonly = true
  sources = [
    "testdata/empty",
    "testdata/fake_factory_items.json",
    "testdata/random1",
    "testdata/random2",
  ]
  outputs = [ "data/{{source_file_part}}" ]
}

fuchsia_test_component("fake_factory_items_test_comp") {
  component_name = "fake_factory_items_test"
  manifest = "meta/fake_factory_items_test.cml"
  deps = [ ":fake_factory_items_test" ]
}

fuchsia_test_package("fake_factory_items_tests") {
  test_components = [ ":fake_factory_items_test_comp" ]
  deps = [
    ":fake_factory_items_comp",
    ":testdata",
  ]
}
