aboutsummaryrefslogtreecommitdiffstats
path: root/build.rs
diff options
context:
space:
mode:
Diffstat (limited to 'build.rs')
-rw-r--r--build.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/build.rs b/build.rs
new file mode 100644
index 0000000..92b63ab
--- /dev/null
+++ b/build.rs
@@ -0,0 +1,28 @@
+use std::path::{Path, PathBuf};
+
+fn find_tests(directory: &Path) -> Vec<PathBuf> {
+ let mut tests = Vec::new();
+
+ for entry in std::fs::read_dir(directory).unwrap() {
+ let path = entry.unwrap().path();
+
+ if path.file_name().unwrap().to_str().unwrap().starts_with("_") {
+ continue;
+ }
+
+ if path.is_dir() {
+ tests.append(&mut find_tests(&path));
+ } else {
+ assert!(!path.to_str().unwrap().contains(","), "You should be ashamed.");
+ tests.push(path);
+ }
+ }
+
+ tests
+}
+
+fn main() {
+ let tests = find_tests(Path::new("progs/"));
+ let files = tests.iter().fold(String::new(), |a, b| format!("{},{}", a, b.display()));
+ println!("cargo:rustc-env=SCRIPTS={}", &files[1..]);
+}