(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'git cat-file filters support' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup ' span_id:17))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:21) (Token id: Id.Lit_Chars val: '\techo "*.txt eol=crlf diff=txt" >.gitattributes &&\n' span_id: 22 ) (Token id:Id.Lit_Chars val:'\techo "hello" | append_cr >world.txt &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\tgit add .gitattributes world.txt &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\tgit commit -m "Initial commit"\n' span_id:26) ) } ) (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:41))} {(Q)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:46) 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:57) fd: -1 arg_word: {(/dev/null)} ) ] ) ] negated: F ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no filters with `git show`' span_id:66))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:70) (Token id:Id.Lit_Chars val:'\tgit show HEAD:world.txt >actual &&\n' span_id:71) (Token id:Id.Lit_Chars val:'\t! has_cr actual\n' span_id:72) (Token id:Id.Lit_Chars val:'\n' span_id:73) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no filters with cat-file' span_id:80))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:84) (Token id: Id.Lit_Chars val: '\tgit cat-file blob HEAD:world.txt >actual &&\n' span_id: 85 ) (Token id:Id.Lit_Chars val:'\t! has_cr actual\n' span_id:86) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cat-file --filters converts to worktree version' span_id:93))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:97) (Token id: Id.Lit_Chars val: '\tgit cat-file --filters HEAD:world.txt >actual &&\n' span_id: 98 ) (Token id:Id.Lit_Chars val:'\thas_cr actual\n' span_id:99) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cat-file --filters --path=<path> works' span_id:106))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:110) (Token id: Id.Lit_Chars val: '\tsha1=$(git rev-parse -q --verify HEAD:world.txt) &&\n' span_id: 111 ) (Token id: Id.Lit_Chars val: '\tgit cat-file --filters --path=world.txt $sha1 >actual &&\n' span_id: 112 ) (Token id:Id.Lit_Chars val:'\thas_cr actual\n' span_id:113) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cat-file --textconv --path=<path> works' span_id:120))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:124) (Token id: Id.Lit_Chars val: '\tsha1=$(git rev-parse -q --verify HEAD:world.txt) &&\n' span_id: 125 ) (Token id: Id.Lit_Chars val: '\ttest_config diff.txt.textconv "tr A-Za-z N-ZA-Mn-za-m <" &&\n' span_id: 126 ) (Token id: Id.Lit_Chars val: '\tgit cat-file --textconv --path=hello.txt $sha1 >rot13 &&\n' span_id: 127 ) (Token id:Id.Lit_Chars val:'\ttest uryyb = "$(cat rot13 | remove_cr)"\n' span_id:128) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '--path=<path> complains without --textconv/--filters' span_id: 135 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:139) (Token id: Id.Lit_Chars val: '\tsha1=$(git rev-parse -q --verify HEAD:world.txt) &&\n' span_id: 140 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git cat-file --path=hello.txt blob $sha1 >actual 2>err &&\n' span_id: 141 ) (Token id:Id.Lit_Chars val:'\ttest ! -s actual &&\n' span_id:142) (Token id:Id.Lit_Chars val:'\tgrep "path.*needs.*filters" err\n' span_id:143) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cat-file --textconv --batch works' span_id:150))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:154) (Token id: Id.Lit_Chars val: '\tsha1=$(git rev-parse -q --verify HEAD:world.txt) &&\n' span_id: 155 ) (Token id: Id.Lit_Chars val: '\ttest_config diff.txt.textconv "tr A-Za-z N-ZA-Mn-za-m <" &&\n' span_id: 156 ) (Token id:Id.Lit_Chars val:'\tprintf "%s hello.txt\\n%s hello\\n" $sha1 $sha1 |\n' span_id:157) (Token id: Id.Lit_Chars val: '\tgit cat-file --textconv --batch >actual &&\n' span_id: 158 ) (Token id: Id.Lit_Chars val: '\tprintf "%s blob 6\\nuryyb\\r\\n\\n%s blob 6\\nhello\\n\\n" \\\n' span_id: 159 ) (Token id:Id.Lit_Chars val:'\t\t$sha1 $sha1 >expect &&\n' span_id:160) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:161) ) } ) (C {(test_done)}) ] )