(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 <'git p4 fetching changes in multiple blocks'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./lib-git-p4.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [{<test_expect_success>} {(SQ <'start p4d'>)} {(SQ <'\n'> <'\tstart_p4d\n'>)}]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <create_restricted_group>
      name: create_restricted_group
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <p4>
              more_env: []
              words: [{<p4>} {<group>} {<-i>}]
              redirects: [
                (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: [
                        <'Group: restricted\n'>
                        <'MaxResults: 7\n'>
                        <'MaxScanRows: 40\n'>
                        <'Users: author\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'Create group with limited maxrows'>)}
        {(SQ <'\n'> <'\tcreate_restricted_group\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'Create a repo with many changes'>)}
        {
          (SQ <'\n'> <'\t(\n'> <'\t\tclient_view "//depot/included/... //client/included/..." \\\n'> 
            <'\t\t\t    "//depot/excluded/... //client/excluded/..." &&\n'> <'\t\tmkdir -p "$cli/included" "$cli/excluded" &&\n'> <'\t\tcd "$cli/included" &&\n'> 
            <'\t\t>file.txt &&\n'> <'\t\tp4 add file.txt &&\n'> <'\t\tp4 submit -d "Add file.txt" &&\n'> 
            <'\t\tfor i in $(test_seq 0 5)\n'> <'\t\tdo\n'> <'\t\t\t>outer$i.txt &&\n'> <'\t\t\tp4 add outer$i.txt &&\n'> 
            <'\t\t\tp4 submit -d "Adding outer$i.txt" &&\n'> <'\t\t\tfor j in $(test_seq 0 5)\n'> <'\t\t\tdo\n'> <'\t\t\t\tp4 edit file.txt &&\n'> 
            <'\t\t\t\techo $i$j >file.txt &&\n'> <'\t\t\t\tp4 submit -d "Commit $i$j" || exit\n'> <'\t\t\tdone || exit\n'> <'\t\tdone\n'> <'\t)\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'Default user cannot fetch changes'>)}
        {(SQ <'\n'> <'\t! p4 changes -m 1 //depot/...\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'Clone the repo'>)}
        {
          (SQ <'\n'> 
            <'\tgit p4 clone --dest="$git" --changes-block-size=7 --verbose //depot/included@all\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'All files are present'>)}
        {
          (SQ <'\n'> <'\techo file.txt >expected &&\n'> 
            <
'\ttest_write_lines outer0.txt outer1.txt outer2.txt outer3.txt outer4.txt >>expected &&\n'
            > <'\ttest_write_lines outer5.txt >>expected &&\n'> <'\tls "$git" >current &&\n'> 
            <'\ttest_cmp expected current\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'file.txt is correct'>)}
        {(SQ <'\n'> <'\techo 55 >expected &&\n'> <'\ttest_cmp expected "$git/file.txt"\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'Correct number of commits'>)}
        {
          (SQ <'\n'> <'\t(cd "$git" && git log --oneline) >log &&\n'> <'\twc -l log &&\n'> 
            <'\ttest_line_count = 43 log\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'Previous version of file.txt is correct'>)}
        {
          (SQ <'\n'> <'\t(cd "$git" && git checkout HEAD^^) &&\n'> <'\techo 53 >expected &&\n'> 
            <'\ttest_cmp expected "$git/file.txt"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <p4_add_file>
      name: p4_add_file
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Subshell
              left: <Id.Op_LParen _>
              child: 
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <cd>
                      more_env: []
                      words: [{<cd>} {(DQ ($ Id.VSub_DollarName cli))}]
                      redirects: []
                      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: {($ Id.VSub_Number 1)}
                        )
                      ]
                      do_fork: F
                    )
                    (command.Simple
                      blame_tok: <p4>
                      more_env: []
                      words: [{<p4>} {<add>} {($ Id.VSub_Number 1)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <p4>
                      more_env: []
                      words: [
                        {<p4>}
                        {<submit>}
                        {<-d>}
                        {(DQ <'Added file '> ($ Id.VSub_Number 1))}
                        {($ Id.VSub_Number 1)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
                )
              right: <Id.Right_Subshell _>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'Add some more files'>)}
        {
          (SQ <'\n'> <'\tfor i in $(test_seq 0 10)\n'> <'\tdo\n'> 
            <'\t\tp4_add_file "included/x$i" &&\n'> <'\t\tp4_add_file "excluded/x$i"\n'> <'\tdone &&\n'> <'\tfor i in $(test_seq 0 10)\n'> <'\tdo\n'> 
            <'\t\tp4_add_file "excluded/y$i"\n'> <'\tdone\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'Syncing files'>)}
        {
          (SQ <'\n'> <'\t(\n'> <'\t\tcd "$git" &&\n'> <'\t\tgit p4 sync --changes-block-size=7 &&\n'> 
            <'\t\tgit checkout p4/master &&\n'> <'\t\tls -l x* > log &&\n'> <'\t\ttest_line_count = 11 log\n'> <'\t)\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'Create a repo with multiple depot paths'>)}
        {
          (SQ <'\n'> <'\tclient_view "//depot/pathA/... //client/pathA/..." \\\n'> 
            <'\t\t    "//depot/pathB/... //client/pathB/..." &&\n'> <'\tmkdir -p "$cli/pathA" "$cli/pathB" &&\n'> <'\tfor p in pathA pathB\n'> <'\tdo\n'> 
            <'\t\tfor i in $(test_seq 1 10)\n'> <'\t\tdo\n'> <'\t\t\tp4_add_file "$p/file$p$i"\n'> <'\t\tdone\n'> <'\tdone\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'Clone repo with multiple depot paths'>)}
        {
          (SQ <'\n'> <'\t(\n'> <'\t\tcd "$git" &&\n'> 
            <'\t\tgit p4 clone --changes-block-size=4 //depot/pathA@all //depot/pathB@all \\\n'> <'\t\t\t--destination=dest &&\n'> <'\t\tls -1 dest >log &&\n'> <'\t\ttest_line_count = 20 log\n'> 
            <'\t)\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [{<test_expect_success>} {(SQ <'kill p4d'>)} {(SQ <'\n'> <'\tkill_p4d\n'>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_done>
      more_env: []
      words: [{<test_done>}]
      redirects: []
      do_fork: T
    )
  ]
)