summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2019-01-08 14:24:11 +0100
committerJustus Winter <justus@sequoia-pgp.org>2019-01-08 14:24:43 +0100
commit06ad53523ba173b76956d941bb785a564f1199b8 (patch)
treeca02d0dc1607a58363f3e425347ec6b9350a4c3b
parenta217e41c342c9189f3f42989fffa88b7cbf8ee33 (diff)
ffi: Make c-tests traverse into directories.
-rw-r--r--ffi/tests/c-tests.rs17
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(())