(List (= scope= flags=0 words=[] bindings=[('test_description', {[SQ ]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS ./test-lib.sh]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS orig.txt]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "Dominus regit me,\n"][LIT_CHARS "et nihil mihi deerit.\n"][LIT_CHARS "In loco pascuae ibi me collocavit,\n"][LIT_CHARS "super aquam refectionis educavit me;\n"][LIT_CHARS "animam meam convertit,\n"][LIT_CHARS "deduxit me super semitas jusitiae,\n"][LIT_CHARS "propter nomen suum.\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS new1.txt]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "Dominus regit me,\n"][LIT_CHARS "et nihil mihi deerit.\n"][LIT_CHARS "In loco pascuae ibi me collocavit,\n"][LIT_CHARS "super aquam refectionis educavit me;\n"][LIT_CHARS "animam meam convertit,\n"][LIT_CHARS "deduxit me super semitas jusitiae,\n"][LIT_CHARS "propter nomen suum.\n"][LIT_CHARS "Nam et si ambulavero in medio umbrae mortis,\n"][LIT_CHARS "non timebo mala, quoniam tu mecum es:\n"][LIT_CHARS "virga tua et baculus tuus ipsa me consolata sunt.\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS new2.txt]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "Dominus regit me, et nihil mihi deerit.\n"][LIT_CHARS "In loco pascuae ibi me collocavit,\n"][LIT_CHARS "super aquam refectionis educavit me;\n"][LIT_CHARS "animam meam convertit,\n"][LIT_CHARS "deduxit me super semitas jusitiae,\n"][LIT_CHARS "propter nomen suum.\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS new3.txt]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "DOMINUS regit me,\n"][LIT_CHARS "et nihil mihi deerit.\n"][LIT_CHARS "In loco pascuae ibi me collocavit,\n"][LIT_CHARS "super aquam refectionis educavit me;\n"][LIT_CHARS "animam meam convertit,\n"][LIT_CHARS "deduxit me super semitas jusitiae,\n"][LIT_CHARS "propter nomen suum.\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS new4.txt]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "Dominus regit me, et nihil mihi deerit.\n"][LIT_CHARS "In loco pascuae ibi me collocavit,\n"][LIT_CHARS "super aquam refectionis educavit me;\n"][LIT_CHARS "animam meam convertit,\n"][LIT_CHARS "deduxit me super semitas jusitiae,\n"]]} 0), > ) (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "propter nomen suum."]]} < (FilenameRedirectNode filename={[LIT_CHARS new4.txt]} >"> 1), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS new1.txt]} {[LIT_CHARS test.txt]}) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "merge without conflict"]]} {[DQ [LIT_CHARS "git merge-file test.txt orig.txt new2.txt"]]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS new1.txt]} {[LIT_CHARS test.txt]}) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "merge without conflict (--quiet)"]]} {[DQ [LIT_CHARS "git merge-file --quiet test.txt orig.txt new2.txt"]]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS new1.txt]} {[LIT_CHARS test2.txt]}) (Com {[LIT_CHARS test_expect_failure]} {[DQ [LIT_CHARS "merge without conflict (missing LF at EOF)"]]} {[DQ [LIT_CHARS "git merge-file test2.txt orig.txt new4.txt"]]}) (Com {[LIT_CHARS test_expect_failure]} {[DQ [LIT_CHARS "merge result added missing LF"]]} {[DQ [LIT_CHARS "test_cmp test.txt test2.txt"]]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS new4.txt]} {[LIT_CHARS test3.txt]}) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "merge without conflict (missing LF at EOF, away from change in the other file)"]]} {[DQ [LIT_CHARS "git merge-file --quiet test3.txt new2.txt new3.txt"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect.txt]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "DOMINUS regit me,\n"][LIT_CHARS "et nihil mihi deerit.\n"][LIT_CHARS "In loco pascuae ibi me collocavit,\n"][LIT_CHARS "super aquam refectionis educavit me;\n"][LIT_CHARS "animam meam convertit,\n"][LIT_CHARS "deduxit me super semitas jusitiae,\n"]]} 0), > ) (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "propter nomen suum."]]} < (FilenameRedirectNode filename={[LIT_CHARS expect.txt]} >"> 1), > ) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "merge does not add LF away of change"]]} {[DQ [LIT_CHARS "test_cmp test3.txt expect.txt"]]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS test.txt]} {[LIT_CHARS backup.txt]}) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "merge with conflicts"]]} {[DQ [LIT_CHARS "test_must_fail git merge-file test.txt orig.txt new3.txt"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect.txt]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "<<<<<<< test.txt\n"][LIT_CHARS "Dominus regit me, et nihil mihi deerit.\n"][LIT_CHARS "=======\n"][LIT_CHARS "DOMINUS regit me,\n"][LIT_CHARS "et nihil mihi deerit.\n"][LIT_CHARS ">>>>>>> new3.txt\n"][LIT_CHARS "In loco pascuae ibi me collocavit,\n"][LIT_CHARS "super aquam refectionis educavit me;\n"][LIT_CHARS "animam meam convertit,\n"][LIT_CHARS "deduxit me super semitas jusitiae,\n"][LIT_CHARS "propter nomen suum.\n"][LIT_CHARS "Nam et si ambulavero in medio umbrae mortis,\n"][LIT_CHARS "non timebo mala, quoniam tu mecum es:\n"][LIT_CHARS "virga tua et baculus tuus ipsa me consolata sunt.\n"]]} 0), > ) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "expected conflict markers"]]} {[DQ [LIT_CHARS "test_cmp test.txt expect.txt"]]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS backup.txt]} {[LIT_CHARS test.txt]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect.txt]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "Dominus regit me, et nihil mihi deerit.\n"][LIT_CHARS "In loco pascuae ibi me collocavit,\n"][LIT_CHARS "super aquam refectionis educavit me;\n"][LIT_CHARS "animam meam convertit,\n"][LIT_CHARS "deduxit me super semitas jusitiae,\n"][LIT_CHARS "propter nomen suum.\n"][LIT_CHARS "Nam et si ambulavero in medio umbrae mortis,\n"][LIT_CHARS "non timebo mala, quoniam tu mecum es:\n"][LIT_CHARS "virga tua et baculus tuus ipsa me consolata sunt.\n"]]} 0), > ) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "merge conflicting with --ours"]]} {[DQ [LIT_CHARS "git merge-file --ours test.txt orig.txt new3.txt && test_cmp test.txt expect.txt"]]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS backup.txt]} {[LIT_CHARS test.txt]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect.txt]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "DOMINUS regit me,\n"][LIT_CHARS "et nihil mihi deerit.\n"][LIT_CHARS "In loco pascuae ibi me collocavit,\n"][LIT_CHARS "super aquam refectionis educavit me;\n"][LIT_CHARS "animam meam convertit,\n"][LIT_CHARS "deduxit me super semitas jusitiae,\n"][LIT_CHARS "propter nomen suum.\n"][LIT_CHARS "Nam et si ambulavero in medio umbrae mortis,\n"][LIT_CHARS "non timebo mala, quoniam tu mecum es:\n"][LIT_CHARS "virga tua et baculus tuus ipsa me consolata sunt.\n"]]} 0), > ) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "merge conflicting with --theirs"]]} {[DQ [LIT_CHARS "git merge-file --theirs test.txt orig.txt new3.txt && test_cmp test.txt expect.txt"]]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS backup.txt]} {[LIT_CHARS test.txt]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect.txt]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "Dominus regit me, et nihil mihi deerit.\n"][LIT_CHARS "DOMINUS regit me,\n"][LIT_CHARS "et nihil mihi deerit.\n"][LIT_CHARS "In loco pascuae ibi me collocavit,\n"][LIT_CHARS "super aquam refectionis educavit me;\n"][LIT_CHARS "animam meam convertit,\n"][LIT_CHARS "deduxit me super semitas jusitiae,\n"][LIT_CHARS "propter nomen suum.\n"][LIT_CHARS "Nam et si ambulavero in medio umbrae mortis,\n"][LIT_CHARS "non timebo mala, quoniam tu mecum es:\n"][LIT_CHARS "virga tua et baculus tuus ipsa me consolata sunt.\n"]]} 0), > ) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "merge conflicting with --union"]]} {[DQ [LIT_CHARS "git merge-file --union test.txt orig.txt new3.txt && test_cmp test.txt expect.txt"]]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS backup.txt]} {[LIT_CHARS test.txt]}) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "merge with conflicts, using -L"]]} {[DQ [LIT_CHARS "test_must_fail git merge-file -L 1 -L 2 test.txt orig.txt new3.txt"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect.txt]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "<<<<<<< 1\n"][LIT_CHARS "Dominus regit me, et nihil mihi deerit.\n"][LIT_CHARS "=======\n"][LIT_CHARS "DOMINUS regit me,\n"][LIT_CHARS "et nihil mihi deerit.\n"][LIT_CHARS ">>>>>>> new3.txt\n"][LIT_CHARS "In loco pascuae ibi me collocavit,\n"][LIT_CHARS "super aquam refectionis educavit me;\n"][LIT_CHARS "animam meam convertit,\n"][LIT_CHARS "deduxit me super semitas jusitiae,\n"][LIT_CHARS "propter nomen suum.\n"][LIT_CHARS "Nam et si ambulavero in medio umbrae mortis,\n"][LIT_CHARS "non timebo mala, quoniam tu mecum es:\n"][LIT_CHARS "virga tua et baculus tuus ipsa me consolata sunt.\n"]]} 0), > ) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "expected conflict markers, with -L"]]} {[DQ [LIT_CHARS "test_cmp test.txt expect.txt"]]}) (Com {[LIT_CHARS sed]} {[DQ [LIT_CHARS "s/ tu / TU /"]]} < (FilenameRedirectNode filename={[LIT_CHARS new1.txt]} 0), (FilenameRedirectNode filename={[LIT_CHARS new5.txt]} "> 1), > ) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "conflict in removed tail"]]} {[DQ [LIT_CHARS "test_must_fail git merge-file -p orig.txt new1.txt new5.txt > out"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "Dominus regit me,\n"][LIT_CHARS "et nihil mihi deerit.\n"][LIT_CHARS "In loco pascuae ibi me collocavit,\n"][LIT_CHARS "super aquam refectionis educavit me;\n"][LIT_CHARS "animam meam convertit,\n"][LIT_CHARS "deduxit me super semitas jusitiae,\n"][LIT_CHARS "propter nomen suum.\n"][LIT_CHARS "<<<<<<< orig.txt\n"][LIT_CHARS "=======\n"][LIT_CHARS "Nam et si ambulavero in medio umbrae mortis,\n"][LIT_CHARS "non timebo mala, quoniam TU mecum es:\n"][LIT_CHARS "virga tua et baculus tuus ipsa me consolata sunt.\n"][LIT_CHARS ">>>>>>> new5.txt\n"]]} 0), > ) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "expected conflict markers"]]} {[DQ [LIT_CHARS "test_cmp expect out"]]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ merge.err &&\n"> ]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS s/deerit.][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "/deerit;/"]]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS "s/me;"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS /me./]]} < (FilenameRedirectNode filename={[LIT_CHARS new5.txt]} 0), (FilenameRedirectNode filename={[LIT_CHARS new6.txt]} "> 1), > ) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS s/deerit.][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "/deerit,/"]]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS "s/me;"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "/me,/"]]} < (FilenameRedirectNode filename={[LIT_CHARS new5.txt]} 0), (FilenameRedirectNode filename={[LIT_CHARS new7.txt]} "> 1), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ output &&\n"> ]}) (Pipeline (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS "s/locavit,/locavit;/"]]} < (FilenameRedirectNode filename={[LIT_CHARS new6.txt]} 0), > ) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS new8.txt]} "> 1), > ) ) (Pipeline (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS "s/locavit,/locavit --/"]]} < (FilenameRedirectNode filename={[LIT_CHARS new7.txt]} 0), > ) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS new9.txt]} "> 1), > ) ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ merge.out &&\n"> ]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "Dominus regit me,\n"] [LIT_CHARS "<<<<<<< new8.txt\n"] [LIT_CHARS "et nihil mihi deerit;\n"] [LIT_CHARS "\n"] [LIT_CHARS "\n"] [LIT_CHARS "\n"] [LIT_CHARS "\n"] [LIT_CHARS "In loco pascuae ibi me collocavit;\n"] [LIT_CHARS "super aquam refectionis educavit me.\n"] [LIT_CHARS "||||||| new5.txt\n"] [LIT_CHARS "et nihil mihi deerit.\n"] [LIT_CHARS "In loco pascuae ibi me collocavit,\n"] [LIT_CHARS "super aquam refectionis educavit me;\n"] [LIT_CHARS "=======\n"] [LIT_CHARS "et nihil mihi deerit,\n"] [LIT_CHARS "\n"] [LIT_CHARS "\n"] [LIT_CHARS "\n"] [LIT_CHARS "\n"] [LIT_CHARS "In loco pascuae ibi me collocavit --\n"] [LIT_CHARS "super aquam refectionis educavit me,\n"] [LIT_CHARS ">>>>>>> new9.txt\n"] [LIT_CHARS "animam meam convertit,\n"] [LIT_CHARS "deduxit me super semitas jusitiae,\n"] [LIT_CHARS "propter nomen suum.\n"] [LIT_CHARS "Nam et si ambulavero in medio umbrae mortis,\n"] [LIT_CHARS "non timebo mala, quoniam TU mecum es:\n"] [LIT_CHARS "virga tua et baculus tuus ipsa me consolata sunt.\n"]} 0), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ actual &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ actual &&\n"> ]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "Dominus regit me,\n"] [LIT_CHARS "<<<<<<<<<< new8.txt\n"] [LIT_CHARS "et nihil mihi deerit;\n"] [LIT_CHARS "\n"] [LIT_CHARS "\n"] [LIT_CHARS "\n"] [LIT_CHARS "\n"] [LIT_CHARS "In loco pascuae ibi me collocavit;\n"] [LIT_CHARS "super aquam refectionis educavit me.\n"] [LIT_CHARS "|||||||||| new5.txt\n"] [LIT_CHARS "et nihil mihi deerit.\n"] [LIT_CHARS "In loco pascuae ibi me collocavit,\n"] [LIT_CHARS "super aquam refectionis educavit me;\n"] [LIT_CHARS "==========\n"] [LIT_CHARS "et nihil mihi deerit,\n"] [LIT_CHARS "\n"] [LIT_CHARS "\n"] [LIT_CHARS "\n"] [LIT_CHARS "\n"] [LIT_CHARS "In loco pascuae ibi me collocavit --\n"] [LIT_CHARS "super aquam refectionis educavit me,\n"] [LIT_CHARS ">>>>>>>>>> new9.txt\n"] [LIT_CHARS "animam meam convertit,\n"] [LIT_CHARS "deduxit me super semitas jusitiae,\n"] [LIT_CHARS "propter nomen suum.\n"] [LIT_CHARS "Nam et si ambulavero in medio umbrae mortis,\n"] [LIT_CHARS "non timebo mala, quoniam TU mecum es:\n"] [LIT_CHARS "virga tua et baculus tuus ipsa me consolata sunt.\n"]} 0), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ actual &&\n"> ]}) (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS line1][\ LIT_ESCAPED_CHAR "\\n"][LIT_CHARS line2][\ LIT_ESCAPED_CHAR "\\n"][LIT_CHARS line3]]} < (FilenameRedirectNode filename={[LIT_CHARS nolf-orig.txt]} "> 1), > ) (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS line1][\ LIT_ESCAPED_CHAR "\\n"][LIT_CHARS line2][\ LIT_ESCAPED_CHAR "\\n"][LIT_CHARS line3x]]} < (FilenameRedirectNode filename={[LIT_CHARS nolf-diff1.txt]} "> 1), > ) (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS line1][\ LIT_ESCAPED_CHAR "\\n"][LIT_CHARS line2][\ LIT_ESCAPED_CHAR "\\n"][LIT_CHARS line3y]]} < (FilenameRedirectNode filename={[LIT_CHARS nolf-diff2.txt]} "> 1), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ output.txt &&\n"> expect.txt &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ output.txt &&\n"> expect.txt &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ output.txt &&\n"> expect.txt &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ crlf-orig.txt &&\n"> crlf-diff1.txt &&\n"> crlf-diff2.txt &&\n"> crlf.txt &&\n"> ].*Q$\" | wc -l) = 3 &&\n"> nolf.txt &&\n"> ].*Q$\" | wc -l) = 0\n">]}) (Com {[LIT_CHARS test_done]}) )