mirror of
https://github.com/git/git.git
synced 2024-12-26 18:24:21 +08:00
e6821d09e4
These are all cases where we do a setup step of the form: for i in $foo; do set_up $i || break done && more_setup would not notice a failure in set_up (because break always returns a 0 exit code). These are just setup steps that we do not expect to fail, but it does not hurt to be defensive. Most can be fixed by converting the "break" to a "return 1" (since we eval our tests inside a function for just this purpose). A few of the loops are inside subshells, so we can use just "exit 1" to break out of the subshell. And a few can actually be made shorter by just unrolling the loop. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
127 lines
2.9 KiB
Bash
Executable File
127 lines
2.9 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2005 Junio C Hamano
|
|
#
|
|
|
|
test_description='git ls-files -k and -m flags test.
|
|
|
|
This test prepares the following in the cache:
|
|
|
|
path0 - a file
|
|
path1 - a symlink
|
|
path2/file2 - a file in a directory
|
|
path3/file3 - a file in a directory
|
|
pathx/ju - a file in a directory
|
|
submod1/ - a submodule
|
|
submod2/ - another submodule
|
|
|
|
and the following on the filesystem:
|
|
|
|
path0/file0 - a file in a directory
|
|
path1/file1 - a file in a directory
|
|
path2 - a file
|
|
path3 - a symlink
|
|
path4 - a file
|
|
path5 - a symlink
|
|
path6/file6 - a file in a directory
|
|
pathx/ju/nk - a file in a directory to be killed
|
|
submod1/ - a submodule (modified from the cache)
|
|
submod2/ - a submodule (matches the cache)
|
|
|
|
git ls-files -k should report that existing filesystem objects
|
|
path0/*, path1/*, path2 and path3 to be killed.
|
|
|
|
Also for modification test, the cache and working tree have:
|
|
|
|
path7 - an empty file, modified to a non-empty file.
|
|
path8 - a non-empty file, modified to an empty file.
|
|
path9 - an empty file, cache dirtied.
|
|
path10 - a non-empty file, cache dirtied.
|
|
|
|
We should report path0, path1, path2/file2, path3/file3, path7 and path8
|
|
modified without reporting path9 and path10. submod1 is also modified.
|
|
'
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'git update-index --add to add various paths.' '
|
|
date >path0 &&
|
|
test_ln_s_add xyzzy path1 &&
|
|
mkdir path2 path3 pathx &&
|
|
date >path2/file2 &&
|
|
date >path3/file3 &&
|
|
>pathx/ju &&
|
|
: >path7 &&
|
|
date >path8 &&
|
|
: >path9 &&
|
|
date >path10 &&
|
|
git update-index --add -- path0 path?/file? pathx/ju path7 path8 path9 path10 &&
|
|
git init submod1 &&
|
|
git -C submod1 commit --allow-empty -m "empty 1" &&
|
|
git init submod2 &&
|
|
git -C submod2 commit --allow-empty -m "empty 2" &&
|
|
git update-index --add submod[12] &&
|
|
(
|
|
cd submod1 &&
|
|
git commit --allow-empty -m "empty 1 (updated)"
|
|
) &&
|
|
rm -fr path? # leave path10 alone
|
|
'
|
|
|
|
test_expect_success 'git ls-files -k to show killed files.' '
|
|
date >path2 &&
|
|
if test_have_prereq SYMLINKS
|
|
then
|
|
ln -s frotz path3 &&
|
|
ln -s nitfol path5
|
|
else
|
|
date >path3 &&
|
|
date >path5
|
|
fi &&
|
|
mkdir -p path0 path1 path6 pathx/ju &&
|
|
date >path0/file0 &&
|
|
date >path1/file1 &&
|
|
date >path6/file6 &&
|
|
date >path7 &&
|
|
: >path8 &&
|
|
: >path9 &&
|
|
touch path10 &&
|
|
>pathx/ju/nk &&
|
|
cat >.expected <<-\EOF
|
|
path0/file0
|
|
path1/file1
|
|
path2
|
|
path3
|
|
pathx/ju/nk
|
|
EOF
|
|
'
|
|
|
|
test_expect_success 'git ls-files -k output (w/o icase)' '
|
|
git ls-files -k >.output &&
|
|
test_cmp .expected .output
|
|
'
|
|
|
|
test_expect_success 'git ls-files -k output (w/ icase)' '
|
|
git -c core.ignorecase=true ls-files -k >.output &&
|
|
test_cmp .expected .output
|
|
'
|
|
|
|
test_expect_success 'git ls-files -m to show modified files.' '
|
|
git ls-files -m >.output
|
|
'
|
|
|
|
test_expect_success 'validate git ls-files -m output.' '
|
|
cat >.expected <<-\EOF &&
|
|
path0
|
|
path1
|
|
path2/file2
|
|
path3/file3
|
|
path7
|
|
path8
|
|
pathx/ju
|
|
submod1
|
|
EOF
|
|
test_cmp .expected .output
|
|
'
|
|
|
|
test_done
|