(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:'patching from inconvenient places' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:18))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) (Token id:Id.Lit_Chars val:'\tcat >patch <<-\\EOF &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\tdiff file.orig file\n' span_id:24) (Token id:Id.Lit_Chars val:'\t--- a/file.orig\n' span_id:25) (Token id:Id.Lit_Chars val:'\t+++ b/file\n' span_id:26) (Token id:Id.Lit_Chars val:'\t@@ -1 +1,2 @@\n' span_id:27) (Token id:Id.Lit_Chars val:'\t 1\n' span_id:28) (Token id:Id.Lit_Chars val:'\t+2\n' span_id:29) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:30) (Token id:Id.Lit_Chars val:'\tpatch="$(pwd)/patch" &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\n' span_id:32) (Token id:Id.Lit_Chars val:'\techo 1 >preimage &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\tprintf "%s\\n" 1 2 >postimage &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\techo 3 >other &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\n' span_id:36) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m basis\n' span_id:38) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup: subdir' span_id:45))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:49) (Token id:Id.Lit_Chars val:'\treset_subdir() {\n' span_id:50) (Token id:Id.Lit_Chars val:'\t\tgit reset &&\n' span_id:51) (Token id:Id.Lit_Chars val:'\t\tmkdir -p sub/dir/b &&\n' span_id:52) (Token id:Id.Lit_Chars val:'\t\tmkdir -p objects &&\n' span_id:53) (Token id:Id.Lit_Chars val:'\t\tcp "$1" file &&\n' span_id:54) (Token id:Id.Lit_Chars val:'\t\tcp "$1" objects/file &&\n' span_id:55) (Token id:Id.Lit_Chars val:'\t\tcp "$1" sub/dir/file &&\n' span_id:56) (Token id:Id.Lit_Chars val:'\t\tcp "$1" sub/dir/b/file &&\n' span_id:57) (Token id: Id.Lit_Chars val: '\t\tgit add file sub/dir/file sub/dir/b/file objects/file &&\n' span_id: 58 ) (Token id:Id.Lit_Chars val:'\t\tcp "$2" file &&\n' span_id:59) (Token id:Id.Lit_Chars val:'\t\tcp "$2" sub/dir/file &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\t\tcp "$2" sub/dir/b/file &&\n' span_id:61) (Token id:Id.Lit_Chars val:'\t\tcp "$2" objects/file &&\n' span_id:62) (Token id:Id.Lit_Chars val:'\t\ttest_might_fail git update-index --refresh -q\n' span_id:63) (Token id:Id.Lit_Chars val:'\t}\n' span_id:64) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply from subdir of toplevel' span_id:71))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:75) (Token id:Id.Lit_Chars val:'\tcp postimage expected &&\n' span_id:76) (Token id:Id.Lit_Chars val:'\treset_subdir other preimage &&\n' span_id:77) (Token id:Id.Lit_Chars val:'\t(\n' span_id:78) (Token id:Id.Lit_Chars val:'\t\tcd sub/dir &&\n' span_id:79) (Token id:Id.Lit_Chars val:'\t\tgit apply "$patch"\n' span_id:80) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:81) (Token id:Id.Lit_Chars val:'\ttest_cmp expected sub/dir/file\n' span_id:82) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply --cached from subdir of toplevel' span_id:89))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:93) (Token id:Id.Lit_Chars val:'\tcp postimage expected &&\n' span_id:94) (Token id:Id.Lit_Chars val:'\tcp other expected.working &&\n' span_id:95) (Token id:Id.Lit_Chars val:'\treset_subdir preimage other &&\n' span_id:96) (Token id:Id.Lit_Chars val:'\t(\n' span_id:97) (Token id:Id.Lit_Chars val:'\t\tcd sub/dir &&\n' span_id:98) (Token id:Id.Lit_Chars val:'\t\tgit apply --cached "$patch"\n' span_id:99) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:100) (Token id:Id.Lit_Chars val:'\tgit show :sub/dir/file >actual &&\n' span_id:101) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:102) (Token id:Id.Lit_Chars val:'\ttest_cmp expected.working sub/dir/file\n' span_id:103) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply --index from subdir of toplevel' span_id:110))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:114) (Token id:Id.Lit_Chars val:'\tcp postimage expected &&\n' span_id:115) (Token id:Id.Lit_Chars val:'\treset_subdir preimage other &&\n' span_id:116) (Token id:Id.Lit_Chars val:'\t(\n' span_id:117) (Token id:Id.Lit_Chars val:'\t\tcd sub/dir &&\n' span_id:118) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git apply --index "$patch"\n' span_id: 119 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:120) (Token id:Id.Lit_Chars val:'\treset_subdir other preimage &&\n' span_id:121) (Token id:Id.Lit_Chars val:'\t(\n' span_id:122) (Token id:Id.Lit_Chars val:'\t\tcd sub/dir &&\n' span_id:123) (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git apply --index "$patch"\n' span_id:124) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:125) (Token id:Id.Lit_Chars val:'\treset_subdir preimage preimage &&\n' span_id:126) (Token id:Id.Lit_Chars val:'\t(\n' span_id:127) (Token id:Id.Lit_Chars val:'\t\tcd sub/dir &&\n' span_id:128) (Token id:Id.Lit_Chars val:'\t\tgit apply --index "$patch"\n' span_id:129) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:130) (Token id:Id.Lit_Chars val:'\tgit show :sub/dir/file >actual &&\n' span_id:131) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:132) (Token id:Id.Lit_Chars val:'\ttest_cmp expected sub/dir/file\n' span_id:133) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply half-broken patch from subdir of toplevel' span_id:140))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:144) (Token id:Id.Lit_Chars val:'\t(\n' span_id:145) (Token id:Id.Lit_Chars val:'\t\tcd sub/dir &&\n' span_id:146) (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git apply <<-EOF\n' span_id:147) (Token id:Id.Lit_Chars val:'\t\t--- sub/dir/file\n' span_id:148) (Token id:Id.Lit_Chars val:'\t\t+++ sub/dir/file\n' span_id:149) (Token id:Id.Lit_Chars val:'\t\t@@ -1,0 +1,0 @@\n' span_id:150) (Token id:Id.Lit_Chars val:'\t\t--- file_in_root\n' span_id:151) (Token id:Id.Lit_Chars val:'\t\t+++ file_in_root\n' span_id:152) (Token id:Id.Lit_Chars val:'\t\t@@ -1,0 +1,0 @@\n' span_id:153) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:154) (Token id:Id.Lit_Chars val:'\t)\n' span_id:155) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply from .git dir' span_id:162))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:166) (Token id:Id.Lit_Chars val:'\tcp postimage expected &&\n' span_id:167) (Token id:Id.Lit_Chars val:'\tcp preimage .git/file &&\n' span_id:168) (Token id:Id.Lit_Chars val:'\tcp preimage .git/objects/file &&\n' span_id:169) (Token id:Id.Lit_Chars val:'\t(\n' span_id:170) (Token id:Id.Lit_Chars val:'\t\tcd .git &&\n' span_id:171) (Token id:Id.Lit_Chars val:'\t\tgit apply "$patch"\n' span_id:172) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:173) (Token id:Id.Lit_Chars val:'\ttest_cmp expected .git/file\n' span_id:174) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply from subdir of .git dir' span_id:181))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:185) (Token id:Id.Lit_Chars val:'\tcp postimage expected &&\n' span_id:186) (Token id:Id.Lit_Chars val:'\tcp preimage .git/file &&\n' span_id:187) (Token id:Id.Lit_Chars val:'\tcp preimage .git/objects/file &&\n' span_id:188) (Token id:Id.Lit_Chars val:'\t(\n' span_id:189) (Token id:Id.Lit_Chars val:'\t\tcd .git/objects &&\n' span_id:190) (Token id:Id.Lit_Chars val:'\t\tgit apply "$patch"\n' span_id:191) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:192) (Token id:Id.Lit_Chars val:'\ttest_cmp expected .git/objects/file\n' span_id:193) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply --cached from .git dir' span_id:200))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:204) (Token id:Id.Lit_Chars val:'\tcp postimage expected &&\n' span_id:205) (Token id:Id.Lit_Chars val:'\tcp other expected.working &&\n' span_id:206) (Token id:Id.Lit_Chars val:'\tcp other .git/file &&\n' span_id:207) (Token id:Id.Lit_Chars val:'\treset_subdir preimage other &&\n' span_id:208) (Token id:Id.Lit_Chars val:'\t(\n' span_id:209) (Token id:Id.Lit_Chars val:'\t\tcd .git &&\n' span_id:210) (Token id:Id.Lit_Chars val:'\t\tgit apply --cached "$patch"\n' span_id:211) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:212) (Token id:Id.Lit_Chars val:'\tgit show :file >actual &&\n' span_id:213) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:214) (Token id:Id.Lit_Chars val:'\ttest_cmp expected.working file &&\n' span_id:215) (Token id:Id.Lit_Chars val:'\ttest_cmp expected.working .git/file\n' span_id:216) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply --cached from subdir of .git dir' span_id:223))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:227) (Token id:Id.Lit_Chars val:'\tcp postimage expected &&\n' span_id:228) (Token id:Id.Lit_Chars val:'\tcp preimage expected.subdir &&\n' span_id:229) (Token id:Id.Lit_Chars val:'\tcp other .git/file &&\n' span_id:230) (Token id:Id.Lit_Chars val:'\tcp other .git/objects/file &&\n' span_id:231) (Token id:Id.Lit_Chars val:'\treset_subdir preimage other &&\n' span_id:232) (Token id:Id.Lit_Chars val:'\t(\n' span_id:233) (Token id:Id.Lit_Chars val:'\t\tcd .git/objects &&\n' span_id:234) (Token id:Id.Lit_Chars val:'\t\tgit apply --cached "$patch"\n' span_id:235) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:236) (Token id:Id.Lit_Chars val:'\tgit show :file >actual &&\n' span_id:237) (Token id: Id.Lit_Chars val: '\tgit show :objects/file >actual.subdir &&\n' span_id: 238 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:239) (Token id: Id.Lit_Chars val: '\ttest_cmp expected.subdir actual.subdir\n' span_id: 240 ) ) } ) (C {(test_done)}) ] )