# HG changeset patch # User Bastien Orivel # Date 1464973617 -7200 # Node ID 5a7c3393382bfcc36164c113646e967e3ac044d8 # Parent 25b202005d1df4c8515b092a072ed5f5baa1b054 Add a simple test for ast.Assign. diff --git a/src/main.rs b/src/main.rs --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,8 @@ extern crate cpython; +#[cfg="test"] +mod tests; + mod python_tb; mod python_parse; mod python_dump; diff --git a/src/tests/mod.rs b/src/tests/mod.rs new file mode 100644 --- /dev/null +++ b/src/tests/mod.rs @@ -0,0 +1,1 @@ +mod tests_convert_dump; diff --git a/src/tests/tests_convert_dump.rs b/src/tests/tests_convert_dump.rs new file mode 100644 --- /dev/null +++ b/src/tests/tests_convert_dump.rs @@ -0,0 +1,37 @@ +use ast_convert; +use ast_dump; +use python_tb; +use python_parse; +use std::io::Read; +use std::fs::File; + +fn test_parse_file(filename: &str){ + let code = { + let mut file = match File::open(filename) { + Ok(file) => file, + Err(err) => { + panic!(format!("Can't find {}", filename)); + } + }; + let mut code = String::new(); + file.read_to_string(&mut code).unwrap(); + code + }; + + let module = match python_parse::parse_ast(code.clone()) { + Ok(module) => module, + Err(err) => { + python_tb::traceback(err); + panic!(format!("Error while parsing file “{}”:", filename)); + } + }; + + let module_ast = ast_convert::convert_ast("__main__".to_string(), &module); + let dumped_ast = ast_dump::dump_ast(&module_ast); + assert_eq!(code, dumped_ast + "\n"); +} + +#[test] +fn test_assign(){ + test_parse_file("tests/test_parse_files/test_assign.py"); +} diff --git a/tests/test_parse_files/test_assign.py b/tests/test_parse_files/test_assign.py new file mode 100644 --- /dev/null +++ b/tests/test_parse_files/test_assign.py @@ -0,0 +1,1 @@ +var = 5