# 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_library.gni")
import("//build/rust/rustc_test.gni")

rustc_library("fuchsia-pkg-testing") {
  testonly = true
  version = "0.1.0"
  edition = "2021"
  with_unit_tests = true

  deps = [
    "//sdk/fidl/fuchsia.io:fuchsia.io_rust",
    "//src/lib/diagnostics/hierarchy/rust",
    "//src/lib/diagnostics/reader/rust",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-fs",
    "//src/lib/fuchsia-hyper",
    "//src/lib/fuchsia-sync",
    "//src/lib/fuchsia-url",
    "//src/lib/http-sse:http_sse",
    "//src/lib/versioning/version-history/rust:version-history",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/storage/lib/delivery_blob",
    "//src/sys/lib/fidl-fuchsia-pkg-ext",
    "//src/sys/pkg/lib/blobfs",
    "//src/sys/pkg/lib/epoch",
    "//src/sys/pkg/lib/far/rust:fuchsia-archive",
    "//src/sys/pkg/lib/fuchsia-hash",
    "//src/sys/pkg/lib/fuchsia-merkle",
    "//src/sys/pkg/lib/fuchsia-pkg",
    "//src/sys/pkg/lib/fuchsia-repo",
    "//src/sys/pkg/lib/system-image",
    "//src/sys/pkg/lib/update-package",
    "//src/sys/pkg/testing/blobfs-ramdisk",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:camino",
    "//third_party/rust_crates:chrono",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:hex",
    "//third_party/rust_crates:http",
    "//third_party/rust_crates:hyper",
    "//third_party/rust_crates:maybe-owned",
    "//third_party/rust_crates:rustls",
    "//third_party/rust_crates:serde",
    "//third_party/rust_crates:serde_json",
    "//third_party/rust_crates:sha2",
    "//third_party/rust_crates:tempfile",
    "//third_party/rust_crates:tokio",
    "//third_party/rust_crates:tokio-rustls",
    "//third_party/rust_crates:tracing",
    "//third_party/rust_crates:tuf",
    "//third_party/rust_crates:walkdir",
  ]

  test_deps = [
    "//src/storage/lib/delivery_blob",
    "//third_party/rust_crates:assert_matches",
  ]

  sources = [
    "src/blobfs.rs",
    "src/inspect.rs",
    "src/lib.rs",
    "src/package.rs",
    "src/repo.rs",
    "src/serve.rs",
    "src/serve/responder.rs",
    "src/system_image.rs",
    "src/update_package.rs",
  ]

  inputs = [
    "certs/wildcard.fuchsia-updates.googleusercontent.com.rsa",
    "certs/test.fuchsia.com.rsa",
    "certs/test.fuchsia.com.certchain",
    "certs/wildcard.fuchsia-updates.googleusercontent.com.certchain",
  ]
  configs += [ "//build/config/rust/lints:clippy_warn_all" ]
}

fuchsia_unittest_package("fuchsia-pkg-testing-tests") {
  manifest = "meta/fuchsia-pkg-testing-tests.cml"
  deps = [
    ":fuchsia-pkg-testing_test",
    "//src/connectivity/network:netstack-for-tests",
    "//src/connectivity/network/dns:component",
    "//src/storage/tools/blobfs-compression",
  ]
}

group("tests") {
  testonly = true
  public_deps = [ ":fuchsia-pkg-testing-tests" ]
}
