mirror of
https://github.com/git/git.git
synced 2024-11-25 10:54:00 +08:00
d70e9c5c8c
A file can either be added, removed, copied, or renamed, but no two of these actions can be done by the same patch. Some of these combinations provoke error messages due to missing file names, and some are only caught by an assertion. Check git patches already as they are parsed and report conflicting lines on sight. Found by Vegard Nossum using AFL. Reported-by: Vegard Nossum <vegard.nossum@oracle.com> Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
51 lines
988 B
Bash
Executable File
51 lines
988 B
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='git apply should exit non-zero with unrecognized input.'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'setup' '
|
|
test_commit 1
|
|
'
|
|
|
|
test_expect_success 'apply --check exits non-zero with unrecognized input' '
|
|
test_must_fail git apply --check - <<-\EOF
|
|
I am not a patch
|
|
I look nothing like a patch
|
|
git apply must fail
|
|
EOF
|
|
'
|
|
|
|
test_expect_success 'apply exits non-zero with no-op patch' '
|
|
cat >input <<-\EOF &&
|
|
diff --get a/1 b/1
|
|
index 6696ea4..606eddd 100644
|
|
--- a/1
|
|
+++ b/1
|
|
@@ -1,1 +1,1 @@
|
|
1
|
|
EOF
|
|
test_must_fail git apply --stat input &&
|
|
test_must_fail git apply --check input
|
|
'
|
|
|
|
test_expect_success 'invalid combination: create and copy' '
|
|
test_must_fail git apply --check - <<-\EOF
|
|
diff --git a/1 b/2
|
|
new file mode 100644
|
|
copy from 1
|
|
copy to 2
|
|
EOF
|
|
'
|
|
|
|
test_expect_success 'invalid combination: create and rename' '
|
|
test_must_fail git apply --check - <<-\EOF
|
|
diff --git a/1 b/2
|
|
new file mode 100644
|
|
rename from 1
|
|
rename to 2
|
|
EOF
|
|
'
|
|
|
|
test_done
|