@@ -71,7 +71,9 @@ def test_symlinks_and_special_files(temp_project, run_mapper):
7171 logging .warning (f"Could not create symlink: { e } , skipping symlink part." )
7272 can_symlink = False
7373
74- (temp_project / ".treemapperignore" ).write_text (".*\n !.gitignore\n " )
74+ config_dir = temp_project / ".treemapper"
75+ config_dir .mkdir (exist_ok = True )
76+ (config_dir / "ignore" ).write_text (".*\n !.gitignore\n " )
7577 assert run_mapper (["." , "-o" , "directory_tree.yaml" ])
7678 result = load_yaml (temp_project / "directory_tree.yaml" )
7779 all_files = get_all_files_in_tree (result )
@@ -85,7 +87,9 @@ def test_symlinks_and_special_files(temp_project, run_mapper):
8587
8688def test_empty_and_invalid_ignores (temp_project , run_mapper ):
8789 (temp_project / ".gitignore" ).write_text ("" )
88- (temp_project / ".treemapperignore" ).write_text ("\n \n # Just comments\n \n " )
90+ config_dir = temp_project / ".treemapper"
91+ config_dir .mkdir (exist_ok = True )
92+ (config_dir / "ignore" ).write_text ("\n \n # Just comments\n \n " )
8993 (temp_project / "empty.ignore" ).write_text ("" )
9094 (temp_project / "invalid.ignore" ).write_text ("[\n invalid\n pattern\n " )
9195 assert run_mapper (["." , "-o" , "out_empty.yaml" ])
@@ -204,7 +208,7 @@ def test_no_default_ignores_flag(temp_project, run_mapper):
204208 assert "treemapper_ignored" in all_files , "'treemapper_ignored/' should NOT be ignored with --no-default-ignores"
205209 assert "file.txt" in all_files
206210 assert ".gitignore" in all_files
207- assert ".treemapperignore " in all_files
211+ assert ".treemapper " in all_files
208212 assert treemapper_ignore .name in all_files
209213 assert custom_ignore .name in all_files
210214 assert (
@@ -217,7 +221,8 @@ def test_no_default_ignores_flag(temp_project, run_mapper):
217221 reason = "os.chmod limited on Windows/WSL" ,
218222)
219223def test_unreadable_ignore_file (temp_project , run_mapper , set_perms , caplog ):
220- ignore_file = temp_project / ".treemapperignore"
224+ config_dir = temp_project / ".treemapper"
225+ ignore_file = config_dir / "ignore"
221226 ignore_file .write_text (".git/\n " )
222227 set_perms (ignore_file , 0o000 )
223228
@@ -232,7 +237,8 @@ def test_unreadable_ignore_file(temp_project, run_mapper, set_perms, caplog):
232237
233238
234239def test_bad_encoding_ignore_file (temp_project , run_mapper , caplog ):
235- ignore_file = temp_project / ".treemapperignore"
240+ config_dir = temp_project / ".treemapper"
241+ ignore_file = config_dir / "ignore"
236242 try :
237243 # Cyrillic text intentional for CP1251 encoding test
238244 ignore_file .write_text (".git/\n папка_игнор/\n " , encoding = "cp1251" ) # noqa: RUF001
@@ -280,7 +286,9 @@ def test_ignore_precedence_subdir_over_root(temp_project, run_mapper):
280286
281287def test_ignore_precedence_treemapper_over_git (temp_project , run_mapper ):
282288 (temp_project / ".gitignore" ).write_text ("*.pyc\n " )
283- (temp_project / ".treemapperignore" ).write_text ("*.log\n .git/\n " )
289+ config_dir = temp_project / ".treemapper"
290+ config_dir .mkdir (exist_ok = True )
291+ (config_dir / "ignore" ).write_text ("*.log\n .git/\n " )
284292 (temp_project / "file.pyc" ).touch ()
285293 (temp_project / "file.log" ).touch ()
286294 (temp_project / "file.txt" ).touch ()
@@ -296,7 +304,9 @@ def test_ignore_precedence_treemapper_over_git(temp_project, run_mapper):
296304
297305def test_ignore_precedence_custom_over_defaults (temp_project , run_mapper ):
298306 (temp_project / ".gitignore" ).write_text ("*.pyc\n " )
299- (temp_project / ".treemapperignore" ).write_text ("*.log\n .git/\n " )
307+ config_dir = temp_project / ".treemapper"
308+ config_dir .mkdir (exist_ok = True )
309+ (config_dir / "ignore" ).write_text ("*.log\n .git/\n " )
300310 custom_ignore = temp_project / "custom.ignore"
301311 custom_ignore .write_text ("*.tmp\n " )
302312
@@ -422,12 +432,16 @@ def test_combined_patterns(temp_project, run_mapper):
422432 assert find_node_by_path (result , ["subdir" , "regular.txt" ]) is not None
423433
424434
425- def test_hierarchical_treemapperignore (temp_project , run_mapper ):
435+ def test_hierarchical_dir_ignore (temp_project , run_mapper ):
426436 from .utils import find_node_by_path
427437
428- (temp_project / ".treemapperignore" ).write_text ("*.tmp\n " )
438+ config_dir = temp_project / ".treemapper"
439+ config_dir .mkdir (exist_ok = True )
440+ (config_dir / "ignore" ).write_text ("*.tmp\n " )
429441 (temp_project / "subdir" ).mkdir ()
430- (temp_project / "subdir" / ".treemapperignore" ).write_text ("*.bak\n !important.bak\n " )
442+ sub_config = temp_project / "subdir" / ".treemapper"
443+ sub_config .mkdir ()
444+ (sub_config / "ignore" ).write_text ("*.bak\n !important.bak\n " )
431445 (temp_project / "root.tmp" ).touch ()
432446 (temp_project / "root.bak" ).touch ()
433447 (temp_project / "subdir" / "nested.tmp" ).touch ()
@@ -486,7 +500,9 @@ def test_parent_ignore_integration(tmp_path, run_mapper):
486500 subdir = parent / "packages" / "app"
487501 subdir .mkdir (parents = True )
488502
489- (parent / ".treemapperignore" ).write_text ("packages/app/ignored_dir/\n packages/app/data/\n " )
503+ parent_config = parent / ".treemapper"
504+ parent_config .mkdir ()
505+ (parent_config / "ignore" ).write_text ("packages/app/ignored_dir/\n packages/app/data/\n " )
490506 (subdir / "ignored_dir" ).mkdir ()
491507 (subdir / "ignored_dir" / "secret.txt" ).write_text ("secret" )
492508 (subdir / "data" ).mkdir ()
@@ -511,12 +527,16 @@ def test_parent_ignore_stops_at_git_root(tmp_path, run_mapper):
511527
512528 grandparent = tmp_path / "grandparent"
513529 grandparent .mkdir ()
514- (grandparent / ".treemapperignore" ).write_text ("packages/app/beyond_git_root/\n " )
530+ grandparent_config = grandparent / ".treemapper"
531+ grandparent_config .mkdir ()
532+ (grandparent_config / "ignore" ).write_text ("packages/app/beyond_git_root/\n " )
515533
516534 parent = grandparent / "parent"
517535 parent .mkdir ()
518536 (parent / ".git" ).mkdir ()
519- (parent / ".treemapperignore" ).write_text ("packages/app/from_parent/\n " )
537+ parent_config = parent / ".treemapper"
538+ parent_config .mkdir ()
539+ (parent_config / "ignore" ).write_text ("packages/app/from_parent/\n " )
520540
521541 child = parent / "packages" / "app"
522542 child .mkdir (parents = True )
@@ -557,26 +577,6 @@ def test_treemapper_dir_ignore(temp_project, run_mapper):
557577 assert find_node_by_path (result , ["keep.txt" ]) is not None
558578
559579
560- def test_treemapper_dir_ignore_combined_with_legacy (temp_project , run_mapper ):
561- from .utils import find_node_by_path
562-
563- (temp_project / ".treemapperignore" ).write_text ("*.tmp\n " )
564- config_dir = temp_project / ".treemapper"
565- config_dir .mkdir (exist_ok = True )
566- (config_dir / "ignore" ).write_text ("*.bak\n " )
567- (temp_project / "file.tmp" ).touch ()
568- (temp_project / "file.bak" ).touch ()
569- (temp_project / "file.txt" ).touch ()
570-
571- output_path = temp_project / "combined_dir_output.yaml"
572- assert run_mapper (["." , "-o" , str (output_path )])
573- result = load_yaml (output_path )
574-
575- assert find_node_by_path (result , ["file.tmp" ]) is None
576- assert find_node_by_path (result , ["file.bak" ]) is None
577- assert find_node_by_path (result , ["file.txt" ]) is not None
578-
579-
580580def test_treemapper_dir_ignore_hierarchical (temp_project , run_mapper ):
581581 from .utils import find_node_by_path
582582
@@ -654,18 +654,3 @@ def test_treemapper_dir_hidden_from_output(temp_project, run_mapper):
654654 assert ".treemapper" not in all_files
655655 assert "ignore" not in all_files
656656 assert "whitelist" not in all_files
657-
658-
659- def test_treemapper_dir_whitelist_over_legacy (temp_project , run_mapper ):
660- (temp_project / ".treemapperwhitelist" ).write_text ("docs/**\n " )
661- config_dir = temp_project / ".treemapper"
662- config_dir .mkdir (exist_ok = True )
663- (config_dir / "whitelist" ).write_text ("src/**/*.py\n " )
664-
665- output_path = temp_project / "wl_precedence_output.yaml"
666- assert run_mapper (["." , "-o" , str (output_path )])
667- result = load_yaml (output_path )
668- all_files = get_all_files_in_tree (result )
669-
670- assert "main.py" in all_files
671- assert "readme.md" not in all_files
0 commit comments