Mercurial > python-compiler.rs
annotate src/tests/test_parse_files.rs @ 81:dc82a0d8f144
Add ast.Dict.
author | Bastien Orivel <eijebong@bananium.fr> |
---|---|
date | Mon, 13 Jun 2016 20:45:19 +0200 |
parents | d255a932553f |
children | c06d12a81637 |
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) => { |
62
d255a932553f
Fix a few warnings.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
25
diff
changeset
|
13 panic!(format!("Can't find {}: {}", filename, err)); |
23
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")); |