#!/bin/sh global test_description := ''test @{-N} syntax'' source ./test-lib.sh proc 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 (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"test @{-N} syntax">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (FuncDef name: make_commit body: (BraceGroup children: [ (AndOr children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Number "$1"))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Number "$1"))} spids: [30] ) ] ) (AndOr children: [ (C {(git)} {(add)} {(DQ ($ VSub_Number "$1"))}) (C {(git)} {(commit)} {(-m)} {(DQ ($ VSub_Number "$1"))}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [21] ) spids: [16 20] ) (C {(test_expect_success)} {(SQ )} { (SQ <"\n"> <"\n"> <"\tmake_commit 1 &&\n"> <"\tgit branch side &&\n"> <"\tmake_commit 2 &&\n"> <"\tmake_commit 3 &&\n"> <"\tgit checkout side &&\n"> <"\tmake_commit 4 &&\n"> <"\tgit merge master &&\n"> <"\tgit checkout master\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"@{-1} works">)} {(SQ <"\n"> <"\ttest_cmp_rev side @{-1}\n">)}) (C {(test_expect_success)} {(SQ <"@{-1}~2 works">)} {(SQ <"\n"> <"\ttest_cmp_rev side~2 @{-1}~2\n">)}) (C {(test_expect_success)} {(SQ <"@{-1}^2 works">)} {(SQ <"\n"> <"\ttest_cmp_rev side^2 @{-1}^2\n">)}) (C {(test_expect_success)} {(SQ <"@{-1}@{1} works">)} {(SQ <"\n"> <"\ttest_cmp_rev side@{1} @{-1}@{1}\n">)} ) (C {(test_expect_success)} {(SQ <"@{-2} works">)} {(SQ <"\n"> <"\ttest_cmp_rev master @{-2}\n">)}) (C {(test_expect_success)} {(SQ <"@{-3} fails">)} {(SQ <"\n"> <"\ttest_must_fail git rev-parse @{-3}\n">)} ) (C {(test_done)}) ] )