204 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			204 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/bin/sh
 | |
| 
 | |
| test_description='split index mode tests'
 | |
| 
 | |
| . ./test-lib.sh
 | |
| 
 | |
| # We need total control of index splitting here
 | |
| sane_unset GIT_TEST_SPLIT_INDEX
 | |
| 
 | |
| test_expect_success 'enable split index' '
 | |
| 	git update-index --split-index &&
 | |
| 	test-dump-split-index .git/index >actual &&
 | |
| 	indexversion=$(test-index-version <.git/index) &&
 | |
| 	if test "$indexversion" = "4"
 | |
| 	then
 | |
| 		own=432ef4b63f32193984f339431fd50ca796493569
 | |
| 		base=508851a7f0dfa8691e9f69c7f055865389012491
 | |
| 	else
 | |
| 		own=8299b0bcd1ac364e5f1d7768efb62fa2da79a339
 | |
| 		base=39d890139ee5356c7ef572216cebcd27aa41f9df
 | |
| 	fi &&
 | |
| 	cat >expect <<EOF &&
 | |
| own $own
 | |
| base $base
 | |
| replacements:
 | |
| deletions:
 | |
| EOF
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| test_expect_success 'add one file' '
 | |
| 	: >one &&
 | |
| 	git update-index --add one &&
 | |
| 	git ls-files --stage >ls-files.actual &&
 | |
| 	cat >ls-files.expect <<EOF &&
 | |
| 100644 $EMPTY_BLOB 0	one
 | |
| EOF
 | |
| 	test_cmp ls-files.expect ls-files.actual &&
 | |
| 
 | |
| 	test-dump-split-index .git/index | sed "/^own/d" >actual &&
 | |
| 	cat >expect <<EOF &&
 | |
| base $base
 | |
| 100644 $EMPTY_BLOB 0	one
 | |
| replacements:
 | |
| deletions:
 | |
| EOF
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| test_expect_success 'disable split index' '
 | |
| 	git update-index --no-split-index &&
 | |
| 	git ls-files --stage >ls-files.actual &&
 | |
| 	cat >ls-files.expect <<EOF &&
 | |
| 100644 $EMPTY_BLOB 0	one
 | |
| EOF
 | |
| 	test_cmp ls-files.expect ls-files.actual &&
 | |
| 
 | |
| 	BASE=$(test-dump-split-index .git/index | grep "^own" | sed "s/own/base/") &&
 | |
| 	test-dump-split-index .git/index | sed "/^own/d" >actual &&
 | |
| 	cat >expect <<EOF &&
 | |
| not a split index
 | |
| EOF
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| test_expect_success 'enable split index again, "one" now belongs to base index"' '
 | |
| 	git update-index --split-index &&
 | |
| 	git ls-files --stage >ls-files.actual &&
 | |
| 	cat >ls-files.expect <<EOF &&
 | |
| 100644 $EMPTY_BLOB 0	one
 | |
| EOF
 | |
| 	test_cmp ls-files.expect ls-files.actual &&
 | |
| 
 | |
| 	test-dump-split-index .git/index | sed "/^own/d" >actual &&
 | |
| 	cat >expect <<EOF &&
 | |
| $BASE
 | |
| replacements:
 | |
| deletions:
 | |
| EOF
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| test_expect_success 'modify original file, base index untouched' '
 | |
| 	echo modified >one &&
 | |
| 	git update-index one &&
 | |
| 	git ls-files --stage >ls-files.actual &&
 | |
| 	cat >ls-files.expect <<EOF &&
 | |
| 100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0	one
 | |
| EOF
 | |
| 	test_cmp ls-files.expect ls-files.actual &&
 | |
| 
 | |
| 	test-dump-split-index .git/index | sed "/^own/d" >actual &&
 | |
| 	q_to_tab >expect <<EOF &&
 | |
| $BASE
 | |
| 100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0Q
 | |
