(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: 'Test shallow cloning of repos with submodules'
                  span_id: 6
                )
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pwd)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:16)
                command_list: (command.CommandList children:[(C {(pwd)})])
              )
            }
          spids: [15]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:24))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:28) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b master &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\ttest_commit commit1 &&\n' span_id:30) 
          (Token id:Id.Lit_Chars val:'\ttest_commit commit2 &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\tmkdir sub &&\n' span_id:32) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:33) (Token id:Id.Lit_Chars val:'\t\tcd sub &&\n' span_id:34) 
          (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\t\ttest_commit subcommit1 &&\n' span_id:36) 
          (Token id:Id.Lit_Chars val:'\t\ttest_commit subcommit2 &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\t\ttest_commit subcommit3\n' span_id:38) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:39) (Token id:Id.Lit_Chars val:'\tgit submodule add "file://$pwd/sub" sub &&\n' span_id:40) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m "add submodule"\n' span_id:41)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'nonshallow clone implies nonshallow submodule' span_id:48))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:52) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "rm -rf super_clone" &&\n'
            span_id: 53
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --recurse-submodules "file://$pwd/." super_clone &&\n'
            span_id: 54
          ) (Token id:Id.Lit_Chars val:'\tgit -C super_clone log --oneline >lines &&\n' span_id:55) 
          (Token id:Id.Lit_Chars val:'\ttest_line_count = 3 lines &&\n' span_id:56) (Token id:Id.Lit_Chars val:'\tgit -C super_clone/sub log --oneline >lines &&\n' span_id:57) 
          (Token id:Id.Lit_Chars val:'\ttest_line_count = 3 lines\n' span_id:58)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'shallow clone with shallow submodule' span_id:65))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:69) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "rm -rf super_clone" &&\n'
            span_id: 70
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit clone --recurse-submodules --depth 2 --shallow-submodules "file://$pwd/." super_clone &&\n'
            span_id: 71
          ) (Token id:Id.Lit_Chars val:'\tgit -C super_clone log --oneline >lines &&\n' span_id:72) 
          (Token id:Id.Lit_Chars val:'\ttest_line_count = 2 lines &&\n' span_id:73) (Token id:Id.Lit_Chars val:'\tgit -C super_clone/sub log --oneline >lines &&\n' span_id:74) 
          (Token id:Id.Lit_Chars val:'\ttest_line_count = 1 lines\n' span_id:75)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'shallow clone does not imply shallow submodule' span_id:82))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:86) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "rm -rf super_clone" &&\n'
            span_id: 87
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --recurse-submodules --depth 2 "file://$pwd/." super_clone &&\n'
            span_id: 88
          ) (Token id:Id.Lit_Chars val:'\tgit -C super_clone log --oneline >lines &&\n' span_id:89) 
          (Token id:Id.Lit_Chars val:'\ttest_line_count = 2 lines &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\tgit -C super_clone/sub log --oneline >lines &&\n' span_id:91) 
          (Token id:Id.Lit_Chars val:'\ttest_line_count = 3 lines\n' span_id:92)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'shallow clone with non shallow submodule' span_id:99))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:103) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "rm -rf super_clone" &&\n'
            span_id: 104
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit clone --recurse-submodules --depth 2 --no-shallow-submodules "file://$pwd/." super_clone &&\n'
            span_id: 105
          ) (Token id:Id.Lit_Chars val:'\tgit -C super_clone log --oneline >lines &&\n' span_id:106) 
          (Token id:Id.Lit_Chars val:'\ttest_line_count = 2 lines &&\n' span_id:107) (Token id:Id.Lit_Chars val:'\tgit -C super_clone/sub log --oneline >lines &&\n' span_id:108) 
          (Token id:Id.Lit_Chars val:'\ttest_line_count = 3 lines\n' span_id:109)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'non shallow clone with shallow submodule' span_id:116))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:120) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "rm -rf super_clone" &&\n'
            span_id: 121
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit clone --recurse-submodules --no-local --shallow-submodules "file://$pwd/." super_clone &&\n'
            span_id: 122
          ) (Token id:Id.Lit_Chars val:'\tgit -C super_clone log --oneline >lines &&\n' span_id:123) 
          (Token id:Id.Lit_Chars val:'\ttest_line_count = 3 lines &&\n' span_id:124) (Token id:Id.Lit_Chars val:'\tgit -C super_clone/sub log --oneline >lines &&\n' span_id:125) 
          (Token id:Id.Lit_Chars val:'\ttest_line_count = 1 lines\n' span_id:126)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone follows shallow recommendation' span_id:133))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:137) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "rm -rf super_clone" &&\n'
            span_id: 138
          ) (Token id:Id.Lit_Chars val:'\tgit config -f .gitmodules submodule.sub.shallow true &&\n' span_id:139) 
          (Token id:Id.Lit_Chars val:'\tgit add .gitmodules &&\n' span_id:140) (Token id:Id.Lit_Chars val:'\tgit commit -m "recommed shallow for sub" &&\n' span_id:141) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --recurse-submodules --no-local "file://$pwd/." super_clone &&\n'
            span_id: 142
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:143) 
          (Token id:Id.Lit_Chars val:'\t\tcd super_clone &&\n' span_id:144) (Token id:Id.Lit_Chars val:'\t\tgit log --oneline >lines &&\n' span_id:145) 
          (Token id:Id.Lit_Chars val:'\t\ttest_line_count = 4 lines\n' span_id:146) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:147) (Token id:Id.Lit_Chars val:'\t(\n' span_id:148) 
          (Token id:Id.Lit_Chars val:'\t\tcd super_clone/sub &&\n' span_id:149) (Token id:Id.Lit_Chars val:'\t\tgit log --oneline >lines &&\n' span_id:150) 
          (Token id:Id.Lit_Chars val:'\t\ttest_line_count = 1 lines\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:'get unshallow recommended shallow submodule' span_id:159))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:163) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "rm -rf super_clone" &&\n'
            span_id: 164
          ) (Token id:Id.Lit_Chars val:'\tgit clone --no-local "file://$pwd/." super_clone &&\n' span_id:165) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:166) (Token id:Id.Lit_Chars val:'\t\tcd super_clone &&\n' span_id:167) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit submodule update --init --no-recommend-shallow &&\n'
            span_id: 168
          ) (Token id:Id.Lit_Chars val:'\t\tgit log --oneline >lines &&\n' span_id:169) 
          (Token id:Id.Lit_Chars val:'\t\ttest_line_count = 4 lines\n' span_id:170) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:171) (Token id:Id.Lit_Chars val:'\t(\n' span_id:172) 
          (Token id:Id.Lit_Chars val:'\t\tcd super_clone/sub &&\n' span_id:173) (Token id:Id.Lit_Chars val:'\t\tgit log --oneline >lines &&\n' span_id:174) 
          (Token id:Id.Lit_Chars val:'\t\ttest_line_count = 3 lines\n' span_id:175) (Token id:Id.Lit_Chars val:'\t)\n' span_id:176)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone follows non shallow recommendation' span_id:183))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:187) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "rm -rf super_clone" &&\n'
            span_id: 188
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config -f .gitmodules submodule.sub.shallow false &&\n'
            span_id: 189
          ) (Token id:Id.Lit_Chars val:'\tgit add .gitmodules &&\n' span_id:190) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "recommed non shallow for sub" &&\n'
            span_id: 191
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --recurse-submodules --no-local "file://$pwd/." super_clone &&\n'
            span_id: 192
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:193) 
          (Token id:Id.Lit_Chars val:'\t\tcd super_clone &&\n' span_id:194) (Token id:Id.Lit_Chars val:'\t\tgit log --oneline >lines &&\n' span_id:195) 
          (Token id:Id.Lit_Chars val:'\t\ttest_line_count = 5 lines\n' span_id:196) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:197) (Token id:Id.Lit_Chars val:'\t(\n' span_id:198) 
          (Token id:Id.Lit_Chars val:'\t\tcd super_clone/sub &&\n' span_id:199) (Token id:Id.Lit_Chars val:'\t\tgit log --oneline >lines &&\n' span_id:200) 
          (Token id:Id.Lit_Chars val:'\t\ttest_line_count = 3 lines\n' span_id:201) (Token id:Id.Lit_Chars val:'\t)\n' span_id:202)
        )
      }
    )
    (C {(test_done)})
  ]
)