Code

git-ls-files: Fix, document, and add test for --error-unmatch option.
authorCarl Worth <cworth@cworth.org>
Tue, 21 Feb 2006 20:48:30 +0000 (12:48 -0800)
committerJunio C Hamano <junkio@cox.net>
Wed, 22 Feb 2006 02:37:36 +0000 (18:37 -0800)
Signed-off-by: Junio C Hamano <junkio@cox.net>
Documentation/git-ls-files.txt
ls-files.c
t/t3020-ls-files-error-unmatch.sh [new file with mode: 0755]

index fe5341295c55af55d521454ac5ae98b225f1eb32..28dc533d201ad5da8ffcfd8551f6c17896bbe267 100644 (file)
@@ -14,6 +14,7 @@ SYNOPSIS
                [-x <pattern>|--exclude=<pattern>]
                [-X <file>|--exclude-from=<file>]
                [--exclude-per-directory=<file>] 
+               [--error-unmatch]
                [--full-name] [--] [<file>]\*
 
 DESCRIPTION
@@ -72,6 +73,10 @@ OPTIONS
        read additional exclude patterns that apply only to the
        directory and its subdirectories in <file>.
 
+--error-unmatch::
+       If any <file> does not appear in the index, treat this as an
+       error (return 1).
+
 -t::
        Identify the file status with the following tags (followed by
        a space) at the start of each line:
index df93cf2263e34cba6f0dcb9f63c01cef368434e3..27059e204dfc9fe0445ea0623f0c252393015732 100644 (file)
@@ -758,6 +758,7 @@ int main(int argc, const char **argv)
                                continue;
                        error("pathspec '%s' did not match any.",
                              pathspec[num] + prefix_offset);
+                       errors++;
                }
                return errors ? 1 : 0;
        }
diff --git a/t/t3020-ls-files-error-unmatch.sh b/t/t3020-ls-files-error-unmatch.sh
new file mode 100755 (executable)
index 0000000..d55559e
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/sh
+#
+# Copyright (c) 2006 Carl D. Worth
+#
+
+test_description='git-ls-files test for --error-unmatch option
+
+This test runs git-ls-files --error-unmatch to ensure it correctly
+returns an error when a non-existent path is provided on the command
+line.
+'
+. ./test-lib.sh
+
+touch foo bar
+git-update-index --add foo bar
+git-commit -m "add foo bar"
+
+test_expect_failure \
+    'git-ls-files --error-unmatch should fail with unmatched path.' \
+    'git-ls-files --error-unmatch foo bar-does-not-match'
+
+test_expect_success \
+    'git-ls-files --error-unmatch should succeed eith matched paths.' \
+    'git-ls-files --error-unmatch foo bar'
+
+test_done
+1