Mercurial > python-compiler.rs
changeset 23:5a7c3393382b
Add a simple test for ast.Assign.
author | Bastien Orivel <eijebong@bananium.fr> |
---|---|
date | Fri, 03 Jun 2016 19:06:57 +0200 |
parents | 25b202005d1d |
children | 199ba034e4af |
files | src/main.rs src/tests/mod.rs src/tests/tests_convert_dump.rs tests/test_parse_files/test_assign.py |
diffstat | 4 files changed, 42 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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;
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"); +}