readme_example/
readme_example.rs1extern crate specker;
2
3use std::collections::HashMap;
4use std::fs;
5use std::path::PathBuf;
6
7fn main() {
8 let src_dir: PathBuf = PathBuf::from(file!()).parent().map(|p| p.into()).unwrap();
9 let spec_dir = src_dir.join("spec");
10
11 for maybe_spec in specker::walk_spec_dir(
12 &spec_dir,
13 "txt",
14 specker::Options {
15 skip_lines: "..",
16 marker: "##",
17 var_start: "${",
18 var_end: "}",
19 },
20 ) {
21 let spec_path = maybe_spec.unwrap_or_else(|e| {
22 panic!("\n{}", specker::display_error(&e));
24 });
25
26 for (item, input_file_name) in spec_path.spec.iter().filter_map(|item| {
28 item.get_param("file")
29 .map(|param_value| (item, param_value))
30 }) {
31 let path = spec_dir.join(input_file_name);
32 let mut file =
33 fs::File::open(&path).expect(&format!("failed to open file {:?}", &path));
34
35 if let Err(e) = item.match_contents(&mut file, &HashMap::new()) {
36 panic!("\n{}", specker::display_error_for_file(&path, &e));
38 }
39 }
40 }
41
42 println!("example succeeded, try to modify /spec files to see some errors")
43}