(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:'fetch/clone from a shallow clone over http' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/lib-httpd.sh)})
    (C {(start_httpd)})
    (command.ShFunction
      name: commit
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.Simple
                  words: [{(echo)} {(DQ ($ Id.VSub_Number '$1'))}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:37)
                      fd: -1
                      arg_word: {(tracked)}
                    )
                  ]
                )
                (C {(git)} {(add)} {(tracked)})
                (C {(git)} {(commit)} {(-m)} {(DQ ($ Id.VSub_Number '$1'))})
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup shallow clone' span_id:68))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:72) 
          (Token id:Id.Lit_Chars val:'\tcommit 1 &&\n' span_id:73) (Token id:Id.Lit_Chars val:'\tcommit 2 &&\n' span_id:74) 
          (Token id:Id.Lit_Chars val:'\tcommit 3 &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\tcommit 4 &&\n' span_id:76) 
          (Token id:Id.Lit_Chars val:'\tcommit 5 &&\n' span_id:77) (Token id:Id.Lit_Chars val:'\tcommit 6 &&\n' span_id:78) 
          (Token id:Id.Lit_Chars val:'\tcommit 7 &&\n' span_id:79) (Token id:Id.Lit_Chars val:'\tgit clone --no-local --depth=5 .git shallow &&\n' span_id:80) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --global transfer.fsckObjects true\n'
            span_id: 81
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone http repository' span_id:88))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:92) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --bare --no-local shallow "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&\n'
            span_id: 93
          ) (Token id:Id.Lit_Chars val:'\tgit clone $HTTPD_URL/smart/repo.git clone &&\n' span_id:94) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:95) (Token id:Id.Lit_Chars val:'\tcd clone &&\n' span_id:96) 
          (Token id:Id.Lit_Chars val:'\tgit fsck &&\n' span_id:97) (Token id:Id.Lit_Chars val:'\tgit log --format=%s origin/master >actual &&\n' span_id:98) 
          (Token id:Id.Lit_Chars val:'\tcat <<EOF >expect &&\n' span_id:99) (Token id:Id.Lit_Chars val:'7\n' span_id:100) (Token id:Id.Lit_Chars val:'6\n' span_id:101) 
          (Token id:Id.Lit_Chars val:'5\n' span_id:102) (Token id:Id.Lit_Chars val:'4\n' span_id:103) (Token id:Id.Lit_Chars val:'3\n' span_id:104) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:105) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:106) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:107)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'no shallow lines after receiving ACK ready' span_id:123))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:127) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:128) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:129) 
          (Token id:Id.Lit_Chars val:'\t\ttest_tick &&\n' span_id:130) (Token id:Id.Lit_Chars val:'\t\tfor i in $(test_seq 15)\n' span_id:131) 
          (Token id:Id.Lit_Chars val:'\t\tdo\n' span_id:132) (Token id:Id.Lit_Chars val:'\t\t\tgit checkout --orphan unrelated$i &&\n' span_id:133) 
          (Token id:Id.Lit_Chars val:'\t\t\ttest_commit unrelated$i &&\n' span_id:134) (Token id:Id.Lit_Chars val:'\t\t\tgit push -q "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" \\\n' span_id:135) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\t\trefs/heads/unrelated$i:refs/heads/unrelated$i &&\n'
            span_id: 136
          ) (Token id:Id.Lit_Chars val:'\t\t\tgit push -q ../clone/.git \\\n' span_id:137) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\t\trefs/heads/unrelated$i:refs/heads/unrelated$i ||\n'
            span_id: 138
          ) (Token id:Id.Lit_Chars val:'\t\t\texit 1\n' span_id:139) 
          (Token id:Id.Lit_Chars val:'\t\tdone &&\n' span_id:140) (Token id:Id.Lit_Chars val:'\t\tgit checkout master &&\n' span_id:141) 
          (Token id:Id.Lit_Chars val:'\t\ttest_commit new &&\n' span_id:142) (Token id:Id.Lit_Chars val:'\t\tgit push  "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" master\n' span_id:143) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:144) (Token id:Id.Lit_Chars val:'\t(\n' span_id:145) 
          (Token id:Id.Lit_Chars val:'\t\tcd clone &&\n' span_id:146) (Token id:Id.Lit_Chars val:'\t\tgit checkout --orphan newnew &&\n' span_id:147) 
          (Token id:Id.Lit_Chars val:'\t\ttest_commit new-too &&\n' span_id:148) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tGIT_TRACE_PACKET="$TRASH_DIRECTORY/trace" git fetch --depth=2 &&\n'
            span_id: 149
          ) (Token id:Id.Lit_Chars val:'\t\tgrep "fetch-pack< ACK .* ready" ../trace &&\n' span_id:150) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t! grep "fetch-pack> done" ../trace\n'
            span_id: 151
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:152)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow since ...' span_id:159))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:163) 
          (Token id:Id.Lit_Chars val:'\ttest_create_repo shallow-since &&\n' span_id:164) (Token id:Id.Lit_Chars val:'\t(\n' span_id:165) 
          (Token id:Id.Lit_Chars val:'\tcd shallow-since &&\n' span_id:166) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_COMMITTER_DATE="100000000 +0700" git commit --allow-empty -m one &&\n'
            span_id: 167
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_COMMITTER_DATE="200000000 +0700" git commit --allow-empty -m two &&\n'
            span_id: 168
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_COMMITTER_DATE="300000000 +0700" git commit --allow-empty -m three &&\n'
            span_id: 169
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tmv .git "$HTTPD_DOCUMENT_ROOT_PATH/shallow-since.git" &&\n'
            span_id: 170
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit clone --shallow-since "300000000 +0700" $HTTPD_URL/smart/shallow-since.git ../shallow11 &&\n'
            span_id: 171
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C ../shallow11 log --pretty=tformat:%s HEAD >actual &&\n'
            span_id: 172
          ) (Token id:Id.Lit_Chars val:'\techo three >expected &&\n' span_id:173) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:174) (Token id:Id.Lit_Chars val:'\t)\n' span_id:175)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch shallow since ...' span_id:182))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:186) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C shallow11 fetch --shallow-since "200000000 +0700" origin &&\n'
            span_id: 187
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C shallow11 log --pretty=tformat:%s origin/master >actual &&\n'
            span_id: 188
          ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:189) 
          (Token id:Id.Lit_Chars val:'\tthree\n' span_id:190) (Token id:Id.Lit_Chars val:'\ttwo\n' span_id:191) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:192) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:193)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'shallow clone exclude tag two' span_id:200))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:204) 
          (Token id:Id.Lit_Chars val:'\ttest_create_repo shallow-exclude &&\n' span_id:205) (Token id:Id.Lit_Chars val:'\t(\n' span_id:206) 
          (Token id:Id.Lit_Chars val:'\tcd shallow-exclude &&\n' span_id:207) (Token id:Id.Lit_Chars val:'\ttest_commit one &&\n' span_id:208) 
          (Token id:Id.Lit_Chars val:'\ttest_commit two &&\n' span_id:209) (Token id:Id.Lit_Chars val:'\ttest_commit three &&\n' span_id:210) 
          (Token
            id: Id.Lit_Chars
            val: '\tmv .git "$HTTPD_DOCUMENT_ROOT_PATH/shallow-exclude.git" &&\n'
            span_id: 211
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit clone --shallow-exclude two $HTTPD_URL/smart/shallow-exclude.git ../shallow12 &&\n'
            span_id: 212
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C ../shallow12 log --pretty=tformat:%s HEAD >actual &&\n'
            span_id: 213
          ) (Token id:Id.Lit_Chars val:'\techo three >expected &&\n' span_id:214) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:215) (Token id:Id.Lit_Chars val:'\t)\n' span_id:216)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch exclude tag one' span_id:223))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:227) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C shallow12 fetch --shallow-exclude one origin &&\n'
            span_id: 228
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C shallow12 log --pretty=tformat:%s origin/master >actual &&\n'
            span_id: 229
          ) (Token id:Id.Lit_Chars val:'\ttest_write_lines three two >expected &&\n' span_id:230) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:231)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetching deepen' span_id:238))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:242) 
          (Token id:Id.Lit_Chars val:'\ttest_create_repo shallow-deepen &&\n' span_id:243) (Token id:Id.Lit_Chars val:'\t(\n' span_id:244) 
          (Token id:Id.Lit_Chars val:'\tcd shallow-deepen &&\n' span_id:245) (Token id:Id.Lit_Chars val:'\ttest_commit one &&\n' span_id:246) 
          (Token id:Id.Lit_Chars val:'\ttest_commit two &&\n' span_id:247) (Token id:Id.Lit_Chars val:'\ttest_commit three &&\n' span_id:248) 
          (Token
            id: Id.Lit_Chars
            val: '\tmv .git "$HTTPD_DOCUMENT_ROOT_PATH/shallow-deepen.git" &&\n'
            span_id: 249
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --depth 1 $HTTPD_URL/smart/shallow-deepen.git deepen &&\n'
            span_id: 250
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tmv "$HTTPD_DOCUMENT_ROOT_PATH/shallow-deepen.git" .git &&\n'
            span_id: 251
          ) (Token id:Id.Lit_Chars val:'\ttest_commit four &&\n' span_id:252) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C deepen log --pretty=tformat:%s master >actual &&\n'
            span_id: 253
          ) (Token id:Id.Lit_Chars val:'\techo three >expected &&\n' span_id:254) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:255) 
          (Token
            id: Id.Lit_Chars
            val: '\tmv .git "$HTTPD_DOCUMENT_ROOT_PATH/shallow-deepen.git" &&\n'
            span_id: 256
          ) (Token id:Id.Lit_Chars val:'\tgit -C deepen fetch --deepen=1 &&\n' span_id:257) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C deepen log --pretty=tformat:%s origin/master >actual &&\n'
            span_id: 258
          ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:259) 
          (Token id:Id.Lit_Chars val:'\tfour\n' span_id:260) (Token id:Id.Lit_Chars val:'\tthree\n' span_id:261) (Token id:Id.Lit_Chars val:'\ttwo\n' span_id:262) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:263) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:264) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:265)
        )
      }
    )
    (C {(stop_httpd)})
    (C {(test_done)})
  ]
)