1 //! Simple script to verify the coding style of this library.
2 //!
3 //! ## How to run
4 //!
5 //! The first argument to this script is the directory to run on, so running
6 //! this script should be as simple as:
7 //!
8 //! ```notrust
9 //! cargo test --test style
10 //! ```
11 
12 pub mod style;
13 
14 use std::env;
15 use std::path::Path;
16 
17 use style::{Result, StyleChecker};
18 
19 #[test]
check_style()20 fn check_style() {
21     let root_dir = Path::new(env!("CARGO_MANIFEST_DIR")).join("../src");
22     walk(&root_dir).unwrap();
23     eprintln!("good style!");
24 }
25 
walk(root_dir: &Path) -> Result<()>26 fn walk(root_dir: &Path) -> Result<()> {
27     let mut style_checker = StyleChecker::new();
28 
29     for entry in glob::glob(&format!(
30         "{}/**/*.rs",
31         root_dir.to_str().expect("dir should be valid UTF-8")
32     ))? {
33         let entry = entry?;
34 
35         let name = entry
36             .file_name()
37             .expect("file name should not end in ..")
38             .to_str()
39             .expect("file name should be valid UTF-8");
40         if let "lib.rs" | "macros.rs" = &name[..] {
41             continue;
42         }
43 
44         let path = entry.as_path();
45         style_checker.check_file(path)?;
46         style_checker.reset_state();
47     }
48 
49     style_checker.finalize()
50 }
51