(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'perl interface (Git.pm)'>)}
          spids: [13]
        )
      ]
    )
    (C {<.>} {<'./test-lib.sh'>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (command.Pipeline children:[(C {<test_have_prereq>} {<PERL>})] negated:T)
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:skip_all)
                  op: assign_op.Equal
                  rhs: {(SQ <'skipping perl interface tests, perl not available'>)}
                  spids: [35]
                )
              ]
            )
            (C {<test_done>})
          ]
          spids: [23 32]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<perl>} {<-MTest> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <More>} {<-e>} {<0>}]
          redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:skip_all)
                  op: assign_op.Equal
                  rhs: {(DQ <'Perl Test::More unavailable, skipping test'>)}
                  spids: [65]
                )
              ]
            )
            (C {<test_done>})
          ]
        )
      ]
    )
    (C {<test_expect_success>} {(SQ <'set up test repository'>)} 
      {
        (SQ <'echo "test file 1" > file1 &&\n'> <'     echo "test file 2" > file2 &&\n'> 
          <'     mkdir directory1 &&\n'> <'     echo "in directory1" >> directory1/file &&\n'> <'     mkdir directory2 &&\n'> 
          <'     echo "in directory2" >> directory2/file &&\n'> <'     git add . &&\n'> <'     git commit -m "first commit" &&\n'> <'\n'> 
          <'     echo "new file in subdir 2" > directory2/file2 &&\n'> <'     git add . &&\n'> <'     git commit -m "commit in directory2" &&\n'> <'\n'> 
          <'     echo "changed file 1" > file1 &&\n'> <'     git commit -a -m "second commit" &&\n'> <'\n'> 
          <'     git config --add color.test.slot1 green &&\n'> <'     git config --add test.string value &&\n'> <'     git config --add test.dupstring value1 &&\n'> 
          <'     git config --add test.dupstring value2 &&\n'> <'     git config --add test.booltrue true &&\n'> <'     git config --add test.boolfalse no &&\n'> 
          <'     git config --add test.boolother other &&\n'> <'     git config --add test.int 2k &&\n'> <'     git config --add test.path "~/foo" &&\n'> 
          <'     git config --add test.pathexpanded "$HOME/foo" &&\n'> <'     git config --add test.pathmulti foo &&\n'> <'     git config --add test.pathmulti bar\n'> 
          <'     '>
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_external_has_tap)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [126]
        )
      ]
    )
    (C {<test_external_without_stderr>} {(SQ <'Perl API'>)} {<perl>} 
      {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) <'/t9700/test.pl'>}
    )
    (C {<test_done>})
  ]
)