diff --git a/src/cargo/core/compiler/mod.rs b/src/cargo/core/compiler/mod.rs index 3d3afe5e801..cffa9a69cf6 100644 --- a/src/cargo/core/compiler/mod.rs +++ b/src/cargo/core/compiler/mod.rs @@ -780,8 +780,11 @@ fn prepare_rustc(build_runner: &BuildRunner<'_, '_>, unit: &Unit) -> CargoResult if is_primary { base.env("CARGO_PRIMARY_PACKAGE", "1"); - let file_list = std::env::join_paths(build_runner.sbom_output_files(unit)?)?; - base.env("CARGO_SBOM_PATH", file_list); + let file_list = build_runner.sbom_output_files(unit)?; + if !file_list.is_empty() { + let file_list = std::env::join_paths(file_list)?; + base.env("CARGO_SBOM_PATH", file_list); + } } if unit.target.is_test() || unit.target.is_bench() { diff --git a/tests/testsuite/sbom.rs b/tests/testsuite/sbom.rs index 8c272a767d3..a772b44ee35 100644 --- a/tests/testsuite/sbom.rs +++ b/tests/testsuite/sbom.rs @@ -22,18 +22,25 @@ fn append_sbom_suffix(link: &PathBuf) -> PathBuf { fn warn_without_passing_unstable_flag() { let p = project() .file("Cargo.toml", &basic_bin_manifest("foo")) - .file("src/main.rs", r#"fn main() {}"#) + .file( + "src/main.rs", + r#"fn main() { + eprintln!("{:?}", option_env!("CARGO_SBOM_PATH")); +}"#, + ) .build(); - p.cargo("build") + p.cargo("run") .env("CARGO_BUILD_SBOM", "true") .masquerade_as_nightly_cargo(&["sbom"]) - .with_stderr_data( - "\ - [WARNING] ignoring 'sbom' config, pass `-Zsbom` to enable it\n\ - [COMPILING] foo v0.5.0 ([..])\n\ - [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [..]\n", - ) + .with_stderr_data(snapbox::str![[r#" +[WARNING] ignoring 'sbom' config, pass `-Zsbom` to enable it +[COMPILING] foo v0.5.0 ([ROOT]/foo) +[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s +[RUNNING] `target/debug/foo[EXE]` +None + +"#]]) .run(); let file = append_sbom_suffix(&p.bin("foo"));