(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ <'split index mode tests'>)} spids: [4] ) ] ) (C {<.>} {<'./test-lib.sh'>}) (C {<sane_unset>} {<GIT_TEST_SPLIT_INDEX>}) (C {<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'> ) } ) (C {<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'> ) } ) (C {<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'> ) } ) (C {<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'> ) } ) (C {<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'> ) } ) (C {<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'> ) } ) (C {<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'> ) } ) (C {<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'> ) } ) (C {<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'> ) } ) (C {<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'> ) } ) (C {<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'> ) } ) (C {<test_done>}) ] )