(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 merge with directory/file conflicts' span_id:15))} spids: [13] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'prepare repository' span_id:26))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:30) (Token id:Id.Lit_Chars val:'\techo Hello >init &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\tgit add init &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\n' span_id:34) (Token id:Id.Lit_Chars val:'\tgit branch B &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\tmkdir dir &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\techo foo >dir/foo &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\tgit add dir/foo &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit commit -m "File: dir/foo" &&\n' span_id:39) (Token id:Id.Lit_Chars val:'\n' span_id:40) (Token id:Id.Lit_Chars val:'\tgit checkout B &&\n' span_id:41) (Token id:Id.Lit_Chars val:'\techo file dir >dir &&\n' span_id:42) (Token id:Id.Lit_Chars val:'\tgit add dir &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\tgit commit -m "File: dir"\n' span_id:44) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Merge with d/f conflicts' span_id:51))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:55) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 git merge -m "merge msg" master\n' span_id: 56 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'F/D conflict' span_id:63))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:67) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:68) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:69) (Token id:Id.Lit_Chars val:'\trm .git/index &&\n' span_id:70) (Token id:Id.Lit_Chars val:'\n' span_id:71) (Token id:Id.Lit_Chars val:'\tmkdir before &&\n' span_id:72) (Token id:Id.Lit_Chars val:'\techo FILE >before/one &&\n' span_id:73) (Token id:Id.Lit_Chars val:'\techo FILE >after &&\n' span_id:74) (Token id:Id.Lit_Chars val:'\tgit add . &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\tgit commit -m first &&\n' span_id:76) (Token id:Id.Lit_Chars val:'\n' span_id:77) (Token id:Id.Lit_Chars val:'\trm -f after &&\n' span_id:78) (Token id:Id.Lit_Chars val:'\tgit mv before after &&\n' span_id:79) (Token id:Id.Lit_Chars val:'\tgit commit -m move &&\n' span_id:80) (Token id:Id.Lit_Chars val:'\n' span_id:81) (Token id:Id.Lit_Chars val:'\tgit checkout -b para HEAD^ &&\n' span_id:82) (Token id:Id.Lit_Chars val:'\techo COMPLETELY ANOTHER FILE >another &&\n' span_id:83) (Token id:Id.Lit_Chars val:'\tgit add . &&\n' span_id:84) (Token id:Id.Lit_Chars val:'\tgit commit -m para &&\n' span_id:85) (Token id:Id.Lit_Chars val:'\n' span_id:86) (Token id:Id.Lit_Chars val:'\tgit merge master\n' span_id:87) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup modify/delete + directory/file conflict' span_id:94))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:98) (Token id:Id.Lit_Chars val:'\tgit checkout --orphan modify &&\n' span_id:99) (Token id:Id.Lit_Chars val:'\tgit rm -rf . &&\n' span_id:100) (Token id:Id.Lit_Chars val:'\tgit clean -fdqx &&\n' span_id:101) (Token id:Id.Lit_Chars val:'\n' span_id:102) (Token id: Id.Lit_Chars val: '\tprintf "a\\nb\\nc\\nd\\ne\\nf\\ng\\nh\\n" >letters &&\n' span_id: 103 ) (Token id:Id.Lit_Chars val:'\tgit add letters &&\n' span_id:104) (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:105) (Token id:Id.Lit_Chars val:'\n' span_id:106) (Token id: Id.Lit_Chars val: '\t# Throw in letters.txt for sorting order fun\n' span_id: 107 ) (Token id: Id.Lit_Chars val: '\t# ("letters.txt" sorts between "letters" and "letters/file")\n' span_id: 108 ) (Token id:Id.Lit_Chars val:'\techo i >>letters &&\n' span_id:109) (Token id:Id.Lit_Chars val:'\techo "version 2" >letters.txt &&\n' span_id:110) (Token id:Id.Lit_Chars val:'\tgit add letters letters.txt &&\n' span_id:111) (Token id:Id.Lit_Chars val:'\tgit commit -m modified &&\n' span_id:112) (Token id:Id.Lit_Chars val:'\n' span_id:113) (Token id:Id.Lit_Chars val:'\tgit checkout -b delete HEAD^ &&\n' span_id:114) (Token id:Id.Lit_Chars val:'\tgit rm letters &&\n' span_id:115) (Token id:Id.Lit_Chars val:'\tmkdir letters &&\n' span_id:116) (Token id:Id.Lit_Chars val:'\t>letters/file &&\n' span_id:117) (Token id:Id.Lit_Chars val:'\techo "version 1" >letters.txt &&\n' span_id:118) (Token id:Id.Lit_Chars val:'\tgit add letters letters.txt &&\n' span_id:119) (Token id:Id.Lit_Chars val:'\tgit commit -m deleted\n' span_id:120) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modify/delete + directory/file conflict' span_id:127))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:131) (Token id:Id.Lit_Chars val:'\tgit checkout delete^0 &&\n' span_id:132) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge modify &&\n' span_id:133) (Token id:Id.Lit_Chars val:'\n' span_id:134) (Token id:Id.Lit_Chars val:'\ttest 5 -eq $(git ls-files -s | wc -l) &&\n' span_id:135) (Token id: Id.Lit_Chars val: '\ttest 4 -eq $(git ls-files -u | wc -l) &&\n' span_id: 136 ) (Token id:Id.Lit_Chars val:'\ttest 1 -eq $(git ls-files -o | wc -l) &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\n' span_id:138) (Token id:Id.Lit_Chars val:'\ttest -f letters/file &&\n' span_id:139) (Token id:Id.Lit_Chars val:'\ttest -f letters.txt &&\n' span_id:140) (Token id:Id.Lit_Chars val:'\ttest -f letters~modify\n' span_id:141) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'modify/delete + directory/file conflict; other way' span_id: 148 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:152) (Token id: Id.Lit_Chars val: '\t# Yes, we really need the double reset since "letters" appears as\n' span_id: 153 ) (Token id:Id.Lit_Chars val:'\t# both a file and a directory.\n' span_id:154) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:155) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:156) (Token id:Id.Lit_Chars val:'\tgit clean -f &&\n' span_id:157) (Token id:Id.Lit_Chars val:'\tgit checkout modify^0 &&\n' span_id:158) (Token id:Id.Lit_Chars val:'\n' span_id:159) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge delete &&\n' span_id:160) (Token id:Id.Lit_Chars val:'\n' span_id:161) (Token id:Id.Lit_Chars val:'\ttest 5 -eq $(git ls-files -s | wc -l) &&\n' span_id:162) (Token id: Id.Lit_Chars val: '\ttest 4 -eq $(git ls-files -u | wc -l) &&\n' span_id: 163 ) (Token id:Id.Lit_Chars val:'\ttest 1 -eq $(git ls-files -o | wc -l) &&\n' span_id:164) (Token id:Id.Lit_Chars val:'\n' span_id:165) (Token id:Id.Lit_Chars val:'\ttest -f letters/file &&\n' span_id:166) (Token id:Id.Lit_Chars val:'\ttest -f letters.txt &&\n' span_id:167) (Token id:Id.Lit_Chars val:'\ttest -f letters~HEAD\n' span_id:168) ) } ) (C {(test_done)}) ] )