diff --git a/tests/testsuite/cargo_add/mod.rs b/tests/testsuite/cargo_add/mod.rs index 7f35fe9816a..11e9f5fd2a4 100644 --- a/tests/testsuite/cargo_add/mod.rs +++ b/tests/testsuite/cargo_add/mod.rs @@ -147,7 +147,9 @@ mod rustc_incompatible; mod rustc_latest; mod rustc_older; mod script_bare; +mod script_escape; mod script_frontmatter; +mod script_frontmatter_empty; mod script_shebang; mod sorted_table_with_dotted_item; mod symlink; diff --git a/tests/testsuite/cargo_add/script_escape/in/cargo-test-fixture.rs b/tests/testsuite/cargo_add/script_escape/in/cargo-test-fixture.rs new file mode 100644 index 00000000000..143ba74ee96 --- /dev/null +++ b/tests/testsuite/cargo_add/script_escape/in/cargo-test-fixture.rs @@ -0,0 +1,12 @@ +--------- +[package] +edition = "2015" +description = """ +Header +------ + +Body +""" +--------- + +fn main() {} diff --git a/tests/testsuite/cargo_add/script_escape/mod.rs b/tests/testsuite/cargo_add/script_escape/mod.rs new file mode 100644 index 00000000000..baef47e3d2f --- /dev/null +++ b/tests/testsuite/cargo_add/script_escape/mod.rs @@ -0,0 +1,39 @@ +use crate::prelude::*; +use cargo_test_support::Project; +use cargo_test_support::compare::assert_ui; +use cargo_test_support::current_dir; +use cargo_test_support::file; +use cargo_test_support::str; + +#[cargo_test] +fn case() { + cargo_test_support::registry::init(); + for ver in [ + "0.1.1+my-package", + "0.2.0+my-package", + "0.2.3+my-package", + "0.4.1+my-package", + "20.0.0+my-package", + "99999.0.0+my-package", + "99999.0.0-alpha.1+my-package", + ] { + cargo_test_support::registry::Package::new("my-package", ver).publish(); + } + + let project = Project::from_template(current_dir!().join("in")); + let project_root = project.root(); + let cwd = &project_root; + + snapbox::cmd::Command::cargo_ui() + .masquerade_as_nightly_cargo(&["script"]) + .arg("-Zscript") + .arg("add") + .arg_line("--manifest-path cargo-test-fixture.rs my-package") + .current_dir(cwd) + .assert() + .success() + .stdout_eq(str![""]) + .stderr_eq(file!["stderr.term.svg"]); + + assert_ui().subset_matches(current_dir!().join("out"), &project_root); +} diff --git a/tests/testsuite/cargo_add/script_escape/out/cargo-test-fixture.rs b/tests/testsuite/cargo_add/script_escape/out/cargo-test-fixture.rs new file mode 100644 index 00000000000..a34ae017ff0 --- /dev/null +++ b/tests/testsuite/cargo_add/script_escape/out/cargo-test-fixture.rs @@ -0,0 +1,15 @@ +--------- +[package] +edition = "2015" +description = """ +Header +------ + +Body +""" + +[dependencies] +my-package = "99999.0.0" +--------- + +fn main() {} diff --git a/tests/testsuite/cargo_add/script_escape/stderr.term.svg b/tests/testsuite/cargo_add/script_escape/stderr.term.svg new file mode 100644 index 00000000000..0be687ce10a --- /dev/null +++ b/tests/testsuite/cargo_add/script_escape/stderr.term.svg @@ -0,0 +1,31 @@ + + + + + + + Updating `dummy-registry` index + + Adding my-package v99999.0.0 to dependencies + + Locking 1 package to latest [..]compatible version + + + + + + diff --git a/tests/testsuite/cargo_add/script_frontmatter_empty/in/cargo-test-fixture.rs b/tests/testsuite/cargo_add/script_frontmatter_empty/in/cargo-test-fixture.rs new file mode 100644 index 00000000000..e062b276ea9 --- /dev/null +++ b/tests/testsuite/cargo_add/script_frontmatter_empty/in/cargo-test-fixture.rs @@ -0,0 +1,4 @@ +--- +--- + +fn main() {} diff --git a/tests/testsuite/cargo_add/script_frontmatter_empty/mod.rs b/tests/testsuite/cargo_add/script_frontmatter_empty/mod.rs new file mode 100644 index 00000000000..baef47e3d2f --- /dev/null +++ b/tests/testsuite/cargo_add/script_frontmatter_empty/mod.rs @@ -0,0 +1,39 @@ +use crate::prelude::*; +use cargo_test_support::Project; +use cargo_test_support::compare::assert_ui; +use cargo_test_support::current_dir; +use cargo_test_support::file; +use cargo_test_support::str; + +#[cargo_test] +fn case() { + cargo_test_support::registry::init(); + for ver in [ + "0.1.1+my-package", + "0.2.0+my-package", + "0.2.3+my-package", + "0.4.1+my-package", + "20.0.0+my-package", + "99999.0.0+my-package", + "99999.0.0-alpha.1+my-package", + ] { + cargo_test_support::registry::Package::new("my-package", ver).publish(); + } + + let project = Project::from_template(current_dir!().join("in")); + let project_root = project.root(); + let cwd = &project_root; + + snapbox::cmd::Command::cargo_ui() + .masquerade_as_nightly_cargo(&["script"]) + .arg("-Zscript") + .arg("add") + .arg_line("--manifest-path cargo-test-fixture.rs my-package") + .current_dir(cwd) + .assert() + .success() + .stdout_eq(str![""]) + .stderr_eq(file!["stderr.term.svg"]); + + assert_ui().subset_matches(current_dir!().join("out"), &project_root); +} diff --git a/tests/testsuite/cargo_add/script_frontmatter_empty/out/cargo-test-fixture.rs b/tests/testsuite/cargo_add/script_frontmatter_empty/out/cargo-test-fixture.rs new file mode 100644 index 00000000000..caf9ce19959 --- /dev/null +++ b/tests/testsuite/cargo_add/script_frontmatter_empty/out/cargo-test-fixture.rs @@ -0,0 +1,6 @@ +--- +[dependencies] +my-package = "99999.0.0" +--- + +fn main() {} diff --git a/tests/testsuite/cargo_add/script_frontmatter_empty/stderr.term.svg b/tests/testsuite/cargo_add/script_frontmatter_empty/stderr.term.svg new file mode 100644 index 00000000000..539a329e821 --- /dev/null +++ b/tests/testsuite/cargo_add/script_frontmatter_empty/stderr.term.svg @@ -0,0 +1,36 @@ + + + + + + + warning: `package.edition` is unspecified, defaulting to `2024` + + Updating `dummy-registry` index + + Adding my-package v99999.0.0 to dependencies + + warning: `package.edition` is unspecified, defaulting to `2024` + + Locking 1 package to latest Rust [..] compatible version + + + + + +