1
Fork 0

compiletest: Allow using a specific debugger when running debuginfo tests

This commit is contained in:
clubby789 2024-12-21 20:47:58 +00:00
parent 4c40c89c26
commit 4f4d62067a

View file

@ -37,7 +37,7 @@ use walkdir::WalkDir;
use self::header::{EarlyProps, make_test_description};
use crate::common::{
CompareMode, Config, Mode, PassMode, TestPaths, UI_EXTENSIONS, expected_output_path,
CompareMode, Config, Debugger, Mode, PassMode, TestPaths, UI_EXTENSIONS, expected_output_path,
output_base_dir, output_relative_path,
};
use crate::header::HeadersCache;
@ -183,7 +183,13 @@ pub fn parse_config(args: Vec<String>) -> Config {
"What custom diff tool to use for displaying compiletest tests.",
"COMMAND",
)
.reqopt("", "minicore-path", "path to minicore aux library", "PATH");
.reqopt("", "minicore-path", "path to minicore aux library", "PATH")
.optopt(
"",
"debugger",
"only test a specific debugger in debuginfo tests",
"gdb | lldb | cdb",
);
let (argv0, args_) = args.split_first().unwrap();
if args.len() == 1 || args[1] == "-h" || args[1] == "--help" {
@ -302,7 +308,11 @@ pub fn parse_config(args: Vec<String>) -> Config {
stage_id: matches.opt_str("stage-id").unwrap(),
mode,
suite: matches.opt_str("suite").unwrap(),
debugger: None,
debugger: matches.opt_str("debugger").map(|debugger| {
debugger
.parse::<Debugger>()
.unwrap_or_else(|_| panic!("unknown `--debugger` option `{debugger}` given"))
}),
run_ignored,
with_rustc_debug_assertions,
with_std_debug_assertions,
@ -475,9 +485,16 @@ pub fn run_tests(config: Arc<Config>) {
if let Mode::DebugInfo = config.mode {
// Debugging emscripten code doesn't make sense today
if !config.target.contains("emscripten") {
configs.extend(debuggers::configure_cdb(&config));
configs.extend(debuggers::configure_gdb(&config));
configs.extend(debuggers::configure_lldb(&config));
match config.debugger {
Some(Debugger::Cdb) => configs.extend(debuggers::configure_cdb(&config)),
Some(Debugger::Gdb) => configs.extend(debuggers::configure_gdb(&config)),
Some(Debugger::Lldb) => configs.extend(debuggers::configure_lldb(&config)),
None => {
configs.extend(debuggers::configure_cdb(&config));
configs.extend(debuggers::configure_gdb(&config));
configs.extend(debuggers::configure_lldb(&config));
}
}
}
} else {
configs.push(config.clone());