diff options
-rwxr-xr-x | t/t4015-diff-whitespace.sh | 15 | ||||
-rw-r--r-- | ws.c | 10 |
2 files changed, 19 insertions, 6 deletions
diff --git a/t/t4015-diff-whitespace.sh b/t/t4015-diff-whitespace.sh index 0f16bca37..d30169fbd 100755 --- a/t/t4015-diff-whitespace.sh +++ b/t/t4015-diff-whitespace.sh @@ -125,6 +125,14 @@ test_expect_success 'check mixed spaces and tabs in indent' ' ' +test_expect_success 'check mixed tabs and spaces in indent' ' + + # This is indented with HT SP HT. + echo " foo();" > x && + git diff --check | grep "space before tab in indent" + +' + test_expect_success 'check with no whitespace errors' ' git commit -m "snapshot" && @@ -311,4 +319,11 @@ test_expect_success 'check spaces as indentation (indent-with-non-tab: on)' ' ' +test_expect_success 'check tabs and spaces as indentation (indent-with-non-tab: on)' ' + + git config core.whitespace "indent-with-non-tab" && + echo " foo ();" > x && + ! git diff --check + +' test_done @@ -146,19 +146,17 @@ unsigned check_and_emit_line(const char *line, int len, unsigned ws_rule, /* Check for space before tab in initial indent. */ for (i = 0; i < len; i++) { - if (line[i] == ' ') { - written = i + 1; + if (line[i] == ' ') continue; - } if (line[i] != '\t') break; - if ((ws_rule & WS_SPACE_BEFORE_TAB) && (written != 0)) + if ((ws_rule & WS_SPACE_BEFORE_TAB) && written < i) result |= WS_SPACE_BEFORE_TAB; - break; + written = i + 1; } /* Check for indent using non-tab. */ - if ((ws_rule & WS_INDENT_WITH_NON_TAB) && written >= 8) + if ((ws_rule & WS_INDENT_WITH_NON_TAB) && i - written >= 8) result |= WS_INDENT_WITH_NON_TAB; if (stream) { |