diff options
| author | Corey Farwell <coreyf@rwell.org> | 2017-02-08 10:19:55 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-02-08 10:19:55 -0500 |
| commit | 722baed173b41007c0d82d72b5ac4f2e375f17da (patch) | |
| tree | ded25168f395b07731448843ff2af87a3bea0c54 /src/tools/compiletest | |
| parent | 765892126773c9b9e05bbe7a833d7fd5c262f13c (diff) | |
| parent | d2f8abf2549304b3b67ac6e837d046ddf02c2cd6 (diff) | |
| download | rust-722baed173b41007c0d82d72b5ac4f2e375f17da.tar.gz rust-722baed173b41007c0d82d72b5ac4f2e375f17da.zip | |
Rollup merge of #39597 - GuillaumeGomez:correct_rustdoc_test_file, r=alexcrichton
Display correct filename with --test option
Fixes #39592.
With the current files:
```rust
pub mod foo;
/// This is a Foo;
///
/// ```
/// println!("baaaaaar");
/// ```
pub struct Foo;
/// This is a Bar;
///
/// ```
/// println!("fooooo");
/// ```
pub struct Bar;
```
```rust
// note the whitespaces
/// ```
/// println!("foo");
/// ```
pub fn foo() {}
```
It displays:
```
./build/x86_64-apple-darwin/stage1/bin/rustdoc --test test.rs
running 3 tests
test test.rs - line 13 ... ok
test test.rs - line 5 ... ok
test foo.rs - line 2 ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured
```
```
` ``
println!("lol");
` ``
asdjnfasd
asd
```
It displays:
```
./build/x86_64-apple-darwin/stage1/bin/rustdoc --test foo.md
running 1 test
test <input> - line 3 ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured
```
r? @alexcrichton
Diffstat (limited to 'src/tools/compiletest')
| -rw-r--r-- | src/tools/compiletest/src/runtest.rs | 83 |
1 files changed, 58 insertions, 25 deletions
diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs index bcec1f63bc0..1a3d7a190be 100644 --- a/src/tools/compiletest/src/runtest.rs +++ b/src/tools/compiletest/src/runtest.rs @@ -30,6 +30,7 @@ use std::io::{self, BufReader}; use std::path::{Path, PathBuf}; use std::process::{Command, Output, ExitStatus}; use std::str; +use std::collections::HashMap; use extract_gdb_version; @@ -1942,17 +1943,28 @@ actual:\n\ } } - fn check_rustdoc_test_option(&self, res: ProcRes) { - let mut file = fs::File::open(&self.testpaths.file) + fn get_lines<P: AsRef<Path>>(&self, path: &P, + mut other_files: Option<&mut Vec<String>>) -> Vec<usize> { + let mut file = fs::File::open(path) .expect("markdown_test_output_check_entry File::open failed"); let mut content = String::new(); file.read_to_string(&mut content) .expect("markdown_test_output_check_entry read_to_string failed"); let mut ignore = false; - let mut v: Vec<usize> = - content.lines() - .enumerate() - .filter_map(|(line_nb, line)| { + content.lines() + .enumerate() + .filter_map(|(line_nb, line)| { + if (line.trim_left().starts_with("pub mod ") || + line.trim_left().starts_with("mod ")) && + line.ends_with(";") { + if let Some(ref mut other_files) = other_files { + other_files.push(line.rsplit("mod ") + .next() + .unwrap() + .replace(";", "")); + } + None + } else { let sline = line.split("///").last().unwrap_or(""); let line = sline.trim_left(); if line.starts_with("```") { @@ -1966,8 +1978,21 @@ actual:\n\ } else { None } - }) - .collect(); + } + }) + .collect() + } + + fn check_rustdoc_test_option(&self, res: ProcRes) { + let mut other_files = Vec::new(); + let mut files: HashMap<String, Vec<usize>> = HashMap::new(); + files.insert(self.testpaths.file.to_str().unwrap().to_owned(), + self.get_lines(&self.testpaths.file, Some(&mut other_files))); + for other_file in other_files { + let mut path = self.testpaths.file.clone(); + path.set_file_name(&format!("{}.rs", other_file)); + files.insert(path.to_str().unwrap().to_owned(), self.get_lines(&path, None)); + } let mut tested = 0; for _ in res.stdout.split("\n") @@ -1975,27 +2000,35 @@ actual:\n\ .inspect(|s| { let tmp: Vec<&str> = s.split(" - line ").collect(); if tmp.len() == 2 { - tested += 1; - let line = tmp[1].split(" ...") - .next() - .unwrap_or("0") - .parse() - .unwrap_or(0); - if let Ok(pos) = v.binary_search(&line) { - v.remove(pos); - } else { - self.fatal_proc_rec( - &format!("Not found doc test: \"{}\" in {:?}", s, v), - &res); + let path = tmp[0].rsplit("test ").next().unwrap(); + if let Some(ref mut v) = files.get_mut(path) { + tested += 1; + let line = tmp[1].split(" ...") + .next() + .unwrap_or("0") + .parse() + .unwrap_or(0); + if let Ok(pos) = v.binary_search(&line) { + v.remove(pos); + } else { + self.fatal_proc_rec( + &format!("Not found doc test: \"{}\" in \"{}\":{:?}", + s, path, v), + &res); + } } } }) {} if tested == 0 { - self.fatal_proc_rec("No test has been found", &res); - } else if v.len() != 0 { - self.fatal_proc_rec(&format!("Not found test at line{} {:?}", - if v.len() > 1 { "s" } else { "" }, v), - &res); + self.fatal_proc_rec(&format!("No test has been found... {:?}", files), &res); + } else { + for (entry, v) in &files { + if v.len() != 0 { + self.fatal_proc_rec(&format!("Not found test at line{} \"{}\":{:?}", + if v.len() > 1 { "s" } else { "" }, entry, v), + &res); + } + } } } |
