(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:'Return value of diffs' 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:'\techo "1 " >a &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\tgit add . &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\tgit commit -m zeroth &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\techo 1 >a &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\tgit add . &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\tgit commit -m first &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\techo 2 >b &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\tgit add . &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\tgit commit -a -m second\n' span_id:31) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff --quiet -w HEAD^^ HEAD^' span_id:38))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:42) (Token id:Id.Lit_Chars val:'\tgit diff --quiet -w HEAD^^ HEAD^\n' span_id:43) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff --quiet HEAD^^ HEAD^' span_id:50))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:54) (Token id: Id.Lit_Chars val: '\ttest_must_fail git diff --quiet HEAD^^ HEAD^\n' span_id: 55 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff --quiet -w HEAD^ HEAD' span_id:62))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:66) (Token id: Id.Lit_Chars val: '\ttest_must_fail git diff --quiet -w HEAD^ HEAD\n' span_id: 67 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff-tree HEAD^ HEAD' span_id:74))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:78) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 git diff-tree --exit-code HEAD^ HEAD\n' span_id: 79 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff-tree HEAD^ HEAD -- a' span_id:85))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:89) (Token id: Id.Lit_Chars val: '\tgit diff-tree --exit-code HEAD^ HEAD -- a\n' span_id: 90 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff-tree HEAD^ HEAD -- b' span_id:96))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:100) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 git diff-tree --exit-code HEAD^ HEAD -- b\n' span_id: 101 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'echo HEAD | git diff-tree --stdin' span_id:107))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:111) (Token id: Id.Lit_Chars val: '\techo $(git rev-parse HEAD) | test_expect_code 1 git diff-tree --exit-code --stdin\n' span_id: 112 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff-tree HEAD HEAD' span_id:118))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:122) (Token id:Id.Lit_Chars val:'\tgit diff-tree --exit-code HEAD HEAD\n' span_id:123) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff-files' span_id:129))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:133) (Token id:Id.Lit_Chars val:'\tgit diff-files --exit-code\n' span_id:134) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff-index --cached HEAD' span_id:140))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:144) (Token id: Id.Lit_Chars val: '\tgit diff-index --exit-code --cached HEAD\n' span_id: 145 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff-index --cached HEAD^' span_id:151))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:155) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 git diff-index --exit-code --cached HEAD^\n' span_id: 156 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff-index --cached HEAD^' span_id:162))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:166) (Token id:Id.Lit_Chars val:'\techo text >>b &&\n' span_id:167) (Token id:Id.Lit_Chars val:'\techo 3 >c &&\n' span_id:168) (Token id:Id.Lit_Chars val:'\tgit add . &&\n' span_id:169) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 git diff-index --exit-code --cached HEAD^\n' span_id: 170 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff-tree -Stext HEAD^ HEAD -- b' span_id:176))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:180) (Token id:Id.Lit_Chars val:'\tgit commit -m "text in b" &&\n' span_id:181) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 git diff-tree -p --exit-code -Stext HEAD^ HEAD -- b\n' span_id: 182 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff-tree -Snot-found HEAD^ HEAD -- b' span_id:188))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:192) (Token id: Id.Lit_Chars val: '\tgit diff-tree -p --exit-code -Snot-found HEAD^ HEAD -- b\n' span_id: 193 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff-files' span_id:199))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:203) (Token id:Id.Lit_Chars val:'\techo 3 >>c &&\n' span_id:204) (Token id:Id.Lit_Chars val:'\ttest_expect_code 1 git diff-files --exit-code\n' span_id:205) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff-index --cached HEAD' span_id:211))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:215) (Token id:Id.Lit_Chars val:'\tgit update-index c &&\n' span_id:216) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 git diff-index --exit-code --cached HEAD\n' span_id: 217 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--check --exit-code returns 0 for no difference' span_id:224))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:228) (Token id:Id.Lit_Chars val:'\n' span_id:229) (Token id:Id.Lit_Chars val:'\tgit diff --check --exit-code\n' span_id:230) (Token id:Id.Lit_Chars val:'\n' span_id:231) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '--check --exit-code returns 1 for a clean difference' span_id: 238 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:242) (Token id:Id.Lit_Chars val:'\n' span_id:243) (Token id:Id.Lit_Chars val:'\techo "good" > a &&\n' span_id:244) (Token id:Id.Lit_Chars val:'\ttest_expect_code 1 git diff --check --exit-code\n' span_id:245) (Token id:Id.Lit_Chars val:'\n' span_id:246) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '--check --exit-code returns 3 for a dirty difference' span_id: 253 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:257) (Token id:Id.Lit_Chars val:'\n' span_id:258) (Token id:Id.Lit_Chars val:'\techo "bad " >> a &&\n' span_id:259) (Token id:Id.Lit_Chars val:'\ttest_expect_code 3 git diff --check --exit-code\n' span_id:260) (Token id:Id.Lit_Chars val:'\n' span_id:261) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '--check with --no-pager returns 2 for dirty difference' span_id: 268 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:272) (Token id:Id.Lit_Chars val:'\n' span_id:273) (Token id: Id.Lit_Chars val: '\ttest_expect_code 2 git --no-pager diff --check\n' span_id: 274 ) (Token id:Id.Lit_Chars val:'\n' span_id:275) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'check should test not just the last line' span_id:282))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:286) (Token id:Id.Lit_Chars val:'\techo "" >>a &&\n' span_id:287) (Token id:Id.Lit_Chars val:'\ttest_expect_code 2 git --no-pager diff --check\n' span_id:288) (Token id:Id.Lit_Chars val:'\n' span_id:289) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'check detects leftover conflict markers' span_id:296))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:300) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:301) (Token id:Id.Lit_Chars val:'\tgit checkout HEAD^ &&\n' span_id:302) (Token id:Id.Lit_Chars val:'\techo binary >>b &&\n' span_id:303) (Token id:Id.Lit_Chars val:'\tgit commit -m "side" b &&\n' span_id:304) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge master &&\n' span_id:305) (Token id:Id.Lit_Chars val:'\tgit add b &&\n' span_id:306) (Token id: Id.Lit_Chars val: '\ttest_expect_code 2 git --no-pager diff --cached --check >test.out &&\n' span_id: 307 ) (Token id:Id.Lit_Chars val:'\ttest 3 = $(grep "conflict marker" test.out | wc -l) &&\n' span_id:308) (Token id:Id.Lit_Chars val:'\tgit reset --hard\n' span_id:309) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'check honors conflict marker length' span_id:316))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:320) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:321) (Token id:Id.Lit_Chars val:'\techo ">>>>>>> boo" >>b &&\n' span_id:322) (Token id:Id.Lit_Chars val:'\techo "======" >>a &&\n' span_id:323) (Token id:Id.Lit_Chars val:'\tgit diff --check a &&\n' span_id:324) (Token id: Id.Lit_Chars val: '\ttest_expect_code 2 git diff --check b &&\n' span_id: 325 ) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:326) (Token id:Id.Lit_Chars val:'\techo ">>>>>>>> boo" >>b &&\n' span_id:327) (Token id:Id.Lit_Chars val:'\techo "========" >>a &&\n' span_id:328) (Token id:Id.Lit_Chars val:'\tgit diff --check &&\n' span_id:329) (Token id:Id.Lit_Chars val:'\techo "b conflict-marker-size=8" >.gitattributes &&\n' span_id:330) (Token id: Id.Lit_Chars val: '\ttest_expect_code 2 git diff --check b &&\n' span_id: 331 ) (Token id:Id.Lit_Chars val:'\tgit diff --check a &&\n' span_id:332) (Token id:Id.Lit_Chars val:'\tgit reset --hard\n' span_id:333) ) } ) (C {(test_done)}) ] )