diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-12-22 21:59:26 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-22 21:59:26 +0100 |
| commit | e86874f8070be691d1efae2a3b83da58bb203071 (patch) | |
| tree | bcd7b400a09254a82e67d095c8c709034e239f38 | |
| parent | 3d86da7939c350b5c10cf8aac19573e25f0fcaf7 (diff) | |
| parent | 4f4d62067a8f22e7ac4038308abe32fef78d5b13 (diff) | |
| download | rust-e86874f8070be691d1efae2a3b83da58bb203071.tar.gz rust-e86874f8070be691d1efae2a3b83da58bb203071.zip | |
Rollup merge of #134629 - clubby789:debuginfo-specific, r=jieyouxu
compiletest: Allow using a specific debugger when running debuginfo tests r? `@jieyouxu` Closes #134468 Example: `./x test tests/debuginfo -- --debugger gdb`
| -rw-r--r-- | src/tools/compiletest/src/lib.rs | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/src/tools/compiletest/src/lib.rs b/src/tools/compiletest/src/lib.rs index d3b4631a212..250ef0794ad 100644 --- a/src/tools/compiletest/src/lib.rs +++ b/src/tools/compiletest/src/lib.rs @@ -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()); |
