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()20fn 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<()>26fn 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