t / t1411-reflog-show.shon commit Merge branch 'jk/hashcmp-optim-for-2.19' (86ef236)
   1#!/bin/sh
   2
   3test_description='Test reflog display routines'
   4. ./test-lib.sh
   5
   6test_expect_success 'setup' '
   7        echo content >file &&
   8        git add file &&
   9        test_tick &&
  10        git commit -m one
  11'
  12
  13commit=$(git rev-parse --short HEAD)
  14cat >expect <<'EOF'
  15Reflog: HEAD@{0} (C O Mitter <committer@example.com>)
  16Reflog message: commit (initial): one
  17EOF
  18test_expect_success 'log -g shows reflog headers' '
  19        git log -g -1 >tmp &&
  20        grep ^Reflog <tmp >actual &&
  21        test_cmp expect actual
  22'
  23
  24cat >expect <<EOF
  25$commit HEAD@{0}: commit (initial): one
  26EOF
  27test_expect_success 'oneline reflog format' '
  28        git log -g -1 --oneline >actual &&
  29        test_cmp expect actual
  30'
  31
  32test_expect_success 'reflog default format' '
  33        git reflog -1 >actual &&
  34        test_cmp expect actual
  35'
  36
  37cat >expect <<EOF
  38commit $commit
  39Reflog: HEAD@{0} (C O Mitter <committer@example.com>)
  40Reflog message: commit (initial): one
  41Author: A U Thor <author@example.com>
  42
  43    one
  44EOF
  45test_expect_success 'override reflog default format' '
  46        git reflog --format=short -1 >actual &&
  47        test_cmp expect actual
  48'
  49
  50cat >expect <<'EOF'
  51Reflog: HEAD@{Thu Apr 7 15:13:13 2005 -0700} (C O Mitter <committer@example.com>)
  52Reflog message: commit (initial): one
  53EOF
  54test_expect_success 'using @{now} syntax shows reflog date (multiline)' '
  55        git log -g -1 HEAD@{now} >tmp &&
  56        grep ^Reflog <tmp >actual &&
  57        test_cmp expect actual
  58'
  59
  60cat >expect <<EOF
  61$commit HEAD@{Thu Apr 7 15:13:13 2005 -0700}: commit (initial): one
  62EOF
  63test_expect_success 'using @{now} syntax shows reflog date (oneline)' '
  64        git log -g -1 --oneline HEAD@{now} >actual &&
  65        test_cmp expect actual
  66'
  67
  68cat >expect <<'EOF'
  69HEAD@{Thu Apr 7 15:13:13 2005 -0700}
  70EOF
  71test_expect_success 'using @{now} syntax shows reflog date (format=%gd)' '
  72        git log -g -1 --format=%gd HEAD@{now} >actual &&
  73        test_cmp expect actual
  74'
  75
  76cat >expect <<'EOF'
  77Reflog: HEAD@{Thu Apr 7 15:13:13 2005 -0700} (C O Mitter <committer@example.com>)
  78Reflog message: commit (initial): one
  79EOF
  80test_expect_success 'using --date= shows reflog date (multiline)' '
  81        git log -g -1 --date=default >tmp &&
  82        grep ^Reflog <tmp >actual &&
  83        test_cmp expect actual
  84'
  85
  86cat >expect <<EOF
  87$commit HEAD@{Thu Apr 7 15:13:13 2005 -0700}: commit (initial): one
  88EOF
  89test_expect_success 'using --date= shows reflog date (oneline)' '
  90        git log -g -1 --oneline --date=default >actual &&
  91        test_cmp expect actual
  92'
  93
  94cat >expect <<'EOF'
  95HEAD@{1112911993 -0700}
  96EOF
  97test_expect_success 'using --date= shows reflog date (format=%gd)' '
  98        git log -g -1 --format=%gd --date=raw >actual &&
  99        test_cmp expect actual
 100'
 101
 102cat >expect <<'EOF'
 103Reflog: HEAD@{0} (C O Mitter <committer@example.com>)
 104Reflog message: commit (initial): one
 105EOF
 106test_expect_success 'log.date does not invoke "--date" magic (multiline)' '
 107        test_config log.date raw &&
 108        git log -g -1 >tmp &&
 109        grep ^Reflog <tmp >actual &&
 110        test_cmp expect actual
 111'
 112
 113cat >expect <<EOF
 114$commit HEAD@{0}: commit (initial): one
 115EOF
 116test_expect_success 'log.date does not invoke "--date" magic (oneline)' '
 117        test_config log.date raw &&
 118        git log -g -1 --oneline >actual &&
 119        test_cmp expect actual
 120'
 121
 122cat >expect <<'EOF'
 123HEAD@{0}
 124EOF
 125test_expect_success 'log.date does not invoke "--date" magic (format=%gd)' '
 126        test_config log.date raw &&
 127        git log -g -1 --format=%gd >actual &&
 128        test_cmp expect actual
 129'
 130
 131cat >expect <<'EOF'
 132HEAD@{0}
 133EOF
 134test_expect_success '--date magic does not override explicit @{0} syntax' '
 135        git log -g -1 --format=%gd --date=raw HEAD@{0} >actual &&
 136        test_cmp expect actual
 137'
 138
 139test_expect_success 'empty reflog file' '
 140        git branch empty &&
 141        git reflog expire --expire=all refs/heads/empty &&
 142
 143        git log -g empty >actual &&
 144        test_must_be_empty actual
 145'
 146
 147# This guards against the alternative of showing the diffs vs. the
 148# reflog ancestor.  The reflog used is designed to list the commits
 149# more than once, so as to exercise the corresponding logic.
 150test_expect_success 'git log -g -p shows diffs vs. parents' '
 151        test_commit two &&
 152        git branch flipflop &&
 153        git update-ref refs/heads/flipflop -m flip1 HEAD^ &&
 154        git update-ref refs/heads/flipflop -m flop1 HEAD &&
 155        git update-ref refs/heads/flipflop -m flip2 HEAD^ &&
 156        git log -g -p flipflop >reflog &&
 157        grep -v ^Reflog reflog >actual &&
 158        git log -1 -p HEAD^ >log.one &&
 159        git log -1 -p HEAD >log.two &&
 160        (
 161                cat log.one && echo &&
 162                cat log.two && echo &&
 163                cat log.one && echo &&
 164                cat log.two
 165        ) >expect &&
 166        test_cmp expect actual
 167'
 168
 169test_expect_success 'reflog exists works' '
 170        git reflog exists refs/heads/master &&
 171        ! git reflog exists refs/heads/nonexistent
 172'
 173
 174test_done