-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
t1700: new tests for split-index mode
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
Nguyễn Thái Ngọc Duy
authored and
Junio C Hamano
committed
Jun 13, 2014
1 parent
5b0a78c
commit 3e52f70
Showing
6 changed files
with
233 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,194 @@ | ||
#!/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 && | ||
cat >expect <<EOF && | ||
own 8299b0bcd1ac364e5f1d7768efb62fa2da79a339 | ||
base 39d890139ee5356c7ef572216cebcd27aa41f9df | ||
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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 39d890139ee5356c7ef572216cebcd27aa41f9df | ||
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 one | ||
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 one | ||
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
#include "cache.h" | ||
#include "split-index.h" | ||
#include "ewah/ewok.h" | ||
|
||
static void show_bit(size_t pos, void *data) | ||
{ | ||
printf(" %d", (int)pos); | ||
} | ||
|
||
int main(int ac, char **av) | ||
{ | ||
struct split_index *si; | ||
int i; | ||
|
||
do_read_index(&the_index, av[1], 1); | ||
printf("own %s\n", sha1_to_hex(the_index.sha1)); | ||
si = the_index.split_index; | ||
if (!si) { | ||
printf("not a split index\n"); | ||
return 0; | ||
} | ||
printf("base %s\n", sha1_to_hex(si->base_sha1)); | ||
for (i = 0; i < the_index.cache_nr; i++) { | ||
struct cache_entry *ce = the_index.cache[i]; | ||
printf("%06o %s %d\t%s\n", ce->ce_mode, | ||
sha1_to_hex(ce->sha1), ce_stage(ce), ce->name); | ||
} | ||
printf("replacements:"); | ||
ewah_each_bit(si->replace_bitmap, show_bit, NULL); | ||
printf("\ndeletions:"); | ||
ewah_each_bit(si->delete_bitmap, show_bit, NULL); | ||
printf("\n"); | ||
return 0; | ||
} |