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

group("tests") {
  testonly = true
  deps = [ ":recovery_integration_test" ]
}

rustc_test("bin") {
  name = "recovery_integration_test"
  edition = "2021"

  deps = [
    "//sdk/fidl/fuchsia.logger:fuchsia.logger_rust",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-component-test",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
  ]

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

fuchsia_test_component("recovery_integration_test_component") {
  component_name = "recovery_integration_test"
  manifest = "meta/recovery_integration_test.cml"
  deps = [
    ":bin",
    "//src/recovery/system:component",
    "//src/recovery/system:values_from_gn",
  ]
}

fuchsia_test_package("recovery_integration_test") {
  test_components = [ ":recovery_integration_test_component" ]
  test_specs = {
    environments = [ nuc_env ]
  }
}
