annotate build.rs @ 95:6569eea3db23

Ignore tests which don’t have the .py extension.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Tue, 28 Jun 2016 01:36:14 +0100
parents e0368bea06a6
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
24
199ba034e4af Generate tests dynamically based on tests/test_parse_files/ content.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
1 use std::env;
199ba034e4af Generate tests dynamically based on tests/test_parse_files/ content.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
2 use std::path::Path;
199ba034e4af Generate tests dynamically based on tests/test_parse_files/ content.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
3 use std::io::prelude::*;
199ba034e4af Generate tests dynamically based on tests/test_parse_files/ content.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
4 use std::fs::{File, read_dir};
199ba034e4af Generate tests dynamically based on tests/test_parse_files/ content.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
5
94
e0368bea06a6 Refactor tests a little bit so it's easier to add more.
Bastien Orivel <eijebong@bananium.fr>
parents: 24
diff changeset
6 fn gen_parse_file_tests(out_dir: String) {
24
199ba034e4af Generate tests dynamically based on tests/test_parse_files/ content.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
7 let path = Path::new(&out_dir).join("generated_parse_tests.rs");
199ba034e4af Generate tests dynamically based on tests/test_parse_files/ content.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
8 let mut f = File::create(&path).unwrap();
199ba034e4af Generate tests dynamically based on tests/test_parse_files/ content.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
9
199ba034e4af Generate tests dynamically based on tests/test_parse_files/ content.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
10 for file in read_dir("tests/test_parse_files").unwrap() {
199ba034e4af Generate tests dynamically based on tests/test_parse_files/ content.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
11 let path = file.unwrap().path();
95
6569eea3db23 Ignore tests which don’t have the .py extension.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 94
diff changeset
12 if path.extension().unwrap() != "py" {
6569eea3db23 Ignore tests which don’t have the .py extension.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 94
diff changeset
13 continue;
6569eea3db23 Ignore tests which don’t have the .py extension.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 94
diff changeset
14 }
24
199ba034e4af Generate tests dynamically based on tests/test_parse_files/ content.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
15 let test_name = path.file_stem().unwrap().to_str().unwrap();
199ba034e4af Generate tests dynamically based on tests/test_parse_files/ content.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
16 let _ = f.write_all(format!("#[test]
199ba034e4af Generate tests dynamically based on tests/test_parse_files/ content.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
17 fn {}() {{
199ba034e4af Generate tests dynamically based on tests/test_parse_files/ content.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
18 test_parse_file(\"{}\");
199ba034e4af Generate tests dynamically based on tests/test_parse_files/ content.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
19 }}\n", test_name, path.to_str().unwrap()).as_bytes()).unwrap();
199ba034e4af Generate tests dynamically based on tests/test_parse_files/ content.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
20 }
199ba034e4af Generate tests dynamically based on tests/test_parse_files/ content.
Bastien Orivel <eijebong@bananium.fr>
parents:
diff changeset
21 }
94
e0368bea06a6 Refactor tests a little bit so it's easier to add more.
Bastien Orivel <eijebong@bananium.fr>
parents: 24
diff changeset
22
e0368bea06a6 Refactor tests a little bit so it's easier to add more.
Bastien Orivel <eijebong@bananium.fr>
parents: 24
diff changeset
23 fn main() {
e0368bea06a6 Refactor tests a little bit so it's easier to add more.
Bastien Orivel <eijebong@bananium.fr>
parents: 24
diff changeset
24 let out_dir = env::var("OUT_DIR").unwrap();
e0368bea06a6 Refactor tests a little bit so it's easier to add more.
Bastien Orivel <eijebong@bananium.fr>
parents: 24
diff changeset
25 gen_parse_file_tests(out_dir);
e0368bea06a6 Refactor tests a little bit so it's easier to add more.
Bastien Orivel <eijebong@bananium.fr>
parents: 24
diff changeset
26 }