From f49d2fdbb408a0780eeec82f350fff1b82401331 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Wed, 21 May 2025 12:48:56 -0500 Subject: [PATCH] fix(toml): Remove workaround for rustc frontmatter support With rust-lang/rust#140035 now merged, we can rely on that rather than dirty hacks --- src/cargo/core/compiler/mod.rs | 18 ++++ src/cargo/util/toml/embedded.rs | 97 ++------------------ src/cargo/util/toml/mod.rs | 38 ++++++-- tests/testsuite/fix.rs | 4 +- tests/testsuite/lockfile_path.rs | 2 +- tests/testsuite/open_namespaces.rs | 4 +- tests/testsuite/script.rs | 140 ++++++++++++++--------------- 7 files changed, 131 insertions(+), 172 deletions(-) diff --git a/src/cargo/core/compiler/mod.rs b/src/cargo/core/compiler/mod.rs index b6ed5a821fd..ef3079b2a1c 100644 --- a/src/cargo/core/compiler/mod.rs +++ b/src/cargo/core/compiler/mod.rs @@ -735,6 +735,15 @@ fn prepare_rustc(build_runner: &BuildRunner<'_, '_>, unit: &Unit) -> CargoResult .compilation .rustc_process(unit, is_primary, is_workspace)?; build_base_args(build_runner, &mut base, unit)?; + if unit.pkg.manifest().is_embedded() { + if !gctx.cli_unstable().script { + anyhow::bail!( + "parsing `{}` requires `-Zscript`", + unit.pkg.manifest_path().display() + ); + } + base.arg("-Z").arg("crate-attr=feature(frontmatter)"); + } base.inherit_jobserver(&build_runner.jobserver); build_deps_args(&mut base, build_runner, unit)?; @@ -774,6 +783,15 @@ fn prepare_rustdoc(build_runner: &BuildRunner<'_, '_>, unit: &Unit) -> CargoResu let bcx = build_runner.bcx; // script_metadata is not needed here, it is only for tests. let mut rustdoc = build_runner.compilation.rustdoc_process(unit, None)?; + if unit.pkg.manifest().is_embedded() { + if !bcx.gctx.cli_unstable().script { + anyhow::bail!( + "parsing `{}` requires `-Zscript`", + unit.pkg.manifest_path().display() + ); + } + rustdoc.arg("-Z").arg("crate-attr=feature(frontmatter)"); + } rustdoc.inherit_jobserver(&build_runner.jobserver); let crate_name = unit.target.crate_name(); rustdoc.arg("--crate-name").arg(&crate_name); diff --git a/src/cargo/util/toml/embedded.rs b/src/cargo/util/toml/embedded.rs index 481265d2b12..6ed4858b27d 100644 --- a/src/cargo/util/toml/embedded.rs +++ b/src/cargo/util/toml/embedded.rs @@ -1,16 +1,9 @@ -use anyhow::Context as _; - use cargo_util_schemas::manifest::PackageName; use crate::util::restricted_names; use crate::CargoResult; -use crate::GlobalContext; -pub(super) fn expand_manifest( - content: &str, - path: &std::path::Path, - gctx: &GlobalContext, -) -> CargoResult { +pub(super) fn expand_manifest(content: &str) -> CargoResult { let source = ScriptSource::parse(content)?; if let Some(frontmatter) = source.frontmatter() { match source.info() { @@ -24,74 +17,13 @@ pub(super) fn expand_manifest( } } - // HACK: until rustc has native support for this syntax, we have to remove it from the - // source file - use std::fmt::Write as _; - let hash = crate::util::hex::short_hash(&path.to_string_lossy()); - let mut rel_path = std::path::PathBuf::new(); - rel_path.push("target"); - rel_path.push(&hash[0..2]); - rel_path.push(&hash[2..]); - let target_dir = gctx.home().join(rel_path); - let hacked_path = target_dir - .join( - path.file_name() - .expect("always a name for embedded manifests"), - ) - .into_path_unlocked(); - let mut hacked_source = String::new(); - if let Some(shebang) = source.shebang() { - writeln!(hacked_source, "{shebang}")?; - } - writeln!(hacked_source)?; // open - for _ in 0..frontmatter.lines().count() { - writeln!(hacked_source)?; - } - writeln!(hacked_source)?; // close - writeln!(hacked_source, "{}", source.content())?; - if let Some(parent) = hacked_path.parent() { - cargo_util::paths::create_dir_all(parent)?; - } - cargo_util::paths::write_if_changed(&hacked_path, hacked_source)?; - - let manifest = inject_bin_path(&frontmatter, &hacked_path) - .with_context(|| format!("failed to parse manifest at `{}`", path.display()))?; - let manifest = toml::to_string_pretty(&manifest)?; - Ok(manifest) + Ok(frontmatter.to_owned()) } else { let frontmatter = ""; - let manifest = inject_bin_path(frontmatter, path) - .with_context(|| format!("failed to parse manifest at `{}`", path.display()))?; - let manifest = toml::to_string_pretty(&manifest)?; - Ok(manifest) + Ok(frontmatter.to_owned()) } } -/// HACK: Add a `[[bin]]` table to the `original_toml` -fn inject_bin_path(manifest: &str, path: &std::path::Path) -> CargoResult { - let mut manifest: toml::Table = toml::from_str(&manifest)?; - - let bin_path = path.to_string_lossy().into_owned(); - let file_stem = path - .file_stem() - .ok_or_else(|| anyhow::format_err!("no file name"))? - .to_string_lossy(); - let name = sanitize_name(file_stem.as_ref()); - let bin_name = name.clone(); - - let mut bin = toml::Table::new(); - bin.insert("name".to_owned(), toml::Value::String(bin_name)); - bin.insert("path".to_owned(), toml::Value::String(bin_path)); - manifest - .entry("bin") - .or_insert_with(|| Vec::::new().into()) - .as_array_mut() - .ok_or_else(|| anyhow::format_err!("`bin` must be an array"))? - .push(toml::Value::Table(bin)); - - Ok(manifest) -} - /// Ensure the package name matches the validation from `ops::cargo_new::check_name` pub fn sanitize_name(name: &str) -> String { let placeholder = if name.contains('_') { @@ -584,25 +516,12 @@ fn main() {} #[track_caller] fn expand(source: &str) -> String { - let shell = crate::Shell::from_write(Box::new(Vec::new())); - let cwd = std::env::current_dir().unwrap(); - let home = home::cargo_home_with_cwd(&cwd).unwrap(); - let gctx = GlobalContext::new(shell, cwd, home); - expand_manifest(source, std::path::Path::new("/home/me/test.rs"), &gctx) - .unwrap_or_else(|err| panic!("{}", err)) + expand_manifest(source).unwrap_or_else(|err| panic!("{}", err)) } #[test] fn expand_default() { - assert_data_eq!( - expand(r#"fn main() {}"#), - str![[r#" -[[bin]] -name = "test-" -path = "/home/me/test.rs" - -"#]] - ); + assert_data_eq!(expand(r#"fn main() {}"#), str![""]); } #[test] @@ -617,12 +536,8 @@ fn main() {} "# ), str![[r#" -[[bin]] -name = "test-" -path = [..] - [dependencies] -time = "0.1.25" +time="0.1.25" "#]] ); diff --git a/src/cargo/util/toml/mod.rs b/src/cargo/util/toml/mod.rs index 16544f1a639..4af8e15df5e 100644 --- a/src/cargo/util/toml/mod.rs +++ b/src/cargo/util/toml/mod.rs @@ -160,7 +160,7 @@ fn read_toml_string(path: &Path, is_embedded: bool, gctx: &GlobalContext) -> Car if !gctx.cli_unstable().script { anyhow::bail!("parsing `{}` requires `-Zscript`", path.display()); } - contents = embedded::expand_manifest(&contents, path, gctx)?; + contents = embedded::expand_manifest(&contents)?; } Ok(contents) } @@ -368,8 +368,37 @@ fn normalize_toml( original_package.autolib.or(auto_embedded), warnings, )?; + let original_toml_bin = if is_embedded { + let manifest_file_stem = manifest_file + .file_stem() + .expect("file name enforced previously"); + let name = embedded::sanitize_name(manifest_file_stem.to_string_lossy().as_ref()); + let manifest_file_name = manifest_file + .file_name() + .expect("file name enforced previously"); + let path = PathBuf::from(manifest_file_name); + Cow::Owned(Some(vec![manifest::TomlBinTarget { + name: Some(name), + crate_type: None, + crate_type2: None, + path: Some(manifest::PathValue(path)), + filename: None, + test: None, + doctest: None, + bench: None, + doc: None, + doc_scrape_examples: None, + proc_macro: None, + proc_macro2: None, + harness: None, + required_features: None, + edition: None, + }])) + } else { + Cow::Borrowed(&original_toml.bin) + }; normalized_toml.bin = Some(targets::normalize_bins( - original_toml.bin.as_ref(), + original_toml_bin.as_ref().as_ref(), package_root, package_name, edition, @@ -1345,10 +1374,7 @@ pub fn to_real_manifest( let invalid_fields = [ ("`workspace`", original_toml.workspace.is_some()), ("`lib`", original_toml.lib.is_some()), - ( - "`bin`", - original_toml.bin.as_ref().map(|b| b.len()).unwrap_or(0) != 1, - ), + ("`bin`", original_toml.bin.is_some()), ("`example`", original_toml.example.is_some()), ("`test`", original_toml.test.is_some()), ("`bench`", original_toml.bench.is_some()), diff --git a/tests/testsuite/fix.rs b/tests/testsuite/fix.rs index e075b6a4d4c..6597a55bd18 100644 --- a/tests/testsuite/fix.rs +++ b/tests/testsuite/fix.rs @@ -2542,7 +2542,7 @@ edition = "2021" ); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn migrate_removes_project_for_script() { let p = project() .file( @@ -2576,7 +2576,7 @@ fn main() { [MIGRATING] foo.rs from 2021 edition to 2024 [FIXED] foo.rs (1 fix) [CHECKING] foo v0.0.0 ([ROOT]/foo/foo.rs) -[MIGRATING] [ROOT]/home/.cargo/target/[HASH]/foo.rs from 2021 edition to 2024 +[MIGRATING] foo.rs from 2021 edition to 2024 [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s "#]]) diff --git a/tests/testsuite/lockfile_path.rs b/tests/testsuite/lockfile_path.rs index 85d5b649cef..67a26c8d16f 100644 --- a/tests/testsuite/lockfile_path.rs +++ b/tests/testsuite/lockfile_path.rs @@ -494,7 +494,7 @@ fn install_lock_file_path_must_present() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn run_embed() { let lockfile_path = "mylockfile/Cargo.lock"; let invalid_lockfile = "Cargo.lock"; diff --git a/tests/testsuite/open_namespaces.rs b/tests/testsuite/open_namespaces.rs index c7506dfae65..85377bf2c16 100644 --- a/tests/testsuite/open_namespaces.rs +++ b/tests/testsuite/open_namespaces.rs @@ -259,7 +259,7 @@ fn explicit_bin_within_namespace() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] #[cfg(unix)] fn namespaced_script_name() { let p = cargo_test_support::project() @@ -314,7 +314,7 @@ fn main() {} "bin" ], "name": "foo::bar", - "src_path": "[ROOT]/home/.cargo/target/[HASH]/foo::bar.rs", + "src_path": "[ROOT]/foo/foo::bar.rs", "test": true } ], diff --git a/tests/testsuite/script.rs b/tests/testsuite/script.rs index f4e24724abe..27603af0cbb 100644 --- a/tests/testsuite/script.rs +++ b/tests/testsuite/script.rs @@ -25,7 +25,7 @@ fn path() -> Vec { std::env::split_paths(&std::env::var_os("PATH").unwrap_or_default()).collect() } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn basic_rs() { let p = cargo_test_support::project() .file("echo.rs", ECHO_SCRIPT) @@ -48,7 +48,7 @@ args: [] .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn basic_path() { let p = cargo_test_support::project() .file("echo", ECHO_SCRIPT) @@ -71,7 +71,7 @@ args: [] .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn path_required() { let p = cargo_test_support::project() .file("echo", ECHO_SCRIPT) @@ -95,7 +95,7 @@ fn path_required() { } #[cfg(unix)] -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn manifest_precedence_over_plugins() { let p = cargo_test_support::project() .file("echo.rs", ECHO_SCRIPT) @@ -126,7 +126,7 @@ args: [] } #[cfg(unix)] -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn warn_when_plugin_masks_manifest_on_stable() { let p = cargo_test_support::project() .file("echo.rs", ECHO_SCRIPT) @@ -165,7 +165,7 @@ fn requires_nightly() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn requires_z_flag() { let p = cargo_test_support::project() .file("echo.rs", ECHO_SCRIPT) @@ -182,7 +182,7 @@ fn requires_z_flag() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn clean_output_with_edition() { let script = r#"#!/usr/bin/env cargo --- @@ -212,7 +212,7 @@ Hello world! .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn warning_without_edition() { let script = r#"#!/usr/bin/env cargo --- @@ -242,7 +242,7 @@ Hello world! .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn rebuild() { let script = r#"#!/usr/bin/env cargo-eval @@ -302,7 +302,7 @@ msg = hello .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn use_cargo_home_config() { let script = ECHO_SCRIPT; let _ = cargo_test_support::project() @@ -366,7 +366,7 @@ Caused by: .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn default_programmatic_verbosity() { let script = ECHO_SCRIPT; let p = cargo_test_support::project() @@ -384,7 +384,7 @@ args: ["-NotAnArg"] .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn quiet() { let script = ECHO_SCRIPT; let p = cargo_test_support::project() @@ -402,7 +402,7 @@ args: ["-NotAnArg"] .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn test_line_numbering_preserved() { let script = r#"#!/usr/bin/env cargo @@ -430,7 +430,7 @@ line: 4 .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn test_escaped_hyphen_arg() { let script = ECHO_SCRIPT; let p = cargo_test_support::project() @@ -454,7 +454,7 @@ args: ["-NotAnArg"] .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn test_unescaped_hyphen_arg() { let script = ECHO_SCRIPT; let p = cargo_test_support::project() @@ -478,7 +478,7 @@ args: ["-NotAnArg"] .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn test_same_flags() { let script = ECHO_SCRIPT; let p = cargo_test_support::project() @@ -502,7 +502,7 @@ args: ["--help"] .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn test_name_has_weird_chars() { let script = ECHO_SCRIPT; let p = cargo_test_support::project() @@ -526,7 +526,7 @@ args: [] .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn test_name_has_leading_number() { let script = ECHO_SCRIPT; let p = cargo_test_support::project() @@ -550,7 +550,7 @@ args: [] .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn test_name_is_number() { let script = ECHO_SCRIPT; let p = cargo_test_support::project().file("42.rs", script).build(); @@ -572,7 +572,7 @@ args: [] .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn script_like_dir() { let p = cargo_test_support::project() .file("foo.rs/foo", "something") @@ -588,7 +588,7 @@ fn script_like_dir() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn non_existent_rs() { let p = cargo_test_support::project().build(); @@ -602,7 +602,7 @@ fn non_existent_rs() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn non_existent_rs_stable() { let p = cargo_test_support::project().build(); @@ -617,7 +617,7 @@ fn non_existent_rs_stable() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn did_you_mean_file() { let p = cargo_test_support::project() .file("food.rs", ECHO_SCRIPT) @@ -635,7 +635,7 @@ fn did_you_mean_file() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn did_you_mean_file_stable() { let p = cargo_test_support::project() .file("food.rs", ECHO_SCRIPT) @@ -653,7 +653,7 @@ fn did_you_mean_file_stable() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn did_you_mean_command() { let p = cargo_test_support::project().build(); @@ -669,7 +669,7 @@ fn did_you_mean_command() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn did_you_mean_command_stable() { let p = cargo_test_support::project().build(); @@ -685,7 +685,7 @@ fn did_you_mean_command_stable() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn test_name_same_as_dependency() { Package::new("script", "1.0.0").publish(); let script = r#"#!/usr/bin/env cargo @@ -722,7 +722,7 @@ Hello world! .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn test_path_dep() { let script = r#"#!/usr/bin/env cargo --- @@ -758,7 +758,7 @@ Hello world! .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn test_no_build_rs() { let script = r#"#!/usr/bin/env cargo @@ -786,7 +786,7 @@ Hello world! .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn test_no_autobins() { let script = r#"#!/usr/bin/env cargo @@ -814,7 +814,7 @@ Hello world! .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn test_no_autolib() { let script = r#"#!/usr/bin/env cargo @@ -842,7 +842,7 @@ Hello world! .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn disallow_explicit_workspace() { let p = cargo_test_support::project() .file( @@ -872,7 +872,7 @@ Caused by: .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn disallow_explicit_lib() { let p = cargo_test_support::project() .file( @@ -904,7 +904,7 @@ Caused by: .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn disallow_explicit_bin() { let p = cargo_test_support::project() .file( @@ -936,7 +936,7 @@ Caused by: .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn disallow_explicit_example() { let p = cargo_test_support::project() .file( @@ -968,7 +968,7 @@ Caused by: .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn disallow_explicit_test() { let p = cargo_test_support::project() .file( @@ -1000,7 +1000,7 @@ Caused by: .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn disallow_explicit_bench() { let p = cargo_test_support::project() .file( @@ -1032,7 +1032,7 @@ Caused by: .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn disallow_explicit_package_build() { let p = cargo_test_support::project() .file( @@ -1062,7 +1062,7 @@ Caused by: .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn disallow_explicit_package_links() { let p = cargo_test_support::project() .file( @@ -1092,7 +1092,7 @@ Caused by: .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn disallow_explicit_package_autolib() { let p = cargo_test_support::project() .file( @@ -1122,7 +1122,7 @@ Caused by: .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn disallow_explicit_package_autobins() { let p = cargo_test_support::project() .file( @@ -1152,7 +1152,7 @@ Caused by: .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn disallow_explicit_package_autoexamples() { let p = cargo_test_support::project() .file( @@ -1182,7 +1182,7 @@ Caused by: .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn disallow_explicit_package_autotests() { let p = cargo_test_support::project() .file( @@ -1212,7 +1212,7 @@ Caused by: .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn disallow_explicit_package_autobenches() { let p = cargo_test_support::project() .file( @@ -1242,7 +1242,7 @@ Caused by: .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn implicit_target_dir() { let script = ECHO_SCRIPT; let p = cargo_test_support::project() @@ -1266,7 +1266,7 @@ args: [] .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn no_local_lockfile() { let script = ECHO_SCRIPT; let p = cargo_test_support::project() @@ -1295,7 +1295,7 @@ args: [] assert!(!local_lockfile_path.exists()); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_check_requires_nightly() { let script = ECHO_SCRIPT; let p = cargo_test_support::project() @@ -1312,7 +1312,7 @@ fn cmd_check_requires_nightly() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_check_requires_z_flag() { let script = ECHO_SCRIPT; let p = cargo_test_support::project() @@ -1330,7 +1330,7 @@ fn cmd_check_requires_z_flag() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_check_with_embedded() { let script = ECHO_SCRIPT; let p = cargo_test_support::project() @@ -1349,7 +1349,7 @@ fn cmd_check_with_embedded() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_check_with_missing_script_rs() { let p = cargo_test_support::project().build(); @@ -1364,7 +1364,7 @@ fn cmd_check_with_missing_script_rs() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_check_with_missing_script() { let p = cargo_test_support::project().build(); @@ -1379,7 +1379,7 @@ fn cmd_check_with_missing_script() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_build_with_embedded() { let script = ECHO_SCRIPT; let p = cargo_test_support::project() @@ -1398,7 +1398,7 @@ fn cmd_build_with_embedded() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_test_with_embedded() { let script = ECHO_SCRIPT; let p = cargo_test_support::project() @@ -1426,7 +1426,7 @@ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; fini .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_clean_with_embedded() { let script = ECHO_SCRIPT; let p = cargo_test_support::project() @@ -1449,7 +1449,7 @@ fn cmd_clean_with_embedded() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_generate_lockfile_with_embedded() { let script = ECHO_SCRIPT; let p = cargo_test_support::project() @@ -1466,7 +1466,7 @@ fn cmd_generate_lockfile_with_embedded() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_metadata_with_embedded() { let script = ECHO_SCRIPT; let p = cargo_test_support::project() @@ -1553,7 +1553,7 @@ fn cmd_metadata_with_embedded() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_read_manifest_with_embedded() { let script = ECHO_SCRIPT; let p = cargo_test_support::project() @@ -1615,7 +1615,7 @@ fn cmd_read_manifest_with_embedded() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_run_with_embedded() { let p = cargo_test_support::project() .file("script.rs", ECHO_SCRIPT) @@ -1638,7 +1638,7 @@ args: [] .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_tree_with_embedded() { let p = cargo_test_support::project() .file("script.rs", ECHO_SCRIPT) @@ -1657,7 +1657,7 @@ script v0.0.0 ([ROOT]/foo/script.rs) .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_update_with_embedded() { let p = cargo_test_support::project() .file("script.rs", ECHO_SCRIPT) @@ -1673,7 +1673,7 @@ fn cmd_update_with_embedded() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_verify_project_with_embedded() { let p = cargo_test_support::project() .file("script.rs", ECHO_SCRIPT) @@ -1696,7 +1696,7 @@ fn cmd_verify_project_with_embedded() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_pkgid_with_embedded() { let p = cargo_test_support::project() .file("script.rs", ECHO_SCRIPT) @@ -1719,7 +1719,7 @@ path+[ROOTURL]/foo/script.rs#script@0.0.0 .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_pkgid_with_embedded_no_lock_file() { let p = cargo_test_support::project() .file("script.rs", ECHO_SCRIPT) @@ -1736,7 +1736,7 @@ fn cmd_pkgid_with_embedded_no_lock_file() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_pkgid_with_embedded_dep() { Package::new("dep", "1.0.0").publish(); let script = r#"#!/usr/bin/env cargo @@ -1769,7 +1769,7 @@ registry+https://github.com/rust-lang/crates.io-index#dep@1.0.0 .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn script_as_dep() { let p = cargo_test_support::project() .file("script.rs", ECHO_SCRIPT) @@ -1807,7 +1807,7 @@ Caused by: .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_install_with_embedded() { let p = cargo_test_support::project() .file("script.rs", ECHO_SCRIPT) @@ -1823,7 +1823,7 @@ fn cmd_install_with_embedded() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_package_with_embedded() { let p = cargo_test_support::project() .file("script.rs", ECHO_SCRIPT) @@ -1840,7 +1840,7 @@ fn cmd_package_with_embedded() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn cmd_publish_with_embedded() { let p = cargo_test_support::project() .file("script.rs", ECHO_SCRIPT) @@ -1857,7 +1857,7 @@ fn cmd_publish_with_embedded() { .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn manifest_path_env() { let p = cargo_test_support::project() .file( @@ -1887,7 +1887,7 @@ CARGO_MANIFEST_PATH: [ROOT]/foo/script.rs .run(); } -#[cargo_test] +#[cargo_test(nightly, reason = "-Zscript is unstable")] fn ignore_surrounding_workspace() { let p = cargo_test_support::project() .file(