(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'git checkout --patch' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./lib-patch-mode.sh)}) (C {(test_expect_success)} {(PERL)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:20))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:24) (Token id:Id.Lit_Chars val:'\tmkdir dir &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\techo parent > dir/foo &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\techo dummy > bar &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\tgit add bar dir/foo &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\ttest_commit second dir/foo head &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\tset_and_save_state bar bar_work bar_index &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\tsave_head\n' span_id:33) ) } ) (C {(test_expect_success)} {(PERL)} {(SQ (Token id:Id.Lit_Chars val:'saying "n" does nothing' span_id:46))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:50) (Token id: Id.Lit_Chars val: '\tset_and_save_state dir/foo work head &&\n' span_id: 51 ) (Token id:Id.Lit_Chars val:'\t(echo n; echo n) | git checkout -p &&\n' span_id:52) (Token id:Id.Lit_Chars val:'\tverify_saved_state bar &&\n' span_id:53) (Token id:Id.Lit_Chars val:'\tverify_saved_state dir/foo\n' span_id:54) ) } ) (C {(test_expect_success)} {(PERL)} {(SQ (Token id:Id.Lit_Chars val:'git checkout -p' span_id:63))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:67) (Token id: Id.Lit_Chars val: '\t(echo n; echo y) | git checkout -p &&\n' span_id: 68 ) (Token id:Id.Lit_Chars val:'\tverify_saved_state bar &&\n' span_id:69) (Token id:Id.Lit_Chars val:'\tverify_state dir/foo head head\n' span_id:70) ) } ) (C {(test_expect_success)} {(PERL)} {(SQ (Token id:Id.Lit_Chars val:'git checkout -p with staged changes' span_id:79))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:83) (Token id:Id.Lit_Chars val:'\tset_state dir/foo work index &&\n' span_id:84) (Token id:Id.Lit_Chars val:'\t(echo n; echo y) | git checkout -p &&\n' span_id:85) (Token id:Id.Lit_Chars val:'\tverify_saved_state bar &&\n' span_id:86) (Token id:Id.Lit_Chars val:'\tverify_state dir/foo index index\n' span_id:87) ) } ) (C {(test_expect_success)} {(PERL)} { (SQ (Token id: Id.Lit_Chars val: 'git checkout -p HEAD with NO staged changes: abort' span_id: 96 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:100) (Token id: Id.Lit_Chars val: '\tset_and_save_state dir/foo work head &&\n' span_id: 101 ) (Token id:Id.Lit_Chars val:'\t(echo n; echo y; echo n) | git checkout -p HEAD &&\n' span_id:102) (Token id:Id.Lit_Chars val:'\tverify_saved_state bar &&\n' span_id:103) (Token id:Id.Lit_Chars val:'\tverify_saved_state dir/foo\n' span_id:104) ) } ) (C {(test_expect_success)} {(PERL)} { (SQ (Token id: Id.Lit_Chars val: 'git checkout -p HEAD with NO staged changes: apply' span_id: 113 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:117) (Token id: Id.Lit_Chars val: '\t(echo n; echo y; echo y) | git checkout -p HEAD &&\n' span_id: 118 ) (Token id:Id.Lit_Chars val:'\tverify_saved_state bar &&\n' span_id:119) (Token id:Id.Lit_Chars val:'\tverify_state dir/foo head head\n' span_id:120) ) } ) (C {(test_expect_success)} {(PERL)} {(SQ (Token id:Id.Lit_Chars val:'git checkout -p HEAD with change already staged' span_id:129))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:133) (Token id:Id.Lit_Chars val:'\tset_state dir/foo index index &&\n' span_id:134) (Token id: Id.Lit_Chars val: '\t# the third n is to get out in case it mistakenly does not apply\n' span_id: 135 ) (Token id:Id.Lit_Chars val:'\t(echo n; echo y; echo n) | git checkout -p HEAD &&\n' span_id:136) (Token id:Id.Lit_Chars val:'\tverify_saved_state bar &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\tverify_state dir/foo head head\n' span_id:138) ) } ) (C {(test_expect_success)} {(PERL)} {(SQ (Token id:Id.Lit_Chars val:'git checkout -p HEAD^' span_id:147))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:151) (Token id: Id.Lit_Chars val: '\t# the third n is to get out in case it mistakenly does not apply\n' span_id: 152 ) (Token id:Id.Lit_Chars val:'\t(echo n; echo y; echo n) | git checkout -p HEAD^ &&\n' span_id:153) (Token id:Id.Lit_Chars val:'\tverify_saved_state bar &&\n' span_id:154) (Token id:Id.Lit_Chars val:'\tverify_state dir/foo parent parent\n' span_id:155) ) } ) (C {(test_expect_success)} {(PERL)} {(SQ (Token id:Id.Lit_Chars val:'git checkout -p handles deletion' span_id:164))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:168) (Token id:Id.Lit_Chars val:'\tset_state dir/foo work index &&\n' span_id:169) (Token id:Id.Lit_Chars val:'\trm dir/foo &&\n' span_id:170) (Token id: Id.Lit_Chars val: '\t(echo n; echo y) | git checkout -p &&\n' span_id: 171 ) (Token id:Id.Lit_Chars val:'\tverify_saved_state bar &&\n' span_id:172) (Token id:Id.Lit_Chars val:'\tverify_state dir/foo index index\n' span_id:173) ) } ) (C {(test_expect_success)} {(PERL)} {(SQ (Token id:Id.Lit_Chars val:'path limiting works: dir' span_id:195))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:199) (Token id:Id.Lit_Chars val:'\tset_state dir/foo work head &&\n' span_id:200) (Token id:Id.Lit_Chars val:'\t(echo y; echo n) | git checkout -p dir &&\n' span_id:201) (Token id:Id.Lit_Chars val:'\tverify_saved_state bar &&\n' span_id:202) (Token id:Id.Lit_Chars val:'\tverify_state dir/foo head head\n' span_id:203) ) } ) (C {(test_expect_success)} {(PERL)} {(SQ (Token id:Id.Lit_Chars val:'path limiting works: -- dir' span_id:212))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:216) (Token id:Id.Lit_Chars val:'\tset_state dir/foo work head &&\n' span_id:217) (Token id:Id.Lit_Chars val:'\t(echo y; echo n) | git checkout -p -- dir &&\n' span_id:218) (Token id:Id.Lit_Chars val:'\tverify_saved_state bar &&\n' span_id:219) (Token id:Id.Lit_Chars val:'\tverify_state dir/foo head head\n' span_id:220) ) } ) (C {(test_expect_success)} {(PERL)} {(SQ (Token id:Id.Lit_Chars val:'path limiting works: HEAD^ -- dir' span_id:229))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:233) (Token id: Id.Lit_Chars val: '\t# the third n is to get out in case it mistakenly does not apply\n' span_id: 234 ) (Token id: Id.Lit_Chars val: '\t(echo y; echo n; echo n) | git checkout -p HEAD^ -- dir &&\n' span_id: 235 ) (Token id:Id.Lit_Chars val:'\tverify_saved_state bar &&\n' span_id:236) (Token id:Id.Lit_Chars val:'\tverify_state dir/foo parent parent\n' span_id:237) ) } ) (C {(test_expect_success)} {(PERL)} {(SQ (Token id:Id.Lit_Chars val:'path limiting works: foo inside dir' span_id:246))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:250) (Token id:Id.Lit_Chars val:'\tset_state dir/foo work head &&\n' span_id:251) (Token id: Id.Lit_Chars val: '\t# the third n is to get out in case it mistakenly does not apply\n' span_id: 252 ) (Token id: Id.Lit_Chars val: '\t(echo y; echo n; echo n) | (cd dir && git checkout -p foo) &&\n' span_id: 253 ) (Token id:Id.Lit_Chars val:'\tverify_saved_state bar &&\n' span_id:254) (Token id:Id.Lit_Chars val:'\tverify_state dir/foo head head\n' span_id:255) ) } ) (C {(test_expect_success)} {(PERL)} {(SQ (Token id:Id.Lit_Chars val:'none of this moved HEAD' span_id:264))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:268) (Token id:Id.Lit_Chars val:'\tverify_saved_head\n' span_id:269) ) } ) (C {(test_done)}) ] )