about summary refs log tree commit diff
path: root/t/t3010-ls-files-killed-modified.sh
diff options
context:
space:
mode:
Diffstat (limited to 't/t3010-ls-files-killed-modified.sh')
-rwxr-xr-xt/t3010-ls-files-killed-modified.sh126
1 files changed, 126 insertions, 0 deletions
diff --git a/t/t3010-ls-files-killed-modified.sh b/t/t3010-ls-files-killed-modified.sh
new file mode 100755
index 000000000000..580e158f9918
--- /dev/null
+++ b/t/t3010-ls-files-killed-modified.sh
@@ -0,0 +1,126 @@
+#!/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