(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:'\techo "one text" > .gitattributes &&\n' span_id:56) (Token id:Id.Lit_Chars val:'\n' span_id:57) (Token id: Id.Lit_Chars val: '\tfor w in Hello world how are you; do echo $w; done >one &&\n' span_id: 58 ) (Token id: Id.Lit_Chars val: '\tfor w in I am very very fine thank you; do echo $w; done >two &&\n' span_id: 59 ) (Token id:Id.Lit_Chars val:'\tgit add . &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\n' span_id:61) (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:62) (Token id:Id.Lit_Chars val:'\n' span_id:63) (Token id:Id.Lit_Chars val:'\tone=$(git rev-parse HEAD:one) &&\n' span_id:64) (Token id:Id.Lit_Chars val:'\ttwo=$(git rev-parse HEAD:two) &&\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:'eol=lf puts LFs in normalized file' 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 one two &&\n' span_id:80) (Token id:Id.Lit_Chars val:'\tgit config core.eol lf &&\n' span_id:81) (Token id:Id.Lit_Chars val:'\tgit read-tree --reset -u HEAD &&\n' span_id:82) (Token id:Id.Lit_Chars val:'\n' span_id:83) (Token id:Id.Lit_Chars val:'\t! has_cr one &&\n' span_id:84) (Token id:Id.Lit_Chars val:'\t! has_cr two &&\n' span_id:85) (Token id:Id.Lit_Chars val:'\tonediff=$(git diff one) &&\n' span_id:86) (Token id:Id.Lit_Chars val:'\ttwodiff=$(git diff two) &&\n' span_id:87) (Token id: Id.Lit_Chars val: '\ttest -z "$onediff" && test -z "$twodiff"\n' span_id: 88 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'eol=crlf puts CRLFs in normalized file' 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:'\trm -f .gitattributes tmp one two &&\n' span_id:101) (Token id:Id.Lit_Chars val:'\tgit config core.eol crlf &&\n' span_id:102) (Token id:Id.Lit_Chars val:'\tgit read-tree --reset -u HEAD &&\n' span_id:103) (Token id:Id.Lit_Chars val:'\n' span_id:104) (Token id:Id.Lit_Chars val:'\thas_cr one &&\n' span_id:105) (Token id:Id.Lit_Chars val:'\t! has_cr two &&\n' span_id:106) (Token id:Id.Lit_Chars val:'\tonediff=$(git diff one) &&\n' span_id:107) (Token id:Id.Lit_Chars val:'\ttwodiff=$(git diff two) &&\n' span_id:108) (Token id: Id.Lit_Chars val: '\ttest -z "$onediff" && test -z "$twodiff"\n' span_id: 109 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'autocrlf=true overrides eol=lf' 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 one two &&\n' span_id:122) (Token id:Id.Lit_Chars val:'\tgit config core.eol lf &&\n' span_id:123) (Token id:Id.Lit_Chars val:'\tgit config core.autocrlf true &&\n' span_id:124) (Token id:Id.Lit_Chars val:'\tgit read-tree --reset -u HEAD &&\n' span_id:125) (Token id:Id.Lit_Chars val:'\n' span_id:126) (Token id:Id.Lit_Chars val:'\thas_cr one &&\n' span_id:127) (Token id:Id.Lit_Chars val:'\thas_cr two &&\n' span_id:128) (Token id:Id.Lit_Chars val:'\tonediff=$(git diff one) &&\n' span_id:129) (Token id:Id.Lit_Chars val:'\ttwodiff=$(git diff two) &&\n' span_id:130) (Token id:Id.Lit_Chars val:'\ttest -z "$onediff" && test -z "$twodiff"\n' span_id:131) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'autocrlf=true overrides unset eol' span_id:138))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:142) (Token id:Id.Lit_Chars val:'\n' span_id:143) (Token id:Id.Lit_Chars val:'\trm -f .gitattributes tmp one two &&\n' span_id:144) (Token id:Id.Lit_Chars val:'\tgit config --unset-all core.eol &&\n' span_id:145) (Token id:Id.Lit_Chars val:'\tgit config core.autocrlf true &&\n' span_id:146) (Token id:Id.Lit_Chars val:'\tgit read-tree --reset -u HEAD &&\n' span_id:147) (Token id:Id.Lit_Chars val:'\n' span_id:148) (Token id:Id.Lit_Chars val:'\thas_cr one &&\n' span_id:149) (Token id:Id.Lit_Chars val:'\thas_cr two &&\n' span_id:150) (Token id:Id.Lit_Chars val:'\tonediff=$(git diff one) &&\n' span_id:151) (Token id:Id.Lit_Chars val:'\ttwodiff=$(git diff two) &&\n' span_id:152) (Token id:Id.Lit_Chars val:'\ttest -z "$onediff" && test -z "$twodiff"\n' span_id:153) ) } ) (C {(test_expect_success)} {(NATIVE_CRLF)} {(SQ (Token id:Id.Lit_Chars val:'eol native is crlf' span_id:162))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:166) (Token id:Id.Lit_Chars val:'\n' span_id:167) (Token id: Id.Lit_Chars val: '\trm -rf native_eol && mkdir native_eol &&\n' span_id: 168 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:169) (Token id:Id.Lit_Chars val:'\t\tcd native_eol &&\n' span_id:170) (Token id:Id.Lit_Chars val:'\t\tprintf "*.txt text\\n" >.gitattributes &&\n' span_id:171) (Token id: Id.Lit_Chars val: '\t\tprintf "one\\r\\ntwo\\r\\nthree\\r\\n" >filedos.txt &&\n' span_id: 172 ) (Token id:Id.Lit_Chars val:'\t\tprintf "one\\ntwo\\nthree\\n" >fileunix.txt &&\n' span_id:173) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:174) (Token id:Id.Lit_Chars val:'\t\tgit config core.autocrlf false &&\n' span_id:175) (Token id:Id.Lit_Chars val:'\t\tgit config core.eol native &&\n' span_id:176) (Token id:Id.Lit_Chars val:'\t\tgit add filedos.txt fileunix.txt &&\n' span_id:177) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "first" &&\n' span_id:178) (Token id:Id.Lit_Chars val:'\t\trm file*.txt &&\n' span_id:179) (Token id:Id.Lit_Chars val:'\t\tgit reset --hard HEAD &&\n' span_id:180) (Token id:Id.Lit_Chars val:'\t\thas_cr filedos.txt &&\n' span_id:181) (Token id:Id.Lit_Chars val:'\t\thas_cr fileunix.txt\n' span_id:182) (Token id:Id.Lit_Chars val:'\t)\n' span_id:183) ) } ) (C {(test_done)}) ] )