(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"quoted output">)} spids: [13] ) ] spids: [13] ) (C {(.)} {(./test-lib.sh)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:FN) op:Equal rhs:{(SQ <"\u6ff1\u91ce">)} spids:[24])] spids: [24] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:GN) op:Equal rhs:{(SQ <"\u7d14">)} spids:[29])] spids: [29] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:HT) op:Equal rhs:{(SQ <"\t">)} spids:[34])] spids: [34] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:DQ) op:Equal rhs:{(SQ <"\"">)} spids:[39])] spids: [39] ) (AndOr children: [ (C {(test_have_prereq)} {(MINGW)}) (SimpleCommand words: [{(echo)} {(foo)}] redirects: [ (Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[55]) (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ ("Name and an") (${ VSub_Name HT) (HT))} spids: [58] ) ] ) ] op_id: Op_DPipe ) (If arms: [ (if_arm cond: [ (Pipeline children: [(C {(test)} {(-f)} {(DQ ("Name and an") (${ VSub_Name HT) (HT))})] negated: True ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:skip_all) op: Equal rhs: {(SQ <"Your filesystem does not allow tabs in filenames">)} spids: [91] ) ] spids: [91] ) (C {(test_done)}) ] spids: [-1 84] ) ] spids: [-1 99] ) (FuncDef name: for_each_name body: (BraceGroup children: [ (ForEach iter_name: name iter_words: [ {(Name)} {(DQ ("Name and a") (${ VSub_Name LF) (LF))} {(DQ ("Name and an") (${ VSub_Name HT) (HT))} {(DQ (Name) (${ VSub_Name DQ))} {(DQ ($ VSub_Name "$FN") ($ VSub_Name "$HT") ($ VSub_Name "$GN"))} {(DQ ($ VSub_Name "$FN") ($ VSub_Name "$LF") ($ VSub_Name "$GN"))} {(DQ ($ VSub_Name "$FN") (" ") ($ VSub_Name "$GN"))} {(DQ ($ VSub_Name "$FN") ($ VSub_Name "$GN"))} {(DQ ($ VSub_Name "$FN") ($ VSub_Name "$DQ") ($ VSub_Name "$GN"))} {(DQ ("With SP in it"))} {(DQ ($ VSub_Name "$FN") (/file))} ] do_arg_iter: False body: (DoGroup children:[(C {(eval)} {(DQ ($ VSub_Number "$1"))})] spids:[186196]) spids: [115 -1] ) ] spids: [107] ) spids: [102 106] ) (C {(test_expect_success)} {(SQ <setup>)} { (SQ <"\n"> <"\n"> <"\tmkdir \"$FN\" &&\n"> <"\tfor_each_name \"echo initial >\\\"\\$name\\\"\" &&\n"> <"\tgit add . &&\n"> <"\tgit commit -q -m Initial &&\n"> <"\n"> <"\tfor_each_name \"echo second >\\\"\\$name\\\"\" &&\n"> <"\tgit commit -a -m Second &&\n"> <"\n"> <"\tfor_each_name \"echo modified >\\\"\\$name\\\"\"\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"setup expected files">)} { (SQ <"\n"> <"cat >expect.quoted <<\\EOF &&\n"> <"Name\n"> <"\"Name and a\\nLF\"\n"> <"\"Name and an\\tHT\"\n"> <"\"Name\\\"\"\n"> <"With SP in it\n"> <"\"\\346\\277\\261\\351\\207\\216\\t\\347\\264\\224\"\n"> <"\"\\346\\277\\261\\351\\207\\216\\n\\347\\264\\224\"\n"> <"\"\\346\\277\\261\\351\\207\\216 \\347\\264\\224\"\n"> <"\"\\346\\277\\261\\351\\207\\216\\\"\\347\\264\\224\"\n"> <"\"\\346\\277\\261\\351\\207\\216/file\"\n"> <"\"\\346\\277\\261\\351\\207\\216\\347\\264\\224\"\n"> <"EOF\n"> <"\n"> <"cat >expect.raw <<\\EOF\n"> <"Name\n"> <"\"Name and a\\nLF\"\n"> <"\"Name and an\\tHT\"\n"> <"\"Name\\\"\"\n"> <"With SP in it\n"> <"\"\u6ff1\u91ce\\t\u7d14\"\n"> <"\"\u6ff1\u91ce\\n\u7d14\"\n"> <"\u6ff1\u91ce \u7d14\n"> <"\"\u6ff1\u91ce\\\"\u7d14\"\n"> <"\u6ff1\u91ce/file\n"> <"\u6ff1\u91ce\u7d14\n"> <"EOF\n"> ) } ) (C {(test_expect_success)} {(SQ <"check fully quoted output from ls-files">)} {(SQ <"\n"> <"\n"> <"\tgit ls-files >current && test_cmp expect.quoted current\n"> <"\n">)} ) (C {(test_expect_success)} {(SQ <"check fully quoted output from diff-files">)} { (SQ <"\n"> <"\n"> <"\tgit diff --name-only >current &&\n"> <"\ttest_cmp expect.quoted current\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"check fully quoted output from diff-index">)} { (SQ <"\n"> <"\n"> <"\tgit diff --name-only HEAD >current &&\n"> <"\ttest_cmp expect.quoted current\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"check fully quoted output from diff-tree">)} { (SQ <"\n"> <"\n"> <"\tgit diff --name-only HEAD^ HEAD >current &&\n"> <"\ttest_cmp expect.quoted current\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"check fully quoted output from ls-tree">)} { (SQ <"\n"> <"\n"> <"\tgit ls-tree --name-only -r HEAD >current &&\n"> <"\ttest_cmp expect.quoted current\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"setting core.quotepath">)} {(SQ <"\n"> <"\n"> <"\tgit config --bool core.quotepath false\n"> <"\n">)} ) (C {(test_expect_success)} {(SQ <"check fully quoted output from ls-files">)} {(SQ <"\n"> <"\n"> <"\tgit ls-files >current && test_cmp expect.raw current\n"> <"\n">)} ) (C {(test_expect_success)} {(SQ <"check fully quoted output from diff-files">)} { (SQ <"\n"> <"\n"> <"\tgit diff --name-only >current &&\n"> <"\ttest_cmp expect.raw current\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"check fully quoted output from diff-index">)} { (SQ <"\n"> <"\n"> <"\tgit diff --name-only HEAD >current &&\n"> <"\ttest_cmp expect.raw current\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"check fully quoted output from diff-tree">)} { (SQ <"\n"> <"\n"> <"\tgit diff --name-only HEAD^ HEAD >current &&\n"> <"\ttest_cmp expect.raw current\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"check fully quoted output from ls-tree">)} { (SQ <"\n"> <"\n"> <"\tgit ls-tree --name-only -r HEAD >current &&\n"> <"\ttest_cmp expect.raw current\n"> <"\n"> ) } ) (C {(test_done)}) ] )