(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"git cat-file filters support">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ <"setup ">)} { (SQ <"\n"> <"\techo \"*.txt eol=crlf diff=txt\" >.gitattributes &&\n"> <"\techo \"hello\" | append_cr >world.txt &&\n"> <"\tgit add .gitattributes world.txt &&\n"> <"\ttest_tick &&\n"> <"\tgit commit -m \"Initial commit\"\n"> ) } ) (FuncDef name: has_cr body: (BraceGroup children: [ (Pipeline children: [ (SimpleCommand words: [{(tr)} {(SQ <"\\015">)} {(Q)}] redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(DQ ($ VSub_Number "$1"))} spids: [46] ) ] ) (SimpleCommand words: [{(grep)} {(Q)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[57])] ) ] negated: False ) ] spids: [35] ) spids: [30 34] ) (C {(test_expect_success)} {(SQ <"no filters with `git show`">)} {(SQ <"\n"> <"\tgit show HEAD:world.txt >actual &&\n"> <"\t! has_cr actual\n"> <"\n">)} ) (C {(test_expect_success)} {(SQ <"no filters with cat-file">)} {(SQ <"\n"> <"\tgit cat-file blob HEAD:world.txt >actual &&\n"> <"\t! has_cr actual\n">)} ) (C {(test_expect_success)} {(SQ <"cat-file --filters converts to worktree version">)} {(SQ <"\n"> <"\tgit cat-file --filters HEAD:world.txt >actual &&\n"> <"\thas_cr actual\n">)} ) (C {(test_expect_success)} {(SQ <"cat-file --filters --path=<path> works">)} { (SQ <"\n"> <"\tsha1=$(git rev-parse -q --verify HEAD:world.txt) &&\n"> <"\tgit cat-file --filters --path=world.txt $sha1 >actual &&\n"> <"\thas_cr actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"cat-file --textconv --path=<path> works">)} { (SQ <"\n"> <"\tsha1=$(git rev-parse -q --verify HEAD:world.txt) &&\n"> <"\ttest_config diff.txt.textconv \"tr A-Za-z N-ZA-Mn-za-m <\" &&\n"> <"\tgit cat-file --textconv --path=hello.txt $sha1 >rot13 &&\n"> <"\ttest uryyb = \"$(cat rot13 | remove_cr)\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"--path=<path> complains without --textconv/--filters">)} { (SQ <"\n"> <"\tsha1=$(git rev-parse -q --verify HEAD:world.txt) &&\n"> <"\ttest_must_fail git cat-file --path=hello.txt blob $sha1 >actual 2>err &&\n"> <"\ttest ! -s actual &&\n"> <"\tgrep \"path.*needs.*filters\" err\n"> ) } ) (C {(test_expect_success)} {(SQ <"cat-file --textconv --batch works">)} { (SQ <"\n"> <"\tsha1=$(git rev-parse -q --verify HEAD:world.txt) &&\n"> <"\ttest_config diff.txt.textconv \"tr A-Za-z N-ZA-Mn-za-m <\" &&\n"> <"\tprintf \"%s hello.txt\\n%s hello\\n\" $sha1 $sha1 |\n"> <"\tgit cat-file --textconv --batch >actual &&\n"> <"\tprintf \"%s blob 6\\nuryyb\\r\\n\\n%s blob 6\\nhello\\n\\n\" \\\n"> <"\t\t$sha1 $sha1 >expect &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_done)}) ] )