(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)})
  ]
)