(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:'diff --no-index' 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:'\tmkdir a &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\tmkdir b &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\techo 1 >a/1 &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\techo 2 >a/2 &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\tgit init repo &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\techo 1 >repo/a &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\tmkdir -p non/git &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\techo 1 >non/git/a &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\techo 1 >non/git/b\n' span_id:31) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff --no-index directories' span_id:38))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:42) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 git diff --no-index a b >cnt &&\n' span_id: 43 ) (Token id:Id.Lit_Chars val:'\ttest_line_count = 14 cnt\n' span_id:44) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff --no-index relative path outside repo' span_id:51))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:55) (Token id:Id.Lit_Chars val:'\t(\n' span_id:56) (Token id:Id.Lit_Chars val:'\t\tcd repo &&\n' span_id:57) (Token id: Id.Lit_Chars val: '\t\ttest_expect_code 0 git diff --no-index a ../non/git/a &&\n' span_id: 58 ) (Token id: Id.Lit_Chars val: '\t\ttest_expect_code 0 git diff --no-index ../non/git/a ../non/git/b\n' span_id: 59 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:60) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff --no-index with broken index' span_id:67))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:71) (Token id:Id.Lit_Chars val:'\t(\n' span_id:72) (Token id:Id.Lit_Chars val:'\t\tcd repo &&\n' span_id:73) (Token id:Id.Lit_Chars val:'\t\techo broken >.git/index &&\n' span_id:74) (Token id:Id.Lit_Chars val:'\t\tgit diff --no-index a ../non/git/a\n' span_id:75) (Token id:Id.Lit_Chars val:'\t)\n' span_id:76) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff outside repo with broken index' span_id:83))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:87) (Token id:Id.Lit_Chars val:'\t(\n' span_id:88) (Token id:Id.Lit_Chars val:'\t\tcd repo &&\n' span_id:89) (Token id:Id.Lit_Chars val:'\t\tgit diff ../non/git/a ../non/git/b\n' span_id:90) (Token id:Id.Lit_Chars val:'\t)\n' span_id:91) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git diff --no-index executed outside repo gives correct error message' span_id: 98 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:102) (Token id:Id.Lit_Chars val:'\t(\n' span_id:103) (Token id:Id.Lit_Chars val:'\t\tGIT_CEILING_DIRECTORIES=$TRASH_DIRECTORY/non &&\n' span_id:104) (Token id:Id.Lit_Chars val:'\t\texport GIT_CEILING_DIRECTORIES &&\n' span_id:105) (Token id:Id.Lit_Chars val:'\t\tcd non/git &&\n' span_id:106) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git diff --no-index a 2>actual.err &&\n' span_id: 107 ) (Token id: Id.Lit_Chars val: '\t\techo "usage: git diff --no-index <path> <path>" >expect.err &&\n' span_id: 108 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect.err actual.err\n' span_id:109) (Token id:Id.Lit_Chars val:'\t)\n' span_id:110) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'diff D F and diff F D' span_id:117))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:121) (Token id:Id.Lit_Chars val:'\t(\n' span_id:122) (Token id:Id.Lit_Chars val:'\t\tcd repo &&\n' span_id:123) (Token id:Id.Lit_Chars val:'\t\techo in-repo >a &&\n' span_id:124) (Token id:Id.Lit_Chars val:'\t\techo non-repo >../non/git/a &&\n' span_id:125) (Token id:Id.Lit_Chars val:'\t\tmkdir sub &&\n' span_id:126) (Token id:Id.Lit_Chars val:'\t\techo sub-repo >sub/a &&\n' span_id:127) (Token id:Id.Lit_Chars val:'\n' span_id:128) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git diff --no-index sub/a ../non/git/a >expect &&\n' span_id: 129 ) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git diff --no-index sub/a ../non/git/ >actual &&\n' span_id: 130 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual &&\n' span_id:131) (Token id:Id.Lit_Chars val:'\n' span_id:132) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git diff --no-index a ../non/git/a >expect &&\n' span_id: 133 ) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git diff --no-index a ../non/git/ >actual &&\n' span_id: 134 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual &&\n' span_id:135) (Token id:Id.Lit_Chars val:'\n' span_id:136) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git diff --no-index ../non/git/a a >expect &&\n' span_id: 137 ) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git diff --no-index ../non/git a >actual &&\n' span_id: 138 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:139) (Token id:Id.Lit_Chars val:'\t)\n' span_id:140) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'turning a file into a directory' span_id:147))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:151) (Token id:Id.Lit_Chars val:'\t(\n' span_id:152) (Token id:Id.Lit_Chars val:'\t\tcd non/git &&\n' span_id:153) (Token id:Id.Lit_Chars val:'\t\tmkdir d e e/sub &&\n' span_id:154) (Token id:Id.Lit_Chars val:'\t\techo 1 >d/sub &&\n' span_id:155) (Token id:Id.Lit_Chars val:'\t\techo 2 >e/sub/file &&\n' span_id:156) (Token id:Id.Lit_Chars val:'\t\tprintf "D\\td/sub\\nA\\te/sub/file\\n" >expect &&\n' span_id:157) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git diff --no-index --name-status d e >actual &&\n' span_id: 158 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:159) (Token id:Id.Lit_Chars val:'\t)\n' span_id:160) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'diff from repo subdir shows real paths (explicit)' span_id: 167 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:171) (Token id: Id.Lit_Chars val: '\techo "diff --git a/../../non/git/a b/../../non/git/b" >expect &&\n' span_id: 172 ) (Token id:Id.Lit_Chars val:'\ttest_expect_code 1 \\\n' span_id:173) (Token id:Id.Lit_Chars val:'\t\tgit -C repo/sub \\\n' span_id:174) (Token id: Id.Lit_Chars val: '\t\tdiff --no-index ../../non/git/a ../../non/git/b >actual &&\n' span_id: 175 ) (Token id:Id.Lit_Chars val:'\thead -n 1 <actual >actual.head &&\n' span_id:176) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual.head\n' span_id:177) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'diff from repo subdir shows real paths (implicit)' span_id: 184 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:188) (Token id: Id.Lit_Chars val: '\techo "diff --git a/../../non/git/a b/../../non/git/b" >expect &&\n' span_id: 189 ) (Token id:Id.Lit_Chars val:'\ttest_expect_code 1 \\\n' span_id:190) (Token id:Id.Lit_Chars val:'\t\tgit -C repo/sub \\\n' span_id:191) (Token id:Id.Lit_Chars val:'\t\tdiff ../../non/git/a ../../non/git/b >actual &&\n' span_id:192) (Token id:Id.Lit_Chars val:'\thead -n 1 <actual >actual.head &&\n' span_id:193) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual.head\n' span_id:194) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'diff --no-index from repo subdir respects config (explicit)' span_id: 201 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:205) (Token id: Id.Lit_Chars val: '\techo "diff --git ../../non/git/a ../../non/git/b" >expect &&\n' span_id: 206 ) (Token id:Id.Lit_Chars val:'\ttest_config -C repo diff.noprefix true &&\n' span_id:207) (Token id:Id.Lit_Chars val:'\ttest_expect_code 1 \\\n' span_id:208) (Token id:Id.Lit_Chars val:'\t\tgit -C repo/sub \\\n' span_id:209) (Token id: Id.Lit_Chars val: '\t\tdiff --no-index ../../non/git/a ../../non/git/b >actual &&\n' span_id: 210 ) (Token id:Id.Lit_Chars val:'\thead -n 1 <actual >actual.head &&\n' span_id:211) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual.head\n' span_id:212) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'diff --no-index from repo subdir respects config (implicit)' span_id: 219 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:223) (Token id: Id.Lit_Chars val: '\techo "diff --git ../../non/git/a ../../non/git/b" >expect &&\n' span_id: 224 ) (Token id:Id.Lit_Chars val:'\ttest_config -C repo diff.noprefix true &&\n' span_id:225) (Token id:Id.Lit_Chars val:'\ttest_expect_code 1 \\\n' span_id:226) (Token id:Id.Lit_Chars val:'\t\tgit -C repo/sub \\\n' span_id:227) (Token id: Id.Lit_Chars val: '\t\tdiff ../../non/git/a ../../non/git/b >actual &&\n' span_id: 228 ) (Token id:Id.Lit_Chars val:'\thead -n 1 <actual >actual.head &&\n' span_id:229) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual.head\n' span_id:230) ) } ) (C {(test_done)}) ] )