##// END OF EJS Templates
check-code: check comment for '.. note::' without two newlines...
check-code: check comment for '.. note::' without two newlines Because string entries are replaced before matching, we must search for the transformed pattern. But it seems to be quite unique and does not return false matches. If it will, they can be listed as 3rd arg in pypats.

File last commit:

r19998:289bbb29 stable
r19998:289bbb29 stable
Show More
test-check-code.t
245 lines | 5.3 KiB | text/troff | Tads3Lexer
/ tests / test-check-code.t
Brodie Rao
tests: unify test-check-code
r12632 $ cat > correct.py <<EOF
> def toto(arg1, arg2):
> del arg2
> return (5 + 6, 9)
> EOF
$ cat > wrong.py <<EOF
> def toto( arg1, arg2):
> del(arg2)
> return ( 5+6, 9)
> EOF
$ cat > quote.py <<EOF
> # let's use quote in comments
> (''' ( 4x5 )
> but """\\''' and finally''',
> """let's fool checkpatch""", '1+2',
> '"""', 42+1, """and
> ( 4-1 ) """, "( 1+1 )\" and ")
> a, '\\\\\\\\', "\\\\\\" x-2", "c-1"
> EOF
$ cat > non-py24.py <<EOF
> # Using builtins that does not exist in Python 2.4
> if any():
> x = all()
> y = format(x)
Augie Fackler
check-code: add a check for the next() builtin, which was new in 2.6
r19501 > # next(generator) is new in 2.6
> z = next(x)
> # but generator.next() is okay
> x.next()
> # and we can make our own next
> def next(stuff):
> pass
Brodie Rao
tests: unify test-check-code
r12632 >
> # Do not complain about our own definition
> def any(x):
> pass
Thomas Arendsen Hein
test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
r15285 >
> # try/except/finally block does not exist in Python 2.4
> try:
> pass
> except StandardError, inst:
> pass
> finally:
> pass
>
> # nested try/finally+try/except is allowed
> try:
> try:
> pass
> except StandardError, inst:
> pass
> finally:
> pass
Thomas Arendsen Hein
check-code: catch yield inside try/finally (with tests)...
r17620 >
> # yield inside a try/finally block is not allowed in Python 2.4
> try:
> pass
> yield 1
> finally:
> pass
> try:
> yield
> pass
> finally:
> pass
>
Brodie Rao
tests: unify test-check-code
r12632 > EOF
Thomas Arendsen Hein
check-code: fix class style checking (with tests)...
r14763 $ cat > classstyle.py <<EOF
> class newstyle_class(object):
> pass
>
> class oldstyle_class:
> pass
>
> class empty():
> pass
>
> no_class = 1:
> pass
> EOF
Brodie Rao
tests: unify test-check-code
r12632 $ check_code="$TESTDIR"/../contrib/check-code.py
Thomas Arendsen Hein
check-code: fix class style checking (with tests)...
r14763 $ "$check_code" ./wrong.py ./correct.py ./quote.py ./non-py24.py ./classstyle.py
Brodie Rao
tests: unify test-check-code
r12632 ./wrong.py:1:
> def toto( arg1, arg2):
gratuitous whitespace in () or []
./wrong.py:2:
> del(arg2)
Thomas Arendsen Hein
coding style: fix yield used as a function
r13077 Python keyword is not a function
Brodie Rao
tests: unify test-check-code
r12632 ./wrong.py:3:
> return ( 5+6, 9)
Matt Mackall
check-code: support multiline matches like try/except/finally...
r15281 gratuitous whitespace in () or []
Brodie Rao
tests: unify test-check-code
r12632 missing whitespace in expression
./quote.py:5:
> '"""', 42+1, """and
missing whitespace in expression
./non-py24.py:2:
> if any():
any/all/format not available in Python 2.4
./non-py24.py:3:
> x = all()
any/all/format not available in Python 2.4
./non-py24.py:4:
> y = format(x)
any/all/format not available in Python 2.4
Augie Fackler
check-code: add a check for the next() builtin, which was new in 2.6
r19501 ./non-py24.py:6:
> z = next(x)
no next(foo) in Python 2.4 and 2.5, use foo.next() instead
./non-py24.py:18:
Thomas Arendsen Hein
test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
r15285 > try:
Mads Kiilerich
avoid using abbreviations that look like spelling errors
r17428 no try/except/finally in Python 2.4
Augie Fackler
check-code: add a check for the next() builtin, which was new in 2.6
r19501 ./non-py24.py:35:
Thomas Arendsen Hein
check-code: catch yield inside try/finally (with tests)...
r17620 > try:
no yield inside try/finally in Python 2.4
Augie Fackler
check-code: add a check for the next() builtin, which was new in 2.6
r19501 ./non-py24.py:40:
Thomas Arendsen Hein
check-code: catch yield inside try/finally (with tests)...
r17620 > try:
no yield inside try/finally in Python 2.4
Thomas Arendsen Hein
check-code: fix class style checking (with tests)...
r14763 ./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)
Brodie Rao
tests: unify test-check-code
r12632 [1]
Augie Fackler
check-code: disallow defunct <> operator...
r18183 $ cat > python3-compat.py << EOF
> foo <> bar
> reduce(lambda a, b: a + b, [1, 2, 3, 4])
> EOF
$ "$check_code" python3-compat.py
python3-compat.py:1:
> foo <> bar
<> operator is not available in Python 3+, use !=
python3-compat.py:2:
> reduce(lambda a, b: a + b, [1, 2, 3, 4])
reduce is not available in Python 3+
[1]
Adrian Buehlmann
check-code: catch Python 'is' comparing number or string literals...
r13026
$ cat > is-op.py <<EOF
> # is-operator comparing number or string literal
> x = None
> y = x is 'foo'
> y = x is "foo"
> y = x is 5346
> y = x is -6
> y = x is not 'foo'
> y = x is not "foo"
> y = x is not 5346
> y = x is not -6
> EOF
$ "$check_code" ./is-op.py
./is-op.py:3:
> y = x is 'foo'
object comparison with literal
./is-op.py:4:
> y = x is "foo"
object comparison with literal
./is-op.py:5:
> y = x is 5346
object comparison with literal
./is-op.py:6:
> y = x is -6
object comparison with literal
./is-op.py:7:
> y = x is not 'foo'
object comparison with literal
./is-op.py:8:
> y = x is not "foo"
object comparison with literal
./is-op.py:9:
> y = x is not 5346
object comparison with literal
./is-op.py:10:
> y = x is not -6
object comparison with literal
[1]
Simon Heimberg
check-code: do not prepend "warning" to a failure message...
r18762 $ cat > for-nolineno.py <<EOF
Mads Kiilerich
check-code: add --nolineno option for hiding line numbers...
r15502 > except:
> EOF
Simon Heimberg
check-code: do not prepend "warning" to a failure message...
r18762 $ "$check_code" for-nolineno.py --nolineno
for-nolineno.py:0:
Mads Kiilerich
check-code: add --nolineno option for hiding line numbers...
r15502 > except:
Simon Heimberg
check-code: do not prepend "warning" to a failure message...
r18762 naked except clause
Mads Kiilerich
check-code: add --nolineno option for hiding line numbers...
r15502 [1]
Augie Fackler
check-code: disallow two-argument form of raise...
r18180
Simon Heimberg
check-code: automatically preppend "warning: " to all warning messages...
r19422 $ cat > warning.t <<EOF
> $ function warnonly {
> > }
> EOF
$ "$check_code" warning.t
$ "$check_code" --warn warning.t
warning.t:1:
> $ function warnonly {
warning: don't use 'function', use old style
[1]
Augie Fackler
check-code: disallow two-argument form of raise...
r18180 $ cat > raise-format.py <<EOF
> raise SomeException, message
> # this next line is okay
> raise SomeException(arg1, arg2)
> EOF
Simon Heimberg
check-code: do not abort on an unreadable file, only report this
r19494 $ "$check_code" not-existing.py raise-format.py
Skipping*not-existing.py* (glob)
Augie Fackler
check-code: disallow two-argument form of raise...
r18180 raise-format.py:1:
> raise SomeException, message
don't use old-style two-argument raise, use Exception(message)
[1]
Simon Heimberg
check-code: do not abort on an unreadable file, only report this
r19494
Simon Heimberg
check-code: check comment for '.. note::' without two newlines...
r19998 $ cat > rst.py <<EOF
> """problematic rst text
>
> .. note::
> wrong
> """
>
> '''
>
> .. note::
>
> valid
>
> new text
>
> .. note::
>
> also valid
> '''
>
> """mixed
>
> .. note::
>
> good
>
> .. note::
> plus bad
> """
> EOF
$ $check_code -w rst.py
rst.py:3:
> .. note::
warning: add two newlines after '.. note::'
rst.py:26:
> .. note::
warning: add two newlines after '.. note::'
[1]