annotate src/tests/test_parse_files.rs @ 51:ded1907b7a69

Add ast.Nonlocal.
author Bastien Orivel <eijebong@bananium.fr>
date Wed, 08 Jun 2016 17:26:09 +0200
parents 86604a156ed0
children d255a932553f
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
25
86604a156ed0 Rename tests_convert_dump to test_parse_files.
Bastien Orivel <eijebong@bananium.fr>
parents: 24
diff changeset
8 fn test_parse_file(filename: &str) {
23
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
24
199ba034e4af Generate tests dynamically based on tests/test_parse_files/ content.
Bastien Orivel <eijebong@bananium.fr>
parents: 23
diff changeset
34 include!(concat!(env!("OUT_DIR"), "/generated_parse_tests.rs"));