tests for "git add ignored-dir/file" without -f
authorJunio C Hamano <gitster@pobox.com>
Mon, 1 Mar 2010 03:12:31 +0000 (19:12 -0800)
committerJunio C Hamano <gitster@pobox.com>
Sun, 14 Mar 2010 07:23:22 +0000 (23:23 -0800)
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t2204-add-ignored.sh [new file with mode: 0755]

diff --git a/t/t2204-add-ignored.sh b/t/t2204-add-ignored.sh
new file mode 100755 (executable)
index 0000000..24afdab
--- /dev/null
@@ -0,0 +1,79 @@
+#!/bin/sh
+
+test_description='giving ignored paths to git add'
+
+. ./test-lib.sh
+
+test_expect_success setup '
+       mkdir sub dir dir/sub &&
+       echo sub >.gitignore &&
+       echo ign >>.gitignore &&
+       for p in . sub dir dir/sub
+       do
+               >"$p/ign" &&
+               >"$p/file" || exit 1
+       done
+'
+
+for i in file dir/file dir 'd*'
+do
+       test_expect_success "no complaints for unignored $i" '
+               rm -f .git/index &&
+               git add "$i" &&
+               git ls-files "$i" >out &&
+               test -s out
+       '
+done
+
+for i in ign dir/ign dir/sub dir/sub/*ign sub/file sub sub/*
+do
+       test_expect_success "complaints for ignored $i" '
+               rm -f .git/index &&
+               test_must_fail git add "$i" 2>err &&
+               git ls-files "$i" >out &&
+               ! test -s out &&
+               grep -e "Use -f if" err &&
+               cat err
+       '
+
+       test_expect_success "complaints for ignored $i with unignored file" '
+               rm -f .git/index &&
+               test_must_fail git add "$i" file 2>err &&
+               git ls-files "$i" >out &&
+               ! test -s out &&
+               grep -e "Use -f if" err &&
+               cat err
+       '
+done
+
+for i in sub sub/*
+do
+       test_expect_success "complaints for ignored $i in dir" '
+               rm -f .git/index &&
+               (
+                       cd dir &&
+                       test_must_fail git add "$i" 2>err &&
+                       git ls-files "$i" >out &&
+                       ! test -s out &&
+                       grep -e "Use -f if" err &&
+                       cat err
+               )
+       '
+done
+
+for i in ign file
+do
+       test_expect_success "complaints for ignored $i in sub" '
+               rm -f .git/index &&
+               (
+                       cd sub &&
+                       test_must_fail git add "$i" 2>err &&
+                       git ls-files "$i" >out &&
+                       ! test -s out &&
+                       grep -e "Use -f if" err &&
+                       cat err
+               )
+       '
+done
+
+test_done