diff options
author | Evan Klitzke <evan@eklitzke.org> | 2017-08-07 14:24:17 -0700 |
---|---|---|
committer | MeshCollider <dobsonsa68@gmail.com> | 2017-09-14 10:49:48 +1200 |
commit | dd365612fdd14e4dadc731e1b2f5d8564b9f23f1 (patch) | |
tree | 3c9d383168b77f3527ec22947cf2b40aad77f33d /contrib/devtools | |
parent | 7fcd61b2613c211bb042a82a889655178be6a212 (diff) |
Add a lint check for trailing whitespace.
This adds a new CHECK_DOC check that looks for newly introduced trailing
whitespace. Existing trailing whitespace (of which there is plenty!)
will not trigger an error.
This is written in a generic way so that new lint-*.sh scripts can be
added to contrib/devtools/, as I'd like to contribute additional lint
checks in the future.
Diffstat (limited to 'contrib/devtools')
-rwxr-xr-x | contrib/devtools/lint-all.sh | 22 | ||||
-rwxr-xr-x | contrib/devtools/lint-whitespace.sh | 47 |
2 files changed, 69 insertions, 0 deletions
diff --git a/contrib/devtools/lint-all.sh b/contrib/devtools/lint-all.sh new file mode 100755 index 0000000000..b6d86959c6 --- /dev/null +++ b/contrib/devtools/lint-all.sh @@ -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 diff --git a/contrib/devtools/lint-whitespace.sh b/contrib/devtools/lint-whitespace.sh new file mode 100755 index 0000000000..59e5c92997 --- /dev/null +++ b/contrib/devtools/lint-whitespace.sh @@ -0,0 +1,47 @@ +#!/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 + exit 0 +fi + +showdiff() { + if ! git diff -U0 "${TRAVIS_COMMIT_RANGE}" --; then + echo "Failed to get a diff" + exit 1 + fi +} + +# Do a first pass, and if no trailing whitespace was found then exit early. +if ! showdiff | grep -E -q '^\+.*\s+$'; then + exit +fi + +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 + 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" + SEEN=1 + fi + echo "$line" + fi +done < <(showdiff | grep -E '^(diff --git |\+.*\s+$)') +exit 1 |