##// END OF EJS Templates
tests: improve test coverage for discovery and actual parameters for pulling
tests: improve test coverage for discovery and actual parameters for pulling

File last commit:

r21487:c26464ce default
r22181:851db07b stable
Show More
test-check-code.t
302 lines | 6.9 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])
Augie Fackler
check-code: disallow use of dict(key=value) construction...
r20688 > dict(key=value)
Augie Fackler
check-code: disallow defunct <> operator...
r18183 > 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+
Augie Fackler
check-code: disallow use of dict(key=value) construction...
r20688 python3-compat.py:3:
> dict(key=value)
dict() is different in Py2 and 3 and is slower than {}
Augie Fackler
check-code: disallow defunct <> operator...
r18183 [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 {
> > }
Simon Heimberg
check-code: prepend warning prefix only once, but for each warning...
r20005 > $ diff -N aaa
> $ function onwarn {}
Simon Heimberg
check-code: automatically preppend "warning: " to all warning messages...
r19422 > EOF
$ "$check_code" warning.t
$ "$check_code" --warn warning.t
warning.t:1:
> $ function warnonly {
warning: don't use 'function', use old style
Simon Heimberg
check-code: prepend warning prefix only once, but for each warning...
r20005 warning.t:3:
> $ diff -N aaa
warning: don't use 'diff -N'
warning.t:4:
> $ function onwarn {}
warning: don't use 'function', use old style
Simon Heimberg
check-code: automatically preppend "warning: " to all warning messages...
r19422 [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]
FUJIWARA Katsunori
check-code: detect "% inside _()" when there are leading whitespaces...
r21097 $ cat > ./map-inside-gettext.py <<EOF
> print _("map inside gettext %s" % v)
>
> print _("concatenating " " by " " space %s" % v)
> print _("concatenating " + " by " + " '+' %s" % v)
>
> print _("maping operation in different line %s"
> % v)
>
> print _(
> "leading spaces inside of '(' %s" % v)
> EOF
$ "$check_code" ./map-inside-gettext.py
./map-inside-gettext.py:1:
> print _("map inside gettext %s" % v)
don't use % inside _()
./map-inside-gettext.py:3:
> print _("concatenating " " by " " space %s" % v)
don't use % inside _()
./map-inside-gettext.py:4:
> print _("concatenating " + " by " + " '+' %s" % v)
don't use % inside _()
./map-inside-gettext.py:6:
> print _("maping operation in different line %s"
don't use % inside _()
./map-inside-gettext.py:9:
> print _(
don't use % inside _()
[1]
Steven Brown
check-code: check for consistent usage of the websub filter in hgweb templates...
r21487
web templates
$ mkdir -p mercurial/templates
$ cat > mercurial/templates/example.tmpl <<EOF
> {desc}
> {desc|escape}
> {desc|firstline}
> {desc|websub}
> EOF
$ "$check_code" --warnings mercurial/templates/example.tmpl
mercurial/templates/example.tmpl:2:
> {desc|escape}
warning: follow desc keyword with either firstline or websub
[1]