(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"checkout can handle submodules">)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(.)} {(DQ ($ VSub_Name "$TEST_DIRECTORY")) (/lib-submodule-update.sh)})
    (C {(test_expect_success)} {(SQ <setup>)} 
      {
        (SQ <"\n"> <"\tmkdir submodule &&\n"> <"\t(cd submodule &&\n"> <"\t git init &&\n"> 
          <"\t test_commit first) &&\n"> <"\tgit add submodule &&\n"> <"\ttest_tick &&\n"> <"\tgit commit -m superproject &&\n"> 
          <"\t(cd submodule &&\n"> <"\t test_commit second) &&\n"> <"\tgit add submodule &&\n"> <"\ttest_tick &&\n"> 
          <"\tgit commit -m updated.superproject\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"\"reset <submodule>\" updates the index">)} 
      {
        (SQ <"\n"> <"\tgit update-index --refresh &&\n"> <"\tgit diff-files --quiet &&\n"> 
          <"\tgit diff-index --quiet --cached HEAD &&\n"> <"\tgit reset HEAD^ submodule &&\n"> <"\ttest_must_fail git diff-files --quiet &&\n"> 
          <"\tgit reset submodule &&\n"> <"\tgit diff-files --quiet\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"\"checkout <submodule>\" updates the index only">)} 
      {
        (SQ <"\n"> <"\tgit update-index --refresh &&\n"> <"\tgit diff-files --quiet &&\n"> 
          <"\tgit diff-index --quiet --cached HEAD &&\n"> <"\tgit checkout HEAD^ submodule &&\n"> <"\ttest_must_fail git diff-files --quiet &&\n"> 
          <"\tgit checkout HEAD submodule &&\n"> <"\tgit diff-files --quiet\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"\"checkout <submodule>\" honors diff.ignoreSubmodules">)} 
      {
        (SQ <"\n"> <"\tgit config diff.ignoreSubmodules dirty &&\n"> 
          <"\techo x> submodule/untracked &&\n"> <"\tgit checkout HEAD >actual 2>&1 &&\n"> <"\t! test -s actual\n">
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ <"\"checkout <submodule>\" honors submodule.*.ignore from .gitmodules">)} 
      {
        (SQ <"\n"> <"\tgit config diff.ignoreSubmodules none &&\n"> 
          <"\tgit config -f .gitmodules submodule.submodule.path submodule &&\n"> <"\tgit config -f .gitmodules submodule.submodule.ignore untracked &&\n"> 
          <"\tgit checkout HEAD >actual 2>&1 &&\n"> <"\t! test -s actual\n">
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ <"\"checkout <submodule>\" honors submodule.*.ignore from .git/config">)} 
      {
        (SQ <"\n"> <"\tgit config -f .gitmodules submodule.submodule.ignore none &&\n"> 
          <"\tgit config submodule.submodule.path submodule &&\n"> <"\tgit config submodule.submodule.ignore all &&\n"> <"\tgit checkout HEAD >actual 2>&1 &&\n"> 
          <"\t! test -s actual\n">
        )
      }
    )
    (C {(test_submodule_switch)} {(DQ ("git checkout"))})
    (C {(test_submodule_forced_switch)} {(DQ ("git checkout -f"))})
    (C {(test_done)})
  ]
)