(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:'split index mode tests' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(sane_unset)} {(GIT_TEST_SPLIT_INDEX)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'enable split index' span_id:26))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:30) (Token id:Id.Lit_Chars val:'\tgit update-index --split-index &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\ttest-dump-split-index .git/index >actual &&\n' span_id:32) (Token id: Id.Lit_Chars val: '\tindexversion=$(test-index-version <.git/index) &&\n' span_id: 33 ) (Token id:Id.Lit_Chars val:'\tif test "$indexversion" = "4"\n' span_id:34) (Token id:Id.Lit_Chars val:'\tthen\n' span_id:35) (Token id:Id.Lit_Chars val:'\t\town=432ef4b63f32193984f339431fd50ca796493569\n' span_id:36) (Token id: Id.Lit_Chars val: '\t\tbase=508851a7f0dfa8691e9f69c7f055865389012491\n' span_id: 37 ) (Token id:Id.Lit_Chars val:'\telse\n' span_id:38) (Token id: Id.Lit_Chars val: '\t\town=8299b0bcd1ac364e5f1d7768efb62fa2da79a339\n' span_id: 39 ) (Token id:Id.Lit_Chars val:'\t\tbase=39d890139ee5356c7ef572216cebcd27aa41f9df\n' span_id:40) (Token id:Id.Lit_Chars val:'\tfi &&\n' span_id:41) (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:42) (Token id:Id.Lit_Chars val:'own $own\n' span_id:43) (Token id:Id.Lit_Chars val:'base $base\n' span_id:44) (Token id:Id.Lit_Chars val:'replacements:\n' span_id:45) (Token id:Id.Lit_Chars val:'deletions:\n' span_id:46) (Token id:Id.Lit_Chars val:'EOF\n' span_id:47) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:48) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'add one file' span_id:55))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:59) (Token id:Id.Lit_Chars val:'\t: >one &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\tgit update-index --add one &&\n' span_id:61) (Token id: Id.Lit_Chars val: '\tgit ls-files --stage >ls-files.actual &&\n' span_id: 62 ) (Token id:Id.Lit_Chars val:'\tcat >ls-files.expect <<EOF &&\n' span_id:63) (Token id:Id.Lit_Chars val:'100644 $EMPTY_BLOB 0\tone\n' span_id:64) (Token id:Id.Lit_Chars val:'EOF\n' span_id:65) (Token id: Id.Lit_Chars val: '\ttest_cmp ls-files.expect ls-files.actual &&\n' span_id: 66 ) (Token id:Id.Lit_Chars val:'\n' span_id:67) (Token id: Id.Lit_Chars val: '\ttest-dump-split-index .git/index | sed "/^own/d" >actual &&\n' span_id: 68 ) (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:69) (Token id:Id.Lit_Chars val:'base $base\n' span_id:70) (Token id:Id.Lit_Chars val:'100644 $EMPTY_BLOB 0\tone\n' span_id:71) (Token id:Id.Lit_Chars val:'replacements:\n' span_id:72) (Token id:Id.Lit_Chars val:'deletions:\n' span_id:73) (Token id:Id.Lit_Chars val:'EOF\n' span_id:74) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:75) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'disable split index' span_id:82))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:86) (Token id:Id.Lit_Chars val:'\tgit update-index --no-split-index &&\n' span_id:87) (Token id:Id.Lit_Chars val:'\tgit ls-files --stage >ls-files.actual &&\n' span_id:88) (Token id:Id.Lit_Chars val:'\tcat >ls-files.expect <<EOF &&\n' span_id:89) (Token id:Id.Lit_Chars val:'100644 $EMPTY_BLOB 0\tone\n' span_id:90) (Token id:Id.Lit_Chars val:'EOF\n' span_id:91) (Token id:Id.Lit_Chars val:'\ttest_cmp ls-files.expect ls-files.actual &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\n' span_id:93) (Token id: Id.Lit_Chars val: '\tBASE=$(test-dump-split-index .git/index | grep "^own" | sed "s/own/base/") &&\n' span_id: 94 ) (Token id: Id.Lit_Chars val: '\ttest-dump-split-index .git/index | sed "/^own/d" >actual &&\n' span_id: 95 ) (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:96) (Token id:Id.Lit_Chars val:'not a split index\n' span_id:97) (Token id:Id.Lit_Chars val:'EOF\n' span_id:98) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:99) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'enable split index again, "one" now belongs to base index"' span_id: 106 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:110) (Token id:Id.Lit_Chars val:'\tgit update-index --split-index &&\n' span_id:111) (Token id:Id.Lit_Chars val:'\tgit ls-files --stage >ls-files.actual &&\n' span_id:112) (Token id:Id.Lit_Chars val:'\tcat >ls-files.expect <<EOF &&\n' span_id:113) (Token id:Id.Lit_Chars val:'100644 $EMPTY_BLOB 0\tone\n' span_id:114) (Token id:Id.Lit_Chars val:'EOF\n' span_id:115) (Token id:Id.Lit_Chars val:'\ttest_cmp ls-files.expect ls-files.actual &&\n' span_id:116) (Token id:Id.Lit_Chars val:'\n' span_id:117) (Token id: Id.Lit_Chars val: '\ttest-dump-split-index .git/index | sed "/^own/d" >actual &&\n' span_id: 118 ) (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:119) (Token id:Id.Lit_Chars val:'$BASE\n' span_id:120) (Token id:Id.Lit_Chars val:'replacements:\n' span_id:121) (Token id:Id.Lit_Chars val:'deletions:\n' span_id:122) (Token id:Id.Lit_Chars val:'EOF\n' span_id:123) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:124) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modify original file, base index untouched' span_id:131))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:135) (Token id:Id.Lit_Chars val:'\techo modified >one &&\n' span_id:136) (Token id:Id.Lit_Chars val:'\tgit update-index one &&\n' span_id:137) (Token id: Id.Lit_Chars val: '\tgit ls-files --stage >ls-files.actual &&\n' span_id: 138 ) (Token id:Id.Lit_Chars val:'\tcat >ls-files.expect <<EOF &&\n' span_id:139) (Token id: Id.Lit_Chars val: '100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0\tone\n' span_id: 140 ) (Token id:Id.Lit_Chars val:'EOF\n' span_id:141) (Token id: Id.Lit_Chars val: '\ttest_cmp ls-files.expect ls-files.actual &&\n' span_id: 142 ) (Token id:Id.Lit_Chars val:'\n' span_id:143) (Token id: Id.Lit_Chars val: '\ttest-dump-split-index .git/index | sed "/^own/d" >actual &&\n' span_id: 144 ) (Token id:Id.Lit_Chars val:'\tq_to_tab >expect <<EOF &&\n' span_id:145) (Token id:Id.Lit_Chars val:'$BASE\n' span_id:146) (Token id:Id.Lit_Chars val:'100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0Q\n' span_id:147) (Token id:Id.Lit_Chars val:'replacements: 0\n' span_id:148) (Token id:Id.Lit_Chars val:'deletions:\n' span_id:149) (Token id:Id.Lit_Chars val:'EOF\n' span_id:150) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:151) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'add another file, which stays index' span_id:158))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:162) (Token id:Id.Lit_Chars val:'\t: >two &&\n' span_id:163) (Token id:Id.Lit_Chars val:'\tgit update-index --add two &&\n' span_id:164) (Token id: Id.Lit_Chars val: '\tgit ls-files --stage >ls-files.actual &&\n' span_id: 165 ) (Token id:Id.Lit_Chars val:'\tcat >ls-files.expect <<EOF &&\n' span_id:166) (Token id: Id.Lit_Chars val: '100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0\tone\n' span_id: 167 ) (Token id:Id.Lit_Chars val:'100644 $EMPTY_BLOB 0\ttwo\n' span_id:168) (Token id:Id.Lit_Chars val:'EOF\n' span_id:169) (Token id:Id.Lit_Chars val:'\ttest_cmp ls-files.expect ls-files.actual &&\n' span_id:170) (Token id:Id.Lit_Chars val:'\n' span_id:171) (Token id: Id.Lit_Chars val: '\ttest-dump-split-index .git/index | sed "/^own/d" >actual &&\n' span_id: 172 ) (Token id:Id.Lit_Chars val:'\tq_to_tab >expect <<EOF &&\n' span_id:173) (Token id:Id.Lit_Chars val:'$BASE\n' span_id:174) (Token id:Id.Lit_Chars val:'100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0Q\n' span_id:175) (Token id:Id.Lit_Chars val:'100644 $EMPTY_BLOB 0\ttwo\n' span_id:176) (Token id:Id.Lit_Chars val:'replacements: 0\n' span_id:177) (Token id:Id.Lit_Chars val:'deletions:\n' span_id:178) (Token id:Id.Lit_Chars val:'EOF\n' span_id:179) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:180) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'remove file not in base index' span_id:187))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:191) (Token id: Id.Lit_Chars val: '\tgit update-index --force-remove two &&\n' span_id: 192 ) (Token id:Id.Lit_Chars val:'\tgit ls-files --stage >ls-files.actual &&\n' span_id:193) (Token id:Id.Lit_Chars val:'\tcat >ls-files.expect <<EOF &&\n' span_id:194) (Token id:Id.Lit_Chars val:'100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0\tone\n' span_id:195) (Token id:Id.Lit_Chars val:'EOF\n' span_id:196) (Token id:Id.Lit_Chars val:'\ttest_cmp ls-files.expect ls-files.actual &&\n' span_id:197) (Token id:Id.Lit_Chars val:'\n' span_id:198) (Token id: Id.Lit_Chars val: '\ttest-dump-split-index .git/index | sed "/^own/d" >actual &&\n' span_id: 199 ) (Token id:Id.Lit_Chars val:'\tq_to_tab >expect <<EOF &&\n' span_id:200) (Token id:Id.Lit_Chars val:'$BASE\n' span_id:201) (Token id:Id.Lit_Chars val:'100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0Q\n' span_id:202) (Token id:Id.Lit_Chars val:'replacements: 0\n' span_id:203) (Token id:Id.Lit_Chars val:'deletions:\n' span_id:204) (Token id:Id.Lit_Chars val:'EOF\n' span_id:205) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:206) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'remove file in base index' span_id:213))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:217) (Token id: Id.Lit_Chars val: '\tgit update-index --force-remove one &&\n' span_id: 218 ) (Token id:Id.Lit_Chars val:'\tgit ls-files --stage >ls-files.actual &&\n' span_id:219) (Token id:Id.Lit_Chars val:'\tcat >ls-files.expect <<EOF &&\n' span_id:220) (Token id:Id.Lit_Chars val:'EOF\n' span_id:221) (Token id: Id.Lit_Chars val: '\ttest_cmp ls-files.expect ls-files.actual &&\n' span_id: 222 ) (Token id:Id.Lit_Chars val:'\n' span_id:223) (Token id: Id.Lit_Chars val: '\ttest-dump-split-index .git/index | sed "/^own/d" >actual &&\n' span_id: 224 ) (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:225) (Token id:Id.Lit_Chars val:'$BASE\n' span_id:226) (Token id:Id.Lit_Chars val:'replacements:\n' span_id:227) (Token id:Id.Lit_Chars val:'deletions: 0\n' span_id:228) (Token id:Id.Lit_Chars val:'EOF\n' span_id:229) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:230) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'add original file back' span_id:237))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:241) (Token id:Id.Lit_Chars val:'\t: >one &&\n' span_id:242) (Token id:Id.Lit_Chars val:'\tgit update-index --add one &&\n' span_id:243) (Token id: Id.Lit_Chars val: '\tgit ls-files --stage >ls-files.actual &&\n' span_id: 244 ) (Token id:Id.Lit_Chars val:'\tcat >ls-files.expect <<EOF &&\n' span_id:245) (Token id:Id.Lit_Chars val:'100644 $EMPTY_BLOB 0\tone\n' span_id:246) (Token id:Id.Lit_Chars val:'EOF\n' span_id:247) (Token id: Id.Lit_Chars val: '\ttest_cmp ls-files.expect ls-files.actual &&\n' span_id: 248 ) (Token id:Id.Lit_Chars val:'\n' span_id:249) (Token id: Id.Lit_Chars val: '\ttest-dump-split-index .git/index | sed "/^own/d" >actual &&\n' span_id: 250 ) (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:251) (Token id:Id.Lit_Chars val:'$BASE\n' span_id:252) (Token id:Id.Lit_Chars val:'100644 $EMPTY_BLOB 0\tone\n' span_id:253) (Token id:Id.Lit_Chars val:'replacements:\n' span_id:254) (Token id:Id.Lit_Chars val:'deletions: 0\n' span_id:255) (Token id:Id.Lit_Chars val:'EOF\n' span_id:256) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:257) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'add new file' span_id:264))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:268) (Token id:Id.Lit_Chars val:'\t: >two &&\n' span_id:269) (Token id:Id.Lit_Chars val:'\tgit update-index --add two &&\n' span_id:270) (Token id:Id.Lit_Chars val:'\tgit ls-files --stage >actual &&\n' span_id:271) (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:272) (Token id:Id.Lit_Chars val:'100644 $EMPTY_BLOB 0\tone\n' span_id:273) (Token id:Id.Lit_Chars val:'100644 $EMPTY_BLOB 0\ttwo\n' span_id:274) (Token id:Id.Lit_Chars val:'EOF\n' span_id:275) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:276) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'unify index, two files remain' span_id:283))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:287) (Token id: Id.Lit_Chars val: '\tgit update-index --no-split-index &&\n' span_id: 288 ) (Token id:Id.Lit_Chars val:'\tgit ls-files --stage >ls-files.actual &&\n' span_id:289) (Token id:Id.Lit_Chars val:'\tcat >ls-files.expect <<EOF &&\n' span_id:290) (Token id:Id.Lit_Chars val:'100644 $EMPTY_BLOB 0\tone\n' span_id:291) (Token id:Id.Lit_Chars val:'100644 $EMPTY_BLOB 0\ttwo\n' span_id:292) (Token id:Id.Lit_Chars val:'EOF\n' span_id:293) (Token id: Id.Lit_Chars val: '\ttest_cmp ls-files.expect ls-files.actual &&\n' span_id: 294 ) (Token id:Id.Lit_Chars val:'\n' span_id:295) (Token id: Id.Lit_Chars val: '\ttest-dump-split-index .git/index | sed "/^own/d" >actual &&\n' span_id: 296 ) (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:297) (Token id:Id.Lit_Chars val:'not a split index\n' span_id:298) (Token id:Id.Lit_Chars val:'EOF\n' span_id:299) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:300) ) } ) (C {(test_done)}) ] )