| replacements: 0
 | |
| deletions:
 | |
| EOF
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| test_expect_success 'add another file, which stays index' '
 | |
| 	: >two &&
 | |
| 	git update-index --add two &&
 | |
| 	git ls-files --stage >ls-files.actual &&
 | |
| 	cat >ls-files.expect <<EOF &&
 | |
| 100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0	one
 | |
| 100644 $EMPTY_BLOB 0	two
 | |
| EOF
 | |
| 	test_cmp ls-files.expect ls-files.actual &&
 | |
| 
 | |
| 	test-dump-split-index .git/index | sed "/^own/d" >actual &&
 | |
| 	q_to_tab >expect <<EOF &&
 | |
| $BASE
 | |
| 100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0Q
 | |
| 100644 $EMPTY_BLOB 0	two
 | |
| replacements: 0
 | |
| deletions:
 | |
| EOF
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| test_expect_success 'remove file not in base index' '
 | |
| 	git update-index --force-remove two &&
 | |
| 	git ls-files --stage >ls-files.actual &&
 | |
| 	cat >ls-files.expect <<EOF &&
 | |
| 100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0	one
 | |
| EOF
 | |
| 	test_cmp ls-files.expect ls-files.actual &&
 | |
| 
 | |
| 	test-dump-split-index .git/index | sed "/^own/d" >actual &&
 | |
| 	q_to_tab >expect <<EOF &&
 | |
| $BASE
 | |
| 100644 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0Q
 | |
| replacements: 0
 | |
| deletions:
 | |
| EOF
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| test_expect_success 'remove file in base index' '
 | |
| 	git update-index --force-remove one &&
 | |
| 	git ls-files --stage >ls-files.actual &&
 | |
| 	cat >ls-files.expect <<EOF &&
 | |
| EOF
 | |
| 	test_cmp ls-files.expect ls-files.actual &&
 | |
| 
 | |
| 	test-dump-split-index .git/index | sed "/^own/d" >actual &&
 | |
| 	cat >expect <<EOF &&
 | |
| $BASE
 | |
| replacements:
 | |
| deletions: 0
 | |
| EOF
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| test_expect_success 'add original file back' '
 | |
| 	: >one &&
 | |
| 	git update-index --add one &&
 | |
| 	git ls-files --stage >ls-files.actual &&
 | |
| 	cat >ls-files.expect <<EOF &&
 | |
| 100644 $EMPTY_BLOB 0	one
 | |
| EOF
 | |
| 	test_cmp ls-files.expect ls-files.actual &&
 | |
| 
 | |
| 	test-dump-split-index .git/index | sed "/^own/d" >actual &&
 | |
| 	cat >expect <<EOF &&
 | |
| $BASE
 | |
| 100644 $EMPTY_BLOB 0	one
 | |
| replacements:
 | |
| deletions: 0
 | |
| EOF
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| test_expect_success 'add new file' '
 | |
| 	: >two &&
 | |
| 	git update-index --add two &&
 | |
| 	git ls-files --stage >actual &&
 | |
| 	cat >expect <<EOF &&
 | |
| 100644 $EMPTY_BLOB 0	one
 | |
| 100644 $EMPTY_BLOB 0	two
 | |
| EOF
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| test_expect_success 'unify index, two files remain' '
 | |
| 	git update-index --no-split-index &&
 | |
| 	git ls-files --stage >ls-files.actual &&
 | |
| 	cat >ls-files.expect <<EOF &&
 | |
| 100644 $EMPTY_BLOB 0	one
 | |
| 100644 $EMPTY_BLOB 0	two
 | |
| EOF
 | |
| 	test_cmp ls-files.expect ls-files.actual &&
 | |
| 
 | |
| 	test-dump-split-index .git/index | sed "/^own/d" >actual &&
 | |
| 	cat >expect <<EOF &&
 | |
| not a split index
 | |
| EOF
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| test_done
 |