Skip to content

Commit

Permalink
diff --check: do not discard error status upon seeing a good line
Browse files Browse the repository at this point in the history
"git diff --check" should return non-zero when there was any whitespace
error but the code only paid attention to the error status of the last
new line in the patch.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Junio C Hamano committed Jun 26, 2008
1 parent e636106 commit 18374e5
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
8 changes: 5 additions & 3 deletions diff.c
Original file line number Diff line number Diff line change
Expand Up @@ -1150,12 +1150,14 @@ static void checkdiff_consume(void *priv, char *line, unsigned long len)
char *err;

if (line[0] == '+') {
unsigned bad;
data->lineno++;
data->status = check_and_emit_line(line + 1, len - 1,
bad = check_and_emit_line(line + 1, len - 1,
data->ws_rule, NULL, NULL, NULL, NULL);
if (!data->status)
if (!bad)
return;
err = whitespace_error_string(data->status);
data->status |= bad;
err = whitespace_error_string(bad);
fprintf(data->file, "%s:%d: %s.\n", data->filename, data->lineno, err);
free(err);
emit_line(data->file, set, reset, line, 1);
Expand Down
8 changes: 8 additions & 0 deletions t/t4017-diff-retval.sh
Original file line number Diff line number Diff line change
Expand Up @@ -105,4 +105,12 @@ test_expect_success '--check with --no-pager returns 2 for dirty difference' '
'


test_expect_success 'check should test not just the last line' '
echo "" >>a &&
git --no-pager diff --check
test $? = 2
'

test_done

0 comments on commit 18374e5

Please sign in to comment.