forked from bitcoin/bitcoin
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge bitcoin#11300: Tests: Add a lint check for trailing whitespace
1f379b1 Add tab char lint check and exclude imported dependencies (MeshCollider) dd36561 Add a lint check for trailing whitespace. (Evan Klitzke) Pull request description: This is a new attempt at bitcoin#11005 Addressed nits, excluded imported dependencies, squashed the original commits, and added a test for tab characters in the *.cpp *.h *.md *.py *.sh files too as per @practicalswift suggestion Tree-SHA512: d2dfbedc8469026f39b0c63d9a71d8b8e2ed3815d69fecaabad10304d977d6345728c4c865ec7600ed539b1f7cabaa826b50312f4d2eef0a1583d4ff9024c36d
- Loading branch information
Showing
3 changed files
with
111 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
#!/bin/bash | ||
# | ||
# Copyright (c) 2017 The Bitcoin Core developers | ||
# Distributed under the MIT software license, see the accompanying | ||
# file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||
# | ||
# This script runs all contrib/devtools/lint-*.sh files, and fails if any exit | ||
# with a non-zero status code. | ||
|
||
set -u | ||
|
||
SCRIPTDIR=$(dirname "${BASH_SOURCE[0]}") | ||
LINTALL=$(basename "${BASH_SOURCE[0]}") | ||
|
||
for f in "${SCRIPTDIR}"/lint-*.sh; do | ||
if [ "$(basename "$f")" != "$LINTALL" ]; then | ||
if ! "$f"; then | ||
echo "^---- failure generated from $f" | ||
exit 1 | ||
fi | ||
fi | ||
done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
#!/bin/bash | ||
# | ||
# Copyright (c) 2017 The Bitcoin Core developers | ||
# Distributed under the MIT software license, see the accompanying | ||
# file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||
# | ||
# Check for new lines in diff that introduce trailing whitespace. | ||
|
||
# We can't run this check unless we know the commit range for the PR. | ||
if [ -z "${TRAVIS_COMMIT_RANGE}" ]; then | ||
echo "Cannot run lint-whitespace.sh without commit range. To run locally, use:" | ||
echo "TRAVIS_COMMIT_RANGE='<commit range>' .lint-whitespace.sh" | ||
echo "For example:" | ||
echo "TRAVIS_COMMIT_RANGE='47ba2c3...ee50c9e' .lint-whitespace.sh" | ||
exit 1 | ||
fi | ||
|
||
showdiff() { | ||
if ! git diff -U0 "${TRAVIS_COMMIT_RANGE}" -- "." ":(exclude)src/leveldb/" ":(exclude)src/secp256k1/" ":(exclude)src/univalue/"; then | ||
echo "Failed to get a diff" | ||
exit 1 | ||
fi | ||
} | ||
|
||
showcodediff() { | ||
if ! git diff -U0 "${TRAVIS_COMMIT_RANGE}" -- *.cpp *.h *.md *.py *.sh ":(exclude)src/leveldb/" ":(exclude)src/secp256k1/" ":(exclude)src/univalue/"; then | ||
echo "Failed to get a diff" | ||
exit 1 | ||
fi | ||
} | ||
|
||
RET=0 | ||
|
||
# Check if trailing whitespace was found in the diff. | ||
if showdiff | grep -E -q '^\+.*\s+$'; then | ||
echo "This diff appears to have added new lines with trailing whitespace." | ||
echo "The following changes were suspected:" | ||
FILENAME="" | ||
SEEN=0 | ||
while read -r line; do | ||
if [[ "$line" =~ ^diff ]]; then | ||
FILENAME="$line" | ||
SEEN=0 | ||
elif [[ "$line" =~ ^@@ ]]; then | ||
LINENUMBER="$line" | ||
else | ||
if [ "$SEEN" -eq 0 ]; then | ||
# The first time a file is seen with trailing whitespace, we print the | ||
# filename (preceded by a newline). | ||
echo | ||
echo "$FILENAME" | ||
echo "$LINENUMBER" | ||
SEEN=1 | ||
fi | ||
echo "$line" | ||
fi | ||
done < <(showdiff | grep -E '^(diff --git |@@|\+.*\s+$)') | ||
RET=1 | ||
fi | ||
|
||
# Check if tab characters were found in the diff. | ||
if showcodediff | grep -P -q '^\+.*\t'; then | ||
echo "This diff appears to have added new lines with tab characters instead of spaces." | ||
echo "The following changes were suspected:" | ||
FILENAME="" | ||
SEEN=0 | ||
while read -r line; do | ||
if [[ "$line" =~ ^diff ]]; then | ||
FILENAME="$line" | ||
SEEN=0 | ||
elif [[ "$line" =~ ^@@ ]]; then | ||
LINENUMBER="$line" | ||
else | ||
if [ "$SEEN" -eq 0 ]; then | ||
# The first time a file is seen with a tab character, we print the | ||
# filename (preceded by a newline). | ||
echo | ||
echo "$FILENAME" | ||
echo "$LINENUMBER" | ||
SEEN=1 | ||
fi | ||
echo "$line" | ||
fi | ||
done < <(showcodediff | grep -P '^(diff --git |@@|\+.*\t)') | ||
RET=1 | ||
fi | ||
|
||
exit $RET |