(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ <'test @{-N} syntax'>)} spids: [4] ) ] ) (C {<.>} {<'./test-lib.sh'>}) (command.ShFunction name: make_commit body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple words: [{<echo>} {(DQ ($ Id.VSub_Number '$1'))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_Number '$1'))} ) ] do_fork: T ) (C {<git>} {<add>} {(DQ ($ Id.VSub_Number '$1'))}) (C {<git>} {<commit>} {<-m>} {(DQ ($ Id.VSub_Number '$1'))}) ] ) ] ) ) (C {<test_expect_success>} {(SQ <setup>)} { (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>}) ] )