Imported Upstream version 2.0.1
[platform/upstream/git.git] / t / t3010-ls-files-killed-modified.sh
index 95671c2..6d3b828 100755 (executable)
@@ -11,6 +11,9 @@ This test prepares the following in the cache:
     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:
 
@@ -21,9 +24,12 @@ and the following on the filesystem:
     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 except path4, path5 and path6/file6 to be killed.
+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:
 
@@ -33,75 +39,91 @@ Also for modification test, the cache and working tree have:
     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.
+modified without reporting path9 and path10.  submod1 is also modified.
 '
 . ./test-lib.sh
 
-date >path0
-if test_have_prereq SYMLINKS
-then
-       ln -s xyzzy path1
-else
-       date > path1
-fi
-mkdir path2 path3
-date >path2/file2
-date >path3/file3
-: >path7
-date >path8
-: >path9
-date >path10
-test_expect_success \
-    'git update-index --add to add various paths.' \
-    "git update-index --add -- path0 path1 path?/file? path7 path8 path9 path10"
-
-rm -fr path? ;# leave path10 alone
-date >path2
-if test_have_prereq SYMLINKS
-then
-       ln -s frotz path3
-       ln -s nitfol path5
-else
-       date > path3
-       date > path5
-fi
-mkdir path0 path1 path6
-date >path0/file0
-date >path1/file1
-date >path6/file6
-date >path7
-: >path8
-: >path9
-touch path10
-
-test_expect_success \
-    'git ls-files -k to show killed files.' \
-    'git ls-files -k >.output'
-cat >.expected <<EOF
-path0/file0
-path1/file1
-path2
-path3
-EOF
-
-test_expect_success \
-    'validate git ls-files -k output.' \
-    'test_cmp .expected .output'
-
-test_expect_success \
-    'git ls-files -m to show modified files.' \
-    'git ls-files -m >.output'
-cat >.expected <<EOF
-path0
-path1
-path2/file2
-path3/file3
-path7
-path8
-EOF
-
-test_expect_success \
-    'validate git ls-files -m output.' \
-    'test_cmp .expected .output'
+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 &&
+       for i in 1 2
+       do
+               git init submod$i &&
+               (
+                       cd submod$i && git commit --allow-empty -m "empty $i"
+               ) || break
+       done &&
+       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