git/t/t2104-update-index-skip-worktree.sh
Thomas Gummerer 5d9fc888b4 test-lib: allow setting the index format version
Allow adding a TEST_GIT_INDEX_VERSION variable to config.mak to set the
index version with which the test suite should be run.

If it isn't set, the default version given in the source code is
used (currently version 3).

To avoid breakages with index versions other than [23], also set the
index version under which t2104 is run to 3.  This test only tests
functionality specific to version 2 and 3 of the index file and would
fail if the test suite is run with any other version.

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2014-02-24 13:33:17 -08:00

60 lines
1.1 KiB
Bash
Executable file

#!/bin/sh
#
# Copyright (c) 2008 Nguyễn Thái Ngọc Duy
#
test_description='skip-worktree bit test'
. ./test-lib.sh
test_set_index_version 3
cat >expect.full <<EOF
H 1
H 2
H sub/1
H sub/2
EOF
cat >expect.skip <<EOF
S 1
H 2
S sub/1
H sub/2
EOF
test_expect_success 'setup' '
mkdir sub &&
touch ./1 ./2 sub/1 sub/2 &&
git add 1 2 sub/1 sub/2 &&
git ls-files -t | test_cmp expect.full -
'
test_expect_success 'index is at version 2' '
test "$(test-index-version < .git/index)" = 2
'
test_expect_success 'update-index --skip-worktree' '
git update-index --skip-worktree 1 sub/1 &&
git ls-files -t | test_cmp expect.skip -
'
test_expect_success 'index is at version 3 after having some skip-worktree entries' '
test "$(test-index-version < .git/index)" = 3
'
test_expect_success 'ls-files -t' '
git ls-files -t | test_cmp expect.skip -
'
test_expect_success 'update-index --no-skip-worktree' '
git update-index --no-skip-worktree 1 sub/1 &&
git ls-files -t | test_cmp expect.full -
'
test_expect_success 'index version is back to 2 when there is no skip-worktree entry' '
test "$(test-index-version < .git/index)" = 2
'
test_done