From 10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 4 May 2024 14:41:41 +0200 Subject: Merging upstream version 1.70.0+dfsg2. Signed-off-by: Daniel Baumann --- src/tools/cargo/tests/testsuite/cross_publish.rs | 122 +++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 src/tools/cargo/tests/testsuite/cross_publish.rs (limited to 'src/tools/cargo/tests/testsuite/cross_publish.rs') diff --git a/src/tools/cargo/tests/testsuite/cross_publish.rs b/src/tools/cargo/tests/testsuite/cross_publish.rs new file mode 100644 index 000000000..83e0ecab7 --- /dev/null +++ b/src/tools/cargo/tests/testsuite/cross_publish.rs @@ -0,0 +1,122 @@ +//! Tests for publishing using the `--target` flag. + +use std::fs::File; + +use cargo_test_support::{cross_compile, project, publish, registry}; + +#[cargo_test] +fn simple_cross_package() { + if cross_compile::disabled() { + return; + } + let p = project() + .file( + "Cargo.toml", + r#" + [package] + name = "foo" + version = "0.0.0" + authors = [] + license = "MIT" + description = "foo" + repository = "bar" + "#, + ) + .file( + "src/main.rs", + &format!( + r#" + use std::env; + fn main() {{ + assert_eq!(env::consts::ARCH, "{}"); + }} + "#, + cross_compile::alternate_arch() + ), + ) + .build(); + + let target = cross_compile::alternate(); + + p.cargo("package --target") + .arg(&target) + .with_stderr( + "\ +[PACKAGING] foo v0.0.0 ([CWD]) +[VERIFYING] foo v0.0.0 ([CWD]) +[COMPILING] foo v0.0.0 ([CWD]/target/package/foo-0.0.0) +[FINISHED] dev [unoptimized + debuginfo] target(s) in [..] +[PACKAGED] 4 files, [..] ([..] compressed) +", + ) + .run(); + + // Check that the tarball contains the files + let f = File::open(&p.root().join("target/package/foo-0.0.0.crate")).unwrap(); + publish::validate_crate_contents( + f, + "foo-0.0.0.crate", + &["Cargo.lock", "Cargo.toml", "Cargo.toml.orig", "src/main.rs"], + &[], + ); +} + +#[cargo_test] +fn publish_with_target() { + if cross_compile::disabled() { + return; + } + + // `publish` generally requires a remote registry + let registry = registry::RegistryBuilder::new().http_api().build(); + + let p = project() + .file( + "Cargo.toml", + r#" + [package] + name = "foo" + version = "0.0.0" + authors = [] + license = "MIT" + description = "foo" + repository = "bar" + "#, + ) + .file( + "src/main.rs", + &format!( + r#" + use std::env; + fn main() {{ + assert_eq!(env::consts::ARCH, "{}"); + }} + "#, + cross_compile::alternate_arch() + ), + ) + .build(); + + let target = cross_compile::alternate(); + + p.cargo("publish") + .replace_crates_io(registry.index_url()) + .arg("--target") + .arg(&target) + .with_stderr( + "\ +[UPDATING] crates.io index +[PACKAGING] foo v0.0.0 ([CWD]) +[VERIFYING] foo v0.0.0 ([CWD]) +[COMPILING] foo v0.0.0 ([CWD]/target/package/foo-0.0.0) +[FINISHED] dev [unoptimized + debuginfo] target(s) in [..] +[PACKAGED] [..] +[UPLOADING] foo v0.0.0 ([CWD]) +[UPLOADED] foo v0.0.0 to registry `crates-io` +note: Waiting [..] +You may press ctrl-c [..] +[PUBLISHED] foo v0.0.0 at registry `crates-io` +", + ) + .run(); +} -- cgit v1.2.3