Mercurial > python-compiler.rs
annotate src/tests/test_parse_files.rs @ 93:c06d12a81637
Better test failure. Use assert_diff! instead of assert_eq! so we can actually see what the differences are.
author | Bastien Orivel <eijebong@bananium.fr> |
---|---|
date | Tue, 14 Jun 2016 02:53:29 +0200 |
parents | d255a932553f |
children | e0368bea06a6 |
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); |
93
c06d12a81637
Better test failure. Use assert_diff! instead of assert_eq! so we can actually see what the differences are.
Bastien Orivel <eijebong@bananium.fr>
parents:
62
diff
changeset
|
30 let dumped_ast = ast_dump::dump_ast(&module_ast) + "\n"; |
c06d12a81637
Better test failure. Use assert_diff! instead of assert_eq! so we can actually see what the differences are.
Bastien Orivel <eijebong@bananium.fr>
parents:
62
diff
changeset
|
31 assert_diff!(code.as_str(), dumped_ast.as_str(), "\n", 0); |
23
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")); |