|  | #!/bin/sh | 
|  |  | 
|  | test_description='test @{-N} syntax' | 
|  |  | 
|  | . ./test-lib.sh | 
|  |  | 
|  |  | 
|  | make_commit () { | 
|  | echo "$1" > "$1" && | 
|  | git add "$1" && | 
|  | git commit -m "$1" | 
|  | } | 
|  |  | 
|  |  | 
|  | test_expect_success 'setup' ' | 
|  |  | 
|  | make_commit 1 && | 
|  | git branch side && | 
|  | make_commit 2 && | 
|  | make_commit 3 && | 
|  | git checkout side && | 
|  | make_commit 4 && | 
|  | git merge master && | 
|  | git checkout master | 
|  |  | 
|  | ' | 
|  |  | 
|  | # 1 -- 2 -- 3 master | 
|  | #  \         \ | 
|  | #   \         \ | 
|  | #    --- 4 --- 5 side | 
|  | # | 
|  | # and 'side' should be the last branch | 
|  |  | 
|  | test_expect_success '@{-1} works' ' | 
|  | test_cmp_rev side @{-1} | 
|  | ' | 
|  |  | 
|  | test_expect_success '@{-1}~2 works' ' | 
|  | test_cmp_rev side~2 @{-1}~2 | 
|  | ' | 
|  |  | 
|  | test_expect_success '@{-1}^2 works' ' | 
|  | test_cmp_rev side^2 @{-1}^2 | 
|  | ' | 
|  |  | 
|  | test_expect_success '@{-1}@{1} works' ' | 
|  | test_cmp_rev side@{1} @{-1}@{1} | 
|  | ' | 
|  |  | 
|  | test_expect_success '@{-2} works' ' | 
|  | test_cmp_rev master @{-2} | 
|  | ' | 
|  |  | 
|  | test_expect_success '@{-3} fails' ' | 
|  | test_must_fail git rev-parse @{-3} | 
|  | ' | 
|  |  | 
|  | test_done | 
|  |  | 
|  |  |