(command.CommandList children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:test_description spids:[12]) op: Equal rhs: {(SQ <'CRLF conversion all combinations'>)} spids: [12] ) ] spids: [12] ) (C {(.)} {(./test-lib.sh)}) (command.If arms: [ (if_arm cond: [(command.Pipeline children:[(C {(test_have_prereq)} {(EXPENSIVE)})] negated:T)] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:skip_all spids:[34]) op: Equal rhs: {(DQ ('EXPENSIVE not set'))} spids: [34] ) ] spids: [34] ) (C {(test_done)}) ] spids: [16777215 31] ) ] spids: [16777215 42] ) (command.FuncDef name: compare_files body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (command.SimpleCommand words: [{(tr)} {(SQ <'\\015\\000'>)} {(QN)}] redirects: [ (redir.Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(DQ ($ VSub_Number '$1'))} ) (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Number '$1')) (.expect)} ) ] ) (command.Pipeline children: [ (command.SimpleCommand words: [{(tr)} {(SQ <'\\015\\000'>)} {(QN)}] redirects: [ (redir.Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(DQ ($ VSub_Number '$2'))} ) ] ) (command.SimpleCommand words: [{(tr)} {(-d)} {(SQ <Z>)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Number '$2')) (.actual)} ) ] ) ] negated: F ) (C {(test_cmp)} {(DQ ($ VSub_Number '$1')) (.expect)} {(DQ ($ VSub_Number '$2')) (.actual)} ) (C {(rm)} {(DQ ($ VSub_Number '$1')) (.expect)} {(DQ ($ VSub_Number '$2')) (.actual)}) ] ) ] spids: [50] ) spids: [45 49] ) (command.FuncDef name: compare_ws_file body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:pfx spids:[145]) op: Equal rhs: {($ VSub_Number '$1')} spids: [145] ) ] spids: [145] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:exp spids:[149]) op: Equal rhs: {($ VSub_Number '$2') (.expect)} spids: [149] ) ] spids: [149] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:act spids:[154]) op: Equal rhs: {($ VSub_Name '$pfx') (.actual.) ($ VSub_Number '$3')} spids: [154] ) ] spids: [154] ) (command.AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (command.SimpleCommand words: [{(tr)} {(SQ <'\\015\\000abcdef0123456789'>)} {(QN00000000000000000)}] redirects: [ (redir.Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(DQ ($ VSub_Number '$2'))} ) (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$exp'))} ) ] ) (command.SimpleCommand words: [{(tr)} {(SQ <'\\015\\000abcdef0123456789'>)} {(QN00000000000000000)}] redirects: [ (redir.Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(DQ ($ VSub_Number '$3'))} ) (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$act'))} ) ] ) (C {(test_cmp)} {(DQ ($ VSub_Name '$exp'))} {(DQ ($ VSub_Name '$act'))}) (C {(rm)} {(DQ ($ VSub_Name '$exp'))} {(DQ ($ VSub_Name '$act'))}) ] ) ] spids: [142] ) spids: [137 141] ) (command.FuncDef name: create_gitattributes body: (command.BraceGroup children: [ (command.BraceGroup children: [ (command.WhileUntil keyword: <KW_While while> cond: [(C {(test)} {(DQ ($ VSub_Pound '$#'))} {(KW_Bang '!') (Lit_Other '=')} {(0)})] body: (command.DoGroup children: [ (command.AndOr ops: [Op_DAmp] children: [ (command.Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(auto)}] action: [(C {(echo)} {(SQ <'*.txt text=auto'>)})] spids: [265 266 274 16777215] ) (case_arm pat_list: [{(ident)}] action: [(C {(echo)} {(SQ <'*.txt ident'>)})] spids: [277 278 286 16777215] ) (case_arm pat_list: [{(text)}] action: [(C {(echo)} {(SQ <'*.txt text'>)})] spids: [289 290 298 16777215] ) (case_arm pat_list: [{(-text)}] action: [(C {(echo)} {(SQ <'*.txt -text'>)})] spids: [301 302 310 16777215] ) (case_arm pat_list: [{(crlf)}] action: [(C {(echo)} {(SQ <'*.txt eol=crlf'>)})] spids: [313 314 322 16777215] ) (case_arm pat_list: [{(lf)}] action: [(C {(echo)} {(SQ <'*.txt eol=lf'>)})] spids: [325 326 334 16777215] ) (case_arm pat_list: [{(DQ )}] spids: [337 339 341 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.SimpleCommand words: [ {(echo)} {(invalid)} {(attribute) (Lit_Other ':')} {(DQ ($ VSub_Number '$1'))} ] redirects: [ (redir.Redir op: <Redir_GreatAnd '>&'> fd: 16777215 arg_word: {(2)} ) ] ) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) ] spids: [344 345 368 16777215] ) ] spids: [256 262 371] ) (C {(shift)}) ] ) ] spids: [253 379] ) ) ] redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(.gitattributes)})] spids: [236] ) ] spids: [233] ) spids: [228 232] ) (command.FuncDef name: create_NNO_files body: (command.BraceGroup children: [ (command.ForEach iter_name: crlf iter_words: [{(false)} {(true)} {(input)}] do_arg_iter: F body: (command.DoGroup children: [ (command.ForEach iter_name: attr iter_words: [{(DQ )} {(auto)} {(text)} {(-text)}] do_arg_iter: F body: (command.DoGroup children: [ (command.ForEach iter_name: aeol iter_words: [{(DQ )} {(lf)} {(crlf)}] do_arg_iter: F body: (command.DoGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:pfx spids:[450]) op: Equal rhs: {(NNO_attr_) (${ VSub_Name attr) (_aeol_) (${ VSub_Name aeol) (_) (${ VSub_Name crlf) } spids: [450] ) ] spids: [450] ) (command.AndOr ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(cp)} {(CRLF_mix_LF)} {(${ VSub_Name pfx) (_LF.txt)}) (C {(cp)} {(CRLF_mix_LF)} {(${ VSub_Name pfx) (_CRLF.txt)}) (C {(cp)} {(CRLF_mix_LF)} {(${ VSub_Name pfx) (_CRLF_mix_LF.txt)} ) (C {(cp)} {(CRLF_mix_LF)} {(${ VSub_Name pfx) (_LF_mix_CR.txt)}) (C {(cp)} {(CRLF_mix_LF)} {(${ VSub_Name pfx) (_CRLF_nul.txt)}) ] ) ] spids: [447 523] ) spids: [438 16777215] ) ] spids: [430 526] ) spids: [419 16777215] ) ] spids: [411 529] ) spids: [403 16777215] ) ] spids: [395] ) spids: [390 394] ) (command.FuncDef name: check_warning body: (command.BraceGroup children: [ (command.Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(LF_CRLF)}] action: [ (command.SimpleCommand words: [{(echo)} {(DQ ('warning: LF will be replaced by CRLF'))}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Number '$2')) (.expect)} ) ] ) ] spids: [551 552 566 16777215] ) (case_arm pat_list: [{(CRLF_LF)}] action: [ (command.SimpleCommand words: [{(echo)} {(DQ ('warning: CRLF will be replaced by LF'))}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Number '$2')) (.expect)} ) ] ) ] spids: [569 570 584 16777215] ) (case_arm pat_list: [{(SQ )}] action: [ (command.SimpleCommand redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Number '$2')) (.expect)} ) ] ) ] spids: [587 589 597 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.Sentence child: (command.SimpleCommand words: [ {(echo)} {(DQ ('Illegal 1')) (Lit_Other ':')} {(DQ ($ VSub_Number '$1'))} ] redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) terminator: <Op_Semi ';'> ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(false)} ) ] spids: [600 601 623 16777215] ) ] spids: [542 548 626] ) (command.Pipeline children: [ (C {(grep)} {(DQ ('will be replaced by'))} {(DQ ($ VSub_Number '$2'))}) (C {(sed)} {(-e)} { (DQ (s/) (Lit_Other '\\') ('(.*') (Lit_Other '\\') (') in [^ ]*') (Lit_Other '$') (/) (Lit_Other '\\') (1/) ) } ) (command.SimpleCommand words: [{(uniq)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Number '$2')) (.actual)} ) ] ) ] negated: F ) (C {(test_cmp)} {(DQ ($ VSub_Number '$2')) (.expect)} {(DQ ($ VSub_Number '$2')) (.actual)}) ] spids: [539] ) spids: [534 538] ) (command.FuncDef name: commit_check_warn body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:crlf spids:[691]) op: Equal rhs: {($ VSub_Number '$1')} spids: [691] ) ] spids: [691] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:attr spids:[695]) op: Equal rhs: {($ VSub_Number '$2')} spids: [695] ) ] spids: [695] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:lfname spids:[699]) op: Equal rhs: {($ VSub_Number '$3')} spids: [699] ) ] spids: [699] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:crlfname spids:[703]) op: Equal rhs: {($ VSub_Number '$4')} spids: [703] ) ] spids: [703] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:lfmixcrlf spids:[707]) op: Equal rhs: {($ VSub_Number '$5')} spids: [707] ) ] spids: [707] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:lfmixcr spids:[711]) op: Equal rhs: {($ VSub_Number '$6')} spids: [711] ) ] spids: [711] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:crlfnul spids:[715]) op: Equal rhs: {($ VSub_Number '$7')} spids: [715] ) ] spids: [715] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:pfx spids:[719]) op: Equal rhs: {(crlf_) (${ VSub_Name crlf) (_attr_) (${ VSub_Name attr)} spids: [719] ) ] spids: [719] ) (command.AndOr ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(create_gitattributes)} {(DQ ($ VSub_Name '$attr'))}) (command.ForEach iter_name: f iter_words: [{(LF)} {(CRLF)} {(LF_mix_CR)} {(CRLF_mix_LF)} {(LF_nul)} {(CRLF_nul)}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Op_DAmp Op_DAmp] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:fname spids:[761]) op: Equal rhs: {(${ VSub_Name pfx) (_) ($ VSub_Name '$f') (.txt)} spids: [761] ) ] spids: [761] ) (C {(cp)} {($ VSub_Name '$f')} {($ VSub_Name '$fname')}) (command.SimpleCommand words: [ {(git)} {(-c)} {(core.autocrlf) (Lit_Other '=') ($ VSub_Name '$crlf')} {(add)} {($ VSub_Name '$fname')} ] redirects: [ (redir.Redir op: <Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ VSub_Name pfx) (_) ($ VSub_Name '$f') (.err))} ) ] ) ] ) ] spids: [758 804] ) spids: [744 16777215] ) (C {(git)} {(commit)} {(-m)} {(DQ ('core.autocrlf ') ($ VSub_Name '$crlf'))}) (C {(check_warning)} {(DQ ($ VSub_Name '$lfname'))} {(${ VSub_Name pfx) (_LF.err)}) (C {(check_warning)} {(DQ ($ VSub_Name '$crlfname'))} {(${ VSub_Name pfx) (_CRLF.err)}) (C {(check_warning)} {(DQ ($ VSub_Name '$lfmixcrlf'))} {(${ VSub_Name pfx) (_CRLF_mix_LF.err)} ) (C {(check_warning)} {(DQ ($ VSub_Name '$lfmixcr'))} {(${ VSub_Name pfx) (_LF_mix_CR.err)} ) (C {(check_warning)} {(DQ ($ VSub_Name '$crlfnul'))} {(${ VSub_Name pfx) (_CRLF_nul.err)} ) ] ) ] spids: [688] ) spids: [683 687] ) (command.FuncDef name: commit_chk_wrnNNO body: (command.BraceGroup children: [ (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:attr spids:[901]) op: Equal rhs: {($ VSub_Number '$1')} spids: [901] ) ] spids: [901] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:aeol spids:[909]) op: Equal rhs: {($ VSub_Number '$1')} spids: [909] ) ] spids: [909] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:crlf spids:[917]) op: Equal rhs: {($ VSub_Number '$1')} spids: [917] ) ] spids: [917] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:lfwarn spids:[925]) op: Equal rhs: {($ VSub_Number '$1')} spids: [925] ) ] spids: [925] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:crlfwarn spids:[933]) op: Equal rhs: {($ VSub_Number '$1')} spids: [933] ) ] spids: [933] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:lfmixcrlf spids:[941]) op: Equal rhs: {($ VSub_Number '$1')} spids: [941] ) ] spids: [941] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:lfmixcr spids:[949]) op: Equal rhs: {($ VSub_Number '$1')} spids: [949] ) ] spids: [949] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:crlfnul spids:[957]) op: Equal rhs: {($ VSub_Number '$1')} spids: [957] ) ] spids: [957] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:pfx spids:[965]) op: Equal rhs: {(NNO_attr_) (${ VSub_Name attr) (_aeol_) (${ VSub_Name aeol) (_) (${ VSub_Name crlf) } spids: [965] ) ] spids: [965] ) (command.AndOr ops: [Op_DAmp] children: [ (C {(create_gitattributes)} {(DQ ($ VSub_Name '$attr'))} {($ VSub_Name '$aeol')}) (command.ForEach iter_name: f iter_words: [{(LF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(CRLF_nul)}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:fname spids:[1015]) op: Equal rhs: {(${ VSub_Name pfx) (_) ($ VSub_Name '$f') (.txt)} spids: [1015] ) ] spids: [1015] ) (C {(cp)} {($ VSub_Name '$f')} {($ VSub_Name '$fname')}) (command.SimpleCommand words: [{(printf)} {(Z)}] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$fname'))} ) ] ) (command.SimpleCommand words: [ {(git)} {(-c)} {(core.autocrlf) (Lit_Other '=') ($ VSub_Name '$crlf')} {(add)} {($ VSub_Name '$fname')} ] redirects: [ (redir.Redir op: <Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ VSub_Name pfx) (_) ($ VSub_Name '$f') (.err))} ) ] ) ] ) ] spids: [1012 1070] ) spids: [1000 16777215] ) ] ) (C {(test_expect_success)} { (DQ ('commit NNO files crlf=') ($ VSub_Name '$crlf') (' attr=') ($ VSub_Name '$attr') (' LF') ) } {(SQ <'\n'> <'\t\tcheck_warning "$lfwarn" ${pfx}_LF.err\n'> <'\t'>)} ) (C {(test_expect_success)} { (DQ ('commit NNO files attr=') ($ VSub_Name '$attr') (' aeol=') ($ VSub_Name '$aeol') (' crlf=') ($ VSub_Name '$crlf') (' CRLF') ) } {(SQ <'\n'> <'\t\tcheck_warning "$crlfwarn" ${pfx}_CRLF.err\n'> <'\t'>)} ) (C {(test_expect_success)} { (DQ ('commit NNO files attr=') ($ VSub_Name '$attr') (' aeol=') ($ VSub_Name '$aeol') (' crlf=') ($ VSub_Name '$crlf') (' CRLF_mix_LF') ) } {(SQ <'\n'> <'\t\tcheck_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err\n'> <'\t'>)} ) (C {(test_expect_success)} { (DQ ('commit NNO files attr=') ($ VSub_Name '$attr') (' aeol=') ($ VSub_Name '$aeol') (' crlf=') ($ VSub_Name '$crlf') (' LF_mix_cr') ) } {(SQ <'\n'> <'\t\tcheck_warning "$lfmixcr" ${pfx}_LF_mix_CR.err\n'> <'\t'>)} ) (C {(test_expect_success)} { (DQ ('commit NNO files attr=') ($ VSub_Name '$attr') (' aeol=') ($ VSub_Name '$aeol') (' crlf=') ($ VSub_Name '$crlf') (' CRLF_nul') ) } {(SQ <'\n'> <'\t\tcheck_warning "$crlfnul" ${pfx}_CRLF_nul.err\n'> <'\t'>)} ) ] spids: [898] ) spids: [893 897] ) (command.FuncDef name: stats_ascii body: (command.BraceGroup children: [ (command.Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(LF)}] action: [(C {(echo)} {(lf)})] spids: [1189 1190 1198 16777215] ) (case_arm pat_list: [{(CRLF)}] action: [(C {(echo)} {(crlf)})] spids: [1201 1202 1210 16777215] ) (case_arm pat_list: [{(CRLF_mix_LF)}] action: [(C {(echo)} {(mixed)})] spids: [1213 1214 1222 16777215] ) (case_arm pat_list: [{(LF_mix_CR)} {(CRLF_nul)} {(LF_nul)} {(CRLF_mix_CR)}] action: [(C {(echo)} {(DQ (-text))})] spids: [1225 1232 1242 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(echo)} {(error_invalid)} {($ VSub_Number '$1')})] spids: [1245 1246 1256 16777215] ) ] spids: [1180 1186 1259] ) ] spids: [1177] ) spids: [1172 1176] ) (command.FuncDef name: attr_ascii body: (command.BraceGroup children: [ (command.Case to_match: {($ VSub_Number '$1') (Lit_Comma ',') ($ VSub_Number '$2')} arms: [ (case_arm pat_list: [{(-text) (Lit_Comma ',') (Lit_Other '*')}] action: [(C {(echo)} {(DQ (-text))})] spids: [1292 1295 1303 16777215] ) (case_arm pat_list: [{(text) (Lit_Comma ',')}] action: [(C {(echo)} {(DQ (text))})] spids: [1306 1308 1316 16777215] ) (case_arm pat_list: [{(text) (Lit_Comma ',') (lf)}] action: [(C {(echo)} {(DQ ('text eol=lf'))})] spids: [1319 1322 1330 16777215] ) (case_arm pat_list: [{(text) (Lit_Comma ',') (crlf)}] action: [(C {(echo)} {(DQ ('text eol=crlf'))})] spids: [1333 1336 1344 16777215] ) (case_arm pat_list: [{(auto) (Lit_Comma ',')}] action: [(C {(echo)} {(DQ ('text=auto'))})] spids: [1347 1349 1357 16777215] ) (case_arm pat_list: [{(auto) (Lit_Comma ',') (lf)}] action: [(C {(echo)} {(DQ ('text=auto eol=lf'))})] spids: [1360 1363 1371 16777215] ) (case_arm pat_list: [{(auto) (Lit_Comma ',') (crlf)}] action: [(C {(echo)} {(DQ ('text=auto eol=crlf'))})] spids: [1374 1377 1385 16777215] ) (case_arm pat_list: [{(lf) (Lit_Comma ',')}] action: [(C {(echo)} {(DQ ('text eol=lf'))})] spids: [1388 1390 1398 16777215] ) (case_arm pat_list: [{(crlf) (Lit_Comma ',')}] action: [(C {(echo)} {(DQ ('text eol=crlf'))})] spids: [1401 1403 1411 16777215] ) (case_arm pat_list: [{(Lit_Comma ',')}] action: [(C {(echo)} {(DQ )})] spids: [1414 1415 1422 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(echo)} {(invalid_attr)} {(DQ ($ VSub_Number '$1') (',') ($ VSub_Number '$2'))}) ] spids: [1425 1426 1438 16777215] ) ] spids: [1283 1289 1441] ) ] spids: [1280] ) spids: [1275 1279] ) (command.FuncDef name: check_files_in_repo body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:crlf spids:[1454]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1454] ) ] spids: [1454] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:attr spids:[1458]) op: Equal rhs: {($ VSub_Number '$2')} spids: [1458] ) ] spids: [1458] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:lfname spids:[1462]) op: Equal rhs: {($ VSub_Number '$3')} spids: [1462] ) ] spids: [1462] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:crlfname spids:[1466]) op: Equal rhs: {($ VSub_Number '$4')} spids: [1466] ) ] spids: [1466] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:lfmixcrlf spids:[1470]) op: Equal rhs: {($ VSub_Number '$5')} spids: [1470] ) ] spids: [1470] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:lfmixcr spids:[1474]) op: Equal rhs: {($ VSub_Number '$6')} spids: [1474] ) ] spids: [1474] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:crlfnul spids:[1478]) op: Equal rhs: {($ VSub_Number '$7')} spids: [1478] ) ] spids: [1478] ) (command.AndOr ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:pfx spids:[1482]) op: Equal rhs: {(crlf_) (${ VSub_Name crlf) (_attr_) (${ VSub_Name attr) (_)} spids: [1482] ) ] spids: [1482] ) (C {(compare_files)} {($ VSub_Name '$lfname')} {(${ VSub_Name pfx) (LF.txt)}) (C {(compare_files)} {($ VSub_Name '$crlfname')} {(${ VSub_Name pfx) (CRLF.txt)}) (C {(compare_files)} {($ VSub_Name '$lfmixcrlf')} {(${ VSub_Name pfx) (CRLF_mix_LF.txt)}) (C {(compare_files)} {($ VSub_Name '$lfmixcr')} {(${ VSub_Name pfx) (LF_mix_CR.txt)}) (C {(compare_files)} {($ VSub_Name '$crlfnul')} {(${ VSub_Name pfx) (CRLF_nul.txt)}) ] ) ] spids: [1451] ) spids: [1446 1450] ) (command.FuncDef name: check_in_repo_NNO body: (command.BraceGroup children: [ (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:attr spids:[1564]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1564] ) ] spids: [1564] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:aeol spids:[1572]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1572] ) ] spids: [1572] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:crlf spids:[1580]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1580] ) ] spids: [1580] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:lfname spids:[1588]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1588] ) ] spids: [1588] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:crlfname spids:[1596]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1596] ) ] spids: [1596] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:lfmixcrlf spids:[1604]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1604] ) ] spids: [1604] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:lfmixcr spids:[1612]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1612] ) ] spids: [1612] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:crlfnul spids:[1620]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1620] ) ] spids: [1620] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:pfx spids:[1628]) op: Equal rhs: {(NNO_attr_) (${ VSub_Name attr) (_aeol_) (${ VSub_Name aeol) (_) (${ VSub_Name crlf) } spids: [1628] ) ] spids: [1628] ) (C {(test_expect_success)} {(DQ ('compare_files ') ($ VSub_Name '$lfname') (' ') (${ VSub_Name pfx) (_LF.txt))} {(SQ <'\n'> <'\t\tcompare_files $lfname ${pfx}_LF.txt\n'> <'\t'>)} ) (C {(test_expect_success)} { (DQ ('compare_files ') ($ VSub_Name '$crlfname') (' ') (${ VSub_Name pfx) (_CRLF.txt)) } {(SQ <'\n'> <'\t\tcompare_files $crlfname ${pfx}_CRLF.txt\n'> <'\t'>)} ) (C {(test_expect_success)} { (DQ ('compare_files ') ($ VSub_Name '$lfmixcrlf') (' ') (${ VSub_Name pfx) (_CRLF_mix_LF.txt) ) } {(SQ <'\n'> <'\t\tcompare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt\n'> <'\t'>)} ) (C {(test_expect_success)} { (DQ ('compare_files ') ($ VSub_Name '$lfmixcr') (' ') (${ VSub_Name pfx) (_LF_mix_CR.txt)) } {(SQ <'\n'> <'\t\tcompare_files $lfmixcr ${pfx}_LF_mix_CR.txt\n'> <'\t'>)} ) (C {(test_expect_success)} { (DQ ('compare_files ') ($ VSub_Name '$crlfnul') (' ') (${ VSub_Name pfx) (_CRLF_nul.txt)) } {(SQ <'\n'> <'\t\tcompare_files $crlfnul ${pfx}_CRLF_nul.txt\n'> <'\t'>)} ) ] spids: [1561] ) spids: [1556 1560] ) (command.FuncDef name: checkout_files body: (command.BraceGroup children: [ (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:attr spids:[1748]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1748] ) ] spids: [1748] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:ident spids:[1756]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1756] ) ] spids: [1756] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:aeol spids:[1763]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1763] ) ] spids: [1763] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:crlf spids:[1771]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1771] ) ] spids: [1771] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:ceol spids:[1779]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1779] ) ] spids: [1779] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:lfname spids:[1787]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1787] ) ] spids: [1787] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:crlfname spids:[1795]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1795] ) ] spids: [1795] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:lfmixcrlf spids:[1803]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1803] ) ] spids: [1803] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:lfmixcr spids:[1811]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1811] ) ] spids: [1811] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:crlfnul spids:[1819]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1819] ) ] spids: [1819] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (command.AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(create_gitattributes)} {(DQ ($ VSub_Name '$attr'))} {($ VSub_Name '$ident')} {($ VSub_Name '$aeol')} ) (C {(git)} {(config)} {(core.autocrlf)} {($ VSub_Name '$crlf')}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:pfx spids:[1851]) op: Equal rhs: {(eol_) (${ VSub_Name ceol) (_crlf_) (${ VSub_Name crlf) (_attr_) (${ VSub_Name attr) (_) } spids: [1851] ) ] spids: [1851] ) (command.ForEach iter_name: f iter_words: [{(LF)} {(CRLF)} {(LF_mix_CR)} {(CRLF_mix_LF)} {(LF_nul)}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Op_DAmp] children: [ (C {(rm)} {(crlf_false_attr__) ($ VSub_Name '$f') (.txt)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-z)} {(DQ ($ VSub_Name '$ceol'))}) terminator: <Op_Semi ';'> ) ] action: [ (C {(git)} {(checkout)} {(crlf_false_attr__) ($ VSub_Name '$f') (.txt)} ) ] spids: [16777215 1909] ) ] else_action: [ (C {(git)} {(-c)} {(core.eol) (Lit_Other '=') ($ VSub_Name '$ceol')} {(checkout)} {(crlf_false_attr__) ($ VSub_Name '$f') (.txt)} ) ] spids: [1921 1939] ) ] ) ] spids: [1886 1942] ) spids: [1874 16777215] ) ] ) (C {(test_expect_success)} { (DQ ('ls-files --eol attr=') ($ VSub_Name '$attr') (' ') ($ VSub_Name '$ident') (' aeol=') ($ VSub_Name '$aeol') (' core.autocrlf=') ($ VSub_Name '$crlf') (' core.eol=') ($ VSub_Name '$ceol') ) } { (SQ <'\n'> <'\t\ttest_when_finished "rm expect actual" &&\n'> <'\t\tsort <<-EOF >expect &&\n'> <'\t\ti/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt\n'> < '\t\ti/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt\n' > <'\t\ti/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt\n'> < '\t\ti/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt\n' > < '\t\ti/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt\n' > < '\t\ti/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt\n' > <'\t\tEOF\n'> <'\t\tgit ls-files --eol crlf_false_attr__* |\n'> <'\t\tsed -e "s/\t/ /g" -e "s/ */ /g" |\n'> <'\t\tsort >actual &&\n'> <'\t\ttest_cmp expect actual\n'> <'\t'> ) } ) (C {(test_expect_success)} { (DQ ('checkout attr=') ($ VSub_Name '$attr') (' ') ($ VSub_Name '$ident') (' aeol=') ($ VSub_Name '$aeol') (' core.autocrlf=') ($ VSub_Name '$crlf') (' core.eol=') ($ VSub_Name '$ceol') (' file=LF') ) } { (DQ ('\n') ('\t\tcompare_ws_file ') ($ VSub_Name '$pfx') (' ') ($ VSub_Name '$lfname') (' crlf_false_attr__LF.txt\n') ('\t') ) } ) (C {(test_expect_success)} { (DQ ('checkout attr=') ($ VSub_Name '$attr') (' ') ($ VSub_Name '$ident') (' aeol=') ($ VSub_Name '$aeol') (' core.autocrlf=') ($ VSub_Name '$crlf') (' core.eol=') ($ VSub_Name '$ceol') (' file=CRLF') ) } { (DQ ('\n') ('\t\tcompare_ws_file ') ($ VSub_Name '$pfx') (' ') ($ VSub_Name '$crlfname') (' crlf_false_attr__CRLF.txt\n') ('\t') ) } ) (C {(test_expect_success)} { (DQ ('checkout attr=') ($ VSub_Name '$attr') (' ') ($ VSub_Name '$ident') (' aeol=') ($ VSub_Name '$aeol') (' core.autocrlf=') ($ VSub_Name '$crlf') (' core.eol=') ($ VSub_Name '$ceol') (' file=CRLF_mix_LF') ) } { (DQ ('\n') ('\t\tcompare_ws_file ') ($ VSub_Name '$pfx') (' ') ($ VSub_Name '$lfmixcrlf') (' crlf_false_attr__CRLF_mix_LF.txt\n') ('\t') ) } ) (C {(test_expect_success)} { (DQ ('checkout attr=') ($ VSub_Name '$attr') (' ') ($ VSub_Name '$ident') (' aeol=') ($ VSub_Name '$aeol') (' core.autocrlf=') ($ VSub_Name '$crlf') (' core.eol=') ($ VSub_Name '$ceol') (' file=LF_mix_CR') ) } { (DQ ('\n') ('\t\tcompare_ws_file ') ($ VSub_Name '$pfx') (' ') ($ VSub_Name '$lfmixcr') (' crlf_false_attr__LF_mix_CR.txt\n') ('\t') ) } ) (C {(test_expect_success)} { (DQ ('checkout attr=') ($ VSub_Name '$attr') (' ') ($ VSub_Name '$ident') (' aeol=') ($ VSub_Name '$aeol') (' core.autocrlf=') ($ VSub_Name '$crlf') (' core.eol=') ($ VSub_Name '$ceol') (' file=LF_nul') ) } { (DQ ('\n') ('\t\tcompare_ws_file ') ($ VSub_Name '$pfx') (' ') ($ VSub_Name '$crlfnul') (' crlf_false_attr__LF_nul.txt\n') ('\t') ) } ) ] spids: [1745] ) spids: [1740 1744] ) (C {(test_expect_success)} {(SQ <'ls-files --eol -o Text/Binary'>)} { (SQ <'\n'> <'\ttest_when_finished "rm expect actual TeBi_*" &&\n'> <'\tSTRT=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA &&\n'> <'\tSTR=$STRT$STRT$STRT$STRT &&\n'> <'\tprintf "${STR}BBB\\001" >TeBi_127_S &&\n'> <'\tprintf "${STR}BBBB\\001">TeBi_128_S &&\n'> <'\tprintf "${STR}BBB\\032" >TeBi_127_E &&\n'> <'\tprintf "\\032${STR}BBB" >TeBi_E_127 &&\n'> <'\tprintf "${STR}BBBB\\000">TeBi_128_N &&\n'> <'\tprintf "${STR}BBB\\012">TeBi_128_L &&\n'> <'\tprintf "${STR}BBB\\015">TeBi_127_C &&\n'> <'\tprintf "${STR}BB\\015\\012" >TeBi_126_CL &&\n'> <'\tprintf "${STR}BB\\015\\012\\015" >TeBi_126_CLC &&\n'> <'\tsort <<-\\EOF >expect &&\n'> <'\ti/ w/-text TeBi_127_S\n'> <'\ti/ w/none TeBi_128_S\n'> <'\ti/ w/none TeBi_127_E\n'> <'\ti/ w/-text TeBi_E_127\n'> <'\ti/ w/-text TeBi_128_N\n'> <'\ti/ w/lf TeBi_128_L\n'> <'\ti/ w/-text TeBi_127_C\n'> <'\ti/ w/crlf TeBi_126_CL\n'> <'\ti/ w/-text TeBi_126_CLC\n'> <'\tEOF\n'> <'\tgit ls-files --eol -o |\n'> <'\tsed -n -e "/TeBi_/{s!attr/[\t]*!!g\n'> <'\ts!\t! !g\n'> <'\ts! *! !g\n'> <'\tp\n'> <'\t}" | sort >actual &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'setup master'>)} { (SQ <'\n'> <'\techo >.gitattributes &&\n'> <'\tgit checkout -b master &&\n'> <'\tgit add .gitattributes &&\n'> <'\tgit commit -m "add .gitattributes" "" &&\n'> < '\tprintf "\\$Id: 0000000000000000000000000000000000000000 \\$\\nLINEONE\\nLINETWO\\nLINETHREE" >LF &&\n' > < '\tprintf "\\$Id: 0000000000000000000000000000000000000000 \\$\\r\\nLINEONE\\r\\nLINETWO\\r\\nLINETHREE" >CRLF &&\n' > < '\tprintf "\\$Id: 0000000000000000000000000000000000000000 \\$\\nLINEONE\\r\\nLINETWO\\nLINETHREE" >CRLF_mix_LF &&\n' > < '\tprintf "\\$Id: 0000000000000000000000000000000000000000 \\$\\nLINEONE\\nLINETWO\\rLINETHREE" >LF_mix_CR &&\n' > < '\tprintf "\\$Id: 0000000000000000000000000000000000000000 \\$\\r\\nLINEONE\\r\\nLINETWO\\rLINETHREE" >CRLF_mix_CR &&\n' > < '\tprintf "\\$Id: 0000000000000000000000000000000000000000 \\$\\r\\nLINEONEQ\\r\\nLINETWO\\r\\nLINETHREE" | q_to_nul >CRLF_nul &&\n' > < '\tprintf "\\$Id: 0000000000000000000000000000000000000000 \\$\\nLINEONEQ\\nLINETWO\\nLINETHREE" | q_to_nul >LF_nul &&\n' > <'\tcreate_NNO_files CRLF_mix_LF CRLF_mix_LF CRLF_mix_LF CRLF_mix_LF CRLF_mix_LF &&\n'> <'\tgit -c core.autocrlf=false add NNO_*.txt &&\n'> <'\tgit commit -m "mixed line endings" &&\n'> <'\ttest_tick\n'> ) } ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:warn_LF_CRLF spids:[2192]) op: Equal rhs: {(DQ ('LF will be replaced by CRLF'))} spids: [2192] ) ] spids: [2192] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:warn_CRLF_LF spids:[2197]) op: Equal rhs: {(DQ ('CRLF will be replaced by LF'))} spids: [2197] ) ] spids: [2197] ) (command.If arms: [ (if_arm cond: [(C {(test_have_prereq)} {(NATIVE_CRLF)})] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:WILC spids:[2221]) op: Equal rhs: {(LF_CRLF)} spids: [2221] ) ] spids: [2221] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:WICL spids:[2225]) op: Equal rhs: (word.EmptyWord) spids: [2225] ) ] spids: [2225] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:WAMIX spids:[2228]) op: Equal rhs: {(LF_CRLF)} spids: [2228] ) ] spids: [2228] ) ] spids: [16777215 2218] ) ] else_action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:WILC spids:[2234]) op: Equal rhs: (word.EmptyWord) spids: [2234] ) ] spids: [2234] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:WICL spids:[2237]) op: Equal rhs: {(CRLF_LF)} spids: [2237] ) ] spids: [2237] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:WAMIX spids:[2241]) op: Equal rhs: {(CRLF_LF)} spids: [2241] ) ] spids: [2241] ) ] spids: [2231 2244] ) (C {(test_expect_success)} {(SQ <'commit files empty attr'>)} { (SQ <'\n'> <'\tcommit_check_warn false "" "" "" "" "" "" &&\n'> <'\tcommit_check_warn true "" "LF_CRLF" "" "LF_CRLF" "" "" &&\n'> <'\tcommit_check_warn input "" "" "CRLF_LF" "CRLF_LF" "" ""\n'> ) } ) (C {(test_expect_success)} {(SQ <'commit files attr=auto'>)} { (SQ <'\n'> <'\tcommit_check_warn false "auto" "$WILC" "$WICL" "$WAMIX" "" "" &&\n'> <'\tcommit_check_warn true "auto" "LF_CRLF" "" "LF_CRLF" "" "" &&\n'> <'\tcommit_check_warn input "auto" "" "CRLF_LF" "CRLF_LF" "" ""\n'> ) } ) (C {(test_expect_success)} {(SQ <'commit files attr=text'>)} { (SQ <'\n'> < '\tcommit_check_warn false "text" "$WILC" "$WICL" "$WAMIX" "$WILC" "$WICL" &&\n' > <'\tcommit_check_warn true "text" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" &&\n'> <'\tcommit_check_warn input "text" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF"\n'> ) } ) (C {(test_expect_success)} {(SQ <'commit files attr=-text'>)} { (SQ <'\n'> <'\tcommit_check_warn false "-text" "" "" "" "" "" &&\n'> <'\tcommit_check_warn true "-text" "" "" "" "" "" &&\n'> <'\tcommit_check_warn input "-text" "" "" "" "" ""\n'> ) } ) (C {(test_expect_success)} {(SQ <'commit files attr=lf'>)} { (SQ <'\n'> < '\tcommit_check_warn false "lf" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" &&\n' > <'\tcommit_check_warn true "lf" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" &&\n'> <'\tcommit_check_warn input "lf" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF"\n'> ) } ) (C {(test_expect_success)} {(SQ <'commit files attr=crlf'>)} { (SQ <'\n'> <'\tcommit_check_warn false "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" &&\n'> <'\tcommit_check_warn true "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" &&\n'> <'\tcommit_check_warn input "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" ""\n'> ) } ) (C {(commit_chk_wrnNNO)} {(DQ )} {(DQ )} {(false)} {(DQ )} {(DQ )} {(DQ )} {(DQ )} {(DQ )}) (C {(commit_chk_wrnNNO)} {(DQ )} {(DQ )} {(true)} {(LF_CRLF)} {(DQ )} {(DQ )} {(DQ )} {(DQ )}) (C {(commit_chk_wrnNNO)} {(DQ )} {(DQ )} {(input)} {(DQ )} {(DQ )} {(DQ )} {(DQ )} {(DQ )}) (C {(commit_chk_wrnNNO)} {(DQ (auto))} {(DQ )} {(false)} {(DQ ($ VSub_Name '$WILC'))} {(DQ )} {(DQ )} {(DQ )} {(DQ )}) (C {(commit_chk_wrnNNO)} {(DQ (auto))} {(DQ )} {(true)} {(LF_CRLF)} {(DQ )} {(DQ )} {(DQ )} {(DQ )}) (C {(commit_chk_wrnNNO)} {(DQ (auto))} {(DQ )} {(input)} {(DQ )} {(DQ )} {(DQ )} {(DQ )} {(DQ )}) (command.ForEach iter_name: crlf iter_words: [{(true)} {(false)} {(input)}] do_arg_iter: F body: (command.DoGroup children: [ (C {(commit_chk_wrnNNO)} {(-text)} {(DQ )} {($ VSub_Name '$crlf')} {(DQ )} {(DQ )} {(DQ )} {(DQ )} {(DQ )}) (C {(commit_chk_wrnNNO)} {(-text)} {(lf)} {($ VSub_Name '$crlf')} {(DQ )} {(DQ )} {(DQ )} {(DQ )} {(DQ )}) (C {(commit_chk_wrnNNO)} {(-text)} {(crlf)} {($ VSub_Name '$crlf')} {(DQ )} {(DQ )} {(DQ )} {(DQ )} {(DQ )}) (C {(commit_chk_wrnNNO)} {(DQ )} {(lf)} {($ VSub_Name '$crlf')} {(DQ )} {(CRLF_LF)} {(CRLF_LF)} {(DQ )} {(CRLF_LF)} ) (C {(commit_chk_wrnNNO)} {(DQ )} {(crlf)} {($ VSub_Name '$crlf')} {(LF_CRLF)} {(DQ )} {(LF_CRLF)} {(LF_CRLF)} {(DQ )} ) (C {(commit_chk_wrnNNO)} {(auto)} {(lf)} {($ VSub_Name '$crlf')} {(DQ )} {(DQ )} {(DQ )} {(DQ )} {(DQ )}) (C {(commit_chk_wrnNNO)} {(auto)} {(crlf)} {($ VSub_Name '$crlf')} {(LF_CRLF)} {(DQ )} {(DQ )} {(DQ )} {(DQ )}) (C {(commit_chk_wrnNNO)} {(text)} {(lf)} {($ VSub_Name '$crlf')} {(DQ )} {(CRLF_LF)} {(CRLF_LF)} {(DQ )} {(CRLF_LF)} ) (C {(commit_chk_wrnNNO)} {(text)} {(crlf)} {($ VSub_Name '$crlf')} {(LF_CRLF)} {(DQ )} {(LF_CRLF)} {(LF_CRLF)} {(DQ )} ) ] spids: [2502 2710] ) spids: [2495 16777215] ) (C {(commit_chk_wrnNNO)} {(DQ (text))} {(DQ )} {(false)} {(DQ ($ VSub_Name '$WILC'))} {(DQ ($ VSub_Name '$WICL'))} {(DQ ($ VSub_Name '$WAMIX'))} {(DQ ($ VSub_Name '$WILC'))} {(DQ ($ VSub_Name '$WICL'))} ) (C {(commit_chk_wrnNNO)} {(DQ (text))} {(DQ )} {(true)} {(LF_CRLF)} {(DQ )} {(LF_CRLF)} {(LF_CRLF)} {(DQ )}) (C {(commit_chk_wrnNNO)} {(DQ (text))} {(DQ )} {(input)} {(DQ )} {(CRLF_LF)} {(CRLF_LF)} {(DQ )} {(CRLF_LF)} ) (C {(test_expect_success)} {(SQ <'commit NNO and cleanup'>)} { (SQ <'\n'> <'\tgit commit -m "commit files on top of NNO" &&\n'> <'\trm -f *.txt &&\n'> <'\tgit -c core.autocrlf=false reset --hard\n'> ) } ) (C {(test_expect_success)} {(SQ <'commit empty gitattribues'>)} { (SQ <'\n'> <'\tcheck_files_in_repo false "" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul &&\n'> <'\tcheck_files_in_repo true "" LF LF LF LF_mix_CR CRLF_nul &&\n'> <'\tcheck_files_in_repo input "" LF LF LF LF_mix_CR CRLF_nul\n'> ) } ) (C {(test_expect_success)} {(SQ <'commit text=auto'>)} { (SQ <'\n'> <'\tcheck_files_in_repo false "auto" LF LF LF LF_mix_CR CRLF_nul &&\n'> <'\tcheck_files_in_repo true "auto" LF LF LF LF_mix_CR CRLF_nul &&\n'> <'\tcheck_files_in_repo input "auto" LF LF LF LF_mix_CR CRLF_nul\n'> ) } ) (C {(test_expect_success)} {(SQ <'commit text'>)} { (SQ <'\n'> <'\tcheck_files_in_repo false "text" LF LF LF LF_mix_CR LF_nul &&\n'> <'\tcheck_files_in_repo true "text" LF LF LF LF_mix_CR LF_nul &&\n'> <'\tcheck_files_in_repo input "text" LF LF LF LF_mix_CR LF_nul\n'> ) } ) (C {(test_expect_success)} {(SQ <'commit -text'>)} { (SQ <'\n'> <'\tcheck_files_in_repo false "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul &&\n'> <'\tcheck_files_in_repo true "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul &&\n'> <'\tcheck_files_in_repo input "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul\n'> ) } ) (command.ForEach iter_name: crlf iter_words: [{(true)} {(false)} {(input)}] do_arg_iter: F body: (command.DoGroup children: [ (C {(check_in_repo_NNO)} {(DQ )} {(DQ )} {($ VSub_Name '$crlf')} {(LF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(CRLF_nul)} ) (C {(check_in_repo_NNO)} {(-text)} {(DQ )} {($ VSub_Name '$crlf')} {(LF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(CRLF_nul)} ) (C {(check_in_repo_NNO)} {(-text)} {(lf)} {($ VSub_Name '$crlf')} {(LF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(CRLF_nul)} ) (C {(check_in_repo_NNO)} {(-text)} {(crlf)} {($ VSub_Name '$crlf')} {(LF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(CRLF_nul)} ) (C {(check_in_repo_NNO)} {(auto)} {(DQ )} {($ VSub_Name '$crlf')} {(LF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(CRLF_nul)} ) (C {(check_in_repo_NNO)} {(auto)} {(lf)} {($ VSub_Name '$crlf')} {(LF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(CRLF_nul)} ) (C {(check_in_repo_NNO)} {(auto)} {(crlf)} {($ VSub_Name '$crlf')} {(LF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(CRLF_nul)} ) (C {(check_in_repo_NNO)} {(text)} {(DQ )} {($ VSub_Name '$crlf')} {(LF)} {(LF)} {(LF)} {(LF_mix_CR)} {(LF_nul)} ) (C {(check_in_repo_NNO)} {(text)} {(lf)} {($ VSub_Name '$crlf')} {(LF)} {(LF)} {(LF)} {(LF_mix_CR)} {(LF_nul)} ) (C {(check_in_repo_NNO)} {(text)} {(crlf)} {($ VSub_Name '$crlf')} {(LF)} {(LF)} {(LF)} {(LF_mix_CR)} {(LF_nul)} ) ] spids: [2873 3074] ) spids: [2866 16777215] ) (command.If arms: [ (if_arm cond: [(C {(test_have_prereq)} {(NATIVE_CRLF)})] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:MIX_CRLF_LF spids:[3133]) op: Equal rhs: {(CRLF)} spids: [3133] ) ] spids: [3133] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:MIX_LF_CR spids:[3136]) op: Equal rhs: {(CRLF_mix_CR)} spids: [3136] ) ] spids: [3136] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:NL spids:[3139]) op: Equal rhs: {(CRLF)} spids: [3139] ) ] spids: [3139] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:LFNUL spids:[3142]) op: Equal rhs: {(CRLF_nul)} spids: [3142] ) ] spids: [3142] ) ] spids: [16777215 3131] ) ] else_action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:MIX_CRLF_LF spids:[3147]) op: Equal rhs: {(CRLF_mix_LF)} spids: [3147] ) ] spids: [3147] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:MIX_LF_CR spids:[3150]) op: Equal rhs: {(LF_mix_CR)} spids: [3150] ) ] spids: [3150] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:NL spids:[3153]) op: Equal rhs: {(LF)} spids: [3153] ) ] spids: [3153] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:LFNUL spids:[3156]) op: Equal rhs: {(LF_nul)} spids: [3156] ) ] spids: [3156] ) ] spids: [3145 3159] ) (C {(export)} {(CRLF_MIX_LF_CR)} {(MIX)} {(NL)}) (command.ForEach iter_name: id iter_words: [{(DQ )} {(ident)}] do_arg_iter: F body: (command.DoGroup children: [ (command.ForEach iter_name: ceol iter_words: [{(lf)} {(crlf)} {(native)}] do_arg_iter: F body: (command.DoGroup children: [ (command.ForEach iter_name: crlf iter_words: [{(true)} {(false)} {(input)}] do_arg_iter: F body: (command.DoGroup children: [ (C {(checkout_files)} {(-text)} {(DQ ($ VSub_Name '$id'))} {(DQ )} {(DQ ($ VSub_Name '$crlf'))} {(DQ ($ VSub_Name '$ceol'))} {(LF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(LF_nul)} ) (C {(checkout_files)} {(-text)} {(DQ ($ VSub_Name '$id'))} {(DQ (lf))} {(DQ ($ VSub_Name '$crlf'))} {(DQ ($ VSub_Name '$ceol'))} {(LF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(LF_nul)} ) (C {(checkout_files)} {(-text)} {(DQ ($ VSub_Name '$id'))} {(DQ (crlf))} {(DQ ($ VSub_Name '$crlf'))} {(DQ ($ VSub_Name '$ceol'))} {(LF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(LF_nul)} ) (C {(checkout_files)} {(text)} {(DQ ($ VSub_Name '$id'))} {(DQ (lf))} {(DQ ($ VSub_Name '$crlf'))} {(DQ ($ VSub_Name '$ceol'))} {(LF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(LF_nul)} ) (C {(checkout_files)} {(text)} {(DQ ($ VSub_Name '$id'))} {(DQ (crlf))} {(DQ ($ VSub_Name '$crlf'))} {(DQ ($ VSub_Name '$ceol'))} {(CRLF)} {(CRLF)} {(CRLF)} {(CRLF_mix_CR)} {(CRLF_nul)} ) (C {(checkout_files)} {(auto)} {(DQ ($ VSub_Name '$id'))} {(DQ (lf))} {(DQ ($ VSub_Name '$crlf'))} {(DQ ($ VSub_Name '$ceol'))} {(LF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(LF_nul)} ) (C {(checkout_files)} {(auto)} {(DQ ($ VSub_Name '$id'))} {(DQ (crlf))} {(DQ ($ VSub_Name '$crlf'))} {(DQ ($ VSub_Name '$ceol'))} {(CRLF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(LF_nul)} ) ] spids: [3216 3451] ) spids: [3208 16777215] ) (C {(checkout_files)} {(DQ )} {(DQ ($ VSub_Name '$id'))} {(DQ )} {(false)} {(DQ ($ VSub_Name '$ceol'))} {(LF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(LF_nul)} ) (C {(checkout_files)} {(DQ )} {(DQ ($ VSub_Name '$id'))} {(DQ )} {(true)} {(DQ ($ VSub_Name '$ceol'))} {(CRLF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(LF_nul)} ) (C {(checkout_files)} {(auto)} {(DQ ($ VSub_Name '$id'))} {(DQ )} {(true)} {(DQ ($ VSub_Name '$ceol'))} {(CRLF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(LF_nul)} ) (C {(checkout_files)} {(text)} {(DQ ($ VSub_Name '$id'))} {(DQ )} {(true)} {(DQ ($ VSub_Name '$ceol'))} {(CRLF)} {(CRLF)} {(CRLF)} {(CRLF_mix_CR)} {(CRLF_nul)} ) (C {(checkout_files)} {(text)} {(DQ ($ VSub_Name '$id'))} {(DQ )} {(input)} {(DQ ($ VSub_Name '$ceol'))} {(LF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(LF_nul)} ) (C {(checkout_files)} {(auto)} {(DQ ($ VSub_Name '$id'))} {(DQ )} {(input)} {(DQ ($ VSub_Name '$ceol'))} {(LF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(LF_nul)} ) ] spids: [3200 3645] ) spids: [3192 16777215] ) (C {(checkout_files)} {(text)} {(DQ ($ VSub_Name '$id'))} {(DQ )} {(false)} {(crlf)} {(CRLF)} {(CRLF)} {(CRLF)} {(CRLF_mix_CR)} {(CRLF_nul)} ) (C {(checkout_files)} {(text)} {(DQ ($ VSub_Name '$id'))} {(DQ )} {(false)} {(lf)} {(LF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(LF_nul)} ) (C {(checkout_files)} {(text)} {(DQ ($ VSub_Name '$id'))} {(DQ )} {(false)} {(DQ )} {($ VSub_Name '$NL')} {(CRLF)} {($ VSub_Name '$MIX_CRLF_LF')} {($ VSub_Name '$MIX_LF_CR')} {($ VSub_Name '$LFNUL')} ) (C {(checkout_files)} {(text)} {(DQ ($ VSub_Name '$id'))} {(DQ )} {(false)} {(native)} {($ VSub_Name '$NL')} {(CRLF)} {($ VSub_Name '$MIX_CRLF_LF')} {($ VSub_Name '$MIX_LF_CR')} {($ VSub_Name '$LFNUL')} ) (C {(checkout_files)} {(auto)} {(DQ ($ VSub_Name '$id'))} {(DQ )} {(false)} {(DQ )} {($ VSub_Name '$NL')} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(LF_nul)} ) (C {(checkout_files)} {(auto)} {(DQ ($ VSub_Name '$id'))} {(DQ )} {(false)} {(native)} {($ VSub_Name '$NL')} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(LF_nul)} ) ] spids: [3184 3817] ) spids: [3178 16777215] ) (C {(test_expect_success)} {(SQ <'ls-files --eol -d -z'>)} { (SQ <'\n'> < '\trm crlf_false_attr__CRLF.txt crlf_false_attr__CRLF_mix_LF.txt crlf_false_attr__LF.txt .gitattributes &&\n' > <'\tcat >expect <<-\\EOF &&\n'> <'\ti/crlf w/ crlf_false_attr__CRLF.txt\n'> <'\ti/lf w/ .gitattributes\n'> <'\ti/lf w/ crlf_false_attr__LF.txt\n'> <'\ti/mixed w/ crlf_false_attr__CRLF_mix_LF.txt\n'> <'\tEOF\n'> <'\tgit ls-files --eol -d |\n'> <'\tsed -e "s!attr/[^\t]*!!g" -e "s/\t/ /g" -e "s/ */ /g" |\n'> <'\tsort >actual &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {(test_done)}) ] )