Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix old_cargos tests #13435

Merged
merged 1 commit into from
Feb 12, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 82 additions & 18 deletions tests/testsuite/old_cargos.rs
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ fn new_features() {

let toolchains = collect_all_toolchains();

let config_path = paths::home().join(".cargo/config.toml");
let config_path = paths::home().join(".cargo/config");
let lock_path = p.root().join("Cargo.lock");

struct ToolchainBehavior {
Expand All @@ -305,6 +305,11 @@ fn new_features() {
let mut unexpected_results: Vec<Vec<String>> = Vec::new();

for (version, toolchain) in &toolchains {
if version >= &Version::new(1, 15, 0) && version < &Version::new(1, 18, 0) {
// These versions do not stay within the sandbox, and chokes on
// Cargo's own `Cargo.toml`.
continue;
}
let mut tc_result = Vec::new();
// Write a config appropriate for this version.
if version < &Version::new(1, 12, 0) {
Expand Down Expand Up @@ -347,7 +352,7 @@ fn new_features() {
let stdout = std::str::from_utf8(&output.stdout).unwrap();
let version = stdout
.trim()
.rsplitn(2, ':')
.rsplitn(2, ['@', ':'])
.next()
.expect("version after colon");
Some(Version::parse(version).expect("parseable version"))
Expand Down Expand Up @@ -443,7 +448,22 @@ fn new_features() {
}
}
Err(e) => {
tc_result.push(format!("unlocked build failed: {}", e));
if version < &Version::new(1, 49, 0) {
// Old versions don't like the dep: syntax.
check_err_contains(
&mut tc_result,
e,
"which is neither a dependency nor another feature",
);
} else if version >= &Version::new(1, 49, 0) && version < &Version::new(1, 51, 0) {
check_err_contains(
&mut tc_result,
e,
"requires the `-Z namespaced-features` flag",
);
} else {
tc_result.push(format!("unlocked build failed: {}", e));
}
}
}

Expand All @@ -469,14 +489,29 @@ fn new_features() {
check_lock!(tc_result, "new-baz-dep", which, behavior.new_baz_dep, None);
}
Err(e) => {
// When version >= 1.51 and <= 1.59,
// 1.0.1 can't be used without -Znamespaced-features
// It gets filtered out of the index.
check_err_contains(
&mut tc_result,
e,
"candidate versions found which didn't match: 1.0.2, 1.0.0",
);
if version < &Version::new(1, 49, 0) {
// Old versions don't like the dep: syntax.
check_err_contains(
&mut tc_result,
e,
"which is neither a dependency nor another feature",
);
} else if version >= &Version::new(1, 49, 0) && version < &Version::new(1, 51, 0) {
check_err_contains(
&mut tc_result,
e,
"requires the `-Z namespaced-features` flag",
);
} else {
// When version >= 1.51 and <= 1.59,
// 1.0.1 can't be used without -Znamespaced-features
// It gets filtered out of the index.
check_err_contains(
&mut tc_result,
e,
"candidate versions found which didn't match: 1.0.2, 1.0.0",
);
}
}
}

Expand All @@ -503,13 +538,28 @@ fn new_features() {
}
}
Err(e) => {
// When version >= 1.51 and <= 1.59,
// baz can't lock to 1.0.1, it requires -Znamespaced-features
check_err_contains(
&mut tc_result,
e,
"candidate versions found which didn't match: 1.0.0",
);
if version < &Version::new(1, 49, 0) {
// Old versions don't like the dep: syntax.
check_err_contains(
&mut tc_result,
e,
"which is neither a dependency nor another feature",
);
} else if version >= &Version::new(1, 49, 0) && version < &Version::new(1, 51, 0) {
check_err_contains(
&mut tc_result,
e,
"requires the `-Z namespaced-features` flag",
);
} else {
// When version >= 1.51 and <= 1.59,
// baz can't lock to 1.0.1, it requires -Znamespaced-features
check_err_contains(
&mut tc_result,
e,
"candidate versions found which didn't match: 1.0.0",
);
}
}
}

Expand Down Expand Up @@ -545,6 +595,7 @@ fn index_cache_rebuild() {
// happening, and switching between versions should work correctly
// (although it will thrash the cash, that's better than not working
// correctly.
let registry = registry::init();
Package::new("baz", "1.0.0").publish();
Package::new("bar", "1.0.0").publish();
Package::new("bar", "1.0.1")
Expand All @@ -565,6 +616,19 @@ fn index_cache_rebuild() {
"#,
)
.file("src/lib.rs", "")
.file(
".cargo/config.toml",
&format!(
r#"
[source.crates-io]
replace-with = 'dummy-registry'

[source.dummy-registry]
registry = '{}'
"#,
registry.index_url()
),
)
.build();

// This version of Cargo errors on index entries that have overlapping
Expand Down