t / t1505-rev-parse-last.shon commit t7508: demonstrate status's failure to use --porcelain format with -z (95b9f9f)
   1#!/bin/sh
   2
   3test_description='test @{-N} syntax'
   4
   5. ./test-lib.sh
   6
   7
   8make_commit () {
   9        echo "$1" > "$1" &&
  10        git add "$1" &&
  11        git commit -m "$1"
  12}
  13
  14
  15test_expect_success 'setup' '
  16
  17        make_commit 1 &&
  18        git branch side &&
  19        make_commit 2 &&
  20        make_commit 3 &&
  21        git checkout side &&
  22        make_commit 4 &&
  23        git merge master &&
  24        git checkout master
  25
  26'
  27
  28# 1 -- 2 -- 3 master
  29#  \         \
  30#   \         \
  31#    --- 4 --- 5 side
  32#
  33# and 'side' should be the last branch
  34
  35test_rev_equivalent () {
  36
  37        git rev-parse "$1" > expect &&
  38        git rev-parse "$2" > output &&
  39        test_cmp expect output
  40
  41}
  42
  43test_expect_success '@{-1} works' '
  44        test_rev_equivalent side @{-1}
  45'
  46
  47test_expect_success '@{-1}~2 works' '
  48        test_rev_equivalent side~2 @{-1}~2
  49'
  50
  51test_expect_success '@{-1}^2 works' '
  52        test_rev_equivalent side^2 @{-1}^2
  53'
  54
  55test_expect_success '@{-1}@{1} works' '
  56        test_rev_equivalent side@{1} @{-1}@{1}
  57'
  58
  59test_expect_success '@{-2} works' '
  60        test_rev_equivalent master @{-2}
  61'
  62
  63test_expect_success '@{-3} fails' '
  64        test_must_fail git rev-parse @{-3}
  65'
  66
  67test_done
  68
  69