Add some tests for git update-ref -d
[gitweb.git] / t / t7003-filter-branch.sh
index 1daaf544d9ad1f3eafce024b92cf0640c4dee766..1e8a205e536c918569d6537883ee35d3bdcd515f 100755 (executable)
@@ -17,6 +17,8 @@ test_expect_success 'setup' '
        make_commit B
        git checkout -b branch B
        make_commit D
+       mkdir dir
+       make_commit dir/D
        make_commit E
        git checkout master
        make_commit C
@@ -41,9 +43,23 @@ 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 d &&
        test -f doh &&
-       test d = $(cat doh)
+       test d = "$(cat doh)"
+'
+
+test_expect_success 'rewrite, renaming a specific directory' '
+       git-filter-branch -f --tree-filter "mv dir diroh || :" HEAD
+'
+
+test_expect_success 'test that the directory was renamed' '
+       test dir/d = "$(git show HEAD:diroh/d --)" &&
+       ! test -d dir &&
+       test -d diroh &&
+       ! test -d diroh/dir &&
+       test -f diroh/d &&
+       test dir/d = "$(cat diroh/d)"
 '
 
 git tag oldD HEAD~4
@@ -109,7 +125,7 @@ test_expect_success 'use index-filter to move into a subdirectory' '
                 "git ls-files -s | sed \"s-\\t-&newsubdir/-\" |
                  GIT_INDEX_FILE=\$GIT_INDEX_FILE.new \
                        git update-index --index-info &&
-                 mv \$GIT_INDEX_FILE.new \$GIT_INDEX_FILE" directorymoved &&
+                 mv \"\$GIT_INDEX_FILE.new\" \"\$GIT_INDEX_FILE\"" directorymoved &&
        test -z "$(git diff HEAD directorymoved:newsubdir)"'
 
 test_expect_success 'stops when msg filter fails' '
@@ -208,7 +224,7 @@ test_expect_success 'Tag name filtering retains tag message' '
        git cat-file tag T > expect &&
        git filter-branch -f --tag-name-filter cat &&
        git cat-file tag T > actual &&
-       git diff expect actual
+       test_cmp expect actual
 '
 
 faux_gpg_tag='object XXXXXX
@@ -232,7 +248,7 @@ test_expect_success 'Tag name filtering strips gpg signature' '
        echo "$faux_gpg_tag" | sed -e s/XXXXXX/$sha1/ | head -n 6 > expect &&
        git filter-branch -f --tag-name-filter cat &&
        git cat-file tag S > actual &&
-       git diff expect actual
+       test_cmp expect actual
 '
 
 test_done