diff: correct interaction between --exit-code and -I<pattern>
Just like "git diff -w --exit-code" should exit with 0 when ignoring whitespace differences results in no changes shown, if ignoring certain changes with "git diff -I<pattern> --exit-code" result in an empty patch, we should exit with 0. The test suite did not cover the interaction between "--exit-code" and "-w"; add one while adding a new test for "--exit-code" + "-I". Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
296d4a94e7
commit
50f0439490
3
diff.c
3
diff.c
@ -4602,7 +4602,8 @@ void diff_setup_done(struct diff_options *options)
|
||||
* inside contents.
|
||||
*/
|
||||
|
||||
if ((options->xdl_opts & XDF_WHITESPACE_FLAGS))
|
||||
if ((options->xdl_opts & XDF_WHITESPACE_FLAGS) ||
|
||||
options->ignore_regex_nr)
|
||||
options->flags.diff_from_contents = 1;
|
||||
else
|
||||
options->flags.diff_from_contents = 0;
|
||||
|
@ -567,6 +567,30 @@ test_expect_success '--check and --quiet are not exclusive' '
|
||||
git diff --check --quiet
|
||||
'
|
||||
|
||||
test_expect_success '-w and --exit-code interact sensibly' '
|
||||
test_when_finished "git checkout x" &&
|
||||
{
|
||||
test_seq 15 &&
|
||||
echo " 16"
|
||||
} >x &&
|
||||
test_must_fail git diff --exit-code &&
|
||||
git diff -w >actual &&
|
||||
test_must_be_empty actual &&
|
||||
git diff -w --exit-code
|
||||
'
|
||||
|
||||
test_expect_success '-I and --exit-code interact sensibly' '
|
||||
test_when_finished "git checkout x" &&
|
||||
{
|
||||
test_seq 15 &&
|
||||
echo " 16"
|
||||
} >x &&
|
||||
test_must_fail git diff --exit-code &&
|
||||
git diff -I. >actual &&
|
||||
test_must_be_empty actual &&
|
||||
git diff -I. --exit-code
|
||||
'
|
||||
|
||||
test_expect_success 'check staged with no whitespace errors' '
|
||||
echo "foo();" >x &&
|
||||
git add x &&
|
||||
|
Loading…
Reference in New Issue
Block a user