##// END OF EJS Templates
hghave: allow adding customized features at runtime...
hghave: allow adding customized features at runtime Before this patch, there is no way to add customized features to `hghave` without changing `hghave` and `hghave.py` themselves. This decreases reusability of `run-tests.py` framework for third party tools, because they may want to examine custom features at runtime (e.g. existence of some external tools). To allow adding customized features at runtime, this patch makes `hghave` import `hghaveaddon` module, only when `hghaveaddon.py` file can be found in directories below: - `TESTDIR` for invocation via `run-tests.py` - `.` for invocation via command line The path to the directory where `hghaveaddon.py` should be placed is added to `sys.path` only while importing `hghaveaddon`, because: - `.` may not be added to `PYTHONPATH` - adding additional path to `sys.path` may change behavior of subsequent `import` for other features `hghave` is terminated with exit code '2' at failure of `import hghaveaddon`, because exit code '2' terminates `run-tests.py` immediately. This is a one of preparations for issue4677.

File last commit:

r25199:e78447e6 default
r25732:b94df10c default
Show More
test-check-code.t
234 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
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
Pierre-Yves David
check-code: entirely drop the 'non-py24.py' file from the test...
r25199 $ "$check_code" ./wrong.py ./correct.py ./quote.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
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():
Pierre-Yves David
check-code: fix the error message about 'class foo():'...
r25140 class foo() creates old style object, 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)
>
Mads Kiilerich
spelling: fixes from proofreading of spell checker issues
r23139 > print _("mapping operation in different line %s"
FUJIWARA Katsunori
check-code: detect "% inside _()" when there are leading whitespaces...
r21097 > % 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:
Mads Kiilerich
spelling: fixes from proofreading of spell checker issues
r23139 > print _("mapping operation in different line %s"
FUJIWARA Katsunori
check-code: detect "% inside _()" when there are leading whitespaces...
r21097 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]