use ignore::{self, gitignore};
-use std::path::PathBuf;
use crate::config::{FileName, IgnoreList};
-pub struct IgnorePathSet {
+pub(crate) struct IgnorePathSet {
ignore_set: gitignore::Gitignore,
}
impl IgnorePathSet {
- pub fn from_ignore_list(ignore_list: &IgnoreList) -> Result<Self, ignore::Error> {
- let mut ignore_builder = gitignore::GitignoreBuilder::new(PathBuf::from(""));
+ pub(crate) fn from_ignore_list(ignore_list: &IgnoreList) -> Result<Self, ignore::Error> {
+ let mut ignore_builder = gitignore::GitignoreBuilder::new(ignore_list.rustfmt_toml_path());
for ignore_path in ignore_list {
ignore_builder.add_line(None, ignore_path.to_str().unwrap())?;
})
}
- pub fn is_match(&self, file_name: &FileName) -> bool {
+ pub(crate) fn is_match(&self, file_name: &FileName) -> bool {
match file_name {
FileName::Stdin => false,
FileName::Real(p) => self
#[cfg(test)]
mod test {
+ use std::path::{Path, PathBuf};
+
use crate::config::{Config, FileName};
use crate::ignore_path::IgnorePathSet;
- use std::path::PathBuf;
#[test]
fn test_ignore_path_set() {
- let config = Config::from_toml(
- "ignore = [
- \"foo.rs\",
- \"bar_dir/*\",
- ]",
- )
- .unwrap();
- let ignore_path_set = IgnorePathSet::from_ignore_list(&config.ignore()).unwrap();
-
- assert!(ignore_path_set.is_match(&FileName::Real(PathBuf::from("src/foo.rs"))));
- assert!(ignore_path_set.is_match(&FileName::Real(PathBuf::from("bar_dir/baz.rs"))));
- assert!(!ignore_path_set.is_match(&FileName::Real(PathBuf::from("src/bar.rs"))));
+ match option_env!("CFG_RELEASE_CHANNEL") {
+ // this test requires nightly
+ None | Some("nightly") => {
+ let config =
+ Config::from_toml(r#"ignore = ["foo.rs", "bar_dir/*"]"#, Path::new(""))
+ .unwrap();
+ let ignore_path_set = IgnorePathSet::from_ignore_list(&config.ignore()).unwrap();
+
+ assert!(ignore_path_set.is_match(&FileName::Real(PathBuf::from("src/foo.rs"))));
+ assert!(ignore_path_set.is_match(&FileName::Real(PathBuf::from("bar_dir/baz.rs"))));
+ assert!(!ignore_path_set.is_match(&FileName::Real(PathBuf::from("src/bar.rs"))));
+ }
+ _ => (),
+ };
}
}