You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
2.9 KiB
126 lines
2.9 KiB
#!/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
|
|
|