mirror of https://github.com/rust-lang/rust.git
Rollup merge of #126478 - GuillaumeGomez:migrate-run-make-codegen-options-parsing, r=jieyouxu
Migrate `run-make/codegen-options-parsing` to `rmake.rs` Part of https://github.com/rust-lang/rust/issues/121876. r? `@jieyouxu`
This commit is contained in:
commit
1f076c273b
|
@ -11,7 +11,6 @@ run-make/c-unwind-abi-catch-panic/Makefile
|
|||
run-make/cat-and-grep-sanity-check/Makefile
|
||||
run-make/cdylib-dylib-linkage/Makefile
|
||||
run-make/cdylib-fewer-symbols/Makefile
|
||||
run-make/codegen-options-parsing/Makefile
|
||||
run-make/comment-section/Makefile
|
||||
run-make/compiler-lookup-paths-2/Makefile
|
||||
run-make/compiler-lookup-paths/Makefile
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
# This test intentionally feeds invalid inputs to codegen and checks if the error message outputs contain specific helpful indications.
|
||||
|
||||
# ignore-cross-compile
|
||||
include ../tools.mk
|
||||
|
||||
all:
|
||||
#Option taking a number
|
||||
$(RUSTC) -C codegen-units dummy.rs 2>&1 | \
|
||||
$(CGREP) 'codegen option `codegen-units` requires a number'
|
||||
$(RUSTC) -C codegen-units= dummy.rs 2>&1 | \
|
||||
$(CGREP) 'incorrect value `` for codegen option `codegen-units` - a number was expected'
|
||||
$(RUSTC) -C codegen-units=foo dummy.rs 2>&1 | \
|
||||
$(CGREP) 'incorrect value `foo` for codegen option `codegen-units` - a number was expected'
|
||||
$(RUSTC) -C codegen-units=1 dummy.rs
|
||||
#Option taking a string
|
||||
$(RUSTC) -C extra-filename dummy.rs 2>&1 | \
|
||||
$(CGREP) 'codegen option `extra-filename` requires a string'
|
||||
$(RUSTC) -C extra-filename= dummy.rs 2>&1
|
||||
$(RUSTC) -C extra-filename=foo dummy.rs 2>&1
|
||||
#Option taking no argument
|
||||
$(RUSTC) -C lto= dummy.rs 2>&1 | \
|
||||
$(CGREP) 'codegen option `lto` - either a boolean (`yes`, `no`, `on`, `off`, etc), `thin`, `fat`, or omitted'
|
||||
$(RUSTC) -C lto=1 dummy.rs 2>&1 | \
|
||||
$(CGREP) 'codegen option `lto` - either a boolean (`yes`, `no`, `on`, `off`, etc), `thin`, `fat`, or omitted'
|
||||
$(RUSTC) -C lto=foo dummy.rs 2>&1 | \
|
||||
$(CGREP) 'codegen option `lto` - either a boolean (`yes`, `no`, `on`, `off`, etc), `thin`, `fat`, or omitted'
|
||||
$(RUSTC) -C lto dummy.rs
|
||||
|
||||
# Should not link dead code...
|
||||
$(RUSTC) --print link-args dummy.rs 2>&1 | \
|
||||
$(CGREP) -e '--gc-sections|-z[^ ]* [^ ]*<ignore>|-dead_strip|/OPT:REF'
|
||||
# ... unless you specifically ask to keep it
|
||||
$(RUSTC) --print link-args -C link-dead-code dummy.rs 2>&1 | \
|
||||
$(CGREP) -ve '--gc-sections|-z[^ ]* [^ ]*<ignore>|-dead_strip|/OPT:REF'
|
|
@ -0,0 +1,56 @@
|
|||
// This test intentionally feeds invalid inputs to codegen and checks if the error message outputs
|
||||
// contain specific helpful indications.
|
||||
|
||||
//@ ignore-cross-compile
|
||||
|
||||
use run_make_support::regex::Regex;
|
||||
use run_make_support::rustc;
|
||||
|
||||
fn main() {
|
||||
// Option taking a number.
|
||||
rustc()
|
||||
.input("dummy.rs")
|
||||
.arg("-Ccodegen-units")
|
||||
.run_fail()
|
||||
.assert_stderr_contains("codegen option `codegen-units` requires a number");
|
||||
rustc().input("dummy.rs").arg("-Ccodegen-units=").run_fail().assert_stderr_contains(
|
||||
"incorrect value `` for codegen option `codegen-units` - a number was expected",
|
||||
);
|
||||
rustc().input("dummy.rs").arg("-Ccodegen-units=foo").run_fail().assert_stderr_contains(
|
||||
"incorrect value `foo` for codegen option `codegen-units` - a number was expected",
|
||||
);
|
||||
rustc().input("dummy.rs").arg("-Ccodegen-units=1").run();
|
||||
|
||||
// Option taking a string.
|
||||
rustc()
|
||||
.input("dummy.rs")
|
||||
.arg("-Cextra-filename")
|
||||
.run_fail()
|
||||
.assert_stderr_contains("codegen option `extra-filename` requires a string");
|
||||
rustc().input("dummy.rs").arg("-Cextra-filename=").run();
|
||||
rustc().input("dummy.rs").arg("-Cextra-filename=foo").run();
|
||||
|
||||
// Option taking no argument.
|
||||
rustc().input("dummy.rs").arg("-Clto=").run_fail().assert_stderr_contains(
|
||||
"codegen option `lto` - either a boolean (`yes`, `no`, `on`, `off`, etc), `thin`, \
|
||||
`fat`, or omitted",
|
||||
);
|
||||
rustc().input("dummy.rs").arg("-Clto=1").run_fail().assert_stderr_contains(
|
||||
"codegen option `lto` - either a boolean (`yes`, `no`, `on`, `off`, etc), `thin`, \
|
||||
`fat`, or omitted",
|
||||
);
|
||||
rustc().input("dummy.rs").arg("-Clto=foo").run_fail().assert_stderr_contains(
|
||||
"codegen option `lto` - either a boolean (`yes`, `no`, `on`, `off`, etc), `thin`, \
|
||||
`fat`, or omitted",
|
||||
);
|
||||
rustc().input("dummy.rs").arg("-Clto").run();
|
||||
|
||||
let regex = Regex::new("--gc-sections|-z[^ ]* [^ ]*<ignore>|-dead_strip|/OPT:REF").unwrap();
|
||||
// Should not link dead code...
|
||||
let stdout = rustc().input("dummy.rs").print("link-args").run().stdout_utf8();
|
||||
assert!(regex.is_match(&stdout));
|
||||
// ... unless you specifically ask to keep it
|
||||
let stdout =
|
||||
rustc().input("dummy.rs").print("link-args").arg("-Clink-dead-code").run().stdout_utf8();
|
||||
assert!(!regex.is_match(&stdout));
|
||||
}
|
Loading…
Reference in New Issue