#!/bin/sh
#
# Copyright (c) 2008 Nguyễn Thái Ngọc Duy
#

test_description='skip-worktree bit test'

. ./test-lib.sh

cat >expect.full <<EOF
H 1
H 2
H init.t
H sub/1
H sub/2
EOF

cat >expect.skip <<EOF
S 1
H 2
H init.t
S sub/1
H sub/2
EOF

setup_absent() {
	test -f 1 && rm 1
	git update-index --remove 1 &&
	git update-index --add --cacheinfo 100644 $EMPTY_BLOB 1 &&
	git update-index --skip-worktree 1
}

test_absent() {
	echo "100644 $EMPTY_BLOB 0	1" >expected &&
	git ls-files --stage 1 >result &&
	test_cmp expected result &&
	test ! -f 1
}

setup_dirty() {
	git update-index --force-remove 1 &&
	echo dirty >1 &&
	git update-index --add --cacheinfo 100644 $EMPTY_BLOB 1 &&
	git update-index --skip-worktree 1
}

test_dirty() {
	echo "100644 $EMPTY_BLOB 0	1" >expected &&
	git ls-files --stage 1 >result &&
	test_cmp expected result &&
	echo dirty >expected
	test_cmp expected 1
}

test_expect_success 'setup' '
	test_commit init &&
	mkdir sub &&
	touch ./1 ./2 sub/1 sub/2 &&
	git add 1 2 sub/1 sub/2 &&
	git update-index --skip-worktree 1 sub/1 &&
	git ls-files -t >result &&
	test_cmp expect.skip result
'

test_expect_success 'update-index' '
	setup_absent &&
	git update-index 1 &&
	test_absent
'

test_expect_success 'update-index' '
	setup_dirty &&
	git update-index 1 &&
	test_dirty
'

test_expect_success 'update-index --remove' '
	setup_absent &&
	git update-index --remove 1 &&
	test -z "$(git ls-files 1)" &&
	test ! -f 1
'

test_expect_success 'update-index --remove' '
	setup_dirty &&
	git update-index --remove 1 &&
	test -z "$(git ls-files 1)" &&
	echo dirty >expected &&
	test_cmp expected 1
'

test_expect_success 'ls-files --deleted' '
	setup_absent &&
	test -z "$(git ls-files -d)"
'

test_expect_success 'ls-files --deleted' '
	setup_dirty &&
	test -z "$(git ls-files -d)"
'

test_expect_success 'ls-files --modified' '
	setup_absent &&
	test -z "$(git ls-files -m)"
'

test_expect_success 'ls-files --modified' '
	setup_dirty &&
	test -z "$(git ls-files -m)"
'

echo ":000000 100644 $ZERO_OID $EMPTY_BLOB A	1" >expected
test_expect_success 'diff-index does not examine skip-worktree absent entries' '
	setup_absent &&
	git diff-index HEAD -- 1 >result &&
	test_cmp expected result
'

test_expect_success 'diff-index does not examine skip-worktree dirty entries' '
	setup_dirty &&
	git diff-index HEAD -- 1 >result &&
	test_cmp expected result
'

test_expect_success 'diff-files does not examine skip-worktree absent entries' '
	setup_absent &&
	test -z "$(git diff-files -- one)"
'

test_expect_success 'diff-files does not examine skip-worktree dirty entries' '
	setup_dirty &&
	test -z "$(git diff-files -- one)"
'

test_expect_success 'commit on skip-worktree absent entries' '
	git reset &&
	setup_absent &&
	test_must_fail git commit -m null 1
'

test_expect_success 'commit on skip-worktree dirty entries' '
	git reset &&
	setup_dirty &&
	test_must_fail git commit -m null 1
'

test_done
