diff options
author | Gordon Ross <gordon.w.ross@gmail.com> | 2018-04-14 14:01:02 -0400 |
---|---|---|
committer | Gordon Ross <gwr@nexenta.com> | 2018-05-03 01:03:02 -0400 |
commit | 4ff15898b7da74f6c007b0fef82a27cb866afade (patch) | |
tree | bc813a56caed9972826a6eca130f918ed3e78fe8 | |
parent | 6578fdfad83f727b6fd5f68d4e8985b2760e0d80 (diff) | |
download | illumos-joyent-4ff15898b7da74f6c007b0fef82a27cb866afade.tar.gz |
9473 Want git nits to check for white space nits
Reviewed by: Toomas Soome <tsoome@me.com>
Reviewed by: Andy Fiddaman <omnios@citrus-it.net>
Approved by: Dan McDonald <danmcd@joyent.com>
-rw-r--r-- | usr/src/pkg/manifests/developer-build-onbld.mf | 5 | ||||
-rw-r--r-- | usr/src/tools/onbld/Checks/Makefile | 3 | ||||
-rw-r--r-- | usr/src/tools/onbld/Checks/WsCheck.py | 46 | ||||
-rw-r--r-- | usr/src/tools/onbld/Checks/__init__.py | 3 | ||||
-rw-r--r-- | usr/src/tools/scripts/Makefile | 5 | ||||
-rw-r--r-- | usr/src/tools/scripts/git-pbchk.py | 18 | ||||
-rw-r--r-- | usr/src/tools/scripts/wscheck.py | 54 |
7 files changed, 126 insertions, 8 deletions
diff --git a/usr/src/pkg/manifests/developer-build-onbld.mf b/usr/src/pkg/manifests/developer-build-onbld.mf index 69855fdbeb..49863c8e63 100644 --- a/usr/src/pkg/manifests/developer-build-onbld.mf +++ b/usr/src/pkg/manifests/developer-build-onbld.mf @@ -120,6 +120,7 @@ file path=opt/onbld/bin/wdiff mode=0555 file path=opt/onbld/bin/webrev mode=0555 file path=opt/onbld/bin/which_scm mode=0555 file path=opt/onbld/bin/ws mode=0555 +file path=opt/onbld/bin/wscheck mode=0555 file path=opt/onbld/bin/wsdiff mode=0555 file path=opt/onbld/bin/xref mode=0555 file path=opt/onbld/bin/xref.mk @@ -185,6 +186,10 @@ file path=opt/onbld/lib/python$(PYTHON_VERSION)/onbld/Checks/SpellCheck.py \ mode=0444 file path=opt/onbld/lib/python$(PYTHON_VERSION)/onbld/Checks/SpellCheck.pyc \ mode=0444 +file path=opt/onbld/lib/python$(PYTHON_VERSION)/onbld/Checks/WsCheck.py \ + mode=0444 +file path=opt/onbld/lib/python$(PYTHON_VERSION)/onbld/Checks/WsCheck.pyc \ + mode=0444 file path=opt/onbld/lib/python$(PYTHON_VERSION)/onbld/Checks/__init__.py \ mode=0444 file path=opt/onbld/lib/python$(PYTHON_VERSION)/onbld/Checks/__init__.pyc \ diff --git a/usr/src/tools/onbld/Checks/Makefile b/usr/src/tools/onbld/Checks/Makefile index 02f13b8351..bca61be9ee 100644 --- a/usr/src/tools/onbld/Checks/Makefile +++ b/usr/src/tools/onbld/Checks/Makefile @@ -44,11 +44,12 @@ PYSRCS = \ Mapfile.py \ ProcessCheck.py \ SpellCheck.py \ + WsCheck.py \ __init__.py PYOBJS = $(PYSRCS:%.py=%.pyc) PYTOPDIR = $(ROOTONBLDLIB) -PYMODDIR = onbld/Checks +PYMODDIR = onbld/Checks include ../../Makefile.python diff --git a/usr/src/tools/onbld/Checks/WsCheck.py b/usr/src/tools/onbld/Checks/WsCheck.py new file mode 100644 index 0000000000..b05402e68c --- /dev/null +++ b/usr/src/tools/onbld/Checks/WsCheck.py @@ -0,0 +1,46 @@ +#! /usr/bin/python +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2018 Gordon Ross <gordon.w.ross@gmail.com> +# + +# +# Check file for whitespace issues +# (space tab, trailing space) +# + + +import time, re, sys + +stMsg = 'space tab sequences' +twsMsg = 'has trailing spaces' + +def err(stream, fname, lineno, msg): + stream.write("%s:%d: %s\n" % (fname, lineno, msg)) + +def wscheck(fh, output=sys.stderr): + lineno = 1 + ret = 0 + + fname = fh.name + + for line in fh: + if re.search(r' \t', line): + err(output, fname, lineno, stMsg); + ret = 1 + if re.search(r'[ \t]$', line): + err(output, fname, lineno, twsMsg); + ret = 1 + lineno += 1 + + return ret diff --git a/usr/src/tools/onbld/Checks/__init__.py b/usr/src/tools/onbld/Checks/__init__.py index 9fdd25d43c..9f0611d969 100644 --- a/usr/src/tools/onbld/Checks/__init__.py +++ b/usr/src/tools/onbld/Checks/__init__.py @@ -42,4 +42,5 @@ __all__ = [ 'Keywords', 'ManLint', 'Mapfile', - 'SpellCheck'] + 'SpellCheck', + 'WsCheck'] diff --git a/usr/src/tools/scripts/Makefile b/usr/src/tools/scripts/Makefile index e254a76a08..3acb27d1a4 100644 --- a/usr/src/tools/scripts/Makefile +++ b/usr/src/tools/scripts/Makefile @@ -66,6 +66,7 @@ PYFILES= \ hdrchk \ mapfilechk \ validate_pkg \ + wscheck \ wsdiff SCRIPTLINKS= \ @@ -156,7 +157,7 @@ bldenv: bldenv.sh stdenv.sh shlintout="$$( /usr/bin/ksh93 -n "$@" 2>&1 )" ; \ [[ "$${shlintout}" != "" ]] && \ { print -r -- "$${shlintout}" ; false ; } || true - $(CHMOD) +x "$@" + $(CHMOD) +x "$@" bldenv.1onbld: bldenv $(RM) "$@" @@ -168,7 +169,7 @@ bldenv.1onbld: bldenv nightly: nightly.sh stdenv.sh $(RM) "$@" sed -e '/# STDENV_START/ r stdenv.sh' nightly.sh > nightly - $(CHMOD) +x "$@" + $(CHMOD) +x "$@" include ../Makefile.targ diff --git a/usr/src/tools/scripts/git-pbchk.py b/usr/src/tools/scripts/git-pbchk.py index d8a3e19bf3..4a3533156d 100644 --- a/usr/src/tools/scripts/git-pbchk.py +++ b/usr/src/tools/scripts/git-pbchk.py @@ -48,7 +48,7 @@ sys.path.insert(1, os.path.join(os.path.dirname(__file__), "..", "lib", sys.path.insert(2, os.path.join(os.path.dirname(__file__), "..")) from onbld.Scm import Ignore -from onbld.Checks import Comments, Copyright, CStyle, HdrChk +from onbld.Checks import Comments, Copyright, CStyle, HdrChk, WsCheck from onbld.Checks import JStyle, Keywords, ManLint, Mapfile, SpellCheck @@ -122,7 +122,7 @@ def git_parent_branch(branch): if not branch: return None - p = git(["for-each-ref", "--format=%(refname:short) %(upstream:short)", + p = git(["for-each-ref", "--format=%(refname:short) %(upstream:short)", "refs/heads/"]) if not p: @@ -310,6 +310,14 @@ def keywords(root, parent, flist, output): fh.close() return ret +def wscheck(root, parent, flist, output): + ret = 0 + output.write("white space nits:\n") + for f in flist(): + fh = open(f, 'r') + ret |= WsCheck.wscheck(fh, output=output) + fh.close() + return ret def run_checks(root, parent, cmds, paths='', opts={}): """Run the checks given in 'cmds', expected to have well-known signatures, @@ -343,7 +351,8 @@ def nits(root, parent, paths): jstyle, keywords, manlint, - mapfilechk] + mapfilechk, + wscheck] run_checks(root, parent, cmds, paths) @@ -355,7 +364,8 @@ def pbchk(root, parent, paths): jstyle, keywords, manlint, - mapfilechk] + mapfilechk, + wscheck] run_checks(root, parent, cmds) diff --git a/usr/src/tools/scripts/wscheck.py b/usr/src/tools/scripts/wscheck.py new file mode 100644 index 0000000000..ce85b8971f --- /dev/null +++ b/usr/src/tools/scripts/wscheck.py @@ -0,0 +1,54 @@ +#!@PYTHON@ +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# + +# +# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. +# + +# +# Check file for whitespace issues +# (space tab, trailing space) +# + +import sys, os + +sys.path.insert(1, os.path.join(os.path.dirname(__file__), "..", "lib", + "python%d.%d" % sys.version_info[:2])) + +# Allow running from the source tree, using the modules in the source tree +sys.path.insert(2, os.path.join(os.path.dirname(__file__), '..')) + +from onbld.Checks.WsCheck import wscheck + +ret = 0 +for filename in sys.argv[1:]: + try: + fh = open(filename, 'r') + except IOError, e: + sys.stderr.write("failed to open '%s': %s\n" % + (e.filename, e.strerror)) + continue + + ret |= wscheck(fh, output=sys.stderr) + fh.close() + +sys.exit(ret) |