Merge branch 'dk/version-gen-gitdir'
[gitweb.git] / t / t3210-pack-refs.sh
index 413019acafc98646a61e77960527f042a8f96ac6..1a2080e3dca272b6ed40739a7539f01f4f6ae65c 100755 (executable)
@@ -28,7 +28,7 @@ test_expect_success \
      SHA1=`cat .git/refs/heads/a` &&
      echo "$SHA1 refs/heads/a" >expect &&
      git show-ref a >result &&
-     diff expect result'
+     test_cmp expect result'
 
 test_expect_success \
     'see if a branch still exists when packed' \
@@ -37,7 +37,7 @@ test_expect_success \
      rm -f .git/refs/heads/b &&
      echo "$SHA1 refs/heads/b" >expect &&
      git show-ref b >result &&
-     diff expect result'
+     test_cmp expect result'
 
 test_expect_success 'git branch c/d should barf if branch c exists' '
      git branch c &&
@@ -52,7 +52,7 @@ test_expect_success \
      git pack-refs --all --prune &&
      echo "$SHA1 refs/heads/e" >expect &&
      git show-ref e >result &&
-     diff expect result'
+     test_cmp expect result'
 
 test_expect_success 'see if git pack-refs --prune remove ref files' '
      git branch f &&
@@ -60,6 +60,12 @@ test_expect_success 'see if git pack-refs --prune remove ref files' '
      ! test -f .git/refs/heads/f
 '
 
+test_expect_success 'see if git pack-refs --prune removes empty dirs' '
+     git branch r/s/t &&
+     git pack-refs --all --prune &&
+     ! test -e .git/refs/heads/r
+'
+
 test_expect_success \
     'git branch g should work when git branch g/h has been deleted' \
     'git branch g/h &&
@@ -109,7 +115,40 @@ test_expect_success 'pack, prune and repack' '
        git show-ref >all-of-them &&
        git pack-refs &&
        git show-ref >again &&
-       diff all-of-them again
+       test_cmp all-of-them again
+'
+
+test_expect_success 'explicit pack-refs with dangling packed reference' '
+       git commit --allow-empty -m "soon to be garbage-collected" &&
+       git pack-refs --all &&
+       git reset --hard HEAD^ &&
+       git reflog expire --expire=all --all &&
+       git prune --expire=all &&
+       git pack-refs --all 2>result &&
+       test_cmp /dev/null result
+'
+
+test_expect_success 'delete ref with dangling packed version' '
+       git checkout -b lamb &&
+       git commit --allow-empty -m "future garbage" &&
+       git pack-refs --all &&
+       git reset --hard HEAD^ &&
+       git checkout master &&
+       git reflog expire --expire=all --all &&
+       git prune --expire=all &&
+       git branch -d lamb 2>result &&
+       test_cmp /dev/null result
+'
+
+test_expect_success 'delete ref while another dangling packed ref' '
+       git branch lamb &&
+       git commit --allow-empty -m "future garbage" &&
+       git pack-refs --all &&
+       git reset --hard HEAD^ &&
+       git reflog expire --expire=all --all &&
+       git prune --expire=all &&
+       git branch -d lamb 2>result &&
+       test_cmp /dev/null result
 '
 
 test_done