(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 <'split index mode tests'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./test-lib.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <sane_unset>
      more_env: []
      words: [{<sane_unset>} {<GIT_TEST_SPLIT_INDEX>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'enable split index'>)}
        {
          (SQ <'\n'> <'\tgit update-index --split-index &&\n'> 
            <'\ttest-dump-split-index .git/index >actual &&\n'> <'\tindexversion=$(test-index-version <.git/index) &&\n'> <'\tif test "$indexversion" = "4"\n'> 
            <'\tthen\n'> <'\t\town=432ef4b63f32193984f339431fd50ca796493569\n'> 
            <'\t\tbase=508851a7f0dfa8691e9f69c7f055865389012491\n'> <'\telse\n'> <'\t\town=8299b0bcd1ac364e5f1d7768efb62fa2da79a339\n'> 
            <'\t\tbase=39d890139ee5356c7ef572216cebcd27aa41f9df\n'> <'\tfi &&\n'> <'\tcat >expect <<EOF &&\n'> <'own $own\n'> <'base $base\n'> <'replacements:\n'> 
            <'deletions:\n'> <'EOF\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'add one file'>)}
        {
          (SQ <'\n'> <'\t: >one &&\n'> <'\tgit update-index --add one &&\n'> 
            <'\tgit ls-files --stage >ls-files.actual &&\n'> <'\tcat >ls-files.expect <<EOF &&\n'> <'100644 $EMPTY_BLOB 0\tone\n'> <'EOF\n'> 
            <'\ttest_cmp ls-files.expect ls-files.actual &&\n'> <'\n'> <'\ttest-dump-split-index .git/index | sed "/^own/d" >actual &&\n'> <'\tcat >expect <<EOF &&\n'> 
            <'base $base\n'> <'100644 $EMPTY_BLOB 0\tone\n'> <'replacements:\n'> <'deletions:\n'> <'EOF\n'> 
            <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'disable split index'>)}
        {
          (SQ <'\n'> <'\tgit update-index --no-split-index &&\n'> 
            <'\tgit ls-files --stage >ls-files.actual &&\n'> <'\tcat >ls-files.expect <<EOF &&\n'> <'100644 $EMPTY_BLOB 0\tone\n'> <'EOF\n'> 
            <'\ttest_cmp ls-files.expect ls-files.actual &&\n'> <'\n'> <'\tBASE=$(test-dump-split-index .git/index | grep "^own" | sed "s/own/base/") &&\n'> 
            <'\ttest-dump-split-index .git/index | sed "/^own/d" >actual &&\n'> <'\tcat >expect <<EOF &&\n'> <'not a split index\n'> <'EOF\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'enable split index again, "one" now belongs to base index"'>)}
        {
          (SQ <'\n'> <'\tgit update-index --split-index &&\n'> 
            <'\tgit ls-files --stage >ls-files.actual &&\n'> <'\tcat >ls-files.expect <<EOF &&\n'> <'100644 $EMPTY_BLOB 0\tone\n'> <'EOF\n'> 
            <'\ttest_cmp ls-files.expect ls-files.actual &&\n'> <'\n'> <'\ttest-dump-split-index .git/index | sed "/^own/d" >actual &&\n'> <'\tcat >expect <<EOF &&\n'> 
            <'$BASE\n'> <'replacements:\n'> <'deletions:\n'> <'EOF\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'modify original file, base index untouched'>)}
        {
          (SQ <'\n'> <'\techo modified >one &&\n'> <'\tgit update-index one &&\n'> 
            <'\tgit ls-files --stage >ls-files.actual &&\n'> <'\tcat >ls-files.expect <<EOF &&\n'> <'100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0\tone\n'> 
            <'EOF\n'> <'\ttest_cmp ls-files.expect ls-files.actual &&\n'> <'\n'> 
            <'\ttest-dump-split-index .git/index | sed "/^own/d" >actual &&\n'> <'\tq_to_tab >expect <<EOF &&\n'> <'$BASE\n'> <'100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0Q\n'> 
            <'replacements: 0\n'> <'deletions:\n'> <'EOF\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'add another file, which stays index'>)}
        {
          (SQ <'\n'> <'\t: >two &&\n'> <'\tgit update-index --add two &&\n'> 
            <'\tgit ls-files --stage >ls-files.actual &&\n'> <'\tcat >ls-files.expect <<EOF &&\n'> <'100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0\tone\n'> 
            <'100644 $EMPTY_BLOB 0\ttwo\n'> <'EOF\n'> <'\ttest_cmp ls-files.expect ls-files.actual &&\n'> <'\n'> 
            <'\ttest-dump-split-index .git/index | sed "/^own/d" >actual &&\n'> <'\tq_to_tab >expect <<EOF &&\n'> <'$BASE\n'> <'100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0Q\n'> 
            <'100644 $EMPTY_BLOB 0\ttwo\n'> <'replacements: 0\n'> <'deletions:\n'> <'EOF\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'remove file not in base index'>)}
        {
          (SQ <'\n'> <'\tgit update-index --force-remove two &&\n'> 
            <'\tgit ls-files --stage >ls-files.actual &&\n'> <'\tcat >ls-files.expect <<EOF &&\n'> <'100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0\tone\n'> 
            <'EOF\n'> <'\ttest_cmp ls-files.expect ls-files.actual &&\n'> <'\n'> 
            <'\ttest-dump-split-index .git/index | sed "/^own/d" >actual &&\n'> <'\tq_to_tab >expect <<EOF &&\n'> <'$BASE\n'> <'100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0Q\n'> 
            <'replacements: 0\n'> <'deletions:\n'> <'EOF\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'remove file in base index'>)}
        {
          (SQ <'\n'> <'\tgit update-index --force-remove one &&\n'> 
            <'\tgit ls-files --stage >ls-files.actual &&\n'> <'\tcat >ls-files.expect <<EOF &&\n'> <'EOF\n'> <'\ttest_cmp ls-files.expect ls-files.actual &&\n'> 
            <'\n'> <'\ttest-dump-split-index .git/index | sed "/^own/d" >actual &&\n'> <'\tcat >expect <<EOF &&\n'> 
            <'$BASE\n'> <'replacements:\n'> <'deletions: 0\n'> <'EOF\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'add original file back'>)}
        {
          (SQ <'\n'> <'\t: >one &&\n'> <'\tgit update-index --add one &&\n'> 
            <'\tgit ls-files --stage >ls-files.actual &&\n'> <'\tcat >ls-files.expect <<EOF &&\n'> <'100644 $EMPTY_BLOB 0\tone\n'> <'EOF\n'> 
            <'\ttest_cmp ls-files.expect ls-files.actual &&\n'> <'\n'> <'\ttest-dump-split-index .git/index | sed "/^own/d" >actual &&\n'> <'\tcat >expect <<EOF &&\n'> 
            <'$BASE\n'> <'100644 $EMPTY_BLOB 0\tone\n'> <'replacements:\n'> <'deletions: 0\n'> <'EOF\n'> 
            <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'add new file'>)}
        {
          (SQ <'\n'> <'\t: >two &&\n'> <'\tgit update-index --add two &&\n'> 
            <'\tgit ls-files --stage >actual &&\n'> <'\tcat >expect <<EOF &&\n'> <'100644 $EMPTY_BLOB 0\tone\n'> <'100644 $EMPTY_BLOB 0\ttwo\n'> <'EOF\n'> 
            <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'unify index, two files remain'>)}
        {
          (SQ <'\n'> <'\tgit update-index --no-split-index &&\n'> 
            <'\tgit ls-files --stage >ls-files.actual &&\n'> <'\tcat >ls-files.expect <<EOF &&\n'> <'100644 $EMPTY_BLOB 0\tone\n'> <'100644 $EMPTY_BLOB 0\ttwo\n'> 
            <'EOF\n'> <'\ttest_cmp ls-files.expect ls-files.actual &&\n'> <'\n'> 
            <'\ttest-dump-split-index .git/index | sed "/^own/d" >actual &&\n'> <'\tcat >expect <<EOF &&\n'> <'not a split index\n'> <'EOF\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
    )
  ]
)