Skip to content

Commit

Permalink
Bail out an error when using cargo:: in custom build script
Browse files Browse the repository at this point in the history
Signed-off-by: hi-rustin <[email protected]>
  • Loading branch information
Rustin170506 committed Jul 27, 2023
1 parent 45782b6 commit 4bdeb53
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 1 deletion.
12 changes: 11 additions & 1 deletion src/cargo/core/compiler/custom_build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -690,7 +690,17 @@ impl BuildOutput {
continue;
}
let data = match iter.next() {
Some(val) => val,
Some(val) => {
if val.starts_with(":") {
// Line started with `cargo::`.
bail!("unsupported output in {}: `{}`\n\
Found a `cargo::key=value` build directive which is reserved for future use.\n\
Either change the directive to `cargo:key=value` syntax (note the single `:`) or upgrade your version of Rust.\n\
See https://doc.rust-lang.org/cargo/reference/build-scripts.html#outputs-of-the-build-script \
for more information about build script outputs.", whence, line);
}
val
}
None => continue,
};

Expand Down
29 changes: 29 additions & 0 deletions tests/testsuite/build_script.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5140,6 +5140,35 @@ for more information about build script outputs.
.run();
}

#[cargo_test]
fn wrong_syntax_with_two_colons() {
let p = project()
.file("src/lib.rs", "")
.file(
"build.rs",
r#"
fn main() {
println!("cargo::foo=bar");
}
"#,
)
.build();

p.cargo("build")
.with_status(101)
.with_stderr(
"\
[COMPILING] foo [..]
error: unsupported output in build script of `foo v0.0.1 ([ROOT]/foo)`: `cargo::foo=bar`
Found a `cargo::key=value` build directive which is reserved for future use.
Either change the directive to `cargo:key=value` syntax (note the single `:`) or upgrade your version of Rust.
See https://doc.rust-lang.org/cargo/reference/build-scripts.html#outputs-of-the-build-script \
for more information about build script outputs.
",
)
.run();
}

#[cargo_test]
fn custom_build_closes_stdin() {
// Ensure stdin is closed to prevent deadlock.
Expand Down

0 comments on commit 4bdeb53

Please sign in to comment.