File tree Expand file tree Collapse file tree 3 files changed +1154
-1053
lines changed
crates/pixi_glob/src/glob_set Expand file tree Collapse file tree 3 files changed +1154
-1053
lines changed Original file line number Diff line number Diff line change @@ -263,6 +263,29 @@ mod tests {
263263 "# ) ;
264264 }
265265
266+ #[ test]
267+ fn check_hidden_folder_is_whitelisted_with_star ( ) {
268+ let temp_dir = tempdir ( ) . unwrap ( ) ;
269+ let root_path = temp_dir. path ( ) . join ( "workspace" ) ;
270+ fs:: create_dir ( & root_path) . unwrap ( ) ;
271+
272+ let hidden_pixi_folder = root_path. join ( ".pixi" ) . join ( "subdir" ) ;
273+
274+ fs:: create_dir_all ( & hidden_pixi_folder) . unwrap ( ) ;
275+
276+ File :: create ( hidden_pixi_folder. join ( "foo_hidden.txt" ) ) . unwrap ( ) ;
277+
278+ File :: create ( root_path. as_path ( ) . join ( "some_text.txt" ) ) . unwrap ( ) ;
279+ let glob_set = GlobSet :: create ( vec ! [ ".pixi/subdir/**" ] ) ;
280+
281+ let entries = glob_set. collect_matching ( & root_path) . unwrap ( ) ;
282+
283+ let paths = sorted_paths ( entries, & root_path) ;
284+ assert_yaml_snapshot ! ( paths, @r#"
285+ - ".pixi/subdir/foo_hidden.txt"
286+ "# ) ;
287+ }
288+
266289 #[ test]
267290 fn check_hidden_folders_are_not_included ( ) {
268291 let temp_dir = tempdir ( ) . unwrap ( ) ;
Original file line number Diff line number Diff line change @@ -111,7 +111,7 @@ pub fn walk_globs(
111111 let mut builder = ignore:: WalkBuilder :: new ( effective_walk_root) ;
112112
113113 let walker_builder = builder
114- . git_ignore ( true )
114+ . git_ignore ( false )
115115 . git_exclude ( true )
116116 . hidden ( enable_ignoring_hidden)
117117 . git_global ( false )
@@ -304,13 +304,23 @@ pub fn set_ignore_hidden_patterns(patterns: &[String]) -> Option<Vec<String>> {
304304 // Extract the hidden folder name from patterns like:
305305 // ".pixi/*" -> ".pixi"
306306 // "**/.deep_pixi/**" -> ".deep_pixi"
307+ // ".build/CMakeFiles/**" -> ".build"
307308 let hidden_folder = if pattern. starts_with ( '.' ) {
308- // Pattern like ".pixi/*"
309- pattern
309+ // Pattern like ".pixi/*" or ".build/CMakeFiles/**"
310+ // Extract just the first hidden folder component
311+ if let Some ( slash_idx) = pattern. find ( '/' ) {
312+ & pattern[ ..slash_idx]
313+ } else {
314+ pattern
315+ }
310316 } else if let Some ( idx) = pattern. find ( "/." ) {
311317 // Pattern like "**/.deep_pixi/**"
312318 let after_slash = & pattern[ idx + 1 ..] ;
313- after_slash. split ( '/' ) . next ( ) . unwrap_or ( pattern)
319+ if let Some ( slash_idx) = after_slash. find ( '/' ) {
320+ & after_slash[ ..slash_idx]
321+ } else {
322+ after_slash. split ( '/' ) . next ( ) . unwrap_or ( pattern)
323+ }
314324 } else {
315325 continue ;
316326 } ;
You can’t perform that action at this time.
0 commit comments