(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: 'check that certain rev-parse options work outside repo' span_id: 6 ) ) } spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'set up non-repo directory' span_id:17))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:21) (Token id:Id.Lit_Chars val:'\tGIT_CEILING_DIRECTORIES=$(pwd) &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\texport GIT_CEILING_DIRECTORIES &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\tmkdir non-repo &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\tcd non-repo &&\n' span_id:25) (Token id: Id.Lit_Chars val: '\t# confirm that git does not find a repo\n' span_id: 26 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rev-parse --git-dir\n' span_id:27) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tricky) op: assign_op.Equal rhs: { (DQ ('really tricky with ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:43) ) (' and ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:45)) (" and '") ) } spids: [40] ) ] ) (command.ShFunction name: dump_args body: (command.BraceGroup children: [ (command.ForEach iter_name: i iter_words: [{(DQ ($ Id.VSub_At '$@'))}] do_arg_iter: F body: (command.DoGroup children: [(C {(echo)} {(DQ ('arg: ') ($ Id.VSub_DollarName '$i'))})] ) ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rev-parse --sq-quote' span_id:86))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:90) (Token id:Id.Lit_Chars val:'\tdump_args "$tricky" easy >expect &&\n' span_id:91) (Token id: Id.Lit_Chars val: '\teval "dump_args $(git rev-parse --sq-quote "$tricky" easy)" >actual &&\n' span_id: 92 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:93) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rev-parse --local-env-vars' span_id:100))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:104) (Token id: Id.Lit_Chars val: '\tgit rev-parse --local-env-vars >actual &&\n' span_id: 105 ) (Token id:Id.Lit_Chars val:'\t# we do not want to depend on the complete list here,\n' span_id:106) (Token id: Id.Lit_Chars val: '\t# so just look for something plausible\n' span_id: 107 ) (Token id:Id.Lit_Chars val:'\tgrep ^GIT_DIR actual\n' span_id:108) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rev-parse --resolve-git-dir' span_id:115))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:119) (Token id: Id.Lit_Chars val: '\tgit init --separate-git-dir repo dir &&\n' span_id: 120 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rev-parse --resolve-git-dir . &&\n' span_id:121) (Token id:Id.Lit_Chars val:'\techo "$(pwd)/repo" >expect &&\n' span_id:122) (Token id:Id.Lit_Chars val:'\tgit rev-parse --resolve-git-dir dir/.git >actual &&\n' span_id:123) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:124) ) } ) (C {(test_done)}) ] )