(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'test_description='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'test_description='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_description='> name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'Test run command'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./test-lib.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<hello-script>})
        (Redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [<'#!'> ($ Id.VSub_DollarName SHELL_PATH) <'\n'> <'cat hello-script\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <Id.Redir_Great '>'>
      more_env: []
      words: []
      redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<empty>})]
      do_fork: F
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'start_command reports ENOENT'>)}
        {(SQ <'\n'> <'\ttest-run-command start-command-ENOENT ./does-not-exist\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'run_command can run a command'>)}
        {
          (SQ <'\n'> <'\tcat hello-script >hello.sh &&\n'> <'\tchmod +x hello.sh &&\n'> 
            <'\ttest-run-command run-command ./hello.sh >actual 2>err &&\n'> <'\n'> <'\ttest_cmp hello-script actual &&\n'> <'\ttest_cmp empty err\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {<POSIXPERM>}
        {(SQ <'run_command reports EACCES'>)}
        {
          (SQ <'\n'> <'\tcat hello-script >hello.sh &&\n'> <'\tchmod -x hello.sh &&\n'> 
            <'\ttest_must_fail test-run-command run-command ./hello.sh 2>err &&\n'> <'\n'> <'\tgrep "fatal: cannot exec.*hello.sh" err\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {<POSIXPERM> <Id.Lit_Comma ','> <SANITY>}
        {(SQ <'unreadable directory in PATH'>)}
        {
          (SQ <'\n'> <'\tmkdir local-command &&\n'> 
            <'\ttest_when_finished "chmod u+rwx local-command && rm -fr local-command" &&\n'> <'\tgit config alias.nitfol "!echo frotz" &&\n'> <'\tchmod a-rx local-command &&\n'> <'\t(\n'> 
            <'\t\tPATH=./local-command:$PATH &&\n'> <'\t\tgit nitfol >actual\n'> <'\t) &&\n'> <'\techo frotz >expect &&\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})
        (Redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                <'preloaded output of a child\n'>
                <'Hello\n'>
                <'World\n'>
                <'preloaded output of a child\n'>
                <'Hello\n'>
                <'World\n'>
                <'preloaded output of a child\n'>
                <'Hello\n'>
                <'World\n'>
                <'preloaded output of a child\n'>
                <'Hello\n'>
                <'World\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'run_command runs in parallel with more jobs available than tasks'>)}
        {
          (SQ <'\n'> 
            <
'\ttest-run-command run-command-parallel 5 sh -c "printf \\"%s\\n%s\\n\\" Hello World" 2>actual &&\n'
            > <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'run_command runs in parallel with as many jobs as tasks'>)}
        {
          (SQ <'\n'> 
            <
'\ttest-run-command run-command-parallel 4 sh -c "printf \\"%s\\n%s\\n\\" Hello World" 2>actual &&\n'
            > <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'run_command runs in parallel with more tasks than jobs available'>)}
        {
          (SQ <'\n'> 
            <
'\ttest-run-command run-command-parallel 3 sh -c "printf \\"%s\\n%s\\n\\" Hello World" 2>actual &&\n'
            > <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})
        (Redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                <'preloaded output of a child\n'>
                <'asking for a quick stop\n'>
                <'preloaded output of a child\n'>
                <'asking for a quick stop\n'>
                <'preloaded output of a child\n'>
                <'asking for a quick stop\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'run_command is asked to abort gracefully'>)}
        {
          (SQ <'\n'> <'\ttest-run-command run-command-abort 3 false 2>actual &&\n'> 
            <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})
        (Redir
          op: <Id.Redir_DLessDash '<<-'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [<'no further jobs available\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'run_command outputs '>)}
        {
          (SQ <'\n'> 
            <
'\ttest-run-command run-command-no-jobs 3 sh -c "printf \\"%s\\n%s\\n\\" Hello World" 2>actual &&\n'
            > <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_done>
      more_env: []
      words: [{<test_done>}]
      redirects: []
      do_fork: T
    )
  ]
)