(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:'stash -p' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./lib-patch-mode.sh)}) (command.If arms: [ (if_arm cond: [(command.Pipeline children:[(C {(test_have_prereq)} {(PERL)})] negated:T)] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:skip_all) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: 'skipping stash -p tests, perl not available' span_id: 27 ) ) } spids: [25] ) ] ) (C {(test_done)}) ] spids: [14 22] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:39))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:43) (Token id:Id.Lit_Chars val:'\tmkdir dir &&\n' span_id:44) (Token id:Id.Lit_Chars val:'\techo parent > dir/foo &&\n' span_id:45) (Token id:Id.Lit_Chars val:'\techo dummy > bar &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\techo committed > HEAD &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\tgit add bar dir/foo HEAD &&\n' span_id:48) (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:49) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:50) (Token id:Id.Lit_Chars val:'\ttest_commit second dir/foo head &&\n' span_id:51) (Token id:Id.Lit_Chars val:'\techo index > dir/foo &&\n' span_id:52) (Token id:Id.Lit_Chars val:'\tgit add dir/foo &&\n' span_id:53) (Token id: Id.Lit_Chars val: '\tset_and_save_state bar bar_work bar_index &&\n' span_id: 54 ) (Token id:Id.Lit_Chars val:'\tsave_head\n' span_id:55) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'saying "n" does nothing' span_id:66))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:70) (Token id: Id.Lit_Chars val: '\tset_state HEAD HEADfile_work HEADfile_index &&\n' span_id: 71 ) (Token id:Id.Lit_Chars val:'\tset_state dir/foo work index &&\n' span_id:72) (Token id: Id.Lit_Chars val: '\t(echo n; echo n; echo n) | test_must_fail git stash save -p &&\n' span_id: 73 ) (Token id:Id.Lit_Chars val:'\tverify_state HEAD HEADfile_work HEADfile_index &&\n' span_id:74) (Token id:Id.Lit_Chars val:'\tverify_saved_state bar &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\tverify_state dir/foo work index\n' span_id:76) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git stash -p' span_id:83))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:87) (Token id: Id.Lit_Chars val: '\t(echo y; echo n; echo y) | git stash save -p &&\n' span_id: 88 ) (Token id:Id.Lit_Chars val:'\tverify_state HEAD committed HEADfile_index &&\n' span_id:89) (Token id:Id.Lit_Chars val:'\tverify_saved_state bar &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\tverify_state dir/foo head index &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\tgit stash apply &&\n' span_id:93) (Token id: Id.Lit_Chars val: '\tverify_state HEAD HEADfile_work committed &&\n' span_id: 94 ) (Token id:Id.Lit_Chars val:'\tverify_state bar dummy dummy &&\n' span_id:95) (Token id:Id.Lit_Chars val:'\tverify_state dir/foo work head\n' span_id:96) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git stash -p --no-keep-index' span_id:103))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:107) (Token id: Id.Lit_Chars val: '\tset_state HEAD HEADfile_work HEADfile_index &&\n' span_id: 108 ) (Token id:Id.Lit_Chars val:'\tset_state bar bar_work bar_index &&\n' span_id:109) (Token id:Id.Lit_Chars val:'\tset_state dir/foo work index &&\n' span_id:110) (Token id: Id.Lit_Chars val: '\t(echo y; echo n; echo y) | git stash save -p --no-keep-index &&\n' span_id: 111 ) (Token id:Id.Lit_Chars val:'\tverify_state HEAD committed committed &&\n' span_id:112) (Token id:Id.Lit_Chars val:'\tverify_state bar bar_work dummy &&\n' span_id:113) (Token id:Id.Lit_Chars val:'\tverify_state dir/foo head head &&\n' span_id:114) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:115) (Token id:Id.Lit_Chars val:'\tgit stash apply --index &&\n' span_id:116) (Token id: Id.Lit_Chars val: '\tverify_state HEAD HEADfile_work HEADfile_index &&\n' span_id: 117 ) (Token id:Id.Lit_Chars val:'\tverify_state bar dummy bar_index &&\n' span_id:118) (Token id:Id.Lit_Chars val:'\tverify_state dir/foo work index\n' span_id:119) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git stash --no-keep-index -p' span_id:126))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:130) (Token id: Id.Lit_Chars val: '\tset_state HEAD HEADfile_work HEADfile_index &&\n' span_id: 131 ) (Token id:Id.Lit_Chars val:'\tset_state bar bar_work bar_index &&\n' span_id:132) (Token id:Id.Lit_Chars val:'\tset_state dir/foo work index &&\n' span_id:133) (Token id: Id.Lit_Chars val: '\t(echo y; echo n; echo y) | git stash save --no-keep-index -p &&\n' span_id: 134 ) (Token id:Id.Lit_Chars val:'\tverify_state HEAD committed committed &&\n' span_id:135) (Token id:Id.Lit_Chars val:'\tverify_state dir/foo head head &&\n' span_id:136) (Token id:Id.Lit_Chars val:'\tverify_state bar bar_work dummy &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:138) (Token id:Id.Lit_Chars val:'\tgit stash apply --index &&\n' span_id:139) (Token id: Id.Lit_Chars val: '\tverify_state HEAD HEADfile_work HEADfile_index &&\n' span_id: 140 ) (Token id:Id.Lit_Chars val:'\tverify_state bar dummy bar_index &&\n' span_id:141) (Token id:Id.Lit_Chars val:'\tverify_state dir/foo work index\n' span_id:142) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'none of this moved HEAD' span_id:149))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:153) (Token id:Id.Lit_Chars val:'\tverify_saved_head\n' span_id:154) ) } ) (C {(test_expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'stash -p with split hunk' span_id:161))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:165) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:166) (Token id:Id.Lit_Chars val:'\tcat >test <<-\\EOF &&\n' span_id:167) (Token id:Id.Lit_Chars val:'\taaa\n' span_id:168) (Token id:Id.Lit_Chars val:'\tbbb\n' span_id:169) (Token id:Id.Lit_Chars val:'\tccc\n' span_id:170) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:171) (Token id:Id.Lit_Chars val:'\tgit add test &&\n' span_id:172) (Token id:Id.Lit_Chars val:'\tgit commit -m "initial" &&\n' span_id:173) (Token id:Id.Lit_Chars val:'\tcat >test <<-\\EOF &&\n' span_id:174) (Token id:Id.Lit_Chars val:'\taaa\n' span_id:175) (Token id:Id.Lit_Chars val:'\tadded line 1\n' span_id:176) (Token id:Id.Lit_Chars val:'\tbbb\n' span_id:177) (Token id:Id.Lit_Chars val:'\tadded line 2\n' span_id:178) (Token id:Id.Lit_Chars val:'\tccc\n' span_id:179) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:180) (Token id:Id.Lit_Chars val:'\tprintf "%s\\n" s n y q |\n' span_id:181) (Token id:Id.Lit_Chars val:'\ttest_might_fail git stash -p 2>error &&\n' span_id:182) (Token id:Id.Lit_Chars val:'\t! test_must_be_empty error &&\n' span_id:183) (Token id:Id.Lit_Chars val:'\tgrep "added line 1" test &&\n' span_id:184) (Token id:Id.Lit_Chars val:'\t! grep "added line 2" test\n' span_id:185) ) } ) (C {(test_done)}) ] )