Mercurial > hg
changeset 14763:b071cd58af50 stable
check-code: fix class style checking (with tests)
- old-style classes were only checked for one-letter class names
- add check for new-style classes with empty parent class, because
this is not available in Python 2.4
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Wed, 29 Jun 2011 13:45:51 +0200 |
parents | 6beb26747430 |
children | a7d5816087a9 |
files | contrib/check-code.py tests/test-check-code.t |
diffstat | 2 files changed, 23 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/contrib/check-code.py Wed Jun 29 00:19:27 2011 +0200 +++ b/contrib/check-code.py Wed Jun 29 13:45:51 2011 +0200 @@ -128,7 +128,9 @@ # (r'\w*[a-z][A-Z]\w*\s*=', "don't use camelcase in identifiers"), (r'^\s*(if|while|def|class|except|try)\s[^[]*:\s*[^\]#\s]+', "linebreak after :"), - (r'class\s[^(]:', "old-style class, use class foo(object)"), + (r'class\s[^( ]+:', "old-style class, use class foo(object)"), + (r'class\s[^( ]+\(\):', + "class foo() not available in Python 2.4, use class foo(object)"), (r'\b(%s)\(' % '|'.join(keyword.kwlist), "Python keyword is not a function"), (r',]', "unneeded trailing ',' in list"),
--- a/tests/test-check-code.t Wed Jun 29 00:19:27 2011 +0200 +++ b/tests/test-check-code.t Wed Jun 29 13:45:51 2011 +0200 @@ -27,8 +27,21 @@ > def any(x): > pass > EOF + $ cat > classstyle.py <<EOF + > class newstyle_class(object): + > pass + > + > class oldstyle_class: + > pass + > + > class empty(): + > pass + > + > no_class = 1: + > pass + > EOF $ check_code="$TESTDIR"/../contrib/check-code.py - $ "$check_code" ./wrong.py ./correct.py ./quote.py ./non-py24.py + $ "$check_code" ./wrong.py ./correct.py ./quote.py ./non-py24.py ./classstyle.py ./wrong.py:1: > def toto( arg1, arg2): gratuitous whitespace in () or [] @@ -51,6 +64,12 @@ ./non-py24.py:4: > y = format(x) any/all/format not available in Python 2.4 + ./classstyle.py:4: + > class oldstyle_class: + old-style class, use class foo(object) + ./classstyle.py:7: + > class empty(): + class foo() not available in Python 2.4, use class foo(object) [1] $ cat > is-op.py <<EOF