diff --git a/src/main.rs b/src/main.rs index 1c6aeb06..7409157e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -232,6 +232,12 @@ fn file_walker_builder(include_paths: Vec<&String>, include_gitignored: bool) -> builder.git_ignore(!include_gitignored); builder.add_custom_ignore_filename(".rubyfmtignore"); + + // WalkBuilder ignores hidden files by default, dropping .rb files under + // dot-directories like .buildkite/. Un-hide dotfiles, but keep .git out. + builder.hidden(false); + builder.filter_entry(|entry| entry.file_name() != OsStr::new(".git")); + builder } diff --git a/tests/cli_interface_test.rs b/tests/cli_interface_test.rs index 29d4f2bb..9034c412 100644 --- a/tests/cli_interface_test.rs +++ b/tests/cli_interface_test.rs @@ -461,6 +461,58 @@ fn test_format_directory_with_changes() { assert_eq!("a(4, 5, 6)\n", read_to_string(file_two.path()).unwrap()); } +#[test] +fn test_format_directory_with_changes_in_hidden_directory() { + // Hidden directories should not be skipped when walking a directory argument. + let dir = tempdir().unwrap(); + let dir_name = dir.path().to_str().unwrap().to_owned(); + create_dir(dir_name.clone() + "/.hidden").unwrap(); + + let mut file = tempfile::Builder::new() + .prefix("rubyfmt") + .suffix(".rb") + .tempfile_in(dir_name.clone() + "/.hidden") + .unwrap(); + writeln!(file, "a 1, 2, 3").unwrap(); + + Command::cargo_bin("rubyfmt-main") + .unwrap() + .arg(dir_name) + .arg("-i") + .assert() + .stdout("") + .code(0) + .success(); + + assert_eq!("a(1, 2, 3)\n", read_to_string(file.path()).unwrap()); +} + +#[test] +fn test_format_directory_ignores_git_directory() { + // .git should still be skipped even though hidden directories are walked now. + let dir = tempdir().unwrap(); + let dir_name = dir.path().to_str().unwrap().to_owned(); + create_dir(dir_name.clone() + "/.git").unwrap(); + + let mut file = tempfile::Builder::new() + .prefix("rubyfmt") + .suffix(".rb") + .tempfile_in(dir_name.clone() + "/.git") + .unwrap(); + writeln!(file, "a 1, 2, 3").unwrap(); + + Command::cargo_bin("rubyfmt-main") + .unwrap() + .arg(dir_name) + .arg("-i") + .assert() + .stdout("") + .code(0) + .success(); + + assert_eq!("a 1, 2, 3\n", read_to_string(file.path()).unwrap()); +} + #[test] fn format_input_file_with_changes() { let mut file_one = NamedTempFile::new().unwrap();