annotate src/tests/tests_convert_dump.rs @ 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
children 199ba034e4af
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
1 use ast_convert;
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
2 use ast_dump;
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
3 use python_tb;
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
4 use python_parse;
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
5 use std::io::Read;
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
6 use std::fs::File;
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
7
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
8 fn test_parse_file(filename: &str){
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
9 let code = {
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
10 let mut file = match File::open(filename) {
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
11 Ok(file) => file,
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
12 Err(err) => {
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
13 panic!(format!("Can't find {}", filename));
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
14 }
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
15 };
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
16 let mut code = String::new();
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
17 file.read_to_string(&mut code).unwrap();
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
18 code
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
19 };
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
20
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
21 let module = match python_parse::parse_ast(code.clone()) {
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
22 Ok(module) => module,
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
23 Err(err) => {
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
24 python_tb::traceback(err);
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
25 panic!(format!("Error while parsing file “{}”:", filename));
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
26 }
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
27 };
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
28
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
29 let module_ast = ast_convert::convert_ast("__main__".to_string(), &module);
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
30 let dumped_ast = ast_dump::dump_ast(&module_ast);
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
31 assert_eq!(code, dumped_ast + "\n");
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
32 }
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
33
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
34 #[test]
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
35 fn test_assign(){
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
36 test_parse_file("tests/test_parse_files/test_assign.py");
5a7c3393382b Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
37 }