| 1 | #!/bin/sh |
| 2 | |
| 3 | test_description='git apply of i-t-a file' |
| 4 | |
| 5 | . ./test-lib.sh |
| 6 | |
| 7 | test_expect_success setup ' |
| 8 | test_write_lines 1 2 3 4 5 >blueprint && |
| 9 | |
| 10 | cat blueprint >committed-file && |
| 11 | git add committed-file && |
| 12 | git commit -m "commit" && |
| 13 | |
| 14 | cat blueprint >test-file && |
| 15 | git add -N test-file && |
| 16 | git diff >creation-patch && |
| 17 | grep "new file mode 100644" creation-patch && |
| 18 | |
| 19 | rm -f test-file && |
| 20 | git diff >deletion-patch && |
| 21 | grep "deleted file mode 100644" deletion-patch && |
| 22 | |
| 23 | git rm -f test-file && |
| 24 | test_write_lines 6 >>committed-file && |
| 25 | cat blueprint >test-file && |
| 26 | git add -N test-file && |
| 27 | git diff >complex-patch && |
| 28 | git restore committed-file |
| 29 | ' |
| 30 | |
| 31 | test_expect_success 'apply creation patch to ita path (--cached)' ' |
| 32 | git rm -f test-file && |
| 33 | cat blueprint >test-file && |
| 34 | git add -N test-file && |
| 35 | |
| 36 | git apply --cached creation-patch && |
| 37 | git cat-file blob :test-file >actual && |
| 38 | test_cmp blueprint actual |
| 39 | ' |
| 40 | |
| 41 | test_expect_success 'apply creation patch to ita path (--index)' ' |
| 42 | git rm -f test-file && |
| 43 | cat blueprint >test-file && |
| 44 | git add -N test-file && |
| 45 | rm -f test-file && |
| 46 | |
| 47 | test_must_fail git apply --index creation-patch |
| 48 | ' |
| 49 | |
| 50 | test_expect_success 'apply deletion patch to ita path (--cached)' ' |
| 51 | git rm -f test-file && |
| 52 | cat blueprint >test-file && |
| 53 | git add -N test-file && |
| 54 | |
| 55 | git apply --cached deletion-patch && |
| 56 | test_must_fail git ls-files --stage --error-unmatch test-file |
| 57 | ' |
| 58 | |
| 59 | test_expect_success 'apply deletion patch to ita path (--index)' ' |
| 60 | cat blueprint >test-file && |
| 61 | git add -N test-file && |
| 62 | |
| 63 | test_must_fail git apply --index deletion-patch && |
| 64 | git ls-files --stage --error-unmatch test-file |
| 65 | ' |
| 66 | |
| 67 | test_expect_success 'apply creation patch to existing index with -N' ' |
| 68 | git rm -f test-file && |
| 69 | cat blueprint >index-file && |
| 70 | git add index-file && |
| 71 | git apply -N creation-patch && |
| 72 | |
| 73 | git ls-files --stage --error-unmatch index-file && |
| 74 | git ls-files --stage --error-unmatch test-file |
| 75 | ' |
| 76 | |
| 77 | test_expect_success 'apply complex patch with -N' ' |
| 78 | git rm -f test-file index-file && |
| 79 | git apply -N complex-patch && |
| 80 | |
| 81 | git ls-files --stage --error-unmatch test-file && |
| 82 | git diff | grep "a/committed-file" |
| 83 | ' |
| 84 | |
| 85 | test_done |