diff options
author | Justus Winter <justus@sequoia-pgp.org> | 2019-01-08 14:24:11 +0100 |
---|---|---|
committer | Justus Winter <justus@sequoia-pgp.org> | 2019-01-08 14:24:43 +0100 |
commit | 06ad53523ba173b76956d941bb785a564f1199b8 (patch) | |
tree | ca02d0dc1607a58363f3e425347ec6b9350a4c3b | |
parent | a217e41c342c9189f3f42989fffa88b7cbf8ee33 (diff) |
ffi: Make c-tests traverse into directories.
-rw-r--r-- | ffi/tests/c-tests.rs | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/ffi/tests/c-tests.rs b/ffi/tests/c-tests.rs index 05324687..46f703da 100644 --- a/ffi/tests/c-tests.rs +++ b/ffi/tests/c-tests.rs @@ -98,11 +98,18 @@ fn build_so(base: &Path) -> io::Result<()> { fn for_all_rs<F>(src: &Path, mut fun: F) -> io::Result<()> where F: FnMut(&Path) -> io::Result<()> { - for entry in fs::read_dir(src).unwrap() { - let entry = entry?; - let path = entry.path(); - if path.is_file() && path.extension() == Some(OsStr::new("rs")) { - fun(&path)?; + let mut dirs = vec![src.to_path_buf()]; + + while let Some(dir) = dirs.pop() { + for entry in fs::read_dir(dir).unwrap() { + let entry = entry?; + let path = entry.path(); + if path.is_file() && path.extension() == Some(OsStr::new("rs")) { + fun(&path)?; + } + if path.is_dir() { + dirs.push(path.clone()); + } } } Ok(()) |