# Copyright 2020 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can
# found in the LICENSE file.

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

rustc_test("driver") {
  name = "isolated-ota-integration-test"
  edition = "2018"

  deps = [
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//sdk/fidl/fuchsia.paver:fuchsia.paver-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-url",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/sys/lib/fidl-fuchsia-pkg-ext",
    "//src/sys/pkg/lib/fuchsia-merkle",
    "//src/sys/pkg/lib/fuchsia-pkg-testing",
    "//src/sys/pkg/lib/isolated-ota",
    "//src/sys/pkg/testing/blobfs-ramdisk",
    "//src/sys/pkg/testing/mock-omaha-server",
    "//src/sys/pkg/testing/mock-paver",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:http",
    "//third_party/rust_crates:itertools",
    "//third_party/rust_crates:matches",
    "//third_party/rust_crates:serde_json",
    "//third_party/rust_crates:tempfile",
  ]

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

fuchsia_component("isolated-ota-integration-test") {
  testonly = true
  manifest = "meta/isolated-ota-integration-test.cmx"
  deps = [ ":driver" ]
}

fuchsia_test_package("isolated-ota-integration-tests") {
  test_components = [ ":isolated-ota-integration-test" ]
  deps = [
    "//src/storage/bin/blobfs",
    "//src/sys/pkg/bin/pkgfs:pkgsvr",
    "//src/sys/pkg/bin/pm:pm_bin",
    "//src/sys/pkg/lib/fuchsia-pkg-testing/certs",
    "//src/sys/pkg/tests/pkg-resolver:empty-repo",
  ]
}

group("tests") {
  testonly = true
  public_deps = [
    ":isolated-ota-integration-tests",
    "//src/lib/storage/ramdevice_client:ramdisk-isolated-devmgr",
    "//src/sys/pkg/lib/isolated-swd:isolated-swd-components",
  ]
}
