changeset 24:199ba034e4af

Generate tests dynamically based on tests/test_parse_files/ content.
author Bastien Orivel <eijebong@bananium.fr>
date Fri, 03 Jun 2016 22:18:15 +0200
parents 5a7c3393382b
children 86604a156ed0
files Cargo.toml build.rs src/tests/tests_convert_dump.rs
diffstat 3 files changed, 21 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -2,6 +2,7 @@
 name = "python-compiler"
 version = "0.0.1"
 authors = ["Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>"]
+build = "build.rs"
 
 [dependencies]
 cpython = "0.0"
new file mode 100644
--- /dev/null
+++ b/build.rs
@@ -0,0 +1,19 @@
+use std::env;
+use std::path::Path;
+use std::io::prelude::*;
+use std::fs::{File, read_dir};
+
+fn main() {
+    let out_dir = env::var("OUT_DIR").unwrap();
+    let path = Path::new(&out_dir).join("generated_parse_tests.rs");
+    let mut f = File::create(&path).unwrap();
+
+    for file in read_dir("tests/test_parse_files").unwrap() {
+        let path = file.unwrap().path();
+        let test_name = path.file_stem().unwrap().to_str().unwrap();
+        let _ = f.write_all(format!("#[test]
+fn {}() {{
+    test_parse_file(\"{}\");
+}}\n", test_name, path.to_str().unwrap()).as_bytes()).unwrap();
+    }
+}
--- a/src/tests/tests_convert_dump.rs
+++ b/src/tests/tests_convert_dump.rs
@@ -31,7 +31,4 @@ fn test_parse_file(filename: &str){
     assert_eq!(code, dumped_ast + "\n");
 }
 
-#[test]
-fn test_assign(){
-    test_parse_file("tests/test_parse_files/test_assign.py");
-}
+include!(concat!(env!("OUT_DIR"), "/generated_parse_tests.rs"));