4f4b18497a
Broken &&-chains in the test scripts have been corrected. * es/test-chain-lint: t6000-t9999: detect and signal failure within loop t5000-t5999: detect and signal failure within loop t4000-t4999: detect and signal failure within loop t0000-t3999: detect and signal failure within loop tests: simplify by dropping unnecessary `for` loops tests: apply modern idiom for exiting loop upon failure tests: apply modern idiom for signaling test failure tests: fix broken &&-chains in `{...}` groups tests: fix broken &&-chains in `$(...)` command substitutions tests: fix broken &&-chains in compound statements tests: use test_write_lines() to generate line-oriented output tests: simplify construction of large blocks of text t9107: use shell parameter expansion to avoid breaking &&-chain t6300: make `%(raw:size) --shell` test more robust t5516: drop unnecessary subshell and command invocation t4202: clarify intent by creating expected content less cleverly t1020: avoid aborting entire test script when one test fails t1010: fix unnoticed failure on Windows t/lib-pager: use sane_unset() to avoid breaking &&-chain
91 lines
2.0 KiB
Bash
Executable File
91 lines
2.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='update-index with options'
|
|
|
|
TEST_PASSES_SANITIZE_LEAK=true
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success basics '
|
|
>one &&
|
|
>two &&
|
|
>three &&
|
|
|
|
# need --add when adding
|
|
test_must_fail git update-index one &&
|
|
test -z "$(git ls-files)" &&
|
|
git update-index --add one &&
|
|
test zone = "z$(git ls-files)" &&
|
|
|
|
# update-index is atomic
|
|
echo 1 >one &&
|
|
test_must_fail git update-index one two &&
|
|
echo "M one" >expect &&
|
|
git diff-files --name-status >actual &&
|
|
test_cmp expect actual &&
|
|
|
|
git update-index --add one two three &&
|
|
test_write_lines one three two >expect &&
|
|
git ls-files >actual &&
|
|
test_cmp expect actual &&
|
|
|
|
test_tick &&
|
|
(
|
|
test_create_repo xyzzy &&
|
|
cd xyzzy &&
|
|
>file &&
|
|
git add file &&
|
|
git commit -m "sub initial"
|
|
) &&
|
|
git add xyzzy &&
|
|
|
|
test_tick &&
|
|
git commit -m initial &&
|
|
git tag initial
|
|
'
|
|
|
|
test_expect_success '--ignore-missing --refresh' '
|
|
git reset --hard initial &&
|
|
echo 2 >one &&
|
|
test_must_fail git update-index --refresh &&
|
|
echo 1 >one &&
|
|
git update-index --refresh &&
|
|
rm -f two &&
|
|
test_must_fail git update-index --refresh &&
|
|
git update-index --ignore-missing --refresh
|
|
|
|
'
|
|
|
|
test_expect_success '--unmerged --refresh' '
|
|
git reset --hard initial &&
|
|
info=$(git ls-files -s one | sed -e "s/ 0 / 1 /") &&
|
|
git rm --cached one &&
|
|
echo "$info" | git update-index --index-info &&
|
|
test_must_fail git update-index --refresh &&
|
|
git update-index --unmerged --refresh &&
|
|
echo 2 >two &&
|
|
test_must_fail git update-index --unmerged --refresh >actual &&
|
|
grep two actual &&
|
|
! grep one actual &&
|
|
! grep three actual
|
|
'
|
|
|
|
test_expect_success '--ignore-submodules --refresh (1)' '
|
|
git reset --hard initial &&
|
|
rm -f two &&
|
|
test_must_fail git update-index --ignore-submodules --refresh
|
|
'
|
|
|
|
test_expect_success '--ignore-submodules --refresh (2)' '
|
|
git reset --hard initial &&
|
|
test_tick &&
|
|
(
|
|
cd xyzzy &&
|
|
git commit -m "sub second" --allow-empty
|
|
) &&
|
|
test_must_fail git update-index --refresh &&
|
|
test_must_fail git update-index --ignore-missing --refresh &&
|
|
git update-index --ignore-submodules --refresh
|
|
'
|
|
|
|
test_done
|