|  | # Copyright 2021 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/host.gni") | 
|  | import("//build/rust/rustc_binary.gni") | 
|  |  | 
|  | if (is_host) { | 
|  | prebuilt_cargo_outdated = "//prebuilt/third_party/rust_cargo_outdated/${host_platform}/cargo-outdated" | 
|  | test_output_dir = "$root_out_dir/test_data/tools/update_crates/tests" | 
|  | update_crates_path = "$host_tools_dir/update_crates" | 
|  |  | 
|  | host_test("update_crates_test_with_local_registry") { | 
|  | binary_path = "$root_out_dir/update_crates_test_bin" | 
|  |  | 
|  | # host tests are invoked with cwd=root_build_dir, so rebase all paths relative to that | 
|  | args = [ | 
|  | "--test-base-dir", | 
|  | rebase_path(test_output_dir, root_build_dir), | 
|  | "--rust-bin-dir", | 
|  | "$out_rustc_prefix/bin", | 
|  | "--cargo-outdated", | 
|  | rebase_path(prebuilt_cargo_outdated, root_build_dir), | 
|  | "--update-crates", | 
|  | rebase_path(update_crates_path, root_build_dir), | 
|  | ] | 
|  |  | 
|  | deps = [ | 
|  | ":update_crates_cargo_outdated", | 
|  | ":update_crates_for_test", | 
|  | ":update_crates_test_bin", | 
|  | ":uses_local_registry_test_data", | 
|  | "//build/rust:prebuilt_toolchain_host_test_data", | 
|  | ] | 
|  | } | 
|  |  | 
|  | rustc_binary("update_crates_test_bin") { | 
|  | edition = "2021" | 
|  | source_root = "with_local_registry.rs" | 
|  | sources = [ "with_local_registry.rs" ] | 
|  |  | 
|  | deps = [ | 
|  | "//third_party/rust_crates:argh", | 
|  | "//third_party/rust_crates:hex", | 
|  | "//third_party/rust_crates:once_cell", | 
|  | "//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:toml", | 
|  | "//third_party/rust_crates:walkdir", | 
|  | ] | 
|  | } | 
|  |  | 
|  | host_test_data("update_crates_cargo_outdated") { | 
|  | sources = [ prebuilt_cargo_outdated ] | 
|  | } | 
|  |  | 
|  | host_test_data("update_crates_for_test") { | 
|  | sources = [ update_crates_path ] | 
|  | deps = [ "..:install_update_crates" ] | 
|  | } | 
|  |  | 
|  | host_test_data("uses_local_registry_test_data") { | 
|  | sources = [ | 
|  | "local_registry_sources/test_dep_a_1/Cargo.toml", | 
|  | "local_registry_sources/test_dep_a_1/src/lib.rs", | 
|  | "local_registry_sources/test_dep_a_2/Cargo.toml", | 
|  | "local_registry_sources/test_dep_a_2/src/lib.rs", | 
|  | "local_registry_sources/test_dep_b_1/Cargo.toml", | 
|  | "local_registry_sources/test_dep_b_1/src/lib.rs", | 
|  | "local_registry_sources/test_dep_b_2/Cargo.toml", | 
|  | "local_registry_sources/test_dep_b_2/src/lib.rs", | 
|  | "local_registry_sources/test_dep_c_1/Cargo.toml", | 
|  | "local_registry_sources/test_dep_c_1/src/lib.rs", | 
|  | "local_registry_sources/test_dep_c_2/Cargo.toml", | 
|  | "local_registry_sources/test_dep_c_2/src/lib.rs", | 
|  | "uses_local_registry/Cargo.expected.toml", | 
|  | "uses_local_registry/Cargo.toml", | 
|  | "uses_local_registry/outdated.toml", | 
|  | "uses_local_registry/src/lib.rs", | 
|  | ] | 
|  | outputs = [ "$test_output_dir/{{source_target_relative}}" ] | 
|  | } | 
|  | } | 
|  |  | 
|  | group("tests") { | 
|  | testonly = true | 
|  | deps = [ ":update_crates_test_with_local_registry($host_toolchain)" ] | 
|  | } |