(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:'Test git stash' span_id:15))} spids: [13] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stash some dirty working directory' span_id:27))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:31) (Token id:Id.Lit_Chars val:'\techo 1 > file &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\techo unrelated >other-file &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\tgit add other-file &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\techo 2 > file &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:39) (Token id:Id.Lit_Chars val:'\techo 3 > file &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:41) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:42) (Token id:Id.Lit_Chars val:'\tgit diff-files --quiet &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\tgit diff-index --cached --quiet HEAD\n' span_id:44) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:50) fd:-1 arg_word:{(expect)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:54) fd: -1 here_begin: {(EOF)} here_end_span_id: 66 stdin_parts: [ ('diff --git a/file b/file\n') ('index 0cfbf08..00750ed 100644\n') ('--- a/file\n') ('+++ b/file\n') ('@@ -1 +1 @@\n') ('-2\n') ('+3\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'parents of stash' span_id:71))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:75) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse stash^) = $(git rev-parse HEAD) &&\n' span_id: 76 ) (Token id:Id.Lit_Chars val:'\tgit diff stash^2..stash > output &&\n' span_id:77) (Token id:Id.Lit_Chars val:'\ttest_cmp output expect\n' span_id:78) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'applying bogus stash does nothing' span_id:85))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:89) (Token id: Id.Lit_Chars val: '\ttest_must_fail git stash apply stash@{1} &&\n' span_id: 90 ) (Token id:Id.Lit_Chars val:'\techo 1 >expect &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\ttest_cmp expect file\n' span_id:92) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply does not need clean working directory' span_id:99))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:103) (Token id:Id.Lit_Chars val:'\techo 4 >other-file &&\n' span_id:104) (Token id:Id.Lit_Chars val:'\tgit stash apply &&\n' span_id:105) (Token id:Id.Lit_Chars val:'\techo 3 >expect &&\n' span_id:106) (Token id:Id.Lit_Chars val:'\ttest_cmp expect file\n' span_id:107) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'apply does not clobber working directory changes' span_id: 114 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:118) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:119) (Token id:Id.Lit_Chars val:'\techo 4 >file &&\n' span_id:120) (Token id:Id.Lit_Chars val:'\ttest_must_fail git stash apply &&\n' span_id:121) (Token id:Id.Lit_Chars val:'\techo 4 >expect &&\n' span_id:122) (Token id:Id.Lit_Chars val:'\ttest_cmp expect file\n' span_id:123) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply stashed changes' span_id:130))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:134) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:135) (Token id:Id.Lit_Chars val:'\techo 5 >other-file &&\n' span_id:136) (Token id:Id.Lit_Chars val:'\tgit add other-file &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:138) (Token id:Id.Lit_Chars val:'\tgit commit -m other-file &&\n' span_id:139) (Token id:Id.Lit_Chars val:'\tgit stash apply &&\n' span_id:140) (Token id:Id.Lit_Chars val:'\ttest 3 = $(cat file) &&\n' span_id:141) (Token id:Id.Lit_Chars val:'\ttest 1 = $(git show :file) &&\n' span_id:142) (Token id:Id.Lit_Chars val:'\ttest 1 = $(git show HEAD:file)\n' span_id:143) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply stashed changes (including index)' span_id:150))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:154) (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD^ &&\n' span_id:155) (Token id:Id.Lit_Chars val:'\techo 6 > other-file &&\n' span_id:156) (Token id:Id.Lit_Chars val:'\tgit add other-file &&\n' span_id:157) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:158) (Token id:Id.Lit_Chars val:'\tgit commit -m other-file &&\n' span_id:159) (Token id:Id.Lit_Chars val:'\tgit stash apply --index &&\n' span_id:160) (Token id:Id.Lit_Chars val:'\ttest 3 = $(cat file) &&\n' span_id:161) (Token id:Id.Lit_Chars val:'\ttest 2 = $(git show :file) &&\n' span_id:162) (Token id:Id.Lit_Chars val:'\ttest 1 = $(git show HEAD:file)\n' span_id:163) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'unstashing in a subdirectory' span_id:170))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:174) (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD &&\n' span_id:175) (Token id:Id.Lit_Chars val:'\tmkdir subdir &&\n' span_id:176) (Token id:Id.Lit_Chars val:'\t(\n' span_id:177) (Token id:Id.Lit_Chars val:'\t\tcd subdir &&\n' span_id:178) (Token id:Id.Lit_Chars val:'\t\tgit stash apply\n' span_id:179) (Token id:Id.Lit_Chars val:'\t)\n' span_id:180) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stash drop complains of extra options' span_id:187))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:191) (Token id:Id.Lit_Chars val:'\ttest_must_fail git stash drop --foo\n' span_id:192) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'drop top stash' span_id:199))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:203) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:204) (Token id:Id.Lit_Chars val:'\tgit stash list > stashlist1 &&\n' span_id:205) (Token id:Id.Lit_Chars val:'\techo 7 > file &&\n' span_id:206) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:207) (Token id:Id.Lit_Chars val:'\tgit stash drop &&\n' span_id:208) (Token id:Id.Lit_Chars val:'\tgit stash list > stashlist2 &&\n' span_id:209) (Token id:Id.Lit_Chars val:'\ttest_cmp stashlist1 stashlist2 &&\n' span_id:210) (Token id:Id.Lit_Chars val:'\tgit stash apply &&\n' span_id:211) (Token id:Id.Lit_Chars val:'\ttest 3 = $(cat file) &&\n' span_id:212) (Token id:Id.Lit_Chars val:'\ttest 1 = $(git show :file) &&\n' span_id:213) (Token id:Id.Lit_Chars val:'\ttest 1 = $(git show HEAD:file)\n' span_id:214) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'drop middle stash' span_id:221))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:225) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:226) (Token id:Id.Lit_Chars val:'\techo 8 > file &&\n' span_id:227) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:228) (Token id:Id.Lit_Chars val:'\techo 9 > file &&\n' span_id:229) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:230) (Token id:Id.Lit_Chars val:'\tgit stash drop stash@{1} &&\n' span_id:231) (Token id: Id.Lit_Chars val: '\ttest 2 = $(git stash list | wc -l) &&\n' span_id: 232 ) (Token id:Id.Lit_Chars val:'\tgit stash apply &&\n' span_id:233) (Token id:Id.Lit_Chars val:'\ttest 9 = $(cat file) &&\n' span_id:234) (Token id:Id.Lit_Chars val:'\ttest 1 = $(git show :file) &&\n' span_id:235) (Token id:Id.Lit_Chars val:'\ttest 1 = $(git show HEAD:file) &&\n' span_id:236) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:237) (Token id:Id.Lit_Chars val:'\tgit stash drop &&\n' span_id:238) (Token id:Id.Lit_Chars val:'\tgit stash apply &&\n' span_id:239) (Token id:Id.Lit_Chars val:'\ttest 3 = $(cat file) &&\n' span_id:240) (Token id:Id.Lit_Chars val:'\ttest 1 = $(git show :file) &&\n' span_id:241) (Token id:Id.Lit_Chars val:'\ttest 1 = $(git show HEAD:file)\n' span_id:242) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stash pop' span_id:249))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:253) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:254) (Token id:Id.Lit_Chars val:'\tgit stash pop &&\n' span_id:255) (Token id:Id.Lit_Chars val:'\ttest 3 = $(cat file) &&\n' span_id:256) (Token id:Id.Lit_Chars val:'\ttest 1 = $(git show :file) &&\n' span_id:257) (Token id:Id.Lit_Chars val:'\ttest 1 = $(git show HEAD:file) &&\n' span_id:258) (Token id:Id.Lit_Chars val:'\ttest 0 = $(git stash list | wc -l)\n' span_id:259) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:265) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:269) fd: -1 here_begin: {(EOF)} here_end_span_id: 281 stdin_parts: [ ('diff --git a/file2 b/file2\n') ('new file mode 100644\n') ('index 0000000..1fe912c\n') ('--- /dev/null\n') ('+++ b/file2\n') ('@@ -0,0 +1 @@\n') ('+bar2\n') ] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:285) fd: -1 arg_word: {(expect1)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:289) fd: -1 here_begin: {(EOF)} here_end_span_id: 301 stdin_parts: [ ('diff --git a/file b/file\n') ('index 257cc56..5716ca5 100644\n') ('--- a/file\n') ('+++ b/file\n') ('@@ -1 +1 @@\n') ('-foo\n') ('+bar\n') ] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:305) fd: -1 arg_word: {(expect2)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:309) fd: -1 here_begin: {(EOF)} here_end_span_id: 328 stdin_parts: [ ('diff --git a/file b/file\n') ('index 7601807..5716ca5 100644\n') ('--- a/file\n') ('+++ b/file\n') ('@@ -1 +1 @@\n') ('-baz\n') ('+bar\n') ('diff --git a/file2 b/file2\n') ('new file mode 100644\n') ('index 0000000..1fe912c\n') ('--- /dev/null\n') ('+++ b/file2\n') ('@@ -0,0 +1 @@\n') ('+bar2\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stash branch' span_id:333))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:337) (Token id:Id.Lit_Chars val:'\techo foo > file &&\n' span_id:338) (Token id:Id.Lit_Chars val:'\tgit commit file -m first &&\n' span_id:339) (Token id:Id.Lit_Chars val:'\techo bar > file &&\n' span_id:340) (Token id:Id.Lit_Chars val:'\techo bar2 > file2 &&\n' span_id:341) (Token id:Id.Lit_Chars val:'\tgit add file2 &&\n' span_id:342) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:343) (Token id:Id.Lit_Chars val:'\techo baz > file &&\n' span_id:344) (Token id:Id.Lit_Chars val:'\tgit commit file -m second &&\n' span_id:345) (Token id:Id.Lit_Chars val:'\tgit stash branch stashbranch &&\n' span_id:346) (Token id: Id.Lit_Chars val: '\ttest refs/heads/stashbranch = $(git symbolic-ref HEAD) &&\n' span_id: 347 ) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse HEAD) = $(git rev-parse master^) &&\n' span_id: 348 ) (Token id:Id.Lit_Chars val:'\tgit diff --cached > output &&\n' span_id:349) (Token id:Id.Lit_Chars val:'\ttest_cmp output expect &&\n' span_id:350) (Token id:Id.Lit_Chars val:'\tgit diff > output &&\n' span_id:351) (Token id:Id.Lit_Chars val:'\ttest_cmp output expect1 &&\n' span_id:352) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:353) (Token id:Id.Lit_Chars val:'\tgit commit -m alternate\\ second &&\n' span_id:354) (Token id:Id.Lit_Chars val:'\tgit diff master..stashbranch > output &&\n' span_id:355) (Token id:Id.Lit_Chars val:'\ttest_cmp output expect2 &&\n' span_id:356) (Token id:Id.Lit_Chars val:'\ttest 0 = $(git stash list | wc -l)\n' span_id:357) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply -q is quiet' span_id:364))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:368) (Token id:Id.Lit_Chars val:'\techo foo > file &&\n' span_id:369) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:370) (Token id: Id.Lit_Chars val: '\tgit stash apply -q > output.out 2>&1 &&\n' span_id: 371 ) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty output.out\n' span_id:372) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'save -q is quiet' span_id:379))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:383) (Token id: Id.Lit_Chars val: '\tgit stash save --quiet > output.out 2>&1 &&\n' span_id: 384 ) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty output.out\n' span_id:385) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pop -q is quiet' span_id:392))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:396) (Token id: Id.Lit_Chars val: '\tgit stash pop -q > output.out 2>&1 &&\n' span_id: 397 ) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty output.out\n' span_id:398) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pop -q --index works and is quiet' span_id:405))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:409) (Token id:Id.Lit_Chars val:'\techo foo > file &&\n' span_id:410) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:411) (Token id:Id.Lit_Chars val:'\tgit stash save --quiet &&\n' span_id:412) (Token id:Id.Lit_Chars val:'\tgit stash pop -q --index > output.out 2>&1 &&\n' span_id:413) (Token id:Id.Lit_Chars val:'\ttest foo = "$(git show :file)" &&\n' span_id:414) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty output.out\n' span_id:415) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'drop -q is quiet' span_id:422))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:426) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:427) (Token id:Id.Lit_Chars val:'\tgit stash drop -q > output.out 2>&1 &&\n' span_id:428) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty output.out\n' span_id:429) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stash -k' span_id:436))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:440) (Token id:Id.Lit_Chars val:'\techo bar3 > file &&\n' span_id:441) (Token id:Id.Lit_Chars val:'\techo bar4 > file2 &&\n' span_id:442) (Token id:Id.Lit_Chars val:'\tgit add file2 &&\n' span_id:443) (Token id:Id.Lit_Chars val:'\tgit stash -k &&\n' span_id:444) (Token id: Id.Lit_Chars val: '\ttest bar,bar4 = $(cat file),$(cat file2)\n' span_id: 445 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stash --no-keep-index' span_id:452))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:456) (Token id:Id.Lit_Chars val:'\techo bar33 > file &&\n' span_id:457) (Token id:Id.Lit_Chars val:'\techo bar44 > file2 &&\n' span_id:458) (Token id:Id.Lit_Chars val:'\tgit add file2 &&\n' span_id:459) (Token id:Id.Lit_Chars val:'\tgit stash --no-keep-index &&\n' span_id:460) (Token id: Id.Lit_Chars val: '\ttest bar,bar2 = $(cat file),$(cat file2)\n' span_id: 461 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stash --invalid-option' span_id:468))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:472) (Token id:Id.Lit_Chars val:'\techo bar5 > file &&\n' span_id:473) (Token id:Id.Lit_Chars val:'\techo bar6 > file2 &&\n' span_id:474) (Token id:Id.Lit_Chars val:'\tgit add file2 &&\n' span_id:475) (Token id:Id.Lit_Chars val:'\ttest_must_fail git stash --invalid-option &&\n' span_id:476) (Token id: Id.Lit_Chars val: '\ttest_must_fail git stash save --invalid-option &&\n' span_id: 477 ) (Token id:Id.Lit_Chars val:'\ttest bar5,bar6 = $(cat file),$(cat file2) &&\n' span_id:478) (Token id: Id.Lit_Chars val: '\tgit stash -- -message-starting-with-dash &&\n' span_id: 479 ) (Token id:Id.Lit_Chars val:'\ttest bar,bar2 = $(cat file),$(cat file2)\n' span_id:480) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stash an added file' span_id:487))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:491) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:492) (Token id:Id.Lit_Chars val:'\techo new >file3 &&\n' span_id:493) (Token id:Id.Lit_Chars val:'\tgit add file3 &&\n' span_id:494) (Token id:Id.Lit_Chars val:'\tgit stash save "added file" &&\n' span_id:495) (Token id:Id.Lit_Chars val:'\t! test -r file3 &&\n' span_id:496) (Token id:Id.Lit_Chars val:'\tgit stash apply &&\n' span_id:497) (Token id:Id.Lit_Chars val:'\ttest new = "$(cat file3)"\n' span_id:498) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stash rm then recreate' span_id:505))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:509) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:510) (Token id:Id.Lit_Chars val:'\tgit rm file &&\n' span_id:511) (Token id:Id.Lit_Chars val:'\techo bar7 >file &&\n' span_id:512) (Token id:Id.Lit_Chars val:'\tgit stash save "rm then recreate" &&\n' span_id:513) (Token id:Id.Lit_Chars val:'\ttest bar = "$(cat file)" &&\n' span_id:514) (Token id:Id.Lit_Chars val:'\tgit stash apply &&\n' span_id:515) (Token id:Id.Lit_Chars val:'\ttest bar7 = "$(cat file)"\n' span_id:516) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stash rm and ignore' span_id:523))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:527) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:528) (Token id:Id.Lit_Chars val:'\tgit rm file &&\n' span_id:529) (Token id:Id.Lit_Chars val:'\techo file >.gitignore &&\n' span_id:530) (Token id:Id.Lit_Chars val:'\tgit stash save "rm and ignore" &&\n' span_id:531) (Token id:Id.Lit_Chars val:'\ttest bar = "$(cat file)" &&\n' span_id:532) (Token id:Id.Lit_Chars val:'\ttest file = "$(cat .gitignore)" &&\n' span_id:533) (Token id:Id.Lit_Chars val:'\tgit stash apply &&\n' span_id:534) (Token id:Id.Lit_Chars val:'\t! test -r file &&\n' span_id:535) (Token id:Id.Lit_Chars val:'\ttest file = "$(cat .gitignore)"\n' span_id:536) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stash rm and ignore (stage .gitignore)' span_id:543))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:547) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:548) (Token id:Id.Lit_Chars val:'\tgit rm file &&\n' span_id:549) (Token id:Id.Lit_Chars val:'\techo file >.gitignore &&\n' span_id:550) (Token id:Id.Lit_Chars val:'\tgit add .gitignore &&\n' span_id:551) (Token id: Id.Lit_Chars val: '\tgit stash save "rm and ignore (stage .gitignore)" &&\n' span_id: 552 ) (Token id:Id.Lit_Chars val:'\ttest bar = "$(cat file)" &&\n' span_id:553) (Token id:Id.Lit_Chars val:'\t! test -r .gitignore &&\n' span_id:554) (Token id:Id.Lit_Chars val:'\tgit stash apply &&\n' span_id:555) (Token id:Id.Lit_Chars val:'\t! test -r file &&\n' span_id:556) (Token id:Id.Lit_Chars val:'\ttest file = "$(cat .gitignore)"\n' span_id:557) ) } ) (C {(test_expect_success)} {(SYMLINKS)} {(SQ (Token id:Id.Lit_Chars val:'stash file to symlink' span_id:566))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:570) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:571) (Token id:Id.Lit_Chars val:'\trm file &&\n' span_id:572) (Token id:Id.Lit_Chars val:'\tln -s file2 file &&\n' span_id:573) (Token id:Id.Lit_Chars val:'\tgit stash save "file to symlink" &&\n' span_id:574) (Token id:Id.Lit_Chars val:'\ttest -f file &&\n' span_id:575) (Token id:Id.Lit_Chars val:'\ttest bar = "$(cat file)" &&\n' span_id:576) (Token id:Id.Lit_Chars val:'\tgit stash apply &&\n' span_id:577) (Token id: Id.Lit_Chars val: '\tcase "$(ls -l file)" in *" file -> file2") :;; *) false;; esac\n' span_id: 578 ) ) } ) (C {(test_expect_success)} {(SYMLINKS)} {(SQ (Token id:Id.Lit_Chars val:'stash file to symlink (stage rm)' span_id:587))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:591) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:592) (Token id:Id.Lit_Chars val:'\tgit rm file &&\n' span_id:593) (Token id:Id.Lit_Chars val:'\tln -s file2 file &&\n' span_id:594) (Token id:Id.Lit_Chars val:'\tgit stash save "file to symlink (stage rm)" &&\n' span_id:595) (Token id:Id.Lit_Chars val:'\ttest -f file &&\n' span_id:596) (Token id:Id.Lit_Chars val:'\ttest bar = "$(cat file)" &&\n' span_id:597) (Token id:Id.Lit_Chars val:'\tgit stash apply &&\n' span_id:598) (Token id: Id.Lit_Chars val: '\tcase "$(ls -l file)" in *" file -> file2") :;; *) false;; esac\n' span_id: 599 ) ) } ) (C {(test_expect_success)} {(SYMLINKS)} {(SQ (Token id:Id.Lit_Chars val:'stash file to symlink (full stage)' span_id:608))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:612) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:613) (Token id:Id.Lit_Chars val:'\trm file &&\n' span_id:614) (Token id:Id.Lit_Chars val:'\tln -s file2 file &&\n' span_id:615) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:616) (Token id: Id.Lit_Chars val: '\tgit stash save "file to symlink (full stage)" &&\n' span_id: 617 ) (Token id:Id.Lit_Chars val:'\ttest -f file &&\n' span_id:618) (Token id:Id.Lit_Chars val:'\ttest bar = "$(cat file)" &&\n' span_id:619) (Token id:Id.Lit_Chars val:'\tgit stash apply &&\n' span_id:620) (Token id: Id.Lit_Chars val: '\tcase "$(ls -l file)" in *" file -> file2") :;; *) false;; esac\n' span_id: 621 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stash symlink to file' span_id:632))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:636) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:637) (Token id:Id.Lit_Chars val:'\ttest_ln_s_add file filelink &&\n' span_id:638) (Token id:Id.Lit_Chars val:'\tgit commit -m "Add symlink" &&\n' span_id:639) (Token id:Id.Lit_Chars val:'\trm filelink &&\n' span_id:640) (Token id:Id.Lit_Chars val:'\tcp file filelink &&\n' span_id:641) (Token id:Id.Lit_Chars val:'\tgit stash save "symlink to file"\n' span_id:642) ) } ) (C {(test_expect_success)} {(SYMLINKS)} {(SQ (Token id:Id.Lit_Chars val:'this must have re-created the symlink' span_id:651))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:655) (Token id:Id.Lit_Chars val:'\ttest -h filelink &&\n' span_id:656) (Token id: Id.Lit_Chars val: '\tcase "$(ls -l filelink)" in *" filelink -> file") :;; *) false;; esac\n' span_id: 657 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'unstash must re-create the file' span_id:664))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:668) (Token id:Id.Lit_Chars val:'\tgit stash apply &&\n' span_id:669) (Token id:Id.Lit_Chars val:'\t! test -h filelink &&\n' span_id:670) (Token id:Id.Lit_Chars val:'\ttest bar = "$(cat file)"\n' span_id:671) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stash symlink to file (stage rm)' span_id:678))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:682) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:683) (Token id:Id.Lit_Chars val:'\tgit rm filelink &&\n' span_id:684) (Token id:Id.Lit_Chars val:'\tcp file filelink &&\n' span_id:685) (Token id:Id.Lit_Chars val:'\tgit stash save "symlink to file (stage rm)"\n' span_id:686) ) } ) (C {(test_expect_success)} {(SYMLINKS)} {(SQ (Token id:Id.Lit_Chars val:'this must have re-created the symlink' span_id:695))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:699) (Token id:Id.Lit_Chars val:'\ttest -h filelink &&\n' span_id:700) (Token id: Id.Lit_Chars val: '\tcase "$(ls -l filelink)" in *" filelink -> file") :;; *) false;; esac\n' span_id: 701 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'unstash must re-create the file' span_id:708))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:712) (Token id:Id.Lit_Chars val:'\tgit stash apply &&\n' span_id:713) (Token id:Id.Lit_Chars val:'\t! test -h filelink &&\n' span_id:714) (Token id:Id.Lit_Chars val:'\ttest bar = "$(cat file)"\n' span_id:715) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stash symlink to file (full stage)' span_id:722))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:726) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:727) (Token id:Id.Lit_Chars val:'\trm filelink &&\n' span_id:728) (Token id:Id.Lit_Chars val:'\tcp file filelink &&\n' span_id:729) (Token id:Id.Lit_Chars val:'\tgit add filelink &&\n' span_id:730) (Token id: Id.Lit_Chars val: '\tgit stash save "symlink to file (full stage)"\n' span_id: 731 ) ) } ) (C {(test_expect_success)} {(SYMLINKS)} {(SQ (Token id:Id.Lit_Chars val:'this must have re-created the symlink' span_id:740))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:744) (Token id:Id.Lit_Chars val:'\ttest -h filelink &&\n' span_id:745) (Token id: Id.Lit_Chars val: '\tcase "$(ls -l filelink)" in *" filelink -> file") :;; *) false;; esac\n' span_id: 746 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'unstash must re-create the file' span_id:753))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:757) (Token id:Id.Lit_Chars val:'\tgit stash apply &&\n' span_id:758) (Token id:Id.Lit_Chars val:'\t! test -h filelink &&\n' span_id:759) (Token id:Id.Lit_Chars val:'\ttest bar = "$(cat file)"\n' span_id:760) ) } ) (C {(test_expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'stash directory to file' span_id:767))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:771) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:772) (Token id:Id.Lit_Chars val:'\tmkdir dir &&\n' span_id:773) (Token id:Id.Lit_Chars val:'\techo foo >dir/file &&\n' span_id:774) (Token id:Id.Lit_Chars val:'\tgit add dir/file &&\n' span_id:775) (Token id:Id.Lit_Chars val:'\tgit commit -m "Add file in dir" &&\n' span_id:776) (Token id:Id.Lit_Chars val:'\trm -fr dir &&\n' span_id:777) (Token id:Id.Lit_Chars val:'\techo bar >dir &&\n' span_id:778) (Token id:Id.Lit_Chars val:'\tgit stash save "directory to file" &&\n' span_id:779) (Token id:Id.Lit_Chars val:'\ttest -d dir &&\n' span_id:780) (Token id:Id.Lit_Chars val:'\ttest foo = "$(cat dir/file)" &&\n' span_id:781) (Token id:Id.Lit_Chars val:'\ttest_must_fail git stash apply &&\n' span_id:782) (Token id:Id.Lit_Chars val:'\ttest bar = "$(cat dir)" &&\n' span_id:783) (Token id:Id.Lit_Chars val:'\tgit reset --soft HEAD^\n' span_id:784) ) } ) (C {(test_expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'stash file to directory' span_id:791))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:795) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:796) (Token id:Id.Lit_Chars val:'\trm file &&\n' span_id:797) (Token id:Id.Lit_Chars val:'\tmkdir file &&\n' span_id:798) (Token id:Id.Lit_Chars val:'\techo foo >file/file &&\n' span_id:799) (Token id: Id.Lit_Chars val: '\tgit stash save "file to directory" &&\n' span_id: 800 ) (Token id:Id.Lit_Chars val:'\ttest -f file &&\n' span_id:801) (Token id:Id.Lit_Chars val:'\ttest bar = "$(cat file)" &&\n' span_id:802) (Token id:Id.Lit_Chars val:'\tgit stash apply &&\n' span_id:803) (Token id:Id.Lit_Chars val:'\ttest -f file/file &&\n' span_id:804) (Token id:Id.Lit_Chars val:'\ttest foo = "$(cat file/file)"\n' span_id:805) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'stash branch - no stashes on stack, stash-like argument' span_id: 812 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:816) (Token id:Id.Lit_Chars val:'\tgit stash clear &&\n' span_id:817) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git reset --hard HEAD" &&\n' span_id:818) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:819) (Token id:Id.Lit_Chars val:'\techo foo >> file &&\n' span_id:820) (Token id:Id.Lit_Chars val:'\tSTASH_ID=$(git stash create) &&\n' span_id:821) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:822) (Token id: Id.Lit_Chars val: '\tgit stash branch stash-branch ${STASH_ID} &&\n' span_id: 823 ) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git reset --hard HEAD && git checkout master && git branch -D stash-branch" &&\n' span_id: 824 ) (Token id:Id.Lit_Chars val:'\ttest $(git ls-files --modified | wc -l) -eq 1\n' span_id:825) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'stash branch - stashes on stack, stash-like argument' span_id: 832 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:836) (Token id:Id.Lit_Chars val:'\tgit stash clear &&\n' span_id:837) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git reset --hard HEAD" &&\n' span_id:838) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:839) (Token id:Id.Lit_Chars val:'\techo foo >> file &&\n' span_id:840) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:841) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git stash drop" &&\n' span_id:842) (Token id:Id.Lit_Chars val:'\techo bar >> file &&\n' span_id:843) (Token id:Id.Lit_Chars val:'\tSTASH_ID=$(git stash create) &&\n' span_id:844) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:845) (Token id:Id.Lit_Chars val:'\tgit stash branch stash-branch ${STASH_ID} &&\n' span_id:846) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git reset --hard HEAD && git checkout master && git branch -D stash-branch" &&\n' span_id: 847 ) (Token id:Id.Lit_Chars val:'\ttest $(git ls-files --modified | wc -l) -eq 1\n' span_id:848) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stash show format defaults to --stat' span_id:855))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:859) (Token id:Id.Lit_Chars val:'\tgit stash clear &&\n' span_id:860) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git reset --hard HEAD" &&\n' span_id:861) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:862) (Token id:Id.Lit_Chars val:'\techo foo >> file &&\n' span_id:863) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:864) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git stash drop" &&\n' span_id:865) (Token id:Id.Lit_Chars val:'\techo bar >> file &&\n' span_id:866) (Token id:Id.Lit_Chars val:'\tSTASH_ID=$(git stash create) &&\n' span_id:867) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:868) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:869) (Token id:Id.Lit_Chars val:'\t file | 1 +\n' span_id:870) (Token id:Id.Lit_Chars val:'\t 1 file changed, 1 insertion(+)\n' span_id:871) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:872) (Token id:Id.Lit_Chars val:'\tgit stash show ${STASH_ID} >actual &&\n' span_id:873) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expected actual\n' span_id:874) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'stash show - stashes on stack, stash-like argument' span_id: 881 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:885) (Token id:Id.Lit_Chars val:'\tgit stash clear &&\n' span_id:886) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git reset --hard HEAD" &&\n' span_id:887) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:888) (Token id:Id.Lit_Chars val:'\techo foo >> file &&\n' span_id:889) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:890) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git stash drop" &&\n' span_id:891) (Token id:Id.Lit_Chars val:'\techo bar >> file &&\n' span_id:892) (Token id:Id.Lit_Chars val:'\tSTASH_ID=$(git stash create) &&\n' span_id:893) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:894) (Token id:Id.Lit_Chars val:'\techo "1\t0\tfile" >expected &&\n' span_id:895) (Token id: Id.Lit_Chars val: '\tgit stash show --numstat ${STASH_ID} >actual &&\n' span_id: 896 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:897) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'stash show -p - stashes on stack, stash-like argument' span_id: 904 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:908) (Token id:Id.Lit_Chars val:'\tgit stash clear &&\n' span_id:909) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git reset --hard HEAD" &&\n' span_id:910) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:911) (Token id:Id.Lit_Chars val:'\techo foo >> file &&\n' span_id:912) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:913) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git stash drop" &&\n' span_id:914) (Token id:Id.Lit_Chars val:'\techo bar >> file &&\n' span_id:915) (Token id:Id.Lit_Chars val:'\tSTASH_ID=$(git stash create) &&\n' span_id:916) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:917) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:918) (Token id:Id.Lit_Chars val:'\tdiff --git a/file b/file\n' span_id:919) (Token id:Id.Lit_Chars val:'\tindex 7601807..935fbd3 100644\n' span_id:920) (Token id:Id.Lit_Chars val:'\t--- a/file\n' span_id:921) (Token id:Id.Lit_Chars val:'\t+++ b/file\n' span_id:922) (Token id:Id.Lit_Chars val:'\t@@ -1 +1,2 @@\n' span_id:923) (Token id:Id.Lit_Chars val:'\t baz\n' span_id:924) (Token id:Id.Lit_Chars val:'\t+bar\n' span_id:925) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:926) (Token id:Id.Lit_Chars val:'\tgit stash show -p ${STASH_ID} >actual &&\n' span_id:927) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:928) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'stash show - no stashes on stack, stash-like argument' span_id: 935 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:939) (Token id:Id.Lit_Chars val:'\tgit stash clear &&\n' span_id:940) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git reset --hard HEAD" &&\n' span_id:941) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:942) (Token id:Id.Lit_Chars val:'\techo foo >> file &&\n' span_id:943) (Token id:Id.Lit_Chars val:'\tSTASH_ID=$(git stash create) &&\n' span_id:944) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:945) (Token id:Id.Lit_Chars val:'\techo "1\t0\tfile" >expected &&\n' span_id:946) (Token id:Id.Lit_Chars val:'\tgit stash show --numstat ${STASH_ID} >actual &&\n' span_id:947) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:948) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'stash show -p - no stashes on stack, stash-like argument' span_id: 955 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:959) (Token id:Id.Lit_Chars val:'\tgit stash clear &&\n' span_id:960) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git reset --hard HEAD" &&\n' span_id:961) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:962) (Token id:Id.Lit_Chars val:'\techo foo >> file &&\n' span_id:963) (Token id:Id.Lit_Chars val:'\tSTASH_ID=$(git stash create) &&\n' span_id:964) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:965) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:966) (Token id:Id.Lit_Chars val:'\tdiff --git a/file b/file\n' span_id:967) (Token id:Id.Lit_Chars val:'\tindex 7601807..71b52c4 100644\n' span_id:968) (Token id:Id.Lit_Chars val:'\t--- a/file\n' span_id:969) (Token id:Id.Lit_Chars val:'\t+++ b/file\n' span_id:970) (Token id:Id.Lit_Chars val:'\t@@ -1 +1,2 @@\n' span_id:971) (Token id:Id.Lit_Chars val:'\t baz\n' span_id:972) (Token id:Id.Lit_Chars val:'\t+foo\n' span_id:973) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:974) (Token id: Id.Lit_Chars val: '\tgit stash show -p ${STASH_ID} >actual &&\n' span_id: 975 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:976) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'stash drop - fail early if specified stash is not a stash reference' span_id: 983 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:987) (Token id:Id.Lit_Chars val:'\tgit stash clear &&\n' span_id:988) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git reset --hard HEAD && git stash clear" &&\n' span_id: 989 ) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:990) (Token id:Id.Lit_Chars val:'\techo foo > file &&\n' span_id:991) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:992) (Token id:Id.Lit_Chars val:'\techo bar > file &&\n' span_id:993) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:994) (Token id: Id.Lit_Chars val: '\ttest_must_fail git stash drop $(git rev-parse stash@{0}) &&\n' span_id: 995 ) (Token id:Id.Lit_Chars val:'\tgit stash pop &&\n' span_id:996) (Token id:Id.Lit_Chars val:'\ttest bar = "$(cat file)" &&\n' span_id:997) (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD\n' span_id:998) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'stash pop - fail early if specified stash is not a stash reference' span_id: 1005 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1009) (Token id:Id.Lit_Chars val:'\tgit stash clear &&\n' span_id:1010) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git reset --hard HEAD && git stash clear" &&\n' span_id: 1011 ) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1012) (Token id:Id.Lit_Chars val:'\techo foo > file &&\n' span_id:1013) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:1014) (Token id:Id.Lit_Chars val:'\techo bar > file &&\n' span_id:1015) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:1016) (Token id: Id.Lit_Chars val: '\ttest_must_fail git stash pop $(git rev-parse stash@{0}) &&\n' span_id: 1017 ) (Token id:Id.Lit_Chars val:'\tgit stash pop &&\n' span_id:1018) (Token id:Id.Lit_Chars val:'\ttest bar = "$(cat file)" &&\n' span_id:1019) (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD\n' span_id:1020) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ref with non-existent reflog' span_id:1027))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1031) (Token id:Id.Lit_Chars val:'\tgit stash clear &&\n' span_id:1032) (Token id:Id.Lit_Chars val:'\techo bar5 > file &&\n' span_id:1033) (Token id:Id.Lit_Chars val:'\techo bar6 > file2 &&\n' span_id:1034) (Token id:Id.Lit_Chars val:'\tgit add file2 &&\n' span_id:1035) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:1036) (Token id: Id.Lit_Chars val: '\ttest_must_fail git rev-parse --quiet --verify does-not-exist &&\n' span_id: 1037 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git stash drop does-not-exist &&\n' span_id:1038) (Token id: Id.Lit_Chars val: '\ttest_must_fail git stash drop does-not-exist@{0} &&\n' span_id: 1039 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git stash pop does-not-exist &&\n' span_id:1040) (Token id: Id.Lit_Chars val: '\ttest_must_fail git stash pop does-not-exist@{0} &&\n' span_id: 1041 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git stash apply does-not-exist &&\n' span_id:1042) (Token id: Id.Lit_Chars val: '\ttest_must_fail git stash apply does-not-exist@{0} &&\n' span_id: 1043 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git stash show does-not-exist &&\n' span_id:1044) (Token id: Id.Lit_Chars val: '\ttest_must_fail git stash show does-not-exist@{0} &&\n' span_id: 1045 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git stash branch tmp does-not-exist &&\n' span_id:1046) (Token id: Id.Lit_Chars val: '\ttest_must_fail git stash branch tmp does-not-exist@{0} &&\n' span_id: 1047 ) (Token id:Id.Lit_Chars val:'\tgit stash drop\n' span_id:1048) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'invalid ref of the form stash@{n}, n >= N' span_id:1055))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1059) (Token id:Id.Lit_Chars val:'\tgit stash clear &&\n' span_id:1060) (Token id:Id.Lit_Chars val:'\ttest_must_fail git stash drop stash@{0} &&\n' span_id:1061) (Token id:Id.Lit_Chars val:'\techo bar5 > file &&\n' span_id:1062) (Token id:Id.Lit_Chars val:'\techo bar6 > file2 &&\n' span_id:1063) (Token id:Id.Lit_Chars val:'\tgit add file2 &&\n' span_id:1064) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:1065) (Token id: Id.Lit_Chars val: '\ttest_must_fail git stash drop stash@{1} &&\n' span_id: 1066 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git stash pop stash@{1} &&\n' span_id:1067) (Token id: Id.Lit_Chars val: '\ttest_must_fail git stash apply stash@{1} &&\n' span_id: 1068 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git stash show stash@{1} &&\n' span_id:1069) (Token id: Id.Lit_Chars val: '\ttest_must_fail git stash branch tmp stash@{1} &&\n' span_id: 1070 ) (Token id:Id.Lit_Chars val:'\tgit stash drop\n' span_id:1071) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'stash branch should not drop the stash if the branch exists' span_id: 1078 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1082) (Token id:Id.Lit_Chars val:'\tgit stash clear &&\n' span_id:1083) (Token id:Id.Lit_Chars val:'\techo foo >file &&\n' span_id:1084) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:1085) (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:1086) (Token id:Id.Lit_Chars val:'\techo bar >file &&\n' span_id:1087) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:1088) (Token id: Id.Lit_Chars val: '\ttest_must_fail git stash branch master stash@{0} &&\n' span_id: 1089 ) (Token id:Id.Lit_Chars val:'\tgit rev-parse stash@{0} --\n' span_id:1090) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'stash apply shows status same as git status (relative to current directory)' span_id: 1097 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1101) (Token id:Id.Lit_Chars val:'\tgit stash clear &&\n' span_id:1102) (Token id:Id.Lit_Chars val:'\techo 1 >subdir/subfile1 &&\n' span_id:1103) (Token id:Id.Lit_Chars val:'\techo 2 >subdir/subfile2 &&\n' span_id:1104) (Token id:Id.Lit_Chars val:'\tgit add subdir/subfile1 &&\n' span_id:1105) (Token id:Id.Lit_Chars val:'\tgit commit -m subdir &&\n' span_id:1106) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1107) (Token id:Id.Lit_Chars val:'\t\tcd subdir &&\n' span_id:1108) (Token id:Id.Lit_Chars val:'\t\techo x >subfile1 &&\n' span_id:1109) (Token id:Id.Lit_Chars val:'\t\techo x >../file &&\n' span_id:1110) (Token id:Id.Lit_Chars val:'\t\tgit status >../expect &&\n' span_id:1111) (Token id:Id.Lit_Chars val:'\t\tgit stash &&\n' span_id:1112) (Token id:Id.Lit_Chars val:'\t\tsane_unset GIT_MERGE_VERBOSITY &&\n' span_id:1113) (Token id:Id.Lit_Chars val:'\t\tgit stash apply\n' span_id:1114) (Token id:Id.Lit_Chars val:'\t) |\n' span_id:1115) (Token id: Id.Lit_Chars val: '\tsed -e 1,2d >actual && # drop "Saved..." and "HEAD is now..."\n' span_id: 1116 ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect actual\n' span_id:1117) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1123) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1127) fd: -1 here_begin: {(EOF)} here_end_span_id: 1139 stdin_parts: [ ('diff --git a/HEAD b/HEAD\n') ('new file mode 100644\n') ('index 0000000..fe0cbee\n') ('--- /dev/null\n') ('+++ b/HEAD\n') ('@@ -0,0 +1 @@\n') ('+file-not-a-ref\n') ] ) ] ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'stash where working directory contains "HEAD" file' span_id: 1144 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1148) (Token id:Id.Lit_Chars val:'\tgit stash clear &&\n' span_id:1149) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1150) (Token id:Id.Lit_Chars val:'\techo file-not-a-ref > HEAD &&\n' span_id:1151) (Token id:Id.Lit_Chars val:'\tgit add HEAD &&\n' span_id:1152) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1153) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:1154) (Token id:Id.Lit_Chars val:'\tgit diff-files --quiet &&\n' span_id:1155) (Token id:Id.Lit_Chars val:'\tgit diff-index --cached --quiet HEAD &&\n' span_id:1156) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse stash^)" = "$(git rev-parse HEAD)" &&\n' span_id: 1157 ) (Token id:Id.Lit_Chars val:'\tgit diff stash^..stash > output &&\n' span_id:1158) (Token id:Id.Lit_Chars val:'\ttest_cmp output expect\n' span_id:1159) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'store called with invalid commit' span_id:1166))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1170) (Token id:Id.Lit_Chars val:'\ttest_must_fail git stash store foo\n' span_id:1171) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'store updates stash ref and reflog' span_id:1178))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1182) (Token id:Id.Lit_Chars val:'\tgit stash clear &&\n' span_id:1183) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1184) (Token id:Id.Lit_Chars val:'\techo quux >bazzy &&\n' span_id:1185) (Token id:Id.Lit_Chars val:'\tgit add bazzy &&\n' span_id:1186) (Token id:Id.Lit_Chars val:'\tSTASH_ID=$(git stash create) &&\n' span_id:1187) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1188) (Token id:Id.Lit_Chars val:'\t! grep quux bazzy &&\n' span_id:1189) (Token id:Id.Lit_Chars val:'\tgit stash store -m quuxery $STASH_ID &&\n' span_id:1190) (Token id: Id.Lit_Chars val: '\ttest $(cat .git/refs/stash) = $STASH_ID &&\n' span_id: 1191 ) (Token id:Id.Lit_Chars val:'\tgit reflog --format=%H stash| grep $STASH_ID &&\n' span_id:1192) (Token id:Id.Lit_Chars val:'\tgit stash pop &&\n' span_id:1193) (Token id:Id.Lit_Chars val:'\tgrep quux bazzy\n' span_id:1194) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'handle stash specification with spaces' span_id:1201))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1205) (Token id:Id.Lit_Chars val:'\tgit stash clear &&\n' span_id:1206) (Token id:Id.Lit_Chars val:'\techo pig >file &&\n' span_id:1207) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:1208) (Token id:Id.Lit_Chars val:'\tstamp=$(git log -g --format="%cd" -1 refs/stash) &&\n' span_id:1209) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1210) (Token id:Id.Lit_Chars val:'\techo cow >file &&\n' span_id:1211) (Token id:Id.Lit_Chars val:'\tgit stash &&\n' span_id:1212) (Token id:Id.Lit_Chars val:'\tgit stash apply "stash@{$stamp}" &&\n' span_id:1213) (Token id:Id.Lit_Chars val:'\tgrep pig file\n' span_id:1214) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup stash with index and worktree changes' span_id:1221))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1225) (Token id:Id.Lit_Chars val:'\tgit stash clear &&\n' span_id:1226) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1227) (Token id:Id.Lit_Chars val:'\techo index >file &&\n' span_id:1228) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:1229) (Token id:Id.Lit_Chars val:'\techo working >file &&\n' span_id:1230) (Token id:Id.Lit_Chars val:'\tgit stash\n' span_id:1231) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stash list implies --first-parent -m' span_id:1238))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1242) (Token id:Id.Lit_Chars val:'\tcat >expect <<-EOF &&\n' span_id:1243) (Token id:Id.Lit_Chars val:'\tstash@{0}\n' span_id:1244) (Token id:Id.Lit_Chars val:'\n' span_id:1245) (Token id:Id.Lit_Chars val:'\tdiff --git a/file b/file\n' span_id:1246) (Token id:Id.Lit_Chars val:'\tindex 257cc56..d26b33d 100644\n' span_id:1247) (Token id:Id.Lit_Chars val:'\t--- a/file\n' span_id:1248) (Token id:Id.Lit_Chars val:'\t+++ b/file\n' span_id:1249) (Token id:Id.Lit_Chars val:'\t@@ -1 +1 @@\n' span_id:1250) (Token id:Id.Lit_Chars val:'\t-foo\n' span_id:1251) (Token id:Id.Lit_Chars val:'\t+working\n' span_id:1252) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1253) (Token id: Id.Lit_Chars val: '\tgit stash list --format=%gd -p >actual &&\n' span_id: 1254 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1255) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'stash list --cc shows combined diff' span_id:1262))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1266) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:1267) (Token id:Id.Lit_Chars val:'\tstash@{0}\n' span_id:1268) (Token id:Id.Lit_Chars val:'\n' span_id:1269) (Token id:Id.Lit_Chars val:'\tdiff --cc file\n' span_id:1270) (Token id:Id.Lit_Chars val:'\tindex 257cc56,9015a7a..d26b33d\n' span_id:1271) (Token id:Id.Lit_Chars val:'\t--- a/file\n' span_id:1272) (Token id:Id.Lit_Chars val:'\t+++ b/file\n' span_id:1273) (Token id:Id.Lit_Chars val:'\t@@@ -1,1 -1,1 +1,1 @@@\n' span_id:1274) (Token id:Id.Lit_Chars val:'\t- foo\n' span_id:1275) (Token id:Id.Lit_Chars val:'\t -index\n' span_id:1276) (Token id:Id.Lit_Chars val:'\t++working\n' span_id:1277) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1278) (Token id:Id.Lit_Chars val:'\tgit stash list --format=%gd -p --cc >actual &&\n' span_id:1279) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1280) ) } ) (C {(test_done)}) ] )