(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"CRLF conversion all combinations">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (If arms: [ (if_arm cond: [(Pipeline children:[(C {(test_have_prereq)} {(EXPENSIVE)})] negated:True)] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:skip_all) op: Equal rhs: {(DQ ("EXPENSIVE not set"))} spids: [26] ) ] spids: [26] ) (C {(test_done)}) ] spids: [-1 23] ) ] spids: [-1 34] ) (FuncDef name: compare_files body: (BraceGroup children: [ (AndOr children: [ (SimpleCommand words: [{(tr)} {(SQ <"\\015\\000">)} {(QN)}] redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(DQ ($ VSub_Number "$1"))} spids: [53] ) (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Number "$1")) (.expect)} spids: [58] ) ] ) (AndOr children: [ (Pipeline children: [ (SimpleCommand words: [{(tr)} {(SQ <"\\015\\000">)} {(QN)}] redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(DQ ($ VSub_Number "$2"))} spids: [75] ) ] ) (SimpleCommand words: [{(tr)} {(-d)} {(SQ <Z>)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Number "$2")) (.actual)} spids: [90] ) ] ) ] negated: False ) (AndOr children: [ (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)} ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [42] ) spids: [37 41] ) (FuncDef name: compare_ws_file body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pfx) op: Equal rhs: {($ VSub_Number "$1")} spids: [137] ) ] spids: [137] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:exp) op: Equal rhs: {($ VSub_Number "$2") (.expect)} spids: [141] ) ] spids: [141] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:act) op: Equal rhs: {($ VSub_Name "$pfx") (.actual.) ($ VSub_Number "$3")} spids: [146] ) ] spids: [146] ) (AndOr children: [ (SimpleCommand words: [{(tr)} {(SQ <"\\015\\000abcdef0123456789">)} {(QN00000000000000000)}] redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(DQ ($ VSub_Number "$2"))} spids: [160] ) (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Name "$exp"))} spids: [165] ) ] ) (AndOr children: [ (SimpleCommand words: [{(tr)} {(SQ <"\\015\\000abcdef0123456789">)} {(QN00000000000000000)}] redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(DQ ($ VSub_Number "$3"))} spids: [181] ) (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Name "$act"))} spids: [186] ) ] ) (AndOr children: [ (C {(test_cmp)} {(DQ ($ VSub_Name "$exp"))} {(DQ ($ VSub_Name "$act"))}) (C {(rm)} {(DQ ($ VSub_Name "$exp"))} {(DQ ($ VSub_Name "$act"))}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [134] ) spids: [129 133] ) (FuncDef name: create_gitattributes body: (BraceGroup children: [ (BraceGroup children: [ (While cond: [(C {(test)} {(DQ ($ VSub_Pound "$#"))} {(KW_Bang "!") (Lit_Other "=")} {(0)})] body: (DoGroup children: [ (AndOr children: [ (Case to_match: {(DQ ($ VSub_Number "$1"))} arms: [ (case_arm pat_list: [{(auto)}] action: [(C {(echo)} {(SQ <"*.txt text=auto">)})] spids: [257 258 266 -1] ) (case_arm pat_list: [{(ident)}] action: [(C {(echo)} {(SQ <"*.txt ident">)})] spids: [269 270 278 -1] ) (case_arm pat_list: [{(text)}] action: [(C {(echo)} {(SQ <"*.txt text">)})] spids: [281 282 290 -1] ) (case_arm pat_list: [{(-text)}] action: [(C {(echo)} {(SQ <"*.txt -text">)})] spids: [293 294 302 -1] ) (case_arm pat_list: [{(crlf)}] action: [(C {(echo)} {(SQ <"*.txt eol=crlf">)})] spids: [305 306 314 -1] ) (case_arm pat_list: [{(lf)}] action: [(C {(echo)} {(SQ <"*.txt eol=lf">)})] spids: [317 318 326 -1] ) (case_arm pat_list: [{(DQ )}] spids: [-1 331 333 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (SimpleCommand words: [ {(echo)} {(invalid)} {(attribute) (Lit_Other ":")} {(DQ ($ VSub_Number "$1"))} ] redirects: [ (Redir op_id: Redir_GreatAnd fd: -1 arg_word: {(2)} spids: [342] ) ] ) (C {(exit)} {(1)}) ] spids: [336 337 360 -1] ) ] spids: [248 254 363] ) (C {(shift)}) ] op_id: Op_DAmp ) ] spids: [245 371] ) ) ] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(.gitattributes)} spids:[376])] spids: [228] ) ] spids: [225] ) spids: [220 224] ) (FuncDef name: create_NNO_files body: (BraceGroup children: [ (ForEach iter_name: crlf iter_words: [{(false)} {(true)} {(input)}] do_arg_iter: False body: (DoGroup children: [ (ForEach iter_name: attr iter_words: [{(DQ )} {(auto)} {(text)} {(-text)}] do_arg_iter: False body: (DoGroup children: [ (ForEach iter_name: aeol iter_words: [{(DQ )} {(lf)} {(crlf)}] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pfx) op: Equal rhs: {(NNO_attr_) (${ VSub_Name attr) (_aeol_) (${ VSub_Name aeol) (_) (${ VSub_Name crlf) } spids: [442] ) ] spids: [442] ) (AndOr children: [ (C {(cp)} {(CRLF_mix_LF)} {(${ VSub_Name pfx) (_LF.txt)}) (AndOr children: [ (C {(cp)} {(CRLF_mix_LF)} {(${ VSub_Name pfx) (_CRLF.txt)}) (AndOr children: [ (C {(cp)} {(CRLF_mix_LF)} {(${ VSub_Name pfx) (_CRLF_mix_LF.txt)} ) (AndOr children: [ (C {(cp)} {(CRLF_mix_LF)} {(${ VSub_Name pfx) (_LF_mix_CR.txt)} ) (C {(cp)} {(CRLF_mix_LF)} {(${ VSub_Name pfx) (_CRLF_nul.txt)} ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [439 515] ) spids: [430 -1] ) ] spids: [422 518] ) spids: [411 -1] ) ] spids: [403 521] ) spids: [395 -1] ) ] spids: [387] ) spids: [382 386] ) (FuncDef name: check_warning body: (BraceGroup children: [ (Case to_match: {(DQ ($ VSub_Number "$1"))} arms: [ (case_arm pat_list: [{(LF_CRLF)}] action: [ (SimpleCommand words: [{(echo)} {(DQ ("warning: LF will be replaced by CRLF"))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Number "$2")) (.expect)} spids: [552] ) ] ) ] spids: [543 544 558 -1] ) (case_arm pat_list: [{(CRLF_LF)}] action: [ (SimpleCommand words: [{(echo)} {(DQ ("warning: CRLF will be replaced by LF"))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Number "$2")) (.expect)} spids: [570] ) ] ) ] spids: [561 562 576 -1] ) (case_arm pat_list: [{(SQ )}] action: [ (SimpleCommand redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Number "$2")) (.expect)} spids: [583] ) ] ) ] spids: [-1 581 589 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (Sentence child: (SimpleCommand words: [ {(echo)} {(DQ ("Illegal 1")) (Lit_Other ":")} {(DQ ($ VSub_Number "$1"))} ] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[597])] ) terminator: <Op_Semi ";"> ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(false)} ) ] spids: [592 593 615 -1] ) ] spids: [534 540 618] ) (Pipeline children: [ (C {(grep)} {(DQ ("will be replaced by"))} {(DQ ($ VSub_Number "$2"))}) (C {(sed)} {(-e)} { (DQ (s/) (EscapedLiteralPart token:<Lit_EscapedChar "\\(">) (".*") (EscapedLiteralPart token:<Lit_EscapedChar "\\)">) (" in [^ ]*") (Lit_Other "$") (/) (EscapedLiteralPart token:<Lit_EscapedChar "\\1">) (/) ) } ) (SimpleCommand words: [{(uniq)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Number "$2")) (.actual)} spids: [653] ) ] ) ] negated: False ) (C {(test_cmp)} {(DQ ($ VSub_Number "$2")) (.expect)} {(DQ ($ VSub_Number "$2")) (.actual)}) ] spids: [531] ) spids: [526 530] ) (FuncDef name: commit_check_warn body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:crlf) op: Equal rhs: {($ VSub_Number "$1")} spids: [683] ) ] spids: [683] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:attr) op: Equal rhs: {($ VSub_Number "$2")} spids: [687] ) ] spids: [687] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lfname) op: Equal rhs: {($ VSub_Number "$3")} spids: [691] ) ] spids: [691] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:crlfname) op: Equal rhs: {($ VSub_Number "$4")} spids: [695] ) ] spids: [695] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lfmixcrlf) op: Equal rhs: {($ VSub_Number "$5")} spids: [699] ) ] spids: [699] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lfmixcr) op: Equal rhs: {($ VSub_Number "$6")} spids: [703] ) ] spids: [703] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:crlfnul) op: Equal rhs: {($ VSub_Number "$7")} spids: [707] ) ] spids: [707] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pfx) op: Equal rhs: {(crlf_) (${ VSub_Name crlf) (_attr_) (${ VSub_Name attr)} spids: [711] ) ] spids: [711] ) (AndOr children: [ (C {(create_gitattributes)} {(DQ ($ VSub_Name "$attr"))}) (AndOr children: [ (ForEach iter_name: f iter_words: [{(LF)} {(CRLF)} {(LF_mix_CR)} {(CRLF_mix_LF)} {(LF_nul)} {(CRLF_nul)}] do_arg_iter: False body: (DoGroup children: [ (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:fname) op: Equal rhs: {(${ VSub_Name pfx) (_) ($ VSub_Name "$f") (.txt)} spids: [753] ) ] spids: [753] ) (AndOr children: [ (C {(cp)} {($ VSub_Name "$f")} {($ VSub_Name "$fname")}) (SimpleCommand words: [ {(git)} {(-c)} {(core.autocrlf) (Lit_Other "=") ($ VSub_Name "$crlf")} {(add)} {($ VSub_Name "$fname")} ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(DQ (${ VSub_Name pfx) (_) ($ VSub_Name "$f") (.err))} spids: [785] ) ] ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [750 796] ) spids: [736 -1] ) (AndOr children: [ (C {(git)} {(commit)} {(-m)} {(DQ ("core.autocrlf ") ($ VSub_Name "$crlf"))}) (AndOr children: [ (C {(check_warning)} {(DQ ($ VSub_Name "$lfname"))} {(${ VSub_Name pfx) (_LF.err)} ) (AndOr children: [ (C {(check_warning)} {(DQ ($ VSub_Name "$crlfname"))} {(${ VSub_Name pfx) (_CRLF.err)} ) (AndOr children: [ (C {(check_warning)} {(DQ ($ VSub_Name "$lfmixcrlf"))} {(${ VSub_Name pfx) (_CRLF_mix_LF.err)} ) (AndOr children: [ (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)} ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [680] ) spids: [675 679] ) (FuncDef name: commit_chk_wrnNNO body: (BraceGroup children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:attr) op: Equal rhs: {($ VSub_Number "$1")} spids: [893] ) ] spids: [893] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:aeol) op: Equal rhs: {($ VSub_Number "$1")} spids: [901] ) ] spids: [901] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:crlf) op: Equal rhs: {($ VSub_Number "$1")} spids: [909] ) ] spids: [909] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lfwarn) op: Equal rhs: {($ VSub_Number "$1")} spids: [917] ) ] spids: [917] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:crlfwarn) op: Equal rhs: {($ VSub_Number "$1")} spids: [925] ) ] spids: [925] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lfmixcrlf) op: Equal rhs: {($ VSub_Number "$1")} spids: [933] ) ] spids: [933] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lfmixcr) op: Equal rhs: {($ VSub_Number "$1")} spids: [941] ) ] spids: [941] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:crlfnul) op: Equal rhs: {($ VSub_Number "$1")} spids: [949] ) ] spids: [949] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pfx) op: Equal rhs: {(NNO_attr_) (${ VSub_Name attr) (_aeol_) (${ VSub_Name aeol) (_) (${ VSub_Name crlf) } spids: [957] ) ] spids: [957] ) (AndOr children: [ (C {(create_gitattributes)} {(DQ ($ VSub_Name "$attr"))} {($ VSub_Name "$aeol")}) (ForEach iter_name: f iter_words: [{(LF)} {(CRLF)} {(CRLF_mix_LF)} {(LF_mix_CR)} {(CRLF_nul)}] do_arg_iter: False body: (DoGroup children: [ (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:fname) op: Equal rhs: {(${ VSub_Name pfx) (_) ($ VSub_Name "$f") (.txt)} spids: [1007] ) ] spids: [1007] ) (AndOr children: [ (C {(cp)} {($ VSub_Name "$f")} {($ VSub_Name "$fname")}) (AndOr children: [ (SimpleCommand words: [{(printf)} {(Z)}] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {(DQ ($ VSub_Name "$fname"))} spids: [1031] ) ] ) (SimpleCommand words: [ {(git)} {(-c)} {(core.autocrlf) (Lit_Other "=") ($ VSub_Name "$crlf")} {(add)} {($ VSub_Name "$fname")} ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(DQ (${ VSub_Name pfx) (_) ($ VSub_Name "$f") (.err))} spids: [1051] ) ] ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [1004 1062] ) spids: [992 -1] ) ] op_id: Op_DAmp ) (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: [890] ) spids: [885 889] ) (FuncDef name: stats_ascii body: (BraceGroup children: [ (Case to_match: {(DQ ($ VSub_Number "$1"))} arms: [ (case_arm pat_list: [{(LF)}] action: [(C {(echo)} {(lf)})] spids: [1181 1182 1190 -1] ) (case_arm pat_list: [{(CRLF)}] action: [(C {(echo)} {(crlf)})] spids: [1193 1194 1202 -1] ) (case_arm pat_list: [{(CRLF_mix_LF)}] action: [(C {(echo)} {(mixed)})] spids: [1205 1206 1214 -1] ) (case_arm pat_list: [{(LF_mix_CR)} {(CRLF_nul)} {(LF_nul)} {(CRLF_mix_CR)}] action: [(C {(echo)} {(DQ (-text))})] spids: [1217 1224 1234 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [(C {(echo)} {(error_invalid)} {($ VSub_Number "$1")})] spids: [1237 1238 1248 -1] ) ] spids: [1172 1178 1251] ) ] spids: [1169] ) spids: [1164 1168] ) (FuncDef name: attr_ascii body: (BraceGroup children: [ (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: [1284 1287 1295 -1] ) (case_arm pat_list: [{(text) (Lit_Comma ",")}] action: [(C {(echo)} {(DQ (text))})] spids: [1298 1300 1308 -1] ) (case_arm pat_list: [{(text) (Lit_Comma ",") (lf)}] action: [(C {(echo)} {(DQ ("text eol=lf"))})] spids: [1311 1314 1322 -1] ) (case_arm pat_list: [{(text) (Lit_Comma ",") (crlf)}] action: [(C {(echo)} {(DQ ("text eol=crlf"))})] spids: [1325 1328 1336 -1] ) (case_arm pat_list: [{(auto) (Lit_Comma ",")}] action: [(C {(echo)} {(DQ ("text=auto"))})] spids: [1339 1341 1349 -1] ) (case_arm pat_list: [{(auto) (Lit_Comma ",") (lf)}] action: [(C {(echo)} {(DQ ("text=auto eol=lf"))})] spids: [1352 1355 1363 -1] ) (case_arm pat_list: [{(auto) (Lit_Comma ",") (crlf)}] action: [(C {(echo)} {(DQ ("text=auto eol=crlf"))})] spids: [1366 1369 1377 -1] ) (case_arm pat_list: [{(lf) (Lit_Comma ",")}] action: [(C {(echo)} {(DQ ("text eol=lf"))})] spids: [1380 1382 1390 -1] ) (case_arm pat_list: [{(crlf) (Lit_Comma ",")}] action: [(C {(echo)} {(DQ ("text eol=crlf"))})] spids: [1393 1395 1403 -1] ) (case_arm pat_list: [{(Lit_Comma ",")}] action: [(C {(echo)} {(DQ )})] spids: [1406 1407 1414 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (C {(echo)} {(invalid_attr)} {(DQ ($ VSub_Number "$1") (",") ($ VSub_Number "$2"))}) ] spids: [1417 1418 1430 -1] ) ] spids: [1275 1281 1433] ) ] spids: [1272] ) spids: [1267 1271] ) (FuncDef name: check_files_in_repo body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:crlf) op: Equal rhs: {($ VSub_Number "$1")} spids: [1446] ) ] spids: [1446] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:attr) op: Equal rhs: {($ VSub_Number "$2")} spids: [1450] ) ] spids: [1450] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lfname) op: Equal rhs: {($ VSub_Number "$3")} spids: [1454] ) ] spids: [1454] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:crlfname) op: Equal rhs: {($ VSub_Number "$4")} spids: [1458] ) ] spids: [1458] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lfmixcrlf) op: Equal rhs: {($ VSub_Number "$5")} spids: [1462] ) ] spids: [1462] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lfmixcr) op: Equal rhs: {($ VSub_Number "$6")} spids: [1466] ) ] spids: [1466] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:crlfnul) op: Equal rhs: {($ VSub_Number "$7")} spids: [1470] ) ] spids: [1470] ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pfx) op: Equal rhs: {(crlf_) (${ VSub_Name crlf) (_attr_) (${ VSub_Name attr) (_)} spids: [1474] ) ] spids: [1474] ) (AndOr children: [ (C {(compare_files)} {($ VSub_Name "$lfname")} {(${ VSub_Name pfx) (LF.txt)}) (AndOr children: [ (C {(compare_files)} {($ VSub_Name "$crlfname")} {(${ VSub_Name pfx) (CRLF.txt)}) (AndOr children: [ (C {(compare_files)} {($ VSub_Name "$lfmixcrlf")} {(${ VSub_Name pfx) (CRLF_mix_LF.txt)} ) (AndOr children: [ (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)} ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [1443] ) spids: [1438 1442] ) (FuncDef name: check_in_repo_NNO body: (BraceGroup children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:attr) op: Equal rhs: {($ VSub_Number "$1")} spids: [1556] ) ] spids: [1556] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:aeol) op: Equal rhs: {($ VSub_Number "$1")} spids: [1564] ) ] spids: [1564] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:crlf) op: Equal rhs: {($ VSub_Number "$1")} spids: [1572] ) ] spids: [1572] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lfname) op: Equal rhs: {($ VSub_Number "$1")} spids: [1580] ) ] spids: [1580] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:crlfname) op: Equal rhs: {($ VSub_Number "$1")} spids: [1588] ) ] spids: [1588] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lfmixcrlf) op: Equal rhs: {($ VSub_Number "$1")} spids: [1596] ) ] spids: [1596] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lfmixcr) op: Equal rhs: {($ VSub_Number "$1")} spids: [1604] ) ] spids: [1604] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:crlfnul) op: Equal rhs: {($ VSub_Number "$1")} spids: [1612] ) ] spids: [1612] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pfx) op: Equal rhs: {(NNO_attr_) (${ VSub_Name attr) (_aeol_) (${ VSub_Name aeol) (_) (${ VSub_Name crlf) } spids: [1620] ) ] spids: [1620] ) (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: [1553] ) spids: [1548 1552] ) (FuncDef name: checkout_files body: (BraceGroup children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:attr) op: Equal rhs: {($ VSub_Number "$1")} spids: [1740] ) ] spids: [1740] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ident) op: Equal rhs: {($ VSub_Number "$1")} spids: [1748] ) ] spids: [1748] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:aeol) op: Equal rhs: {($ VSub_Number "$1")} spids: [1755] ) ] spids: [1755] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:crlf) op: Equal rhs: {($ VSub_Number "$1")} spids: [1763] ) ] spids: [1763] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ceol) op: Equal rhs: {($ VSub_Number "$1")} spids: [1771] ) ] spids: [1771] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lfname) op: Equal rhs: {($ VSub_Number "$1")} spids: [1779] ) ] spids: [1779] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:crlfname) op: Equal rhs: {($ VSub_Number "$1")} spids: [1787] ) ] spids: [1787] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lfmixcrlf) op: Equal rhs: {($ VSub_Number "$1")} spids: [1795] ) ] spids: [1795] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lfmixcr) op: Equal rhs: {($ VSub_Number "$1")} spids: [1803] ) ] spids: [1803] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:crlfnul) op: Equal rhs: {($ VSub_Number "$1")} spids: [1811] ) ] spids: [1811] ) terminator: <Op_Semi ";"> ) (C {(shift)}) (AndOr children: [ (C {(create_gitattributes)} {(DQ ($ VSub_Name "$attr"))} {($ VSub_Name "$ident")} {($ VSub_Name "$aeol")} ) (AndOr children: [ (C {(git)} {(config)} {(core.autocrlf)} {($ VSub_Name "$crlf")}) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pfx) op: Equal rhs: {(eol_) (${ VSub_Name ceol) (_crlf_) (${ VSub_Name crlf) (_attr_) (${ VSub_Name attr) (_) } spids: [1843] ) ] spids: [1843] ) (ForEach iter_name: f iter_words: [{(LF)} {(CRLF)} {(LF_mix_CR)} {(CRLF_mix_LF)} {(LF_nul)}] do_arg_iter: False body: (DoGroup children: [ (AndOr children: [ (C {(rm)} {(crlf_false_attr__) ($ VSub_Name "$f") (.txt)}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(-z)} {(DQ ($ VSub_Name "$ceol"))}) terminator: <Op_Semi ";"> ) ] action: [ (C {(git)} {(checkout)} {(crlf_false_attr__) ($ VSub_Name "$f") (.txt)} ) ] spids: [-1 1901] ) ] else_action: [ (C {(git)} {(-c)} {(core.eol) (Lit_Other "=") ($ VSub_Name "$ceol")} {(checkout)} {(crlf_false_attr__) ($ VSub_Name "$f") (.txt)} ) ] spids: [1913 1931] ) ] op_id: Op_DAmp ) ] spids: [1878 1934] ) spids: [1866 -1] ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) (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: [1737] ) spids: [1732 1736] ) (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"> ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:warn_LF_CRLF) op: Equal rhs: {(DQ ("LF will be replaced by CRLF"))} spids: [2184] ) ] spids: [2184] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:warn_CRLF_LF) op: Equal rhs: {(DQ ("CRLF will be replaced by LF"))} spids: [2189] ) ] spids: [2189] ) (If arms: [ (if_arm cond: [(C {(test_have_prereq)} {(NATIVE_CRLF)})] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:WILC) op:Equal rhs:{(LF_CRLF)} spids:[2213])] spids: [2213] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:WICL) op:Equal rhs:{(SQ )} spids:[2217])] spids: [2217] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:WAMIX) op:Equal rhs:{(LF_CRLF)} spids:[2220])] spids: [2220] ) ] spids: [-1 2210] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:WILC) op:Equal rhs:{(SQ )} spids:[2226])] spids: [2226] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:WICL) op:Equal rhs:{(CRLF_LF)} spids:[2229])] spids: [2229] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:WAMIX) op:Equal rhs:{(CRLF_LF)} spids:[2233])] spids: [2233] ) ] spids: [2223 2236] ) (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 )}) (ForEach iter_name: crlf iter_words: [{(true)} {(false)} {(input)}] do_arg_iter: False body: (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: [2494 2702] ) spids: [2487 -1] ) (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"> ) } ) (ForEach iter_name: crlf iter_words: [{(true)} {(false)} {(input)}] do_arg_iter: False body: (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: [2865 3066] ) spids: [2858 -1] ) (If arms: [ (if_arm cond: [(C {(test_have_prereq)} {(NATIVE_CRLF)})] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:MIX_CRLF_LF) op:Equal rhs:{(CRLF)} spids:[3125])] spids: [3125] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MIX_LF_CR) op: Equal rhs: {(CRLF_mix_CR)} spids: [3128] ) ] spids: [3128] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:NL) op:Equal rhs:{(CRLF)} spids:[3131])] spids: [3131] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:LFNUL) op:Equal rhs:{(CRLF_nul)} spids:[3134])] spids: [3134] ) ] spids: [-1 3123] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MIX_CRLF_LF) op: Equal rhs: {(CRLF_mix_LF)} spids: [3139] ) ] spids: [3139] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:MIX_LF_CR) op:Equal rhs:{(LF_mix_CR)} spids:[3142])] spids: [3142] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:NL) op:Equal rhs:{(LF)} spids:[3145])] spids: [3145] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:LFNUL) op:Equal rhs:{(LF_nul)} spids:[3148])] spids: [3148] ) ] spids: [3137 3151] ) (C {(export)} {(CRLF_MIX_LF_CR)} {(MIX)} {(NL)}) (ForEach iter_name: id iter_words: [{(DQ )} {(ident)}] do_arg_iter: False body: (DoGroup children: [ (ForEach iter_name: ceol iter_words: [{(lf)} {(crlf)} {(native)}] do_arg_iter: False body: (DoGroup children: [ (ForEach iter_name: crlf iter_words: [{(true)} {(false)} {(input)}] do_arg_iter: False body: (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: [3208 3443] ) spids: [3200 -1] ) (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: [3192 3637] ) spids: [3184 -1] ) (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: [3176 3809] ) spids: [3170 -1] ) (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)}) ] )