(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 svn property tests' span_id:15))} spids: [13] ) ] ) (C {(.)} {(./lib-git-svn.sh)}) (C {(mkdir)} {(import)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_crlf) op: assign_op.Equal rhs: (word.Empty) spids: [28] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_lf) op: assign_op.Equal rhs: (word.Empty) spids: [30] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_cr) op: assign_op.Equal rhs: (word.Empty) spids: [32] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_ne_crlf) op: assign_op.Equal rhs: (word.Empty) spids: [34] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_ne_lf) op: assign_op.Equal rhs: (word.Empty) spids: [36] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_ne_cr) op: assign_op.Equal rhs: (word.Empty) spids: [38] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_empty) op: assign_op.Equal rhs: (word.Empty) spids: [40] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_empty_lf) op: assign_op.Equal rhs: (word.Empty) spids: [42] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_empty_cr) op: assign_op.Equal rhs: (word.Empty) spids: [44] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_empty_crlf) op: assign_op.Equal rhs: (word.Empty) spids: [46] ) ] ) (C {(cd)} {(import)}) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_DGreat val:'>>' span_id:56) fd:-1 arg_word:{(kw.c)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:60) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:61)) (OF)} here_end_span_id: 66 stdin_parts: [('/* Somebody prematurely put a keyword into this file */\n') ('/* $Id$ */\n')] ) ] ) (command.Simple words: [ {(printf)} { (DQ (Hello) (Id.Lit_Other '\\') (r) (Id.Lit_Other '\\') (nWorld) (Id.Lit_Other '\\') (r) (Id.Lit_Other '\\') (n) ) } ] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:83) fd:-1 arg_word:{(crlf)})] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_crlf) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:89) command_list: (command.CommandList children: [(C {(git)} {(hash-object)} {(-w)} {(crlf)})] ) ) } spids: [88] ) ] ) (command.Simple words: [{(printf)} {(DQ (Hello) (Id.Lit_Other '\\') (rWorld) (Id.Lit_Other '\\') (r))}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:110) fd:-1 arg_word:{(cr)})] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_cr) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:116) command_list: (command.CommandList children: [(C {(git)} {(hash-object)} {(-w)} {(cr)})] ) ) } spids: [115] ) ] ) (command.Simple words: [{(printf)} {(DQ (Hello) (Id.Lit_Other '\\') (nWorld) (Id.Lit_Other '\\') (n))}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:137) fd:-1 arg_word:{(lf)})] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_lf) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:143) command_list: (command.CommandList children: [(C {(git)} {(hash-object)} {(-w)} {(lf)})] ) ) } spids: [142] ) ] ) (command.Simple words: [{(printf)} {(DQ (Hello) (Id.Lit_Other '\\') (r) (Id.Lit_Other '\\') (nWorld))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:165) fd: -1 arg_word: {(ne_crlf)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_ne_crlf) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:171) command_list: (command.CommandList children: [(C {(git)} {(hash-object)} {(-w)} {(ne_crlf)})] ) ) } spids: [170] ) ] ) (command.Simple words: [{(printf)} {(DQ (Hello) (Id.Lit_Other '\\') (nWorld))}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:190) fd:-1 arg_word:{(ne_lf)}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_ne_lf) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:196) command_list: (command.CommandList children: [(C {(git)} {(hash-object)} {(-w)} {(ne_lf)})] ) ) } spids: [195] ) ] ) (command.Simple words: [{(printf)} {(DQ (Hello) (Id.Lit_Other '\\') (rWorld))}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:215) fd:-1 arg_word:{(ne_cr)}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_ne_cr) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:221) command_list: (command.CommandList children: [(C {(git)} {(hash-object)} {(-w)} {(ne_cr)})] ) ) } spids: [220] ) ] ) (C {(touch)} {(empty)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_empty) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:239) command_list: (command.CommandList children: [(C {(git)} {(hash-object)} {(-w)} {(empty)})] ) ) } spids: [238] ) ] ) (command.Simple words: [{(printf)} {(DQ (Id.Lit_Other '\\') (n))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:257) fd: -1 arg_word: {(empty_lf)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_empty_lf) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:263) command_list: (command.CommandList children: [(C {(git)} {(hash-object)} {(-w)} {(empty_lf)})] ) ) } spids: [262] ) ] ) (command.Simple words: [{(printf)} {(DQ (Id.Lit_Other '\\') (r))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:281) fd: -1 arg_word: {(empty_cr)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_empty_cr) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:287) command_list: (command.CommandList children: [(C {(git)} {(hash-object)} {(-w)} {(empty_cr)})] ) ) } spids: [286] ) ] ) (command.Simple words: [{(printf)} {(DQ (Id.Lit_Other '\\') (r) (Id.Lit_Other '\\') (n))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:307) fd: -1 arg_word: {(empty_crlf)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_empty_crlf) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:313) command_list: (command.CommandList children: [(C {(git)} {(hash-object)} {(-w)} {(empty_crlf)})] ) ) } spids: [312] ) ] ) (command.Simple words: [ {(svn_cmd)} {(import)} {(--no-auto-props)} {(-m)} {(SQ (Token id:Id.Lit_Chars val:'import for git svn' span_id:334))} {(.)} {(DQ ($ Id.VSub_DollarName '$svnrepo'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:343) fd: -1 arg_word: {(/dev/null)} ) ] ) (C {(cd)} {(..)}) (C {(rm)} {(-rf)} {(import)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'checkout working copy from svn' span_id:360))} {(SQ (Token id:Id.Lit_Chars val:'svn co "$svnrepo" test_wc' span_id:364))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup some commits to svn' span_id:370))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:374) (Token id:Id.Lit_Chars val:'\t(\n' span_id:375) (Token id:Id.Lit_Chars val:'\t\tcd test_wc &&\n' span_id:376) (Token id:Id.Lit_Chars val:'\t\techo Greetings >> kw.c &&\n' span_id:377) (Token id:Id.Lit_Chars val:'\t\tpoke kw.c &&\n' span_id:378) (Token id: Id.Lit_Chars val: '\t\tsvn_cmd commit -m "Not yet an Id" &&\n' span_id: 379 ) (Token id:Id.Lit_Chars val:'\t\techo Hello world >> kw.c &&\n' span_id:380) (Token id:Id.Lit_Chars val:'\t\tpoke kw.c &&\n' span_id:381) (Token id: Id.Lit_Chars val: '\t\tsvn_cmd commit -m "Modified file, but still not yet an Id" &&\n' span_id: 382 ) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd propset svn:keywords Id kw.c &&\n' span_id:383) (Token id:Id.Lit_Chars val:'\t\tpoke kw.c &&\n' span_id:384) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd commit -m "Propset Id"\n' span_id:385) (Token id:Id.Lit_Chars val:'\t)\n' span_id:386) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'initialize git svn' span_id:393))} {(SQ (Token id:Id.Lit_Chars val:'git svn init "$svnrepo"' span_id:397))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch revisions from svn' span_id:403))} {(SQ (Token id:Id.Lit_Chars val:'git svn fetch' span_id:407))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:name) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'test svn:keywords ignoring' span_id:413))} spids: [411] ) ] ) (C {(test_expect_success)} {(DQ ($ Id.VSub_DollarName '$name'))} { (SQ (Token id:Id.Lit_Chars val:'git checkout -b mybranch remotes/git-svn &&\n' span_id:425) (Token id:Id.Lit_Chars val:'\techo Hi again >> kw.c &&\n' span_id:426) (Token id:Id.Lit_Chars val:'\tgit commit -a -m "test keywords ignoring" &&\n' span_id:427) (Token id: Id.Lit_Chars val: '\tgit svn set-tree remotes/git-svn..mybranch &&\n' span_id: 428 ) (Token id:Id.Lit_Chars val:'\tgit pull . remotes/git-svn' span_id:429) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:expect) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'/* $Id$ */' span_id:435))} spids: [433] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:got) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:440) command_list: (command.CommandList children:[(C {(sed)} {(-ne)} {(2p)} {(kw.c)})]) ) ) } spids: [438] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'raw $Id$ found in kw.c' span_id:454))} {(DQ ("test '") ($ Id.VSub_DollarName '$expect') ("' = '") ($ Id.VSub_DollarName '$got') ("'"))} ) (C {(test_expect_success)} {(DQ ('propset CR on crlf files'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:473) (Token id:Id.Lit_Chars val:'\t(\n' span_id:474) (Token id:Id.Lit_Chars val:'\t\tcd test_wc &&\n' span_id:475) (Token id: Id.Lit_Chars val: '\t\tsvn_cmd propset svn:eol-style CR empty &&\n' span_id: 476 ) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd propset svn:eol-style CR crlf &&\n' span_id:477) (Token id: Id.Lit_Chars val: '\t\tsvn_cmd propset svn:eol-style CR ne_crlf &&\n' span_id: 478 ) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd commit -m "propset CR on crlf files"\n' span_id:479) (Token id:Id.Lit_Chars val:'\t )\n' span_id:480) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'fetch and pull latest from svn and checkout a new wc' span_id: 487 ) ) } { (SQ (Token id:Id.Lit_Chars val:'git svn fetch &&\n' span_id:493) (Token id:Id.Lit_Chars val:'\t git pull . remotes/git-svn &&\n' span_id:494) (Token id:Id.Lit_Chars val:'\t svn_cmd co "$svnrepo" new_wc' span_id:495) ) } ) (command.ForEach iter_name: i iter_words: [ {(crlf)} {(ne_crlf)} {(lf)} {(ne_lf)} {(cr)} {(ne_cr)} {(empty_cr)} {(empty_lf)} {(empty)} {(empty_crlf)} ] do_arg_iter: F body: (command.DoGroup children: [ (C {(test_expect_success)} {(DQ ('Comparing ') ($ Id.VSub_DollarName '$i'))} {(DQ ('cmp ') ($ Id.VSub_DollarName '$i') (' new_wc/') ($ Id.VSub_DollarName '$i'))} ) ] ) ) (C {(cd)} {(test_wc)}) (command.Simple words: [{(printf)} {(SQ (Token id:Id.Lit_Chars val:'$Id$\\rHello\\rWorld\\r' span_id:554))}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:557) fd:-1 arg_word:{(cr)})] ) (command.Simple words: [{(printf)} {(SQ (Token id:Id.Lit_Chars val:'$Id$\\rHello\\rWorld' span_id:565))}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:568) fd:-1 arg_word:{(ne_cr)}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_cr) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:574) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(printf)} { (SQ (Token id: Id.Lit_Chars val: '$Id$\\r\\nHello\\r\\nWorld\\r\\n' span_id: 578 ) ) } ) (C {(git)} {(hash-object)} {(--stdin)}) ] negated: F ) ] ) ) } spids: [573] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a_ne_cr) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:592) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(printf)} { (SQ (Token id: Id.Lit_Chars val: '$Id$\\r\\nHello\\r\\nWorld' span_id: 596 ) ) } ) (C {(git)} {(hash-object)} {(--stdin)}) ] negated: F ) ] ) ) } spids: [591] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Set CRLF on cr files' span_id:612))} { (SQ (Token id:Id.Lit_Chars val:'svn_cmd propset svn:eol-style CRLF cr &&\n' span_id:618) (Token id: Id.Lit_Chars val: '\t svn_cmd propset svn:eol-style CRLF ne_cr &&\n' span_id: 619 ) (Token id:Id.Lit_Chars val:'\t svn_cmd propset svn:keywords Id cr &&\n' span_id:620) (Token id: Id.Lit_Chars val: '\t svn_cmd propset svn:keywords Id ne_cr &&\n' span_id: 621 ) (Token id:Id.Lit_Chars val:'\t svn_cmd commit -m "propset CRLF on cr files"' span_id:622) ) } ) (C {(cd)} {(..)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch and pull latest from svn' span_id:632))} {(SQ (Token id:Id.Lit_Chars val:'git svn fetch && git pull . remotes/git-svn' span_id:638))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:b_cr) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:644) command_list: (command.CommandList children:[(C {(git)} {(hash-object)} {(cr)})]) ) ) } spids: [642] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:b_ne_cr) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:655) command_list: (command.CommandList children: [(C {(git)} {(hash-object)} {(ne_cr)})] ) ) ) } spids: [653] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'CRLF + $Id$' span_id:668))} {(DQ ("test '") ($ Id.VSub_DollarName '$a_cr') ("' = '") ($ Id.VSub_DollarName '$b_cr') ("'"))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'CRLF + $Id$ (no newline)' span_id:682))} { (DQ ("test '") ($ Id.VSub_DollarName '$a_ne_cr') ("' = '") ($ Id.VSub_DollarName '$b_ne_cr') ("'") ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:696) fd: -1 arg_word: {(show-ignore.expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:700) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:701)) (OF) } here_end_span_id: 716 stdin_parts: [ ('\n') ('# /\n') ('/no-such-file*\n') ('\n') ('# /deeply/\n') ('/deeply/no-such-file*\n') ('\n') ('# /deeply/nested/\n') ('/deeply/nested/no-such-file*\n') ('\n') ('# /deeply/nested/directory/\n') ('/deeply/nested/directory/no-such-file*\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test show-ignore' span_id:721))} { (DQ ('\n') ('\t(\n') ('\t\tcd test_wc &&\n') ('\t\tmkdir -p deeply/nested/directory &&\n') ('\t\ttouch deeply/nested/directory/.keep &&\n') ('\t\tsvn_cmd add deeply &&\n') ('\t\tsvn_cmd up &&\n') ("\t\tsvn_cmd propset -R svn:ignore '\n") ('no-such-file*\n') ("' .\n") ("\t\tsvn_cmd commit -m 'propset svn:ignore'\n") ('\t) &&\n') ('\tgit svn show-ignore > show-ignore.got &&\n') ('\tcmp show-ignore.expect show-ignore.got\n') ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:744) fd: -1 arg_word: {(create-ignore.expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:747) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:748)) (OF) } here_end_span_id: 752 stdin_parts: [('/no-such-file*\n')] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:756) fd: -1 arg_word: {(create-ignore-index.expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:759) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:760)) (OF) } here_end_span_id: 767 stdin_parts: [ ('100644 8c52e5dfcd0a8b6b6bcfe6b41b89bcbf493718a5 0\t.gitignore\n') ('100644 8c52e5dfcd0a8b6b6bcfe6b41b89bcbf493718a5 0\tdeeply/.gitignore\n') ('100644 8c52e5dfcd0a8b6b6bcfe6b41b89bcbf493718a5 0\tdeeply/nested/.gitignore\n') ( '100644 8c52e5dfcd0a8b6b6bcfe6b41b89bcbf493718a5 0\tdeeply/nested/directory/.gitignore\n' ) ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test create-ignore' span_id:772))} { (DQ ('\n') ('\tgit svn fetch && git pull . remotes/git-svn &&\n') ('\tgit svn create-ignore &&\n') ('\tcmp ./.gitignore create-ignore.expect &&\n') ('\tcmp ./deeply/.gitignore create-ignore.expect &&\n') ('\tcmp ./deeply/nested/.gitignore create-ignore.expect &&\n') ('\tcmp ./deeply/nested/directory/.gitignore create-ignore.expect &&\n') ('\tgit ls-files -s | grep gitignore | cmp - create-ignore-index.expect\n') ('\t') ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:790) fd: -1 arg_word: {(prop.expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:793) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:794)) (OF) } here_end_span_id: 800 stdin_parts: [('\n') ('no-such-file*\n') ('\n')] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:803) fd: -1 arg_word: {(prop2.expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:806) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:807)) (OF) } here_end_span_id: 811 stdin_parts: [('8\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test propget' span_id:825))} { (DQ ('\n') ('\tgit svn propget svn:ignore . | cmp - prop.expect &&\n') ('\tcd deeply &&\n') ('\tgit svn propget svn:ignore . | cmp - ../prop.expect &&\n') ('\tgit svn propget svn:entry:committed-rev nested/directory/.keep ') ('\t | cmp - ../prop2.expect &&\n') ('\tgit svn propget svn:ignore .. | cmp - ../prop.expect &&\n') ('\tgit svn propget svn:ignore nested/ | cmp - ../prop.expect &&\n') ('\tgit svn propget svn:ignore ./nested | cmp - ../prop.expect &&\n') ('\tgit svn propget svn:ignore .././deeply/nested | cmp - ../prop.expect\n') ('\t') ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:846) fd: -1 arg_word: {(prop.expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:849) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:850)) (OF) } here_end_span_id: 859 stdin_parts: [ ("Properties on '.':\n") (' svn:entry:committed-date\n') (' svn:entry:committed-rev\n') (' svn:entry:last-author\n') (' svn:entry:uuid\n') (' svn:ignore\n') ] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:862) fd: -1 arg_word: {(prop2.expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:865) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:866)) (OF) } here_end_span_id: 874 stdin_parts: [ ("Properties on 'nested/directory/.keep':\n") (' svn:entry:committed-date\n') (' svn:entry:committed-rev\n') (' svn:entry:last-author\n') (' svn:entry:uuid\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test proplist' span_id:879))} { (DQ ('\n') ('\tgit svn proplist . | cmp - prop.expect &&\n') ('\tgit svn proplist nested/directory/.keep | cmp - prop2.expect\n') ('\t') ) } ) (C {(test_done)}) ] )