@@ -1077,3 +1077,81 @@ void test_status_ignore__negate_starstar(void)
10771077 cl_git_pass (git_ignore_path_is_ignored (& ignored , g_repo , "code/projects/foo/bar/packages/repositories.config" ));
10781078 cl_assert_equal_i (0 , ignored );
10791079}
1080+
1081+ void test_status_ignore__ignore_all_toplevel_dirs_include_files (void )
1082+ {
1083+ static const char * test_files [] = {
1084+ "empty_standard_repo/README.md" ,
1085+ "empty_standard_repo/src/main.c" ,
1086+ "empty_standard_repo/src/foo/foo.c" ,
1087+ "empty_standard_repo/dist/foo.o" ,
1088+ "empty_standard_repo/dist/main.o" ,
1089+ NULL
1090+ };
1091+
1092+ make_test_data ("empty_standard_repo" , test_files );
1093+ cl_git_mkfile (
1094+ "empty_standard_repo/.gitignore" ,
1095+ "/*/\n"
1096+ "!/src\n" );
1097+
1098+ assert_is_ignored ("dist/foo.o" );
1099+ assert_is_ignored ("dist/main.o" );
1100+
1101+ refute_is_ignored ("README.md" );
1102+ refute_is_ignored ("src/foo.c" );
1103+ refute_is_ignored ("src/foo/foo.c" );
1104+ }
1105+
1106+ void test_status_ignore__subdir_ignore_all_toplevel_dirs_include_files (void )
1107+ {
1108+ static const char * test_files [] = {
1109+ "empty_standard_repo/project/README.md" ,
1110+ "empty_standard_repo/project/src/main.c" ,
1111+ "empty_standard_repo/project/src/foo/foo.c" ,
1112+ "empty_standard_repo/project/dist/foo.o" ,
1113+ "empty_standard_repo/project/dist/main.o" ,
1114+ NULL
1115+ };
1116+
1117+ make_test_data ("empty_standard_repo" , test_files );
1118+ cl_git_mkfile (
1119+ "empty_standard_repo/project/.gitignore" ,
1120+ "/*/\n"
1121+ "!/src\n" );
1122+
1123+ assert_is_ignored ("project/dist/foo.o" );
1124+ assert_is_ignored ("project/dist/main.o" );
1125+
1126+ refute_is_ignored ("project/src/foo.c" );
1127+ refute_is_ignored ("project/src/foo/foo.c" );
1128+ refute_is_ignored ("project/README.md" );
1129+ }
1130+
1131+ void test_status_ignore__subdir_ignore_everything_except_certain_files (void )
1132+ {
1133+ static const char * test_files [] = {
1134+ "empty_standard_repo/project/README.md" ,
1135+ "empty_standard_repo/project/some_file" ,
1136+ "empty_standard_repo/project/src/main.c" ,
1137+ "empty_standard_repo/project/src/foo/foo.c" ,
1138+ "empty_standard_repo/project/dist/foo.o" ,
1139+ "empty_standard_repo/project/dist/main.o" ,
1140+ NULL
1141+ };
1142+
1143+ make_test_data ("empty_standard_repo" , test_files );
1144+ cl_git_mkfile (
1145+ "empty_standard_repo/project/.gitignore" ,
1146+ "/*\n"
1147+ "!/src\n"
1148+ "!README.md\n" );
1149+
1150+ assert_is_ignored ("project/some_file" );
1151+ assert_is_ignored ("project/dist/foo.o" );
1152+ assert_is_ignored ("project/dist/main.o" );
1153+
1154+ refute_is_ignored ("project/README.md" );
1155+ refute_is_ignored ("project/src/foo.c" );
1156+ refute_is_ignored ("project/src/foo/foo.c" );
1157+ }
0 commit comments