From d99151ac60d9065d2bbc9dbb51f23fdf75c36955 Mon Sep 17 00:00:00 2001 From: Arlo Siemsen Date: Thu, 13 Oct 2022 11:45:05 -0500 Subject: [PATCH] Stabilize sparse-registry --- src/cargo/core/features.rs | 12 +- src/cargo/sources/registry/http_remote.rs | 3 - src/doc/src/reference/config.md | 7 + src/doc/src/reference/registries.md | 20 +- src/doc/src/reference/unstable.md | 14 - tests/testsuite/alt_registry.rs | 4 +- tests/testsuite/registry.rs | 496 ++++++++++------------ 7 files changed, 262 insertions(+), 294 deletions(-) diff --git a/src/cargo/core/features.rs b/src/cargo/core/features.rs index 020485355cec..28fc5103f22b 100644 --- a/src/cargo/core/features.rs +++ b/src/cargo/core/features.rs @@ -681,7 +681,7 @@ unstable_cli_options!( no_index_update: bool = ("Do not update the registry index even if the cache is outdated"), panic_abort_tests: bool = ("Enable support to run tests with -Cpanic=abort"), host_config: bool = ("Enable the [host] section in the .cargo/config.toml file"), - sparse_registry: bool = ("Support plain-HTTP-based crate registries"), + sparse_registry: bool = ("Use the sparse protocol when accessing crates.io"), target_applies_to_host: bool = ("Enable the `target-applies-to-host` key in the .cargo/config.toml file"), rustdoc_map: bool = ("Allow passing external documentation mappings to rustdoc"), separate_nightlies: bool = (HIDDEN), @@ -749,6 +749,11 @@ const STABILIZED_TIMINGS: &str = "The -Ztimings option has been stabilized as -- const STABILISED_MULTITARGET: &str = "Multiple `--target` options are now always available."; +const STABILISED_SPARSE_REGISTRY: &str = "This flag currently still sets the default protocol\ + to `sparse` when accessing crates.io. However, this will be removed in the future. \n\ + The stable equivalent is to set the config value `registries.crates-io.protocol = 'sparse'`\n\ + or environment variable `CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse`"; + fn deserialize_build_std<'de, D>(deserializer: D) -> Result>, D::Error> where D: serde::Deserializer<'de>, @@ -955,7 +960,10 @@ impl CliUnstable { "multitarget" => stabilized_warn(k, "1.64", STABILISED_MULTITARGET), "rustdoc-map" => self.rustdoc_map = parse_empty(k, v)?, "terminal-width" => self.terminal_width = Some(parse_usize_opt(v)?), - "sparse-registry" => self.sparse_registry = parse_empty(k, v)?, + "sparse-registry" => { + stabilized_warn(k, "1.66", STABILISED_SPARSE_REGISTRY); + self.sparse_registry = parse_empty(k, v)?; + } "namespaced-features" => stabilized_warn(k, "1.60", STABILISED_NAMESPACED_FEATURES), "weak-dep-features" => stabilized_warn(k, "1.60", STABILIZED_WEAK_DEP_FEATURES), "credential-process" => self.credential_process = parse_empty(k, v)?, diff --git a/src/cargo/sources/registry/http_remote.rs b/src/cargo/sources/registry/http_remote.rs index c5ec79f22a7c..46be2094d96c 100644 --- a/src/cargo/sources/registry/http_remote.rs +++ b/src/cargo/sources/registry/http_remote.rs @@ -131,9 +131,6 @@ impl<'cfg> HttpRegistry<'cfg> { config: &'cfg Config, name: &str, ) -> CargoResult> { - if !config.cli_unstable().sparse_registry { - anyhow::bail!("usage of sparse registries requires `-Z sparse-registry`"); - } let url = source_id.url().as_str(); // Ensure the url ends with a slash so we can concatenate paths. if !url.ends_with('/') { diff --git a/src/doc/src/reference/config.md b/src/doc/src/reference/config.md index f60c185e9165..a659548d1603 100644 --- a/src/doc/src/reference/config.md +++ b/src/doc/src/reference/config.md @@ -891,6 +891,13 @@ commands like [`cargo publish`] that require authentication. Can be overridden with the `--token` command-line option. +##### `registries.crates-io.protocol` +* Type: string +* Default: `git` +* Environment: `CARGO_REGISTRIES_CRATES_IO_PROTOCOL` + +Specifies the protocol used to access crates.io. Allowed values are `git` or `sparse`. + #### `[registry]` The `[registry]` table controls the default registry used when one is not diff --git a/src/doc/src/reference/registries.md b/src/doc/src/reference/registries.md index 0289524b3d72..6948a1fd1b68 100644 --- a/src/doc/src/reference/registries.md +++ b/src/doc/src/reference/registries.md @@ -19,7 +19,9 @@ table has a key for each registry, for example: my-registry = { index = "https://my-intranet:8080/git/index" } ``` -The `index` key should be a URL to a git repository with the registry's index. +The `index` key should be a URL to a git repository with the registry's index or a +Cargo sparse registry URL with the `sparse+` prefix. + A crate can then depend on a crate from another registry by specifying the `registry` key and a value of the registry's name in that dependency's entry in `Cargo.toml`: @@ -45,6 +47,21 @@ CARGO_REGISTRIES_MY_REGISTRY_INDEX=https://my-intranet:8080/git/index > Note: [crates.io] does not accept packages that depend on crates from other > registries. +### Sparse Registries +Cargo supports two remote registry protocols: `git` and `sparse`. The `git` protocol +stores index metadata in a git repository and requires Cargo to clone the entire repo. + +The `sparse` protocol fetches individual metadata files using plain HTTP requests. +Since Cargo only downloads the metadata for relevant crates, the `sparse` protocol can +save significant time and bandwidth. + +Cargo uses the `sparse` protocol for registry URLs that start with the `sparse+` prefix. + +The format of a `sparse` index is identical to a checkout of a `git` index. + +The protocol used for accessing crates.io can be set via the [`registries.crates-io.protocol`] +config key. + ### Publishing to an Alternate Registry If the registry supports web API access, then packages can be published @@ -660,5 +677,6 @@ browser to log in and retrieve an API token. [`cargo publish`]: ../commands/cargo-publish.md [alphanumeric]: ../../std/primitive.char.html#method.is_alphanumeric [config]: config.md +[`registries.crates-io.protocol`]: config.md#registriescrates-ioprotocol [crates.io]: https://crates.io/ [publishing documentation]: publishing.md#cargo-owner diff --git a/src/doc/src/reference/unstable.md b/src/doc/src/reference/unstable.md index f97b1f93c50d..d952463f851e 100644 --- a/src/doc/src/reference/unstable.md +++ b/src/doc/src/reference/unstable.md @@ -98,7 +98,6 @@ Each new feature described below should explain how to use it. * Registries * [credential-process](#credential-process) — Adds support for fetching registry tokens from an external authentication program. * [`cargo logout`](#cargo-logout) — Adds the `logout` command to remove the currently saved registry token. - * [sparse-registry](#sparse-registry) — Adds support for fetching from static-file HTTP registries (`sparse+`) ### allow-features @@ -828,19 +827,6 @@ fn main() { } ``` -### sparse-registry -* Tracking Issue: [9069](https://github.com/rust-lang/cargo/issues/9069) -* RFC: [#2789](https://github.com/rust-lang/rfcs/pull/2789) - -The `sparse-registry` feature allows cargo to interact with remote registries served -over plain HTTP rather than git. These registries can be identified by urls starting with -`sparse+http://` or `sparse+https://`. - -When fetching index metadata over HTTP, Cargo only downloads the metadata for relevant -crates, which can save significant time and bandwidth. - -The format of the sparse index is identical to a checkout of a git-based index. - ### credential-process * Tracking Issue: [#8933](https://github.com/rust-lang/cargo/issues/8933) * RFC: [#2730](https://github.com/rust-lang/rfcs/pull/2730) diff --git a/tests/testsuite/alt_registry.rs b/tests/testsuite/alt_registry.rs index cec72d3184b0..38dd139efec2 100644 --- a/tests/testsuite/alt_registry.rs +++ b/tests/testsuite/alt_registry.rs @@ -1314,9 +1314,7 @@ fn sparse_lockfile() { .file("src/lib.rs", "") .build(); - p.cargo("-Zsparse-registry generate-lockfile") - .masquerade_as_nightly_cargo(&["sparse-registry"]) - .run(); + p.cargo("generate-lockfile").run(); assert_match_exact( &p.read_lockfile(), r#"# This file is automatically @generated by Cargo. diff --git a/tests/testsuite/registry.rs b/tests/testsuite/registry.rs index 0a3d9b6629b0..53abaa2248a3 100644 --- a/tests/testsuite/registry.rs +++ b/tests/testsuite/registry.rs @@ -6,24 +6,13 @@ use cargo_test_support::paths::{self, CargoPathExt}; use cargo_test_support::registry::{ self, registry_path, Dependency, Package, RegistryBuilder, TestRegistry, }; -use cargo_test_support::{basic_manifest, project, Execs, Project}; +use cargo_test_support::{basic_manifest, project}; use cargo_test_support::{git, install::cargo_home, t}; use cargo_util::paths::remove_dir_all; use std::fs::{self, File}; use std::path::Path; use std::sync::Mutex; -fn cargo_http(p: &Project, s: &str) -> Execs { - let mut e = p.cargo(s); - e.arg("-Zsparse-registry") - .masquerade_as_nightly_cargo(&["sparse-registry"]); - e -} - -fn cargo_stable(p: &Project, s: &str) -> Execs { - p.cargo(s) -} - fn setup_http() -> TestRegistry { RegistryBuilder::new().http_index().build() } @@ -31,15 +20,15 @@ fn setup_http() -> TestRegistry { #[cargo_test] fn simple_http() { let _server = setup_http(); - simple(cargo_http); + simple(); } #[cargo_test] fn simple_git() { - simple(cargo_stable); + simple(); } -fn simple(cargo: fn(&Project, &str) -> Execs) { +fn simple() { let p = project() .file( "Cargo.toml", @@ -58,7 +47,7 @@ fn simple(cargo: fn(&Project, &str) -> Execs) { Package::new("bar", "0.0.1").publish(); - cargo(&p, "build") + p.cargo("build") .with_stderr( "\ [UPDATING] `dummy-registry` index @@ -71,12 +60,12 @@ fn simple(cargo: fn(&Project, &str) -> Execs) { ) .run(); - cargo(&p, "clean").run(); + p.cargo("clean").run(); assert!(paths::home().join(".cargo/registry/CACHEDIR.TAG").is_file()); // Don't download a second time - cargo(&p, "build") + p.cargo("build") .with_stderr( "\ [COMPILING] bar v0.0.1 @@ -90,15 +79,15 @@ fn simple(cargo: fn(&Project, &str) -> Execs) { #[cargo_test] fn deps_http() { let _server = setup_http(); - deps(cargo_http); + deps(); } #[cargo_test] fn deps_git() { - deps(cargo_stable); + deps(); } -fn deps(cargo: fn(&Project, &str) -> Execs) { +fn deps() { let p = project() .file( "Cargo.toml", @@ -118,7 +107,7 @@ fn deps(cargo: fn(&Project, &str) -> Execs) { Package::new("baz", "0.0.1").publish(); Package::new("bar", "0.0.1").dep("baz", "*").publish(); - cargo(&p, "build") + p.cargo("build") .with_stderr( "\ [UPDATING] `dummy-registry` index @@ -139,15 +128,15 @@ fn deps(cargo: fn(&Project, &str) -> Execs) { #[cargo_test] fn nonexistent_http() { let _server = setup_http(); - nonexistent(cargo_http); + nonexistent(); } #[cargo_test] fn nonexistent_git() { - nonexistent(cargo_stable); + nonexistent(); } -fn nonexistent(cargo: fn(&Project, &str) -> Execs) { +fn nonexistent() { Package::new("init", "0.0.1").publish(); let p = project() @@ -166,7 +155,7 @@ fn nonexistent(cargo: fn(&Project, &str) -> Execs) { .file("src/main.rs", "fn main() {}") .build(); - cargo(&p, "build") + p.cargo("build") .with_status(101) .with_stderr( "\ @@ -182,15 +171,15 @@ required by package `foo v0.0.1 ([..])` #[cargo_test] fn wrong_case_http() { let _server = setup_http(); - wrong_case(cargo_http); + wrong_case(); } #[cargo_test] fn wrong_case_git() { - wrong_case(cargo_stable); + wrong_case(); } -fn wrong_case(cargo: fn(&Project, &str) -> Execs) { +fn wrong_case() { Package::new("init", "0.0.1").publish(); let p = project() @@ -210,7 +199,7 @@ fn wrong_case(cargo: fn(&Project, &str) -> Execs) { .build(); // #5678 to make this work - cargo(&p, "build") + p.cargo("build") .with_status(101) .with_stderr( "\ @@ -228,15 +217,15 @@ required by package `foo v0.0.1 ([..])` #[cargo_test] fn mis_hyphenated_http() { let _server = setup_http(); - mis_hyphenated(cargo_http); + mis_hyphenated(); } #[cargo_test] fn mis_hyphenated_git() { - mis_hyphenated(cargo_stable); + mis_hyphenated(); } -fn mis_hyphenated(cargo: fn(&Project, &str) -> Execs) { +fn mis_hyphenated() { Package::new("mis-hyphenated", "0.0.1").publish(); let p = project() @@ -256,7 +245,7 @@ fn mis_hyphenated(cargo: fn(&Project, &str) -> Execs) { .build(); // #2775 to make this work - cargo(&p, "build") + p.cargo("build") .with_status(101) .with_stderr( "\ @@ -274,15 +263,15 @@ required by package `foo v0.0.1 ([..])` #[cargo_test] fn wrong_version_http() { let _server = setup_http(); - wrong_version(cargo_http); + wrong_version(); } #[cargo_test] fn wrong_version_git() { - wrong_version(cargo_stable); + wrong_version(); } -fn wrong_version(cargo: fn(&Project, &str) -> Execs) { +fn wrong_version() { let p = project() .file( "Cargo.toml", @@ -302,7 +291,7 @@ fn wrong_version(cargo: fn(&Project, &str) -> Execs) { Package::new("foo", "0.0.1").publish(); Package::new("foo", "0.0.2").publish(); - cargo(&p, "build") + p.cargo("build") .with_status(101) .with_stderr_contains( "\ @@ -317,7 +306,7 @@ required by package `foo v0.0.1 ([..])` Package::new("foo", "0.0.3").publish(); Package::new("foo", "0.0.4").publish(); - cargo(&p, "build") + p.cargo("build") .with_status(101) .with_stderr_contains( "\ @@ -333,15 +322,15 @@ required by package `foo v0.0.1 ([..])` #[cargo_test] fn bad_cksum_http() { let _server = setup_http(); - bad_cksum(cargo_http); + bad_cksum(); } #[cargo_test] fn bad_cksum_git() { - bad_cksum(cargo_stable); + bad_cksum(); } -fn bad_cksum(cargo: fn(&Project, &str) -> Execs) { +fn bad_cksum() { let p = project() .file( "Cargo.toml", @@ -362,7 +351,7 @@ fn bad_cksum(cargo: fn(&Project, &str) -> Execs) { pkg.publish(); t!(File::create(&pkg.archive_dst())); - cargo(&p, "build -v") + p.cargo("build -v") .with_status(101) .with_stderr( "\ @@ -381,15 +370,15 @@ Caused by: #[cargo_test] fn update_registry_http() { let _server = setup_http(); - update_registry(cargo_http); + update_registry(); } #[cargo_test] fn update_registry_git() { - update_registry(cargo_stable); + update_registry(); } -fn update_registry(cargo: fn(&Project, &str) -> Execs) { +fn update_registry() { Package::new("init", "0.0.1").publish(); let p = project() @@ -408,7 +397,7 @@ fn update_registry(cargo: fn(&Project, &str) -> Execs) { .file("src/main.rs", "fn main() {}") .build(); - cargo(&p, "build") + p.cargo("build") .with_status(101) .with_stderr_contains( "\ @@ -421,7 +410,7 @@ required by package `foo v0.0.1 ([..])` Package::new("notyet", "0.0.1").publish(); - cargo(&p, "build") + p.cargo("build") .with_stderr( "\ [UPDATING] `dummy-registry` index @@ -438,15 +427,15 @@ required by package `foo v0.0.1 ([..])` #[cargo_test] fn package_with_path_deps_http() { let _server = setup_http(); - package_with_path_deps(cargo_http); + package_with_path_deps(); } #[cargo_test] fn package_with_path_deps_git() { - package_with_path_deps(cargo_stable); + package_with_path_deps(); } -fn package_with_path_deps(cargo: fn(&Project, &str) -> Execs) { +fn package_with_path_deps() { Package::new("init", "0.0.1").publish(); let p = project() @@ -471,7 +460,7 @@ fn package_with_path_deps(cargo: fn(&Project, &str) -> Execs) { .file("notyet/src/lib.rs", "") .build(); - cargo(&p, "package") + p.cargo("package") .with_status(101) .with_stderr_contains( "\ @@ -489,7 +478,7 @@ Caused by: Package::new("notyet", "0.0.1").publish(); - cargo(&p, "package") + p.cargo("package") .with_stderr( "\ [PACKAGING] foo v0.0.1 ([CWD]) @@ -508,15 +497,15 @@ Caused by: #[cargo_test] fn lockfile_locks_http() { let _server = setup_http(); - lockfile_locks(cargo_http); + lockfile_locks(); } #[cargo_test] fn lockfile_locks_git() { - lockfile_locks(cargo_stable); + lockfile_locks(); } -fn lockfile_locks(cargo: fn(&Project, &str) -> Execs) { +fn lockfile_locks() { let p = project() .file( "Cargo.toml", @@ -535,7 +524,7 @@ fn lockfile_locks(cargo: fn(&Project, &str) -> Execs) { Package::new("bar", "0.0.1").publish(); - cargo(&p, "build") + p.cargo("build") .with_stderr( "\ [UPDATING] `[..]` index @@ -551,21 +540,21 @@ fn lockfile_locks(cargo: fn(&Project, &str) -> Execs) { p.root().move_into_the_past(); Package::new("bar", "0.0.2").publish(); - cargo(&p, "build").with_stdout("").run(); + p.cargo("build").with_stdout("").run(); } #[cargo_test] fn lockfile_locks_transitively_http() { let _server = setup_http(); - lockfile_locks_transitively(cargo_http); + lockfile_locks_transitively(); } #[cargo_test] fn lockfile_locks_transitively_git() { - lockfile_locks_transitively(cargo_stable); + lockfile_locks_transitively(); } -fn lockfile_locks_transitively(cargo: fn(&Project, &str) -> Execs) { +fn lockfile_locks_transitively() { let p = project() .file( "Cargo.toml", @@ -585,7 +574,7 @@ fn lockfile_locks_transitively(cargo: fn(&Project, &str) -> Execs) { Package::new("baz", "0.0.1").publish(); Package::new("bar", "0.0.1").dep("baz", "*").publish(); - cargo(&p, "build") + p.cargo("build") .with_stderr( "\ [UPDATING] `[..]` index @@ -604,21 +593,21 @@ fn lockfile_locks_transitively(cargo: fn(&Project, &str) -> Execs) { Package::new("baz", "0.0.2").publish(); Package::new("bar", "0.0.2").dep("baz", "*").publish(); - cargo(&p, "build").with_stdout("").run(); + p.cargo("build").with_stdout("").run(); } #[cargo_test] fn yanks_are_not_used_http() { let _server = setup_http(); - yanks_are_not_used(cargo_http); + yanks_are_not_used(); } #[cargo_test] fn yanks_are_not_used_git() { - yanks_are_not_used(cargo_stable); + yanks_are_not_used(); } -fn yanks_are_not_used(cargo: fn(&Project, &str) -> Execs) { +fn yanks_are_not_used() { let p = project() .file( "Cargo.toml", @@ -643,7 +632,7 @@ fn yanks_are_not_used(cargo: fn(&Project, &str) -> Execs) { .yanked(true) .publish(); - cargo(&p, "build") + p.cargo("build") .with_stderr( "\ [UPDATING] `[..]` index @@ -662,15 +651,15 @@ fn yanks_are_not_used(cargo: fn(&Project, &str) -> Execs) { #[cargo_test] fn relying_on_a_yank_is_bad_http() { let _server = setup_http(); - relying_on_a_yank_is_bad(cargo_http); + relying_on_a_yank_is_bad(); } #[cargo_test] fn relying_on_a_yank_is_bad_git() { - relying_on_a_yank_is_bad(cargo_stable); + relying_on_a_yank_is_bad(); } -fn relying_on_a_yank_is_bad(cargo: fn(&Project, &str) -> Execs) { +fn relying_on_a_yank_is_bad() { let p = project() .file( "Cargo.toml", @@ -691,7 +680,7 @@ fn relying_on_a_yank_is_bad(cargo: fn(&Project, &str) -> Execs) { Package::new("baz", "0.0.2").yanked(true).publish(); Package::new("bar", "0.0.1").dep("baz", "=0.0.2").publish(); - cargo(&p, "build") + p.cargo("build") .with_status(101) .with_stderr_contains( "\ @@ -708,15 +697,15 @@ required by package `bar v0.0.1` #[cargo_test] fn yanks_in_lockfiles_are_ok_http() { let _server = setup_http(); - yanks_in_lockfiles_are_ok(cargo_http); + yanks_in_lockfiles_are_ok(); } #[cargo_test] fn yanks_in_lockfiles_are_ok_git() { - yanks_in_lockfiles_are_ok(cargo_stable); + yanks_in_lockfiles_are_ok(); } -fn yanks_in_lockfiles_are_ok(cargo: fn(&Project, &str) -> Execs) { +fn yanks_in_lockfiles_are_ok() { let p = project() .file( "Cargo.toml", @@ -735,15 +724,15 @@ fn yanks_in_lockfiles_are_ok(cargo: fn(&Project, &str) -> Execs) { Package::new("bar", "0.0.1").publish(); - cargo(&p, "build").run(); + p.cargo("build").run(); registry_path().join("3").rm_rf(); Package::new("bar", "0.0.1").yanked(true).publish(); - cargo(&p, "build").with_stdout("").run(); + p.cargo("build").with_stdout("").run(); - cargo(&p, "update") + p.cargo("update") .with_status(101) .with_stderr_contains( "\ @@ -758,15 +747,15 @@ required by package `foo v0.0.1 ([..])` #[cargo_test] fn yanks_in_lockfiles_are_ok_for_other_update_http() { let _server = setup_http(); - yanks_in_lockfiles_are_ok_for_other_update(cargo_http); + yanks_in_lockfiles_are_ok_for_other_update(); } #[cargo_test] fn yanks_in_lockfiles_are_ok_for_other_update_git() { - yanks_in_lockfiles_are_ok_for_other_update(cargo_stable); + yanks_in_lockfiles_are_ok_for_other_update(); } -fn yanks_in_lockfiles_are_ok_for_other_update(cargo: fn(&Project, &str) -> Execs) { +fn yanks_in_lockfiles_are_ok_for_other_update() { let p = project() .file( "Cargo.toml", @@ -787,18 +776,18 @@ fn yanks_in_lockfiles_are_ok_for_other_update(cargo: fn(&Project, &str) -> Execs Package::new("bar", "0.0.1").publish(); Package::new("baz", "0.0.1").publish(); - cargo(&p, "build").run(); + p.cargo("build").run(); registry_path().join("3").rm_rf(); Package::new("bar", "0.0.1").yanked(true).publish(); Package::new("baz", "0.0.1").publish(); - cargo(&p, "build").with_stdout("").run(); + p.cargo("build").with_stdout("").run(); Package::new("baz", "0.0.2").publish(); - cargo(&p, "update") + p.cargo("update") .with_status(101) .with_stderr_contains( "\ @@ -809,7 +798,7 @@ required by package `foo v0.0.1 ([..])` ) .run(); - cargo(&p, "update -p baz") + p.cargo("update -p baz") .with_stderr_contains( "\ [UPDATING] `[..]` index @@ -822,15 +811,15 @@ required by package `foo v0.0.1 ([..])` #[cargo_test] fn yanks_in_lockfiles_are_ok_with_new_dep_http() { let _server = setup_http(); - yanks_in_lockfiles_are_ok_with_new_dep(cargo_http); + yanks_in_lockfiles_are_ok_with_new_dep(); } #[cargo_test] fn yanks_in_lockfiles_are_ok_with_new_dep_git() { - yanks_in_lockfiles_are_ok_with_new_dep(cargo_stable); + yanks_in_lockfiles_are_ok_with_new_dep(); } -fn yanks_in_lockfiles_are_ok_with_new_dep(cargo: fn(&Project, &str) -> Execs) { +fn yanks_in_lockfiles_are_ok_with_new_dep() { let p = project() .file( "Cargo.toml", @@ -849,7 +838,7 @@ fn yanks_in_lockfiles_are_ok_with_new_dep(cargo: fn(&Project, &str) -> Execs) { Package::new("bar", "0.0.1").publish(); - cargo(&p, "build").run(); + p.cargo("build").run(); registry_path().join("3").rm_rf(); @@ -870,21 +859,21 @@ fn yanks_in_lockfiles_are_ok_with_new_dep(cargo: fn(&Project, &str) -> Execs) { "#, ); - cargo(&p, "build").with_stdout("").run(); + p.cargo("build").with_stdout("").run(); } #[cargo_test] fn update_with_lockfile_if_packages_missing_http() { let _server = setup_http(); - update_with_lockfile_if_packages_missing(cargo_http); + update_with_lockfile_if_packages_missing(); } #[cargo_test] fn update_with_lockfile_if_packages_missing_git() { - update_with_lockfile_if_packages_missing(cargo_stable); + update_with_lockfile_if_packages_missing(); } -fn update_with_lockfile_if_packages_missing(cargo: fn(&Project, &str) -> Execs) { +fn update_with_lockfile_if_packages_missing() { let p = project() .file( "Cargo.toml", @@ -902,11 +891,11 @@ fn update_with_lockfile_if_packages_missing(cargo: fn(&Project, &str) -> Execs) .build(); Package::new("bar", "0.0.1").publish(); - cargo(&p, "build").run(); + p.cargo("build").run(); p.root().move_into_the_past(); paths::home().join(".cargo/registry").rm_rf(); - cargo(&p, "build") + p.cargo("build") .with_stderr( "\ [UPDATING] `[..]` index @@ -921,15 +910,15 @@ fn update_with_lockfile_if_packages_missing(cargo: fn(&Project, &str) -> Execs) #[cargo_test] fn update_lockfile_http() { let _server = setup_http(); - update_lockfile(cargo_http); + update_lockfile(); } #[cargo_test] fn update_lockfile_git() { - update_lockfile(cargo_stable); + update_lockfile(); } -fn update_lockfile(cargo: fn(&Project, &str) -> Execs) { +fn update_lockfile() { let p = project() .file( "Cargo.toml", @@ -948,13 +937,13 @@ fn update_lockfile(cargo: fn(&Project, &str) -> Execs) { println!("0.0.1"); Package::new("bar", "0.0.1").publish(); - cargo(&p, "build").run(); + p.cargo("build").run(); Package::new("bar", "0.0.2").publish(); Package::new("bar", "0.0.3").publish(); paths::home().join(".cargo/registry").rm_rf(); println!("0.0.2 update"); - cargo(&p, "update -p bar --precise 0.0.2") + p.cargo("update -p bar --precise 0.0.2") .with_stderr( "\ [UPDATING] `[..]` index @@ -964,7 +953,7 @@ fn update_lockfile(cargo: fn(&Project, &str) -> Execs) { .run(); println!("0.0.2 build"); - cargo(&p, "build") + p.cargo("build") .with_stderr( "\ [DOWNLOADING] crates ... @@ -977,7 +966,7 @@ fn update_lockfile(cargo: fn(&Project, &str) -> Execs) { .run(); println!("0.0.3 update"); - cargo(&p, "update -p bar") + p.cargo("update -p bar") .with_stderr( "\ [UPDATING] `[..]` index @@ -987,7 +976,7 @@ fn update_lockfile(cargo: fn(&Project, &str) -> Execs) { .run(); println!("0.0.3 build"); - cargo(&p, "build") + p.cargo("build") .with_stderr( "\ [DOWNLOADING] crates ... @@ -1002,7 +991,7 @@ fn update_lockfile(cargo: fn(&Project, &str) -> Execs) { println!("new dependencies update"); Package::new("bar", "0.0.4").dep("spam", "0.2.5").publish(); Package::new("spam", "0.2.5").publish(); - cargo(&p, "update -p bar") + p.cargo("update -p bar") .with_stderr( "\ [UPDATING] `[..]` index @@ -1014,7 +1003,7 @@ fn update_lockfile(cargo: fn(&Project, &str) -> Execs) { println!("new dependencies update"); Package::new("bar", "0.0.5").publish(); - cargo(&p, "update -p bar") + p.cargo("update -p bar") .with_stderr( "\ [UPDATING] `[..]` index @@ -1028,15 +1017,15 @@ fn update_lockfile(cargo: fn(&Project, &str) -> Execs) { #[cargo_test] fn dev_dependency_not_used_http() { let _server = setup_http(); - dev_dependency_not_used(cargo_http); + dev_dependency_not_used(); } #[cargo_test] fn dev_dependency_not_used_git() { - dev_dependency_not_used(cargo_stable); + dev_dependency_not_used(); } -fn dev_dependency_not_used(cargo: fn(&Project, &str) -> Execs) { +fn dev_dependency_not_used() { let p = project() .file( "Cargo.toml", @@ -1056,7 +1045,7 @@ fn dev_dependency_not_used(cargo: fn(&Project, &str) -> Execs) { Package::new("baz", "0.0.1").publish(); Package::new("bar", "0.0.1").dev_dep("baz", "*").publish(); - cargo(&p, "build") + p.cargo("build") .with_stderr( "\ [UPDATING] `[..]` index @@ -1123,16 +1112,16 @@ fn login_with_token_on_stdin() { #[cargo_test] fn bad_license_file_http() { let registry = setup_http(); - bad_license_file(cargo_http, ®istry); + bad_license_file(®istry); } #[cargo_test] fn bad_license_file_git() { let registry = registry::init(); - bad_license_file(cargo_stable, ®istry); + bad_license_file(®istry); } -fn bad_license_file(cargo: fn(&Project, &str) -> Execs, registry: &TestRegistry) { +fn bad_license_file(registry: &TestRegistry) { Package::new("foo", "1.0.0").publish(); let p = project() .file( @@ -1149,7 +1138,7 @@ fn bad_license_file(cargo: fn(&Project, &str) -> Execs, registry: &TestRegistry) ) .file("src/main.rs", "fn main() {}") .build(); - cargo(&p, "publish -v") + p.cargo("publish -v") .replace_crates_io(registry.index_url()) .with_status(101) .with_stderr_contains("[ERROR] the license file `foo` does not exist") @@ -1159,15 +1148,15 @@ fn bad_license_file(cargo: fn(&Project, &str) -> Execs, registry: &TestRegistry) #[cargo_test] fn updating_a_dep_http() { let _server = setup_http(); - updating_a_dep(cargo_http); + updating_a_dep(); } #[cargo_test] fn updating_a_dep_git() { - updating_a_dep(cargo_stable); + updating_a_dep(); } -fn updating_a_dep(cargo: fn(&Project, &str) -> Execs) { +fn updating_a_dep() { let p = project() .file( "Cargo.toml", @@ -1199,7 +1188,7 @@ fn updating_a_dep(cargo: fn(&Project, &str) -> Execs) { Package::new("bar", "0.0.1").publish(); - cargo(&p, "build") + p.cargo("build") .with_stderr( "\ [UPDATING] `[..]` index @@ -1235,7 +1224,7 @@ fn updating_a_dep(cargo: fn(&Project, &str) -> Execs) { Package::new("bar", "0.1.0").publish(); println!("second"); - cargo(&p, "build") + p.cargo("build") .with_stderr( "\ [UPDATING] `[..]` index @@ -1258,15 +1247,15 @@ fn updating_a_dep(cargo: fn(&Project, &str) -> Execs) { #[cargo_test] fn git_and_registry_dep_http() { let _server = setup_http(); - git_and_registry_dep(cargo_http); + git_and_registry_dep(); } #[cargo_test] fn git_and_registry_dep_git() { - git_and_registry_dep(cargo_stable); + git_and_registry_dep(); } -fn git_and_registry_dep(cargo: fn(&Project, &str) -> Execs) { +fn git_and_registry_dep() { let b = git::repo(&paths::root().join("b")) .file( "Cargo.toml", @@ -1307,7 +1296,7 @@ fn git_and_registry_dep(cargo: fn(&Project, &str) -> Execs) { Package::new("a", "0.0.1").publish(); p.root().move_into_the_past(); - cargo(&p, "build") + p.cargo("build") .with_stderr( "\ [UPDATING] [..] @@ -1324,21 +1313,21 @@ fn git_and_registry_dep(cargo: fn(&Project, &str) -> Execs) { p.root().move_into_the_past(); println!("second"); - cargo(&p, "build").with_stdout("").run(); + p.cargo("build").with_stdout("").run(); } #[cargo_test] fn update_publish_then_update_http() { let _server = setup_http(); - update_publish_then_update(cargo_http); + update_publish_then_update(); } #[cargo_test] fn update_publish_then_update_git() { - update_publish_then_update(cargo_stable); + update_publish_then_update(); } -fn update_publish_then_update(cargo: fn(&Project, &str) -> Execs) { +fn update_publish_then_update() { // First generate a Cargo.lock and a clone of the registry index at the // "head" of the current registry. let p = project() @@ -1357,7 +1346,7 @@ fn update_publish_then_update(cargo: fn(&Project, &str) -> Execs) { .file("src/main.rs", "fn main() {}") .build(); Package::new("a", "0.1.0").publish(); - cargo(&p, "build").run(); + p.cargo("build").run(); // Next, publish a new package and back up the copy of the registry we just // created. @@ -1384,7 +1373,7 @@ fn update_publish_then_update(cargo: fn(&Project, &str) -> Execs) { ) .file("src/main.rs", "fn main() {}") .build(); - cargo(&p2, "build").run(); + p2.cargo("build").run(); registry.rm_rf(); t!(fs::rename(&backup, ®istry)); t!(fs::rename( @@ -1395,7 +1384,7 @@ fn update_publish_then_update(cargo: fn(&Project, &str) -> Execs) { // Finally, build the first project again (with our newer Cargo.lock) which // should force an update of the old registry, download the new crate, and // then build everything again. - cargo(&p, "build") + p.cargo("build") .with_stderr( "\ [UPDATING] [..] @@ -1412,15 +1401,15 @@ fn update_publish_then_update(cargo: fn(&Project, &str) -> Execs) { #[cargo_test] fn fetch_downloads_http() { let _server = setup_http(); - fetch_downloads(cargo_http); + fetch_downloads(); } #[cargo_test] fn fetch_downloads_git() { - fetch_downloads(cargo_stable); + fetch_downloads(); } -fn fetch_downloads(cargo: fn(&Project, &str) -> Execs) { +fn fetch_downloads() { let p = project() .file( "Cargo.toml", @@ -1439,7 +1428,7 @@ fn fetch_downloads(cargo: fn(&Project, &str) -> Execs) { Package::new("a", "0.1.0").publish(); - cargo(&p, "fetch") + p.cargo("fetch") .with_stderr( "\ [UPDATING] `[..]` index @@ -1453,15 +1442,15 @@ fn fetch_downloads(cargo: fn(&Project, &str) -> Execs) { #[cargo_test] fn update_transitive_dependency_http() { let _server = setup_http(); - update_transitive_dependency(cargo_http); + update_transitive_dependency(); } #[cargo_test] fn update_transitive_dependency_git() { - update_transitive_dependency(cargo_stable); + update_transitive_dependency(); } -fn update_transitive_dependency(cargo: fn(&Project, &str) -> Execs) { +fn update_transitive_dependency() { let p = project() .file( "Cargo.toml", @@ -1481,11 +1470,11 @@ fn update_transitive_dependency(cargo: fn(&Project, &str) -> Execs) { Package::new("a", "0.1.0").dep("b", "*").publish(); Package::new("b", "0.1.0").publish(); - cargo(&p, "fetch").run(); + p.cargo("fetch").run(); Package::new("b", "0.1.1").publish(); - cargo(&p, "update -pb") + p.cargo("update -pb") .with_stderr( "\ [UPDATING] `[..]` index @@ -1494,7 +1483,7 @@ fn update_transitive_dependency(cargo: fn(&Project, &str) -> Execs) { ) .run(); - cargo(&p, "build") + p.cargo("build") .with_stderr( "\ [DOWNLOADING] crates ... @@ -1511,15 +1500,15 @@ fn update_transitive_dependency(cargo: fn(&Project, &str) -> Execs) { #[cargo_test] fn update_backtracking_ok_http() { let _server = setup_http(); - update_backtracking_ok(cargo_http); + update_backtracking_ok(); } #[cargo_test] fn update_backtracking_ok_git() { - update_backtracking_ok(cargo_stable); + update_backtracking_ok(); } -fn update_backtracking_ok(cargo: fn(&Project, &str) -> Execs) { +fn update_backtracking_ok() { let p = project() .file( "Cargo.toml", @@ -1548,7 +1537,7 @@ fn update_backtracking_ok(cargo: fn(&Project, &str) -> Execs) { .publish(); Package::new("openssl", "0.1.0").publish(); - cargo(&p, "generate-lockfile").run(); + p.cargo("generate-lockfile").run(); Package::new("openssl", "0.1.1").publish(); Package::new("hyper", "0.6.6") @@ -1556,7 +1545,7 @@ fn update_backtracking_ok(cargo: fn(&Project, &str) -> Execs) { .dep("cookie", "0.1.0") .publish(); - cargo(&p, "update -p hyper") + p.cargo("update -p hyper") .with_stderr( "\ [UPDATING] `[..]` index @@ -1570,15 +1559,15 @@ fn update_backtracking_ok(cargo: fn(&Project, &str) -> Execs) { #[cargo_test] fn update_multiple_packages_http() { let _server = setup_http(); - update_multiple_packages(cargo_http); + update_multiple_packages(); } #[cargo_test] fn update_multiple_packages_git() { - update_multiple_packages(cargo_stable); + update_multiple_packages(); } -fn update_multiple_packages(cargo: fn(&Project, &str) -> Execs) { +fn update_multiple_packages() { let p = project() .file( "Cargo.toml", @@ -1601,13 +1590,13 @@ fn update_multiple_packages(cargo: fn(&Project, &str) -> Execs) { Package::new("b", "0.1.0").publish(); Package::new("c", "0.1.0").publish(); - cargo(&p, "fetch").run(); + p.cargo("fetch").run(); Package::new("a", "0.1.1").publish(); Package::new("b", "0.1.1").publish(); Package::new("c", "0.1.1").publish(); - cargo(&p, "update -pa -pb") + p.cargo("update -pa -pb") .with_stderr( "\ [UPDATING] `[..]` index @@ -1617,7 +1606,7 @@ fn update_multiple_packages(cargo: fn(&Project, &str) -> Execs) { ) .run(); - cargo(&p, "update -pb -pc") + p.cargo("update -pb -pc") .with_stderr( "\ [UPDATING] `[..]` index @@ -1626,7 +1615,7 @@ fn update_multiple_packages(cargo: fn(&Project, &str) -> Execs) { ) .run(); - cargo(&p, "build") + p.cargo("build") .with_stderr_contains("[DOWNLOADED] a v0.1.1 (registry `dummy-registry`)") .with_stderr_contains("[DOWNLOADED] b v0.1.1 (registry `dummy-registry`)") .with_stderr_contains("[DOWNLOADED] c v0.1.1 (registry `dummy-registry`)") @@ -1640,15 +1629,15 @@ fn update_multiple_packages(cargo: fn(&Project, &str) -> Execs) { #[cargo_test] fn bundled_crate_in_registry_http() { let _server = setup_http(); - bundled_crate_in_registry(cargo_http); + bundled_crate_in_registry(); } #[cargo_test] fn bundled_crate_in_registry_git() { - bundled_crate_in_registry(cargo_stable); + bundled_crate_in_registry(); } -fn bundled_crate_in_registry(cargo: fn(&Project, &str) -> Execs) { +fn bundled_crate_in_registry() { let p = project() .file( "Cargo.toml", @@ -1686,21 +1675,21 @@ fn bundled_crate_in_registry(cargo: fn(&Project, &str) -> Execs) { .file("bar/src/lib.rs", "") .publish(); - cargo(&p, "run").run(); + p.cargo("run").run(); } #[cargo_test] fn update_same_prefix_oh_my_how_was_this_a_bug_http() { let _server = setup_http(); - update_same_prefix_oh_my_how_was_this_a_bug(cargo_http); + update_same_prefix_oh_my_how_was_this_a_bug(); } #[cargo_test] fn update_same_prefix_oh_my_how_was_this_a_bug_git() { - update_same_prefix_oh_my_how_was_this_a_bug(cargo_stable); + update_same_prefix_oh_my_how_was_this_a_bug(); } -fn update_same_prefix_oh_my_how_was_this_a_bug(cargo: fn(&Project, &str) -> Execs) { +fn update_same_prefix_oh_my_how_was_this_a_bug() { let p = project() .file( "Cargo.toml", @@ -1722,22 +1711,22 @@ fn update_same_prefix_oh_my_how_was_this_a_bug(cargo: fn(&Project, &str) -> Exec .dep("foobar", "0.2.0") .publish(); - cargo(&p, "generate-lockfile").run(); - cargo(&p, "update -pfoobar --precise=0.2.0").run(); + p.cargo("generate-lockfile").run(); + p.cargo("update -pfoobar --precise=0.2.0").run(); } #[cargo_test] fn use_semver_http() { let _server = setup_http(); - use_semver(cargo_http); + use_semver(); } #[cargo_test] fn use_semver_git() { - use_semver(cargo_stable); + use_semver(); } -fn use_semver(cargo: fn(&Project, &str) -> Execs) { +fn use_semver() { let p = project() .file( "Cargo.toml", @@ -1756,21 +1745,21 @@ fn use_semver(cargo: fn(&Project, &str) -> Execs) { Package::new("foo", "1.2.3-alpha.0").publish(); - cargo(&p, "build").run(); + p.cargo("build").run(); } #[cargo_test] fn use_semver_package_incorrectly_http() { let _server = setup_http(); - use_semver_package_incorrectly(cargo_http); + use_semver_package_incorrectly(); } #[cargo_test] fn use_semver_package_incorrectly_git() { - use_semver_package_incorrectly(cargo_stable); + use_semver_package_incorrectly(); } -fn use_semver_package_incorrectly(cargo: fn(&Project, &str) -> Execs) { +fn use_semver_package_incorrectly() { let p = project() .file( "Cargo.toml", @@ -1804,7 +1793,7 @@ fn use_semver_package_incorrectly(cargo: fn(&Project, &str) -> Execs) { .file("b/src/main.rs", "fn main() {}") .build(); - cargo(&p, "build") + p.cargo("build") .with_status(101) .with_stderr( "\ @@ -1822,15 +1811,15 @@ required by package `b v0.1.0 ([..])` #[cargo_test] fn only_download_relevant_http() { let _server = setup_http(); - only_download_relevant(cargo_http); + only_download_relevant(); } #[cargo_test] fn only_download_relevant_git() { - only_download_relevant(cargo_stable); + only_download_relevant(); } -fn only_download_relevant(cargo: fn(&Project, &str) -> Execs) { +fn only_download_relevant() { let p = project() .file( "Cargo.toml", @@ -1855,7 +1844,7 @@ fn only_download_relevant(cargo: fn(&Project, &str) -> Execs) { Package::new("bar", "0.1.0").publish(); Package::new("baz", "0.1.0").publish(); - cargo(&p, "build") + p.cargo("build") .with_stderr( "\ [UPDATING] `[..]` index @@ -1872,15 +1861,15 @@ fn only_download_relevant(cargo: fn(&Project, &str) -> Execs) { #[cargo_test] fn resolve_and_backtracking_http() { let _server = setup_http(); - resolve_and_backtracking(cargo_http); + resolve_and_backtracking(); } #[cargo_test] fn resolve_and_backtracking_git() { - resolve_and_backtracking(cargo_stable); + resolve_and_backtracking(); } -fn resolve_and_backtracking(cargo: fn(&Project, &str) -> Execs) { +fn resolve_and_backtracking() { let p = project() .file( "Cargo.toml", @@ -1902,21 +1891,21 @@ fn resolve_and_backtracking(cargo: fn(&Project, &str) -> Execs) { .publish(); Package::new("foo", "0.1.0").publish(); - cargo(&p, "build").run(); + p.cargo("build").run(); } #[cargo_test] fn upstream_warnings_on_extra_verbose_http() { let _server = setup_http(); - upstream_warnings_on_extra_verbose(cargo_http); + upstream_warnings_on_extra_verbose(); } #[cargo_test] fn upstream_warnings_on_extra_verbose_git() { - upstream_warnings_on_extra_verbose(cargo_stable); + upstream_warnings_on_extra_verbose(); } -fn upstream_warnings_on_extra_verbose(cargo: fn(&Project, &str) -> Execs) { +fn upstream_warnings_on_extra_verbose() { let p = project() .file( "Cargo.toml", @@ -1937,7 +1926,7 @@ fn upstream_warnings_on_extra_verbose(cargo: fn(&Project, &str) -> Execs) { .file("src/lib.rs", "fn unused() {}") .publish(); - cargo(&p, "build -vv") + p.cargo("build -vv") .with_stderr_contains("[WARNING] [..]unused[..]") .run(); } @@ -1961,7 +1950,7 @@ fn disallow_network_http() { .file("src/main.rs", "fn main() {}") .build(); - cargo_http(&p, "build --frozen") + p.cargo("build --frozen") .with_status(101) .with_stderr( "\ @@ -1996,7 +1985,7 @@ fn disallow_network_git() { .file("src/main.rs", "fn main() {}") .build(); - cargo_stable(&p, "build --frozen") + p.cargo("build --frozen") .with_status(101) .with_stderr( "\ @@ -2018,15 +2007,15 @@ Caused by: #[cargo_test] fn add_dep_dont_update_registry_http() { let _server = setup_http(); - add_dep_dont_update_registry(cargo_http); + add_dep_dont_update_registry(); } #[cargo_test] fn add_dep_dont_update_registry_git() { - add_dep_dont_update_registry(cargo_stable); + add_dep_dont_update_registry(); } -fn add_dep_dont_update_registry(cargo: fn(&Project, &str) -> Execs) { +fn add_dep_dont_update_registry() { let p = project() .file( "Cargo.toml", @@ -2058,7 +2047,7 @@ fn add_dep_dont_update_registry(cargo: fn(&Project, &str) -> Execs) { Package::new("remote", "0.3.4").publish(); - cargo(&p, "build").run(); + p.cargo("build").run(); p.change_file( "Cargo.toml", @@ -2074,7 +2063,7 @@ fn add_dep_dont_update_registry(cargo: fn(&Project, &str) -> Execs) { "#, ); - cargo(&p, "build") + p.cargo("build") .with_stderr( "\ [COMPILING] bar v0.5.0 ([..]) @@ -2087,15 +2076,15 @@ fn add_dep_dont_update_registry(cargo: fn(&Project, &str) -> Execs) { #[cargo_test] fn bump_version_dont_update_registry_http() { let _server = setup_http(); - bump_version_dont_update_registry(cargo_http); + bump_version_dont_update_registry(); } #[cargo_test] fn bump_version_dont_update_registry_git() { - bump_version_dont_update_registry(cargo_stable); + bump_version_dont_update_registry(); } -fn bump_version_dont_update_registry(cargo: fn(&Project, &str) -> Execs) { +fn bump_version_dont_update_registry() { let p = project() .file( "Cargo.toml", @@ -2127,7 +2116,7 @@ fn bump_version_dont_update_registry(cargo: fn(&Project, &str) -> Execs) { Package::new("remote", "0.3.4").publish(); - cargo(&p, "build").run(); + p.cargo("build").run(); p.change_file( "Cargo.toml", @@ -2142,7 +2131,7 @@ fn bump_version_dont_update_registry(cargo: fn(&Project, &str) -> Execs) { "#, ); - cargo(&p, "build") + p.cargo("build") .with_stderr( "\ [COMPILING] bar v0.6.0 ([..]) @@ -2155,15 +2144,15 @@ fn bump_version_dont_update_registry(cargo: fn(&Project, &str) -> Execs) { #[cargo_test] fn toml_lies_but_index_is_truth_http() { let _server = setup_http(); - toml_lies_but_index_is_truth(cargo_http); + toml_lies_but_index_is_truth(); } #[cargo_test] fn toml_lies_but_index_is_truth_git() { - toml_lies_but_index_is_truth(cargo_stable); + toml_lies_but_index_is_truth(); } -fn toml_lies_but_index_is_truth(cargo: fn(&Project, &str) -> Execs) { +fn toml_lies_but_index_is_truth() { Package::new("foo", "0.2.0").publish(); Package::new("bar", "0.3.0") .dep("foo", "0.2.0") @@ -2198,21 +2187,21 @@ fn toml_lies_but_index_is_truth(cargo: fn(&Project, &str) -> Execs) { .file("src/main.rs", "fn main() {}") .build(); - cargo(&p, "build -v").run(); + p.cargo("build -v").run(); } #[cargo_test] fn vv_prints_warnings_http() { let _server = setup_http(); - vv_prints_warnings(cargo_http); + vv_prints_warnings(); } #[cargo_test] fn vv_prints_warnings_git() { - vv_prints_warnings(cargo_stable); + vv_prints_warnings(); } -fn vv_prints_warnings(cargo: fn(&Project, &str) -> Execs) { +fn vv_prints_warnings() { Package::new("foo", "0.2.0") .file( "src/lib.rs", @@ -2236,21 +2225,21 @@ fn vv_prints_warnings(cargo: fn(&Project, &str) -> Execs) { .file("src/main.rs", "fn main() {}") .build(); - cargo(&p, "build -vv").run(); + p.cargo("build -vv").run(); } #[cargo_test] fn bad_and_or_malicious_packages_rejected_http() { let _server = setup_http(); - bad_and_or_malicious_packages_rejected(cargo_http); + bad_and_or_malicious_packages_rejected(); } #[cargo_test] fn bad_and_or_malicious_packages_rejected_git() { - bad_and_or_malicious_packages_rejected(cargo_stable); + bad_and_or_malicious_packages_rejected(); } -fn bad_and_or_malicious_packages_rejected(cargo: fn(&Project, &str) -> Execs) { +fn bad_and_or_malicious_packages_rejected() { Package::new("foo", "0.2.0") .extra_file("foo-0.1.0/src/lib.rs", "") .publish(); @@ -2271,7 +2260,7 @@ fn bad_and_or_malicious_packages_rejected(cargo: fn(&Project, &str) -> Execs) { .file("src/main.rs", "fn main() {}") .build(); - cargo(&p, "build -vv") + p.cargo("build -vv") .with_status(101) .with_stderr( "\ @@ -2293,15 +2282,15 @@ Caused by: #[cargo_test] fn git_init_templatedir_missing_http() { let _server = setup_http(); - git_init_templatedir_missing(cargo_http); + git_init_templatedir_missing(); } #[cargo_test] fn git_init_templatedir_missing_git() { - git_init_templatedir_missing(cargo_stable); + git_init_templatedir_missing(); } -fn git_init_templatedir_missing(cargo: fn(&Project, &str) -> Execs) { +fn git_init_templatedir_missing() { Package::new("foo", "0.2.0").dep("bar", "*").publish(); Package::new("bar", "0.2.0").publish(); @@ -2321,7 +2310,7 @@ fn git_init_templatedir_missing(cargo: fn(&Project, &str) -> Execs) { .file("src/main.rs", "fn main() {}") .build(); - cargo(&p, "build").run(); + p.cargo("build").run(); remove_dir_all(paths::home().join(".cargo/registry")).unwrap(); fs::write( @@ -2333,22 +2322,22 @@ fn git_init_templatedir_missing(cargo: fn(&Project, &str) -> Execs) { ) .unwrap(); - cargo(&p, "build").run(); - cargo(&p, "build").run(); + p.cargo("build").run(); + p.cargo("build").run(); } #[cargo_test] fn rename_deps_and_features_http() { let _server = setup_http(); - rename_deps_and_features(cargo_http); + rename_deps_and_features(); } #[cargo_test] fn rename_deps_and_features_git() { - rename_deps_and_features(cargo_stable); + rename_deps_and_features(); } -fn rename_deps_and_features(cargo: fn(&Project, &str) -> Execs) { +fn rename_deps_and_features() { Package::new("foo", "0.1.0") .file("src/lib.rs", "pub fn f1() {}") .publish(); @@ -2401,23 +2390,23 @@ fn rename_deps_and_features(cargo: fn(&Project, &str) -> Execs) { ) .build(); - cargo(&p, "build").run(); - cargo(&p, "build --features bar/foo01").run(); - cargo(&p, "build --features bar/another").run(); + p.cargo("build").run(); + p.cargo("build --features bar/foo01").run(); + p.cargo("build --features bar/another").run(); } #[cargo_test] fn ignore_invalid_json_lines_http() { let _server = setup_http(); - ignore_invalid_json_lines(cargo_http); + ignore_invalid_json_lines(); } #[cargo_test] fn ignore_invalid_json_lines_git() { - ignore_invalid_json_lines(cargo_stable); + ignore_invalid_json_lines(); } -fn ignore_invalid_json_lines(cargo: fn(&Project, &str) -> Execs) { +fn ignore_invalid_json_lines() { Package::new("foo", "0.1.0").publish(); Package::new("foo", "0.1.1").invalid_json(true).publish(); Package::new("foo", "0.2.0").publish(); @@ -2439,21 +2428,21 @@ fn ignore_invalid_json_lines(cargo: fn(&Project, &str) -> Execs) { .file("src/lib.rs", "") .build(); - cargo(&p, "build").run(); + p.cargo("build").run(); } #[cargo_test] fn readonly_registry_still_works_http() { let _server = setup_http(); - readonly_registry_still_works(cargo_http); + readonly_registry_still_works(); } #[cargo_test] fn readonly_registry_still_works_git() { - readonly_registry_still_works(cargo_stable); + readonly_registry_still_works(); } -fn readonly_registry_still_works(cargo: fn(&Project, &str) -> Execs) { +fn readonly_registry_still_works() { Package::new("foo", "0.1.0").publish(); let p = project() @@ -2472,10 +2461,10 @@ fn readonly_registry_still_works(cargo: fn(&Project, &str) -> Execs) { .file("src/lib.rs", "") .build(); - cargo(&p, "generate-lockfile").run(); - cargo(&p, "fetch --locked").run(); + p.cargo("generate-lockfile").run(); + p.cargo("fetch --locked").run(); chmod_readonly(&paths::home(), true); - cargo(&p, "build").run(); + p.cargo("build").run(); // make sure we un-readonly the files afterwards so "cargo clean" can remove them (#6934) chmod_readonly(&paths::home(), false); @@ -2502,15 +2491,15 @@ fn readonly_registry_still_works(cargo: fn(&Project, &str) -> Execs) { #[cargo_test] fn registry_index_rejected_http() { let _server = setup_http(); - registry_index_rejected(cargo_http); + registry_index_rejected(); } #[cargo_test] fn registry_index_rejected_git() { - registry_index_rejected(cargo_stable); + registry_index_rejected(); } -fn registry_index_rejected(cargo: fn(&Project, &str) -> Execs) { +fn registry_index_rejected() { Package::new("dep", "0.1.0").publish(); let p = project() @@ -2535,7 +2524,7 @@ fn registry_index_rejected(cargo: fn(&Project, &str) -> Execs) { .file("src/lib.rs", "") .build(); - cargo(&p, "check") + p.cargo("check") .with_status(101) .with_stderr( "\ @@ -2548,7 +2537,7 @@ Caused by: ) .run(); - cargo(&p, "login") + p.cargo("login") .with_status(101) .with_stderr( "\ @@ -2641,15 +2630,15 @@ fn package_lock_as_a_symlink_inside_package_is_overwritten() { #[cargo_test] fn ignores_unknown_index_version_http() { let _server = setup_http(); - ignores_unknown_index_version(cargo_http); + ignores_unknown_index_version(); } #[cargo_test] fn ignores_unknown_index_version_git() { - ignores_unknown_index_version(cargo_stable); + ignores_unknown_index_version(); } -fn ignores_unknown_index_version(cargo: fn(&Project, &str) -> Execs) { +fn ignores_unknown_index_version() { // If the version field is not understood, it is ignored. Package::new("bar", "1.0.0").publish(); Package::new("bar", "1.0.1").schema_version(9999).publish(); @@ -2669,7 +2658,7 @@ fn ignores_unknown_index_version(cargo: fn(&Project, &str) -> Execs) { .file("src/lib.rs", "") .build(); - cargo(&p, "tree") + p.cargo("tree") .with_stdout( "foo v0.1.0 [..]\n\ └── bar v1.0.0\n\ @@ -2678,40 +2667,6 @@ fn ignores_unknown_index_version(cargo: fn(&Project, &str) -> Execs) { .run(); } -#[cargo_test] -fn http_requires_z_flag() { - let _server = setup_http(); - let p = project() - .file( - "Cargo.toml", - r#" - [package] - name = "foo" - version = "0.0.1" - authors = [] - - [dependencies] - bar = ">= 0.0.0" - "#, - ) - .file("src/main.rs", "fn main() {}") - .build(); - - p.cargo("build") - .with_status(101) - .with_stderr_contains(" usage of sparse registries requires `-Z sparse-registry`") - .run(); -} - -#[cargo_test] -fn protocol_sparse_requires_z_flag() { - cargo_process("install bar") - .with_status(101) - .env("CARGO_REGISTRIES_CRATES_IO_PROTOCOL", "sparse") - .with_stderr("[ERROR] usage of sparse registries requires `-Z sparse-registry`") - .run() -} - #[cargo_test] fn protocol() { cargo_process("install bar") @@ -2723,8 +2678,7 @@ fn protocol() { #[cargo_test] fn http_requires_trailing_slash() { - cargo_process("-Z sparse-registry install bar --index sparse+https://invalid.crates.io/test") - .masquerade_as_nightly_cargo(&["sparse-registry"]) + cargo_process("install bar --index sparse+https://invalid.crates.io/test") .with_status(101) .with_stderr("[ERROR] sparse registry url must end in a slash `/`: sparse+https://invalid.crates.io/test") .run() @@ -2808,7 +2762,7 @@ fn sparse_retry() { Package::new("bar", "0.0.1").publish(); - cargo_http(&p, "build") + p.cargo("build") .with_stderr( "\ [UPDATING] `dummy-registry` index