]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t4140: test apply --intent-to-add interactions
authorRaymond E. Pasco <ray@ameretat.dev>
Mon, 7 Jul 2025 12:12:32 +0000 (08:12 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 7 Jul 2025 13:41:11 +0000 (06:41 -0700)
Test that applying a new file creation patch with --intent-to-add to
an existing index does not modify the index outside adding the correct
intents-to-add, and that applying a patch with both modifications
and new file creations with --intent-to-add correctly only adds
intents-to-add to the index.

Signed-off-by: Raymond E. Pasco <ray@ameretat.dev>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t4140-apply-ita.sh

index c614eaf04cca93a22157d08e9fc464639468eb3a..0b11a8aef4fa12c815a243a0fd3c7fd499fd38ba 100755 (executable)
@@ -7,6 +7,10 @@ test_description='git apply of i-t-a file'
 test_expect_success setup '
        test_write_lines 1 2 3 4 5 >blueprint &&
 
+       cat blueprint >committed-file &&
+       git add committed-file &&
+       git commit -m "commit" &&
+
        cat blueprint >test-file &&
        git add -N test-file &&
        git diff >creation-patch &&
@@ -14,7 +18,14 @@ test_expect_success setup '
 
        rm -f test-file &&
        git diff >deletion-patch &&
-       grep "deleted file mode 100644" deletion-patch
+       grep "deleted file mode 100644" deletion-patch &&
+
+       git rm -f test-file &&
+       test_write_lines 6 >>committed-file &&
+       cat blueprint >test-file &&
+       git add -N test-file &&
+       git diff >complex-patch &&
+       git restore committed-file
 '
 
 test_expect_success 'apply creation patch to ita path (--cached)' '
@@ -53,4 +64,22 @@ test_expect_success 'apply deletion patch to ita path (--index)' '
        git ls-files --stage --error-unmatch test-file
 '
 
+test_expect_success 'apply creation patch to existing index with -N' '
+       git rm -f test-file &&
+       cat blueprint >index-file &&
+       git add index-file &&
+       git apply -N creation-patch &&
+
+       git ls-files --stage --error-unmatch index-file &&
+       git ls-files --stage --error-unmatch test-file
+'
+
+test_expect_success 'apply complex patch with -N' '
+       git rm -f test-file index-file &&
+       git apply -N complex-patch &&
+
+       git ls-files --stage --error-unmatch test-file &&
+       git diff | grep "a/committed-file"
+'
+
 test_done