Skip to content

Commit 45382e6

Browse files
committed
compiletest: allow using revisions with debuginfo tests
1 parent 9a7b7d5 commit 45382e6

File tree

2 files changed

+47
-13
lines changed

2 files changed

+47
-13
lines changed

src/tools/compiletest/src/runtest.rs

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -648,8 +648,6 @@ impl<'test> TestCx<'test> {
648648
}
649649

650650
fn run_debuginfo_cdb_test(&self) {
651-
assert!(self.revision.is_none(), "revisions not relevant here");
652-
653651
let config = Config {
654652
target_rustcflags: self.cleanup_debug_info_options(&self.config.target_rustcflags),
655653
host_rustcflags: self.cleanup_debug_info_options(&self.config.host_rustcflags),
@@ -695,7 +693,12 @@ impl<'test> TestCx<'test> {
695693

696694
// Parse debugger commands etc from test files
697695
let DebuggerCommands { commands, check_lines, breakpoint_lines, .. } =
698-
match DebuggerCommands::parse_from(&self.testpaths.file, self.config, prefixes) {
696+
match DebuggerCommands::parse_from(
697+
&self.testpaths.file,
698+
self.config,
699+
prefixes,
700+
self.revision,
701+
) {
699702
Ok(cmds) => cmds,
700703
Err(e) => self.fatal(&e),
701704
};
@@ -756,8 +759,6 @@ impl<'test> TestCx<'test> {
756759
}
757760

758761
fn run_debuginfo_gdb_test(&self) {
759-
assert!(self.revision.is_none(), "revisions not relevant here");
760-
761762
let config = Config {
762763
target_rustcflags: self.cleanup_debug_info_options(&self.config.target_rustcflags),
763764
host_rustcflags: self.cleanup_debug_info_options(&self.config.host_rustcflags),
@@ -783,7 +784,12 @@ impl<'test> TestCx<'test> {
783784
};
784785

785786
let DebuggerCommands { commands, check_lines, breakpoint_lines } =
786-
match DebuggerCommands::parse_from(&self.testpaths.file, self.config, prefixes) {
787+
match DebuggerCommands::parse_from(
788+
&self.testpaths.file,
789+
self.config,
790+
prefixes,
791+
self.revision,
792+
) {
787793
Ok(cmds) => cmds,
788794
Err(e) => self.fatal(&e),
789795
};
@@ -1005,8 +1011,6 @@ impl<'test> TestCx<'test> {
10051011
}
10061012

10071013
fn run_debuginfo_lldb_test(&self) {
1008-
assert!(self.revision.is_none(), "revisions not relevant here");
1009-
10101014
if self.config.lldb_python_dir.is_none() {
10111015
self.fatal("Can't run LLDB test because LLDB's python path is not set.");
10121016
}
@@ -1059,7 +1063,12 @@ impl<'test> TestCx<'test> {
10591063

10601064
// Parse debugger commands etc from test files
10611065
let DebuggerCommands { commands, check_lines, breakpoint_lines, .. } =
1062-
match DebuggerCommands::parse_from(&self.testpaths.file, self.config, prefixes) {
1066+
match DebuggerCommands::parse_from(
1067+
&self.testpaths.file,
1068+
self.config,
1069+
prefixes,
1070+
self.revision,
1071+
) {
10631072
Ok(cmds) => cmds,
10641073
Err(e) => self.fatal(&e),
10651074
};

src/tools/compiletest/src/runtest/debugger.rs

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ impl DebuggerCommands {
1616
file: &Path,
1717
config: &Config,
1818
debugger_prefixes: &[&str],
19+
rev: Option<&str>,
1920
) -> Result<Self, String> {
2021
let directives = debugger_prefixes
2122
.iter()
@@ -25,13 +26,38 @@ impl DebuggerCommands {
2526
let mut breakpoint_lines = vec![];
2627
let mut commands = vec![];
2728
let mut check_lines = vec![];
28-
let mut counter = 1;
29+
let mut counter = 0;
2930
let reader = BufReader::new(File::open(file).unwrap());
3031
for line in reader.lines() {
32+
counter += 1;
3133
match line {
3234
Ok(line) => {
33-
let line =
34-
if line.starts_with("//") { line[2..].trim_start() } else { line.as_str() };
35+
let (line, lnrev) = if line.starts_with("//") {
36+
let line = line[2..].trim_start();
37+
if line.starts_with('[') {
38+
if let Some(close_brace) = line.find(']') {
39+
let open_brace = line.find('[').unwrap();
40+
let lnrev = &line[open_brace + 1..close_brace];
41+
let line = line[(close_brace + 1)..].trim_start();
42+
(line, Some(lnrev))
43+
} else {
44+
panic!(
45+
"malformed condition direction: expected `//[foo]`, found `{}`",
46+
line
47+
)
48+
}
49+
} else {
50+
(line, None)
51+
}
52+
} else {
53+
(line.as_str(), None)
54+
};
55+
56+
// Skip any revision specific directive that doesn't match the current
57+
// revision being tested
58+
if lnrev.is_some() && lnrev != rev {
59+
continue;
60+
}
3561

3662
if line.contains("#break") {
3763
breakpoint_lines.push(counter);
@@ -49,7 +75,6 @@ impl DebuggerCommands {
4975
}
5076
Err(e) => return Err(format!("Error while parsing debugger commands: {}", e)),
5177
}
52-
counter += 1;
5378
}
5479

5580
Ok(Self { commands, check_lines, breakpoint_lines })

0 commit comments

Comments
 (0)