whitespace_test revision d8899526551cbfe112e0ecc8280003a8349fc531
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan#!/bin/bash
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hoganset -e -u -o pipefail
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan# An AWK regex matching tracked file paths to be excluded from the search.
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan# Example: '.*\.po|README'
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk HoganPATH_EXCLUDE_REGEX='.*\.po|.*\.patch|.*\.diff|\/debian\/.*'
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hoganexport GIT_DIR="$ABS_TOP_SRCDIR/.git"
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hoganexport GIT_WORK_TREE="$ABS_TOP_SRCDIR"
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hoganif [ ! -d "$GIT_DIR" ]; then
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan echo "Git repository is required for this test!" 1>&2
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan exit 77
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hoganfi
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan{
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan # Look for lines with trailing whitespace in all files tracked by Git
2dd75eff92ef66e22cca286b6f4fe5a9c929af9dPhill Cunnington git grep -n -I '\s\+$' -- "$(git rev-parse --show-toplevel)" ||
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan # Don't fail if no such lines were found anywhere
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan [[ $? == 1 ]]
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan} |
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan awk -- "
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan BEGIN {
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan found = 0
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan }
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan ! /^($PATH_EXCLUDE_REGEX):/ {
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan if (!found) {
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan print \"Trailing whitespace found:\"
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan found = 1
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan }
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan print
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan }
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan END {
2dd75eff92ef66e22cca286b6f4fe5a9c929af9dPhill Cunnington exit found
2dd75eff92ef66e22cca286b6f4fe5a9c929af9dPhill Cunnington }
2dd75eff92ef66e22cca286b6f4fe5a9c929af9dPhill Cunnington "
45e9f4e13faca91c1a0f87ef805933e155cf3ae6Dirk Hogan