Code

Merge branch 'sp/maint-plug-traverse-commit-list-leak' into maint
[git.git] / t / t7003-filter-branch.sh
index bc6e2ddb19093fbdc9e4f94cbec71d369f0251ed..2089351f7d157ce96a07ed1c6c1465fc58819ec0 100755 (executable)
@@ -41,7 +41,9 @@ test_expect_success 'rewrite, renaming a specific file' '
 '
 
 test_expect_success 'test that the file was renamed' '
-       test d = $(git show HEAD:doh)
+       test d = $(git show HEAD:doh) &&
+       test -f doh &&
+       test d = $(cat doh)
 '
 
 git tag oldD HEAD~4
@@ -138,13 +140,7 @@ test_expect_success "remove a certain author's commits" '
        git-filter-branch -f --commit-filter "\
                if [ \"\$GIT_AUTHOR_NAME\" = \"B V Uips\" ];\
                then\
-                       shift;\
-                       while [ -n \"\$1\" ];\
-                       do\
-                               shift;\
-                               echo \"\$1\";\
-                               shift;\
-                       done;\
+                       skip_commit \"\$@\";
                else\
                        git commit-tree \"\$@\";\
                fi" removed-author &&
@@ -159,4 +155,14 @@ test_expect_success 'barf on invalid name' '
        ! git filter-branch -f HEAD^
 '
 
+test_expect_success '"map" works in commit filter' '
+       git filter-branch -f --commit-filter "\
+               parent=\$(git rev-parse \$GIT_COMMIT^) &&
+               mapped=\$(map \$parent) &&
+               actual=\$(echo \"\$@\" | sed \"s/^.*-p //\") &&
+               test \$mapped = \$actual &&
+               git commit-tree \"\$@\";" master~2..master &&
+       git rev-parse --verify master
+'
+
 test_done