# HG changeset patch # User Bastien Orivel # Date 1464985095 -7200 # Node ID 199ba034e4af18319ecd4db954ab84bdb01e95fc # Parent 5a7c3393382bfcc36164c113646e967e3ac044d8 Generate tests dynamically based on tests/test_parse_files/ content. diff --git a/Cargo.toml b/Cargo.toml --- a/Cargo.toml +++ b/Cargo.toml @@ -2,6 +2,7 @@ name = "python-compiler" version = "0.0.1" authors = ["Emmanuel Gil Peyrot "] +build = "build.rs" [dependencies] cpython = "0.0" diff --git a/build.rs b/build.rs 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(); + } +} diff --git a/src/tests/tests_convert_dump.rs b/src/tests/tests_convert_dump.rs --- 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"));