Merge branch 'ew/autoconf-pthread'
[gitweb.git] / t / t2203-add-intent.sh
index 7c641bfaf4565a97942a91793370da0ca6285fc3..8f22c43e245cb6fb68449a64ba45222e187f56a9 100755 (executable)
@@ -5,24 +5,10 @@ test_description='Intent to add'
 . ./test-lib.sh
 
 test_expect_success 'intent to add' '
-       test_commit 1 &&
-       git rm 1.t &&
-       echo hello >1.t &&
        echo hello >file &&
        echo hello >elif &&
        git add -N file &&
-       git add elif &&
-       git add -N 1.t
-'
-
-test_expect_success 'git status' '
-       git status --porcelain | grep -v actual >actual &&
-       cat >expect <<-\EOF &&
-       DA 1.t
-       A  elif
-        A file
-       EOF
-       test_cmp expect actual
+       git add elif
 '
 
 test_expect_success 'check result of "add -N"' '
@@ -57,8 +43,7 @@ test_expect_success 'i-t-a entry is simply ignored' '
        git add -N nitfol &&
        git commit -m second &&
        test $(git ls-tree HEAD -- nitfol | wc -l) = 0 &&
-       test $(git diff --name-only HEAD -- nitfol | wc -l) = 0 &&
-       test $(git diff --name-only -- nitfol | wc -l) = 1
+       test $(git diff --name-only HEAD -- nitfol | wc -l) = 1
 '
 
 test_expect_success 'can commit with an unrelated i-t-a entry in index' '
@@ -87,15 +72,46 @@ test_expect_success 'cache-tree invalidates i-t-a paths' '
        : >dir/bar &&
        git add -N dir/bar &&
        git diff --cached --name-only >actual &&
-       >expect &&
+       echo dir/bar >expect &&
        test_cmp expect actual &&
 
        git write-tree >/dev/null &&
 
        git diff --cached --name-only >actual &&
-       >expect &&
+       echo dir/bar >expect &&
        test_cmp expect actual
 '
 
+test_expect_success 'cache-tree does not ignore dir that has i-t-a entries' '
+       git init ita-in-dir &&
+       (
+               cd ita-in-dir &&
+               mkdir 2 &&
+               for f in 1 2/1 2/2 3
+               do
+                       echo "$f" >"$f"
+               done &&
+               git add 1 2/2 3 &&
+               git add -N 2/1 &&
+               git commit -m committed &&
+               git ls-tree -r HEAD >actual &&
+               grep 2/2 actual
+       )
+'
+
+test_expect_success 'cache-tree does skip dir that becomes empty' '
+       rm -fr ita-in-dir &&
+       git init ita-in-dir &&
+       (
+               cd ita-in-dir &&
+               mkdir -p 1/2/3 &&
+               echo 4 >1/2/3/4 &&
+               git add -N 1/2/3/4 &&
+               git write-tree >actual &&
+               echo $EMPTY_TREE >expected &&
+               test_cmp expected actual
+       )
+'
+
 test_done