51 lines
2.4 KiB
Rust
51 lines
2.4 KiB
Rust
// Tests `rustc --help` and similar invocations against snapshots and each other.
|
|
|
|
use run_make_support::{bare_rustc, diff, similar};
|
|
|
|
fn main() {
|
|
// `rustc --help`
|
|
let help = bare_rustc().arg("--help").run().stdout_utf8();
|
|
diff().expected_file("help.stdout").actual_text("(rustc --help)", &help).run();
|
|
|
|
// `rustc` should be the same as `rustc --help`
|
|
let bare = bare_rustc().run().stdout_utf8();
|
|
diff().expected_text("(rustc --help)", &help).actual_text("(rustc)", &bare).run();
|
|
|
|
// `rustc --help -v` should give a similar but longer help message
|
|
let help_v = bare_rustc().arg("--help").arg("-v").run().stdout_utf8();
|
|
diff().expected_file("help-v.stdout").actual_text("(rustc --help -v)", &help_v).run();
|
|
|
|
// Check the diff between `rustc --help` and `rustc --help -v`.
|
|
let help_v_diff = similar::TextDiff::from_lines(&help, &help_v).unified_diff().to_string();
|
|
diff().expected_file("help-v.diff").actual_text("actual", &help_v_diff).run();
|
|
|
|
// Check that all help options can be invoked at once
|
|
let codegen_help = bare_rustc().arg("-Chelp").run().stdout_utf8();
|
|
let unstable_help = bare_rustc().arg("-Zhelp").run().stdout_utf8();
|
|
let lints_help = bare_rustc().arg("-Whelp").run().stdout_utf8();
|
|
let expected_all = format!("{help}{codegen_help}{unstable_help}{lints_help}");
|
|
let all_help = bare_rustc().args(["--help", "-Chelp", "-Zhelp", "-Whelp"]).run().stdout_utf8();
|
|
diff()
|
|
.expected_text(
|
|
"(rustc --help && rustc -Chelp && rustc -Zhelp && rustc -Whelp)",
|
|
&expected_all,
|
|
)
|
|
.actual_text("(rustc --help -Chelp -Zhelp -Whelp)", &all_help)
|
|
.run();
|
|
|
|
// Check that the ordering of help options is respected
|
|
// Note that this is except for `-Whelp`, which always comes last
|
|
let expected_ordered_help = format!("{unstable_help}{codegen_help}{help}{lints_help}");
|
|
let ordered_help =
|
|
bare_rustc().args(["-Whelp", "-Zhelp", "-Chelp", "--help"]).run().stdout_utf8();
|
|
diff()
|
|
.expected_text(
|
|
"(rustc -Whelp && rustc -Zhelp && rustc -Chelp && rustc --help)",
|
|
&expected_ordered_help,
|
|
)
|
|
.actual_text("(rustc -Whelp -Zhelp -Chelp --help)", &ordered_help)
|
|
.run();
|
|
|
|
// Test that `rustc --help` does not suppress invalid flag errors
|
|
let help = bare_rustc().arg("--help --invalid-flag").run_fail().stdout_utf8();
|
|
}
|