(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:'git-cvsserver -kb modes\n' span_id:18) (Token id:Id.Lit_Chars val:'\n' span_id:19) (Token id:Id.Lit_Chars val:'tests -kb mode for binary files when accessing a git\n' span_id:20) (Token id: Id.Lit_Chars val: 'repository using cvs CLI client via git-cvsserver server' span_id: 21 ) ) } spids: [16] ) ] ) (C {(.)} {(./test-lib.sh)}) (command.ShFunction name: marked_as body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:foundEntry) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:40) command_list: (command.CommandList children: [ (C {(grep)} {(DQ ('^/') ($ Id.VSub_Number '$2') (/))} {(DQ ($ Id.VSub_Number '$1') (/CVS/Entries))} ) ] ) ) ) } spids: [38] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(x) (DQ ($ Id.VSub_DollarName '$foundEntry'))} {(Id.Lit_Equals '=')} {(x) (DQ )} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:74) ) ] action: [ (command.Simple words: [ {(echo)} { (DQ ('NOT FOUND: ') ($ Id.VSub_Number '$1') (' ') ($ Id.VSub_Number '$2') (' 1 ') ($ Id.VSub_Number '$3') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:90) fd: -1 arg_word: {(DQ (${ Id.VSub_Name WORKDIR) (/marked.log))} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:100) arg_word: {(1)} ) ] spids: [57 76] ) ] ) (C {(test)} {(x) (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:112) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(grep)} {(DQ ('^/') ($ Id.VSub_Number '$2') (/))} {(DQ ($ Id.VSub_Number '$1') (/CVS/Entries))} ) (C {(cut)} {(-d/)} {(-f5)}) ] negated: F ) ] ) ) ) } {(Id.Lit_Equals '=')} {(x) (DQ ($ Id.VSub_Number '$3'))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:stat) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [144] ) ] ) (command.Simple words: [ {(echo)} { (DQ ($ Id.VSub_Number '$1') (' ') ($ Id.VSub_Number '$2') (' ') ($ Id.VSub_DollarName '$stat') (" '") ($ Id.VSub_Number '$3') ("'") ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:161) fd: -1 arg_word: {(DQ (${ Id.VSub_Name WORKDIR) (/marked.log))} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:171) arg_word: {($ Id.VSub_DollarName '$stat')} ) ] ) ) (command.ShFunction name: not_present body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:foundEntry) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:187) command_list: (command.CommandList children: [ (C {(grep)} {(DQ ('^/') ($ Id.VSub_Number '$2') (/))} {(DQ ($ Id.VSub_Number '$1') (/CVS/Entries))} ) ] ) ) ) } spids: [185] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-r)} {(DQ ($ Id.VSub_Number '$1') (/) ($ Id.VSub_Number '$2'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:218) ) ] action: [ (command.Simple words: [ {(echo)} { (DQ ('Error: File still exists: ') ($ Id.VSub_Number '$1') (' ') ($ Id.VSub_Number '$2') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:232) fd: -1 arg_word: {(DQ (${ Id.VSub_Name WORKDIR) (/marked.log))} ) ] ) (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:242) arg_word: {(1)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:245) ) ] spids: [204 220] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(x) (DQ ($ Id.VSub_DollarName '$foundEntry'))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(x) (DQ )} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:269) ) ] action: [ (command.Simple words: [ {(echo)} { (DQ ('Error: should not have found: ') ($ Id.VSub_Number '$1') (' ') ($ Id.VSub_Number '$2') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:283) fd: -1 arg_word: {(DQ (${ Id.VSub_Name WORKDIR) (/marked.log))} ) ] ) (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:293) arg_word: {(1)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:296) ) ] spids: [251 271] ) ] else_action: [ (command.Simple words: [ {(echo)} { (DQ ('Correctly not found: ') ($ Id.VSub_Number '$1') (' ') ($ Id.VSub_Number '$2') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:311) fd: -1 arg_word: {(DQ (${ Id.VSub_Name WORKDIR) (/marked.log))} ) ] ) (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:321) arg_word: {(0)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:324) ) ] ) ] ) ) (command.ShFunction name: check_status_options body: (command.BraceGroup children: [ (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(cd)} {(DQ ($ Id.VSub_Number '$1'))}) (command.Simple words: [{(cvs)} {(-Q)} {(status)} {(DQ ($ Id.VSub_Number '$2'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:364) fd: -1 arg_word: {(DQ (${ Id.VSub_Name WORKDIR) (/status.out))} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:373) fd: 2 arg_word: {(1)} ) ] more_env: [ (env_pair name: GIT_CONFIG val: {(DQ ($ Id.VSub_DollarName '$git_config'))} spids: [349] ) ] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(x) (DQ ($ Id.VSub_QMark '$?'))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(x) (DQ (0))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:399) ) ] action: [ (command.Simple words: [ {(echo)} { (DQ ('Error from cvs status: ') ($ Id.VSub_Number '$1') (' ') ($ Id.VSub_Number '$2') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:413) fd: -1 arg_word: {(DQ (${ Id.VSub_Name WORKDIR) (/marked.log))} ) ] ) (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:423) arg_word: {(1)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:426) ) ] spids: [380 401] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:got) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:434) command_list: (command.CommandList children: [ (C {(sed)} {(-n)} {(-e)} { (SQ (Token id: Id.Lit_Chars val: 's/^[ \t]*Sticky Options:[ \t]*//p' span_id: 442 ) ) } {(DQ (${ Id.VSub_Name WORKDIR) (/status.out))} ) ] ) ) ) } spids: [432] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:expect) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$3'))} spids: [455] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(x) (DQ ($ Id.VSub_DollarName '$expect'))} {(Id.Lit_Equals '=')} {(x) (DQ )} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:478) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:expect) op: assign_op.Equal rhs: {(DQ ('(none)'))} spids: [483] ) ] ) ] spids: [461 480] ) ] ) (C {(test)} {(x) (DQ ($ Id.VSub_DollarName '$got'))} {(Id.Lit_Equals '=')} {(x) (DQ ($ Id.VSub_DollarName '$expect'))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:stat) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [507] ) ] ) (command.Simple words: [ {(echo)} { (DQ ('cvs status: ') ($ Id.VSub_Number '$1') (' ') ($ Id.VSub_Number '$2') (' ') ($ Id.VSub_DollarName '$stat') (" '") ($ Id.VSub_Number '$3') ("' '") ($ Id.VSub_DollarName '$got') ("'") ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:527) fd: -1 arg_word: {(DQ (${ Id.VSub_Name WORKDIR) (/marked.log))} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:537) arg_word: {($ Id.VSub_DollarName '$stat')} ) ] ) ) (command.Simple words: [{(cvs)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:546) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op:(Token id:Id.Redir_GreatAnd val:'2>&' span_id:549) fd:2 arg_word:{(1)}) ] ) (command.If arms: [ (if_arm cond: [(C {(test)} {($ Id.VSub_QMark '$?')} {(-ne)} {(1)})] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:skip_all) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: 'skipping git-cvsserver tests, cvs not found' span_id: 567 ) ) } spids: [565] ) ] ) (C {(test_done)}) ] spids: [552 562] ) ] ) (command.If arms: [ (if_arm cond: [(command.Pipeline children:[(C {(test_have_prereq)} {(PERL)})] negated:T)] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:skip_all) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: 'skipping git-cvsserver tests, perl not available' span_id: 588 ) ) } spids: [586] ) ] ) (C {(test_done)}) ] spids: [575 583] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [ {(perl)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'use DBI; use DBD::SQLite' span_id:601))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:604) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:607) fd: 2 arg_word: {(1)} ) ] ) (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:skip_all) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: 'skipping git-cvsserver tests, Perl SQLite interface unavailable' span_id: 617 ) ) } spids: [615] ) ] ) (C {(test_done)}) ] ) ] ) (C {(unset)} {(GIT_DIR)} {(GIT_CONFIG)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WORKDIR) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$PWD')} spids: [632] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SERVERDIR) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$PWD') (/gitcvs.git)} spids: [635] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:git_config) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$SERVERDIR') (/config))} spids: [639] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CVSROOT) op: assign_op.Equal rhs: {(DQ (':fork:') ($ Id.VSub_DollarName '$SERVERDIR'))} spids: [645] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CVSWORK) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$PWD') (/cvswork))} spids: [651] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CVS_SERVER) op: assign_op.Equal rhs: {(git-cvsserver)} spids: [657] ) ] ) (C {(export)} {(CVSROOT)} {(CVS_SERVER)}) (C {(rm)} {(-rf)} {(DQ ($ Id.VSub_DollarName '$CVSWORK'))} {(DQ ($ Id.VSub_DollarName '$SERVERDIR'))}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:682))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:686) (Token id: Id.Lit_Chars val: ' git config push.default matching &&\n' span_id: 687 ) (Token id:Id.Lit_Chars val:' echo "Simple text file" >textfile.c &&\n' span_id:688) (Token id: Id.Lit_Chars val: ' echo "File with embedded NUL: Q <- there" | q_to_nul > binfile.bin &&\n' span_id: 689 ) (Token id:Id.Lit_Chars val:' mkdir subdir &&\n' span_id:690) (Token id: Id.Lit_Chars val: ' echo "Another text file" > subdir/file.h &&\n' span_id: 691 ) (Token id: Id.Lit_Chars val: ' echo "Another binary: Q (this time CR)" | q_to_cr > subdir/withCr.bin &&\n' span_id: 692 ) (Token id: Id.Lit_Chars val: ' echo "Mixed up NUL, but marked text: Q <- there" | q_to_nul > mixedUp.c &&\n' span_id: 693 ) (Token id:Id.Lit_Chars val:' echo "Unspecified" > subdir/unspecified.other &&\n' span_id:694) (Token id: Id.Lit_Chars val: ' echo "/*.bin -crlf" > .gitattributes &&\n' span_id: 695 ) (Token id:Id.Lit_Chars val:' echo "/*.c crlf" >> .gitattributes &&\n' span_id:696) (Token id: Id.Lit_Chars val: ' echo "subdir/*.bin -crlf" >> .gitattributes &&\n' span_id: 697 ) (Token id:Id.Lit_Chars val:' echo "subdir/*.c crlf" >> .gitattributes &&\n' span_id:698) (Token id: Id.Lit_Chars val: ' echo "subdir/file.h crlf" >> .gitattributes &&\n' span_id: 699 ) (Token id: Id.Lit_Chars val: ' git add .gitattributes textfile.c binfile.bin mixedUp.c subdir/* &&\n' span_id: 700 ) (Token id:Id.Lit_Chars val:' git commit -q -m "First Commit" &&\n' span_id:701) (Token id: Id.Lit_Chars val: ' git clone -q --bare "$WORKDIR/.git" "$SERVERDIR" >/dev/null 2>&1 &&\n' span_id: 702 ) (Token id: Id.Lit_Chars val: ' GIT_DIR="$SERVERDIR" git config --bool gitcvs.enabled true &&\n' span_id: 703 ) (Token id: Id.Lit_Chars val: ' GIT_DIR="$SERVERDIR" git config gitcvs.logfile "$SERVERDIR/gitcvs.log"\n' span_id: 704 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cvs co (default crlf)' span_id:711))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:715) (Token id: Id.Lit_Chars val: ' GIT_CONFIG="$git_config" cvs -Q co -d cvswork master >cvs.log 2>&1 &&\n' span_id: 716 ) (Token id:Id.Lit_Chars val:' test x"$(grep ' span_id:717) ) (/-k) (SQ (Token id: Id.Lit_Chars val: ' cvswork/CVS/Entries cvswork/subdir/CVS/Entries)" = x""\n' span_id: 721 ) ) } ) (C {(rm)} {(-rf)} {(cvswork)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cvs co (allbinary)' span_id:734))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:738) (Token id: Id.Lit_Chars val: ' GIT_DIR="$SERVERDIR" git config --bool gitcvs.allbinary true &&\n' span_id: 739 ) (Token id: Id.Lit_Chars val: ' GIT_CONFIG="$git_config" cvs -Q co -d cvswork master >cvs.log 2>&1 &&\n' span_id: 740 ) (Token id:Id.Lit_Chars val:' marked_as cvswork textfile.c -kb &&\n' span_id:741) (Token id: Id.Lit_Chars val: ' marked_as cvswork binfile.bin -kb &&\n' span_id: 742 ) (Token id:Id.Lit_Chars val:' marked_as cvswork .gitattributes -kb &&\n' span_id:743) (Token id: Id.Lit_Chars val: ' marked_as cvswork mixedUp.c -kb &&\n' span_id: 744 ) (Token id:Id.Lit_Chars val:' marked_as cvswork/subdir withCr.bin -kb &&\n' span_id:745) (Token id: Id.Lit_Chars val: ' marked_as cvswork/subdir file.h -kb &&\n' span_id: 746 ) (Token id:Id.Lit_Chars val:' marked_as cvswork/subdir unspecified.other -kb\n' span_id:747) ) } ) (C {(rm)} {(-rf)} {(cvswork)} {(cvs.log)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cvs co (use attributes/allbinary)' span_id:762))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:766) (Token id: Id.Lit_Chars val: ' GIT_DIR="$SERVERDIR" git config --bool gitcvs.usecrlfattr true &&\n' span_id: 767 ) (Token id: Id.Lit_Chars val: ' GIT_CONFIG="$git_config" cvs -Q co -d cvswork master >cvs.log 2>&1 &&\n' span_id: 768 ) (Token id:Id.Lit_Chars val:' marked_as cvswork textfile.c "" &&\n' span_id:769) (Token id: Id.Lit_Chars val: ' marked_as cvswork binfile.bin -kb &&\n' span_id: 770 ) (Token id:Id.Lit_Chars val:' marked_as cvswork .gitattributes -kb &&\n' span_id:771) (Token id:Id.Lit_Chars val:' marked_as cvswork mixedUp.c "" &&\n' span_id:772) (Token id:Id.Lit_Chars val:' marked_as cvswork/subdir withCr.bin -kb &&\n' span_id:773) (Token id: Id.Lit_Chars val: ' marked_as cvswork/subdir file.h "" &&\n' span_id: 774 ) (Token id:Id.Lit_Chars val:' marked_as cvswork/subdir unspecified.other -kb\n' span_id:775) ) } ) (C {(rm)} {(-rf)} {(cvswork)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cvs co (use attributes)' span_id:788))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:792) (Token id: Id.Lit_Chars val: ' GIT_DIR="$SERVERDIR" git config --bool gitcvs.allbinary false &&\n' span_id: 793 ) (Token id: Id.Lit_Chars val: ' GIT_CONFIG="$git_config" cvs -Q co -d cvswork master >cvs.log 2>&1 &&\n' span_id: 794 ) (Token id:Id.Lit_Chars val:' marked_as cvswork textfile.c "" &&\n' span_id:795) (Token id: Id.Lit_Chars val: ' marked_as cvswork binfile.bin -kb &&\n' span_id: 796 ) (Token id:Id.Lit_Chars val:' marked_as cvswork .gitattributes "" &&\n' span_id:797) (Token id:Id.Lit_Chars val:' marked_as cvswork mixedUp.c "" &&\n' span_id:798) (Token id:Id.Lit_Chars val:' marked_as cvswork/subdir withCr.bin -kb &&\n' span_id:799) (Token id: Id.Lit_Chars val: ' marked_as cvswork/subdir file.h "" &&\n' span_id: 800 ) (Token id:Id.Lit_Chars val:' marked_as cvswork/subdir unspecified.other ""\n' span_id:801) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'adding files' span_id:808))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:812) (Token id:Id.Lit_Chars val:' (cd cvswork &&\n' span_id:813) (Token id:Id.Lit_Chars val:' (cd subdir &&\n' span_id:814) (Token id:Id.Lit_Chars val:' echo "more text" > src.c &&\n' span_id:815) (Token id: Id.Lit_Chars val: ' GIT_CONFIG="$git_config" cvs -Q add src.c >cvs.log 2>&1 &&\n' span_id: 816 ) (Token id:Id.Lit_Chars val:' marked_as . src.c "" &&\n' span_id:817) (Token id:Id.Lit_Chars val:' echo "pseudo-binary" > temp.bin\n' span_id:818) (Token id:Id.Lit_Chars val:' ) &&\n' span_id:819) (Token id: Id.Lit_Chars val: ' GIT_CONFIG="$git_config" cvs -Q add subdir/temp.bin >cvs.log 2>&1 &&\n' span_id: 820 ) (Token id:Id.Lit_Chars val:' marked_as subdir temp.bin "-kb" &&\n' span_id:821) (Token id:Id.Lit_Chars val:' cd subdir &&\n' span_id:822) (Token id: Id.Lit_Chars val: ' GIT_CONFIG="$git_config" cvs -Q ci -m "adding files" >cvs.log 2>&1 &&\n' span_id: 823 ) (Token id:Id.Lit_Chars val:' marked_as . temp.bin "-kb" &&\n' span_id:824) (Token id:Id.Lit_Chars val:' marked_as . src.c ""\n' span_id:825) (Token id:Id.Lit_Chars val:' )\n' span_id:826) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:updating span_id:833))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:837) (Token id:Id.Lit_Chars val:' git pull gitcvs.git &&\n' span_id:838) (Token id:Id.Lit_Chars val:' echo ' span_id:839) ) (hi) (SQ (Token id:Id.Lit_Chars val:' > subdir/newfile.bin &&\n' span_id:843) (Token id:Id.Lit_Chars val:' echo ' span_id:844) ) (junk) (SQ (Token id:Id.Lit_Chars val:' > subdir/file.h &&\n' span_id:848) (Token id:Id.Lit_Chars val:' echo ' span_id:849) ) (hi) (SQ (Token id:Id.Lit_Chars val:' > subdir/newfile.c &&\n' span_id:853) (Token id:Id.Lit_Chars val:' echo ' span_id:854) ) (hello) (SQ (Token id:Id.Lit_Chars val:' >> binfile.bin &&\n' span_id:858) (Token id: Id.Lit_Chars val: ' git add subdir/newfile.bin subdir/file.h subdir/newfile.c binfile.bin &&\n' span_id: 859 ) (Token id:Id.Lit_Chars val:' git commit -q -m "Add and change some files" &&\n' span_id:860) (Token id:Id.Lit_Chars val:' git push gitcvs.git >/dev/null &&\n' span_id:861) (Token id:Id.Lit_Chars val:' (cd cvswork &&\n' span_id:862) (Token id: Id.Lit_Chars val: ' GIT_CONFIG="$git_config" cvs -Q update\n' span_id: 863 ) (Token id:Id.Lit_Chars val:' ) &&\n' span_id:864) (Token id: Id.Lit_Chars val: ' marked_as cvswork textfile.c "" &&\n' span_id: 865 ) (Token id:Id.Lit_Chars val:' marked_as cvswork binfile.bin -kb &&\n' span_id:866) (Token id: Id.Lit_Chars val: ' marked_as cvswork .gitattributes "" &&\n' span_id: 867 ) (Token id:Id.Lit_Chars val:' marked_as cvswork mixedUp.c "" &&\n' span_id:868) (Token id: Id.Lit_Chars val: ' marked_as cvswork/subdir withCr.bin -kb &&\n' span_id: 869 ) (Token id:Id.Lit_Chars val:' marked_as cvswork/subdir file.h "" &&\n' span_id:870) (Token id: Id.Lit_Chars val: ' marked_as cvswork/subdir unspecified.other "" &&\n' span_id: 871 ) (Token id:Id.Lit_Chars val:' marked_as cvswork/subdir newfile.bin -kb &&\n' span_id:872) (Token id: Id.Lit_Chars val: ' marked_as cvswork/subdir newfile.c "" &&\n' span_id: 873 ) (Token id: Id.Lit_Chars val: ' echo "File with embedded NUL: Q <- there" | q_to_nul > tmpExpect1 &&\n' span_id: 874 ) (Token id:Id.Lit_Chars val:' echo "hello" >> tmpExpect1 &&\n' span_id:875) (Token id: Id.Lit_Chars val: ' cmp cvswork/binfile.bin tmpExpect1\n' span_id: 876 ) ) } ) (C {(rm)} {(-rf)} {(cvswork)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cvs co (use attributes/guess)' span_id:889))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:893) (Token id: Id.Lit_Chars val: ' GIT_DIR="$SERVERDIR" git config gitcvs.allbinary guess &&\n' span_id: 894 ) (Token id: Id.Lit_Chars val: ' GIT_CONFIG="$git_config" cvs -Q co -d cvswork master >cvs.log 2>&1 &&\n' span_id: 895 ) (Token id:Id.Lit_Chars val:' marked_as cvswork textfile.c "" &&\n' span_id:896) (Token id: Id.Lit_Chars val: ' marked_as cvswork binfile.bin -kb &&\n' span_id: 897 ) (Token id:Id.Lit_Chars val:' marked_as cvswork .gitattributes "" &&\n' span_id:898) (Token id:Id.Lit_Chars val:' marked_as cvswork mixedUp.c "" &&\n' span_id:899) (Token id:Id.Lit_Chars val:' marked_as cvswork/subdir withCr.bin -kb &&\n' span_id:900) (Token id: Id.Lit_Chars val: ' marked_as cvswork/subdir file.h "" &&\n' span_id: 901 ) (Token id:Id.Lit_Chars val:' marked_as cvswork/subdir unspecified.other "" &&\n' span_id:902) (Token id: Id.Lit_Chars val: ' marked_as cvswork/subdir newfile.bin -kb &&\n' span_id: 903 ) (Token id:Id.Lit_Chars val:' marked_as cvswork/subdir newfile.c ""\n' span_id:904) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup multi-line files' span_id:911))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:915) (Token id:Id.Lit_Chars val:' ( echo "line 1" &&\n' span_id:916) (Token id:Id.Lit_Chars val:' echo "line 2" &&\n' span_id:917) (Token id:Id.Lit_Chars val:' echo "line 3" &&\n' span_id:918) (Token id: Id.Lit_Chars val: ' echo "line 4 with NUL: Q <-" ) | q_to_nul > multiline.c &&\n' span_id: 919 ) (Token id:Id.Lit_Chars val:' git add multiline.c &&\n' span_id:920) (Token id:Id.Lit_Chars val:' ( echo "line 1" &&\n' span_id:921) (Token id:Id.Lit_Chars val:' echo "line 2" &&\n' span_id:922) (Token id:Id.Lit_Chars val:' echo "line 3" &&\n' span_id:923) (Token id:Id.Lit_Chars val:' echo "line 4" ) | q_to_nul > multilineTxt.c &&\n' span_id:924) (Token id:Id.Lit_Chars val:' git add multilineTxt.c &&\n' span_id:925) (Token id:Id.Lit_Chars val:' git commit -q -m "multiline files" &&\n' span_id:926) (Token id:Id.Lit_Chars val:' git push gitcvs.git >/dev/null\n' span_id:927) ) } ) (C {(rm)} {(-rf)} {(cvswork)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cvs co (guess)' span_id:940))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:944) (Token id: Id.Lit_Chars val: ' GIT_DIR="$SERVERDIR" git config --bool gitcvs.usecrlfattr false &&\n' span_id: 945 ) (Token id: Id.Lit_Chars val: ' GIT_CONFIG="$git_config" cvs -Q co -d cvswork master >cvs.log 2>&1 &&\n' span_id: 946 ) (Token id:Id.Lit_Chars val:' marked_as cvswork textfile.c "" &&\n' span_id:947) (Token id: Id.Lit_Chars val: ' marked_as cvswork binfile.bin -kb &&\n' span_id: 948 ) (Token id:Id.Lit_Chars val:' marked_as cvswork .gitattributes "" &&\n' span_id:949) (Token id: Id.Lit_Chars val: ' marked_as cvswork mixedUp.c -kb &&\n' span_id: 950 ) (Token id:Id.Lit_Chars val:' marked_as cvswork multiline.c -kb &&\n' span_id:951) (Token id: Id.Lit_Chars val: ' marked_as cvswork multilineTxt.c "" &&\n' span_id: 952 ) (Token id:Id.Lit_Chars val:' marked_as cvswork/subdir withCr.bin -kb &&\n' span_id:953) (Token id: Id.Lit_Chars val: ' marked_as cvswork/subdir file.h "" &&\n' span_id: 954 ) (Token id:Id.Lit_Chars val:' marked_as cvswork/subdir unspecified.other "" &&\n' span_id:955) (Token id: Id.Lit_Chars val: ' marked_as cvswork/subdir newfile.bin "" &&\n' span_id: 956 ) (Token id:Id.Lit_Chars val:' marked_as cvswork/subdir newfile.c ""\n' span_id:957) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cvs co another copy (guess)' span_id:964))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:968) (Token id: Id.Lit_Chars val: ' GIT_CONFIG="$git_config" cvs -Q co -d cvswork2 master >cvs.log 2>&1 &&\n' span_id: 969 ) (Token id:Id.Lit_Chars val:' marked_as cvswork2 textfile.c "" &&\n' span_id:970) (Token id: Id.Lit_Chars val: ' marked_as cvswork2 binfile.bin -kb &&\n' span_id: 971 ) (Token id:Id.Lit_Chars val:' marked_as cvswork2 .gitattributes "" &&\n' span_id:972) (Token id: Id.Lit_Chars val: ' marked_as cvswork2 mixedUp.c -kb &&\n' span_id: 973 ) (Token id:Id.Lit_Chars val:' marked_as cvswork2 multiline.c -kb &&\n' span_id:974) (Token id: Id.Lit_Chars val: ' marked_as cvswork2 multilineTxt.c "" &&\n' span_id: 975 ) (Token id:Id.Lit_Chars val:' marked_as cvswork2/subdir withCr.bin -kb &&\n' span_id:976) (Token id: Id.Lit_Chars val: ' marked_as cvswork2/subdir file.h "" &&\n' span_id: 977 ) (Token id:Id.Lit_Chars val:' marked_as cvswork2/subdir unspecified.other "" &&\n' span_id:978) (Token id: Id.Lit_Chars val: ' marked_as cvswork2/subdir newfile.bin "" &&\n' span_id: 979 ) (Token id:Id.Lit_Chars val:' marked_as cvswork2/subdir newfile.c ""\n' span_id:980) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cvs status - sticky options' span_id:987))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:991) (Token id: Id.Lit_Chars val: ' check_status_options cvswork2 textfile.c "" &&\n' span_id: 992 ) (Token id:Id.Lit_Chars val:' check_status_options cvswork2 binfile.bin -kb &&\n' span_id:993) (Token id: Id.Lit_Chars val: ' check_status_options cvswork2 .gitattributes "" &&\n' span_id: 994 ) (Token id:Id.Lit_Chars val:' check_status_options cvswork2 mixedUp.c -kb &&\n' span_id:995) (Token id: Id.Lit_Chars val: ' check_status_options cvswork2 multiline.c -kb &&\n' span_id: 996 ) (Token id:Id.Lit_Chars val:' check_status_options cvswork2 multilineTxt.c "" &&\n' span_id:997) (Token id: Id.Lit_Chars val: ' check_status_options cvswork2/subdir withCr.bin -kb &&\n' span_id: 998 ) (Token id: Id.Lit_Chars val: ' check_status_options cvswork2 subdir/withCr.bin -kb &&\n' span_id: 999 ) (Token id:Id.Lit_Chars val:' check_status_options cvswork2/subdir file.h "" &&\n' span_id:1000) (Token id: Id.Lit_Chars val: ' check_status_options cvswork2 subdir/file.h "" &&\n' span_id: 1001 ) (Token id: Id.Lit_Chars val: ' check_status_options cvswork2/subdir unspecified.other "" &&\n' span_id: 1002 ) (Token id: Id.Lit_Chars val: ' check_status_options cvswork2/subdir newfile.bin "" &&\n' span_id: 1003 ) (Token id:Id.Lit_Chars val:' check_status_options cvswork2/subdir newfile.c ""\n' span_id:1004) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'add text (guess)' span_id:1011))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1015) (Token id:Id.Lit_Chars val:' (cd cvswork &&\n' span_id:1016) (Token id:Id.Lit_Chars val:' echo "simpleText" > simpleText.c &&\n' span_id:1017) (Token id: Id.Lit_Chars val: ' GIT_CONFIG="$git_config" cvs -Q add simpleText.c\n' span_id: 1018 ) (Token id:Id.Lit_Chars val:' ) &&\n' span_id:1019) (Token id: Id.Lit_Chars val: ' marked_as cvswork simpleText.c ""\n' span_id: 1020 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'add bin (guess)' span_id:1027))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1031) (Token id:Id.Lit_Chars val:' (cd cvswork &&\n' span_id:1032) (Token id: Id.Lit_Chars val: ' echo "simpleBin: NUL: Q <- there" | q_to_nul > simpleBin.bin &&\n' span_id: 1033 ) (Token id:Id.Lit_Chars val:' GIT_CONFIG="$git_config" cvs -Q add simpleBin.bin\n' span_id:1034) (Token id:Id.Lit_Chars val:' ) &&\n' span_id:1035) (Token id:Id.Lit_Chars val:' marked_as cvswork simpleBin.bin -kb\n' span_id:1036) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'remove files (guess)' span_id:1043))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1047) (Token id:Id.Lit_Chars val:' (cd cvswork &&\n' span_id:1048) (Token id: Id.Lit_Chars val: ' GIT_CONFIG="$git_config" cvs -Q rm -f subdir/file.h &&\n' span_id: 1049 ) (Token id:Id.Lit_Chars val:' (cd subdir &&\n' span_id:1050) (Token id: Id.Lit_Chars val: ' GIT_CONFIG="$git_config" cvs -Q rm -f withCr.bin\n' span_id: 1051 ) (Token id:Id.Lit_Chars val:' )) &&\n' span_id:1052) (Token id: Id.Lit_Chars val: ' marked_as cvswork/subdir withCr.bin -kb &&\n' span_id: 1053 ) (Token id:Id.Lit_Chars val:' marked_as cvswork/subdir file.h ""\n' span_id:1054) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cvs ci (guess)' span_id:1061))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1065) (Token id:Id.Lit_Chars val:' (cd cvswork &&\n' span_id:1066) (Token id: Id.Lit_Chars val: ' GIT_CONFIG="$git_config" cvs -Q ci -m "add/rm files" >cvs.log 2>&1\n' span_id: 1067 ) (Token id:Id.Lit_Chars val:' ) &&\n' span_id:1068) (Token id: Id.Lit_Chars val: ' marked_as cvswork textfile.c "" &&\n' span_id: 1069 ) (Token id:Id.Lit_Chars val:' marked_as cvswork binfile.bin -kb &&\n' span_id:1070) (Token id: Id.Lit_Chars val: ' marked_as cvswork .gitattributes "" &&\n' span_id: 1071 ) (Token id:Id.Lit_Chars val:' marked_as cvswork mixedUp.c -kb &&\n' span_id:1072) (Token id: Id.Lit_Chars val: ' marked_as cvswork multiline.c -kb &&\n' span_id: 1073 ) (Token id:Id.Lit_Chars val:' marked_as cvswork multilineTxt.c "" &&\n' span_id:1074) (Token id: Id.Lit_Chars val: ' not_present cvswork/subdir withCr.bin &&\n' span_id: 1075 ) (Token id:Id.Lit_Chars val:' not_present cvswork/subdir file.h &&\n' span_id:1076) (Token id: Id.Lit_Chars val: ' marked_as cvswork/subdir unspecified.other "" &&\n' span_id: 1077 ) (Token id:Id.Lit_Chars val:' marked_as cvswork/subdir newfile.bin "" &&\n' span_id:1078) (Token id: Id.Lit_Chars val: ' marked_as cvswork/subdir newfile.c "" &&\n' span_id: 1079 ) (Token id:Id.Lit_Chars val:' marked_as cvswork simpleBin.bin -kb &&\n' span_id:1080) (Token id: Id.Lit_Chars val: ' marked_as cvswork simpleText.c ""\n' span_id: 1081 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'update subdir of other copy (guess)' span_id:1088))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1092) (Token id:Id.Lit_Chars val:' (cd cvswork2/subdir &&\n' span_id:1093) (Token id:Id.Lit_Chars val:' GIT_CONFIG="$git_config" cvs -Q update\n' span_id:1094) (Token id:Id.Lit_Chars val:' ) &&\n' span_id:1095) (Token id:Id.Lit_Chars val:' marked_as cvswork2 textfile.c "" &&\n' span_id:1096) (Token id: Id.Lit_Chars val: ' marked_as cvswork2 binfile.bin -kb &&\n' span_id: 1097 ) (Token id:Id.Lit_Chars val:' marked_as cvswork2 .gitattributes "" &&\n' span_id:1098) (Token id: Id.Lit_Chars val: ' marked_as cvswork2 mixedUp.c -kb &&\n' span_id: 1099 ) (Token id:Id.Lit_Chars val:' marked_as cvswork2 multiline.c -kb &&\n' span_id:1100) (Token id: Id.Lit_Chars val: ' marked_as cvswork2 multilineTxt.c "" &&\n' span_id: 1101 ) (Token id:Id.Lit_Chars val:' not_present cvswork2/subdir withCr.bin &&\n' span_id:1102) (Token id: Id.Lit_Chars val: ' not_present cvswork2/subdir file.h &&\n' span_id: 1103 ) (Token id:Id.Lit_Chars val:' marked_as cvswork2/subdir unspecified.other "" &&\n' span_id:1104) (Token id: Id.Lit_Chars val: ' marked_as cvswork2/subdir newfile.bin "" &&\n' span_id: 1105 ) (Token id:Id.Lit_Chars val:' marked_as cvswork2/subdir newfile.c "" &&\n' span_id:1106) (Token id: Id.Lit_Chars val: ' not_present cvswork2 simpleBin.bin &&\n' span_id: 1107 ) (Token id:Id.Lit_Chars val:' not_present cvswork2 simpleText.c\n' span_id:1108) ) } ) (command.Simple words: [{(echo)} {(DQ ('starting update/merge'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:1118) fd: -1 arg_word: {(DQ (${ Id.VSub_Name WORKDIR) (/marked.log))} ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'update/merge full other copy (guess)' span_id:1130))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1134) (Token id:Id.Lit_Chars val:' git pull gitcvs.git master &&\n' span_id:1135) (Token id:Id.Lit_Chars val:' sed "s/3/replaced_3/" < multilineTxt.c > ml.temp &&\n' span_id:1136) (Token id:Id.Lit_Chars val:' mv ml.temp multilineTxt.c &&\n' span_id:1137) (Token id:Id.Lit_Chars val:' git add multilineTxt.c &&\n' span_id:1138) (Token id: Id.Lit_Chars val: ' git commit -q -m "modify multiline file" >> "${WORKDIR}/marked.log" &&\n' span_id: 1139 ) (Token id:Id.Lit_Chars val:' git push gitcvs.git >/dev/null &&\n' span_id:1140) (Token id:Id.Lit_Chars val:' (cd cvswork2 &&\n' span_id:1141) (Token id:Id.Lit_Chars val:' sed "s/1/replaced_1/" < multilineTxt.c > ml.temp &&\n' span_id:1142) (Token id:Id.Lit_Chars val:' mv ml.temp multilineTxt.c &&\n' span_id:1143) (Token id:Id.Lit_Chars val:' GIT_CONFIG="$git_config" cvs update > cvs.log 2>&1\n' span_id:1144) (Token id:Id.Lit_Chars val:' ) &&\n' span_id:1145) (Token id:Id.Lit_Chars val:' marked_as cvswork2 textfile.c "" &&\n' span_id:1146) (Token id: Id.Lit_Chars val: ' marked_as cvswork2 binfile.bin -kb &&\n' span_id: 1147 ) (Token id:Id.Lit_Chars val:' marked_as cvswork2 .gitattributes "" &&\n' span_id:1148) (Token id: Id.Lit_Chars val: ' marked_as cvswork2 mixedUp.c -kb &&\n' span_id: 1149 ) (Token id:Id.Lit_Chars val:' marked_as cvswork2 multiline.c -kb &&\n' span_id:1150) (Token id: Id.Lit_Chars val: ' marked_as cvswork2 multilineTxt.c "" &&\n' span_id: 1151 ) (Token id:Id.Lit_Chars val:' not_present cvswork2/subdir withCr.bin &&\n' span_id:1152) (Token id: Id.Lit_Chars val: ' not_present cvswork2/subdir file.h &&\n' span_id: 1153 ) (Token id:Id.Lit_Chars val:' marked_as cvswork2/subdir unspecified.other "" &&\n' span_id:1154) (Token id: Id.Lit_Chars val: ' marked_as cvswork2/subdir newfile.bin "" &&\n' span_id: 1155 ) (Token id:Id.Lit_Chars val:' marked_as cvswork2/subdir newfile.c "" &&\n' span_id:1156) (Token id: Id.Lit_Chars val: ' marked_as cvswork2 simpleBin.bin -kb &&\n' span_id: 1157 ) (Token id:Id.Lit_Chars val:' marked_as cvswork2 simpleText.c "" &&\n' span_id:1158) (Token id: Id.Lit_Chars val: ' echo "line replaced_1" > tmpExpect2 &&\n' span_id: 1159 ) (Token id:Id.Lit_Chars val:' echo "line 2" >> tmpExpect2 &&\n' span_id:1160) (Token id: Id.Lit_Chars val: ' echo "line replaced_3" >> tmpExpect2 &&\n' span_id: 1161 ) (Token id:Id.Lit_Chars val:' echo "line 4" | q_to_nul >> tmpExpect2 &&\n' span_id:1162) (Token id: Id.Lit_Chars val: ' cmp cvswork2/multilineTxt.c tmpExpect2\n' span_id: 1163 ) ) } ) (C {(test_done)}) ] )