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/mod.rs
@@ -0,0 +1,1 @@
+mod tests_convert_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");
+}
new file mode 100644
--- /dev/null
+++ b/tests/test_parse_files/test_assign.py
@@ -0,0 +1,1 @@
+var = 5