(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:'CRLF conversion' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (command.ShFunction name: has_cr body: (command.BraceGroup children: [ (command.Pipeline children: [ (command.Simple words: [{(tr)} {(SQ (Token id:Id.Lit_Chars val:'\\015' span_id:25))} {(Q)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:30) fd: -1 arg_word: {(DQ ($ Id.VSub_Number '$1'))} ) ] ) (command.Simple words: [{(grep)} {(Q)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:41) fd: -1 arg_word: {(/dev/null)} ) ] ) ] negated: F ) ] ) ) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:52) (Token id:Id.Lit_Chars val:'\n' span_id:53) (Token id:Id.Lit_Chars val:'\tgit config core.autocrlf false &&\n' span_id:54) (Token id:Id.Lit_Chars val:'\n' span_id:55) (Token id: Id.Lit_Chars val: '\tfor w in Hello world how are you; do echo $w; done >LFonly &&\n' span_id: 56 ) (Token id: Id.Lit_Chars val: '\tfor w in I am very very fine thank you; do echo ${w}Q; done | q_to_cr >CRLFonly &&\n' span_id: 57 ) (Token id: Id.Lit_Chars val: '\tfor w in Oh here is a QNUL byte how alarming; do echo ${w}; done | q_to_nul >LFwithNUL &&\n' span_id: 58 ) (Token id:Id.Lit_Chars val:'\tgit add . &&\n' span_id:59) (Token id:Id.Lit_Chars val:'\n' span_id:60) (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:61) (Token id:Id.Lit_Chars val:'\n' span_id:62) (Token id: Id.Lit_Chars val: '\tLFonly=$(git rev-parse HEAD:LFonly) &&\n' span_id: 63 ) (Token id:Id.Lit_Chars val:'\tCRLFonly=$(git rev-parse HEAD:CRLFonly) &&\n' span_id:64) (Token id: Id.Lit_Chars val: '\tLFwithNUL=$(git rev-parse HEAD:LFwithNUL) &&\n' span_id: 65 ) (Token id:Id.Lit_Chars val:'\n' span_id:66) (Token id:Id.Lit_Chars val:'\techo happy.\n' span_id:67) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'default settings cause no changes' span_id:74))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:78) (Token id:Id.Lit_Chars val:'\n' span_id:79) (Token id: Id.Lit_Chars val: '\trm -f .gitattributes tmp LFonly CRLFonly LFwithNUL &&\n' span_id: 80 ) (Token id:Id.Lit_Chars val:'\tgit read-tree --reset -u HEAD &&\n' span_id:81) (Token id:Id.Lit_Chars val:'\n' span_id:82) (Token id:Id.Lit_Chars val:'\t! has_cr LFonly &&\n' span_id:83) (Token id:Id.Lit_Chars val:'\thas_cr CRLFonly &&\n' span_id:84) (Token id:Id.Lit_Chars val:'\tLFonlydiff=$(git diff LFonly) &&\n' span_id:85) (Token id:Id.Lit_Chars val:'\tCRLFonlydiff=$(git diff CRLFonly) &&\n' span_id:86) (Token id:Id.Lit_Chars val:'\tLFwithNULdiff=$(git diff LFwithNUL) &&\n' span_id:87) (Token id: Id.Lit_Chars val: '\ttest -z "$LFonlydiff" -a -z "$CRLFonlydiff" -a -z "$LFwithNULdiff"\n' span_id: 88 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'crlf=true causes a CRLF file to be normalized' span_id:95))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:99) (Token id:Id.Lit_Chars val:'\n' span_id:100) (Token id:Id.Lit_Chars val:'\t# Backwards compatibility check\n' span_id:101) (Token id:Id.Lit_Chars val:'\trm -f .gitattributes tmp LFonly CRLFonly LFwithNUL &&\n' span_id:102) (Token id: Id.Lit_Chars val: '\techo "CRLFonly crlf" > .gitattributes &&\n' span_id: 103 ) (Token id:Id.Lit_Chars val:'\tgit read-tree --reset -u HEAD &&\n' span_id:104) (Token id:Id.Lit_Chars val:'\n' span_id:105) (Token id: Id.Lit_Chars val: '\t# Note, "normalized" means that git will normalize it if added\n' span_id: 106 ) (Token id:Id.Lit_Chars val:'\thas_cr CRLFonly &&\n' span_id:107) (Token id: Id.Lit_Chars val: '\tCRLFonlydiff=$(git diff CRLFonly) &&\n' span_id: 108 ) (Token id:Id.Lit_Chars val:'\ttest -n "$CRLFonlydiff"\n' span_id:109) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'text=true causes a CRLF file to be normalized' span_id:116))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:120) (Token id:Id.Lit_Chars val:'\n' span_id:121) (Token id: Id.Lit_Chars val: '\trm -f .gitattributes tmp LFonly CRLFonly LFwithNUL &&\n' span_id: 122 ) (Token id:Id.Lit_Chars val:'\techo "CRLFonly text" > .gitattributes &&\n' span_id:123) (Token id:Id.Lit_Chars val:'\tgit read-tree --reset -u HEAD &&\n' span_id:124) (Token id:Id.Lit_Chars val:'\n' span_id:125) (Token id: Id.Lit_Chars val: '\t# Note, "normalized" means that git will normalize it if added\n' span_id: 126 ) (Token id:Id.Lit_Chars val:'\thas_cr CRLFonly &&\n' span_id:127) (Token id: Id.Lit_Chars val: '\tCRLFonlydiff=$(git diff CRLFonly) &&\n' span_id: 128 ) (Token id:Id.Lit_Chars val:'\ttest -n "$CRLFonlydiff"\n' span_id:129) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'eol=crlf gives a normalized file CRLFs with autocrlf=false' span_id: 136 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:140) (Token id:Id.Lit_Chars val:'\n' span_id:141) (Token id: Id.Lit_Chars val: '\trm -f .gitattributes tmp LFonly CRLFonly LFwithNUL &&\n' span_id: 142 ) (Token id:Id.Lit_Chars val:'\tgit config core.autocrlf false &&\n' span_id:143) (Token id: Id.Lit_Chars val: '\techo "LFonly eol=crlf" > .gitattributes &&\n' span_id: 144 ) (Token id:Id.Lit_Chars val:'\tgit read-tree --reset -u HEAD &&\n' span_id:145) (Token id:Id.Lit_Chars val:'\n' span_id:146) (Token id:Id.Lit_Chars val:'\thas_cr LFonly &&\n' span_id:147) (Token id:Id.Lit_Chars val:'\tLFonlydiff=$(git diff LFonly) &&\n' span_id:148) (Token id:Id.Lit_Chars val:'\ttest -z "$LFonlydiff"\n' span_id:149) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'eol=crlf gives a normalized file CRLFs with autocrlf=input' span_id: 156 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:160) (Token id:Id.Lit_Chars val:'\n' span_id:161) (Token id: Id.Lit_Chars val: '\trm -f .gitattributes tmp LFonly CRLFonly LFwithNUL &&\n' span_id: 162 ) (Token id:Id.Lit_Chars val:'\tgit config core.autocrlf input &&\n' span_id:163) (Token id: Id.Lit_Chars val: '\techo "LFonly eol=crlf" > .gitattributes &&\n' span_id: 164 ) (Token id:Id.Lit_Chars val:'\tgit read-tree --reset -u HEAD &&\n' span_id:165) (Token id:Id.Lit_Chars val:'\n' span_id:166) (Token id:Id.Lit_Chars val:'\thas_cr LFonly &&\n' span_id:167) (Token id:Id.Lit_Chars val:'\tLFonlydiff=$(git diff LFonly) &&\n' span_id:168) (Token id:Id.Lit_Chars val:'\ttest -z "$LFonlydiff"\n' span_id:169) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'eol=lf gives a normalized file LFs with autocrlf=true' span_id: 176 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:180) (Token id:Id.Lit_Chars val:'\n' span_id:181) (Token id: Id.Lit_Chars val: '\trm -f .gitattributes tmp LFonly CRLFonly LFwithNUL &&\n' span_id: 182 ) (Token id:Id.Lit_Chars val:'\tgit config core.autocrlf true &&\n' span_id:183) (Token id: Id.Lit_Chars val: '\techo "LFonly eol=lf" > .gitattributes &&\n' span_id: 184 ) (Token id:Id.Lit_Chars val:'\tgit read-tree --reset -u HEAD &&\n' span_id:185) (Token id:Id.Lit_Chars val:'\n' span_id:186) (Token id:Id.Lit_Chars val:'\t! has_cr LFonly &&\n' span_id:187) (Token id:Id.Lit_Chars val:'\tLFonlydiff=$(git diff LFonly) &&\n' span_id:188) (Token id:Id.Lit_Chars val:'\ttest -z "$LFonlydiff"\n' span_id:189) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'autocrlf=true does not normalize CRLF files' span_id:196))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:200) (Token id:Id.Lit_Chars val:'\n' span_id:201) (Token id: Id.Lit_Chars val: '\trm -f .gitattributes tmp LFonly CRLFonly LFwithNUL &&\n' span_id: 202 ) (Token id:Id.Lit_Chars val:'\tgit config core.autocrlf true &&\n' span_id:203) (Token id:Id.Lit_Chars val:'\tgit read-tree --reset -u HEAD &&\n' span_id:204) (Token id:Id.Lit_Chars val:'\n' span_id:205) (Token id:Id.Lit_Chars val:'\thas_cr LFonly &&\n' span_id:206) (Token id:Id.Lit_Chars val:'\thas_cr CRLFonly &&\n' span_id:207) (Token id:Id.Lit_Chars val:'\tLFonlydiff=$(git diff LFonly) &&\n' span_id:208) (Token id:Id.Lit_Chars val:'\tCRLFonlydiff=$(git diff CRLFonly) &&\n' span_id:209) (Token id: Id.Lit_Chars val: '\tLFwithNULdiff=$(git diff LFwithNUL) &&\n' span_id: 210 ) (Token id: Id.Lit_Chars val: '\ttest -z "$LFonlydiff" -a -z "$CRLFonlydiff" -a -z "$LFwithNULdiff"\n' span_id: 211 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'text=auto, autocrlf=true does not normalize CRLF files' span_id: 218 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:222) (Token id:Id.Lit_Chars val:'\n' span_id:223) (Token id: Id.Lit_Chars val: '\trm -f .gitattributes tmp LFonly CRLFonly LFwithNUL &&\n' span_id: 224 ) (Token id:Id.Lit_Chars val:'\tgit config core.autocrlf true &&\n' span_id:225) (Token id: Id.Lit_Chars val: '\techo "* text=auto" > .gitattributes &&\n' span_id: 226 ) (Token id:Id.Lit_Chars val:'\tgit read-tree --reset -u HEAD &&\n' span_id:227) (Token id:Id.Lit_Chars val:'\n' span_id:228) (Token id:Id.Lit_Chars val:'\thas_cr LFonly &&\n' span_id:229) (Token id:Id.Lit_Chars val:'\thas_cr CRLFonly &&\n' span_id:230) (Token id:Id.Lit_Chars val:'\tLFonlydiff=$(git diff LFonly) &&\n' span_id:231) (Token id: Id.Lit_Chars val: '\tCRLFonlydiff=$(git diff CRLFonly) &&\n' span_id: 232 ) (Token id:Id.Lit_Chars val:'\tLFwithNULdiff=$(git diff LFwithNUL) &&\n' span_id:233) (Token id: Id.Lit_Chars val: '\ttest -z "$LFonlydiff" -a -z "$CRLFonlydiff" -a -z "$LFwithNULdiff"\n' span_id: 234 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'text=auto, autocrlf=true does not normalize binary files' span_id: 241 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:245) (Token id:Id.Lit_Chars val:'\n' span_id:246) (Token id: Id.Lit_Chars val: '\trm -f .gitattributes tmp LFonly CRLFonly LFwithNUL &&\n' span_id: 247 ) (Token id:Id.Lit_Chars val:'\tgit config core.autocrlf true &&\n' span_id:248) (Token id: Id.Lit_Chars val: '\techo "* text=auto" > .gitattributes &&\n' span_id: 249 ) (Token id:Id.Lit_Chars val:'\tgit read-tree --reset -u HEAD &&\n' span_id:250) (Token id:Id.Lit_Chars val:'\n' span_id:251) (Token id:Id.Lit_Chars val:'\t! has_cr LFwithNUL &&\n' span_id:252) (Token id: Id.Lit_Chars val: '\tLFwithNULdiff=$(git diff LFwithNUL) &&\n' span_id: 253 ) (Token id:Id.Lit_Chars val:'\ttest -z "$LFwithNULdiff"\n' span_id:254) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'eol=crlf _does_ normalize binary files' span_id:261))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:265) (Token id:Id.Lit_Chars val:'\n' span_id:266) (Token id: Id.Lit_Chars val: '\trm -f .gitattributes tmp LFonly CRLFonly LFwithNUL &&\n' span_id: 267 ) (Token id:Id.Lit_Chars val:'\techo "LFwithNUL eol=crlf" > .gitattributes &&\n' span_id:268) (Token id:Id.Lit_Chars val:'\tgit read-tree --reset -u HEAD &&\n' span_id:269) (Token id:Id.Lit_Chars val:'\n' span_id:270) (Token id:Id.Lit_Chars val:'\thas_cr LFwithNUL &&\n' span_id:271) (Token id:Id.Lit_Chars val:'\tLFwithNULdiff=$(git diff LFwithNUL) &&\n' span_id:272) (Token id:Id.Lit_Chars val:'\ttest -z "$LFwithNULdiff"\n' span_id:273) ) } ) (C {(test_done)}) ] )