General ref log reading improvements.
[git.git] / t / t1400-update-ref.sh
old mode 100644 (file)
new mode 100755 (executable)
index f338c53..7858d86
@@ -9,6 +9,10 @@ test_description='Test git-update-ref and basic ref logging'
 Z=0000000000000000000000000000000000000000
 A=1111111111111111111111111111111111111111
 B=2222222222222222222222222222222222222222
+C=3333333333333333333333333333333333333333
+D=4444444444444444444444444444444444444444
+E=5555555555555555555555555555555555555555
+F=6666666666666666666666666666666666666666
 m=refs/heads/master
 
 test_expect_success \
@@ -109,4 +113,64 @@ test_expect_success \
        'diff expect .git/logs/$m'
 rm -f .git/$m .git/logs/$m expect
 
+git-update-ref $m $D
+cat >.git/logs/$m <<EOF
+$C $A $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150320 -0500
+$A $B $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150380 -0500
+$F $Z $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150680 -0500
+$Z $E $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150980 -0500
+EOF
+
+ed="Thu, 26 May 2005 18:32:00 -0500"
+gd="Thu, 26 May 2005 18:33:00 -0500"
+ld="Thu, 26 May 2005 18:43:00 -0500"
+test_expect_success \
+       'Query "master@May 25 2005" (before history)' \
+       'rm -f o e
+        git-rev-parse --verify "master@May 25 2005" >o 2>e &&
+        test $C = $(cat o) &&
+        test "warning: Log .git/logs/$m only goes back to $ed." = "$(cat e)"'
+test_expect_success \
+       "Query master@2005-05-25 (before history)" \
+       'rm -f o e
+        git-rev-parse --verify master@2005-05-25 >o 2>e &&
+        test $C = $(cat o) &&
+        echo test "warning: Log .git/logs/$m only goes back to $ed." = "$(cat e)"'
+test_expect_success \
+       'Query "master@May 26 2005 23:31:59" (1 second before history)' \
+       'rm -f o e
+        git-rev-parse --verify "master@May 26 2005 23:31:59" >o 2>e &&
+        test $C = $(cat o) &&
+        test "warning: Log .git/logs/$m only goes back to $ed." = "$(cat e)"'
+test_expect_success \
+       'Query "master@May 26 2005 23:32:00" (exactly history start)' \
+       'rm -f o e
+        git-rev-parse --verify "master@May 26 2005 23:32:00" >o 2>e &&
+        test $A = $(cat o) &&
+        test "" = "$(cat e)"'
+test_expect_success \
+       'Query "master@2005-05-26 23:33:01" (middle of history with gap)' \
+       'rm -f o e
+        git-rev-parse --verify "master@2005-05-26 23:33:01" >o 2>e &&
+        test $B = $(cat o) &&
+        test "warning: Log .git/logs/$m has gap after $gd." = "$(cat e)"'
+test_expect_success \
+       'Query "master@2005-05-26 23:33:01" (middle of history)' \
+       'rm -f o e
+        git-rev-parse --verify "master@2005-05-26 23:38:00" >o 2>e &&
+        test $Z = $(cat o) &&
+        test "" = "$(cat e)"'
+test_expect_success \
+       'Query "master@2005-05-26 23:43:00" (exact end of history)' \
+       'rm -f o e
+        git-rev-parse --verify "master@2005-05-26 23:43:00" >o 2>e &&
+        test $E = $(cat o) &&
+        test "" = "$(cat e)"'
+test_expect_success \
+       'Query "master@2005-05-28" (past end of history)' \
+       'rm -f o e
+        git-rev-parse --verify "master@2005-05-28" >o 2>e &&
+        test $D = $(cat o) &&
+        test "warning: Log .git/logs/$m unexpectedly ended on $ld." = "$(cat e)"'
+
 test_done