annotate tests/test-contrib-check-code.t @ 38935:27a54096c92e

linelog: fix infinite loop vulnerability Checking `len(lines)` is not a great way of detecting infinite loops, as demonstrated in the added test. Therefore check instruction count instead. The original C implementation does not have this problem. There are a few other places where the C implementation enforces more strictly, like `a1 <= a2`, `b1 <= b2`, `rev > 0`. But they are optional. Test Plan: Add a test. The old code forces the test to time out. Differential Revision: https://phab.mercurial-scm.org/D4151
author Jun Wu <quark@fb.com>
date Mon, 06 Aug 2018 22:24:00 -0700
parents e223c0438f89
children ff47ba7a2903
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12632
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
1 $ cat > correct.py <<EOF
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
2 > def toto(arg1, arg2):
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
3 > del arg2
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
4 > return (5 + 6, 9)
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
5 > EOF
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
6 $ cat > wrong.py <<EOF
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
7 > def toto( arg1, arg2):
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
8 > del(arg2)
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
9 > return ( 5+6, 9)
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
10 > EOF
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
11 $ cat > quote.py <<EOF
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
12 > # let's use quote in comments
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
13 > (''' ( 4x5 )
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
14 > but """\\''' and finally''',
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
15 > """let's fool checkpatch""", '1+2',
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
16 > '"""', 42+1, """and
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
17 > ( 4-1 ) """, "( 1+1 )\" and ")
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
18 > a, '\\\\\\\\', "\\\\\\" x-2", "c-1"
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
19 > EOF
14763
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
20 $ cat > classstyle.py <<EOF
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
21 > class newstyle_class(object):
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
22 > pass
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
23 >
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
24 > class oldstyle_class:
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
25 > pass
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
26 >
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
27 > class empty():
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
28 > pass
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
29 >
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
30 > no_class = 1:
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
31 > pass
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
32 > EOF
12632
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
33 $ check_code="$TESTDIR"/../contrib/check-code.py
25199
e78447e61624 check-code: entirely drop the 'non-py24.py' file from the test
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25198
diff changeset
34 $ "$check_code" ./wrong.py ./correct.py ./quote.py ./classstyle.py
12632
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
35 ./wrong.py:1:
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
36 > def toto( arg1, arg2):
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
37 gratuitous whitespace in () or []
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
38 ./wrong.py:2:
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
39 > del(arg2)
13077
6b8d2ee24ce2 coding style: fix yield used as a function
Thomas Arendsen Hein <thomas@jtah.de>
parents: 13026
diff changeset
40 Python keyword is not a function
12632
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
41 ./wrong.py:3:
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
42 > return ( 5+6, 9)
15281
aeeb2afcdc25 check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 14763
diff changeset
43 gratuitous whitespace in () or []
12632
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
44 missing whitespace in expression
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
45 ./quote.py:5:
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
46 > '"""', 42+1, """and
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
47 missing whitespace in expression
14763
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
48 ./classstyle.py:4:
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
49 > class oldstyle_class:
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
50 old-style class, use class foo(object)
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
51 ./classstyle.py:7:
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
52 > class empty():
25140
317333e0793c check-code: fix the error message about 'class foo():'
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25077
diff changeset
53 class foo() creates old style object, use class foo(object)
12632
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
54 [1]
18183
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
55 $ cat > python3-compat.py << EOF
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
56 > foo <> bar
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
57 > reduce(lambda a, b: a + b, [1, 2, 3, 4])
20688
a61ed1c2d7a7 check-code: disallow use of dict(key=value) construction
Augie Fackler <raf@durin42.com>
parents: 20005
diff changeset
58 > dict(key=value)
18183
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
59 > EOF
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
60 $ "$check_code" python3-compat.py
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
61 python3-compat.py:1:
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
62 > foo <> bar
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
63 <> operator is not available in Python 3+, use !=
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
64 python3-compat.py:2:
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
65 > reduce(lambda a, b: a + b, [1, 2, 3, 4])
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
66 reduce is not available in Python 3+
20688
a61ed1c2d7a7 check-code: disallow use of dict(key=value) construction
Augie Fackler <raf@durin42.com>
parents: 20005
diff changeset
67 python3-compat.py:3:
a61ed1c2d7a7 check-code: disallow use of dict(key=value) construction
Augie Fackler <raf@durin42.com>
parents: 20005
diff changeset
68 > dict(key=value)
a61ed1c2d7a7 check-code: disallow use of dict(key=value) construction
Augie Fackler <raf@durin42.com>
parents: 20005
diff changeset
69 dict() is different in Py2 and 3 and is slower than {}
18183
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
70 [1]
13026
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
71
28594
d3990da51637 check-code: prevent use of strcpy
Augie Fackler <augie@google.com>
parents: 27367
diff changeset
72 $ cat > foo.c <<EOF
d3990da51637 check-code: prevent use of strcpy
Augie Fackler <augie@google.com>
parents: 27367
diff changeset
73 > void narf() {
d3990da51637 check-code: prevent use of strcpy
Augie Fackler <augie@google.com>
parents: 27367
diff changeset
74 > strcpy(foo, bar);
d3990da51637 check-code: prevent use of strcpy
Augie Fackler <augie@google.com>
parents: 27367
diff changeset
75 > // strcpy_s is okay, but this comment is not
d3990da51637 check-code: prevent use of strcpy
Augie Fackler <augie@google.com>
parents: 27367
diff changeset
76 > strcpy_s(foo, bar);
d3990da51637 check-code: prevent use of strcpy
Augie Fackler <augie@google.com>
parents: 27367
diff changeset
77 > }
d3990da51637 check-code: prevent use of strcpy
Augie Fackler <augie@google.com>
parents: 27367
diff changeset
78 > EOF
d3990da51637 check-code: prevent use of strcpy
Augie Fackler <augie@google.com>
parents: 27367
diff changeset
79 $ "$check_code" ./foo.c
d3990da51637 check-code: prevent use of strcpy
Augie Fackler <augie@google.com>
parents: 27367
diff changeset
80 ./foo.c:2:
d3990da51637 check-code: prevent use of strcpy
Augie Fackler <augie@google.com>
parents: 27367
diff changeset
81 > strcpy(foo, bar);
d3990da51637 check-code: prevent use of strcpy
Augie Fackler <augie@google.com>
parents: 27367
diff changeset
82 don't use strcpy, use strlcpy or memcpy
d3990da51637 check-code: prevent use of strcpy
Augie Fackler <augie@google.com>
parents: 27367
diff changeset
83 ./foo.c:3:
d3990da51637 check-code: prevent use of strcpy
Augie Fackler <augie@google.com>
parents: 27367
diff changeset
84 > // strcpy_s is okay, but this comment is not
d3990da51637 check-code: prevent use of strcpy
Augie Fackler <augie@google.com>
parents: 27367
diff changeset
85 don't use //-style comments
d3990da51637 check-code: prevent use of strcpy
Augie Fackler <augie@google.com>
parents: 27367
diff changeset
86 [1]
d3990da51637 check-code: prevent use of strcpy
Augie Fackler <augie@google.com>
parents: 27367
diff changeset
87
13026
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
88 $ cat > is-op.py <<EOF
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
89 > # is-operator comparing number or string literal
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
90 > x = None
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
91 > y = x is 'foo'
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
92 > y = x is "foo"
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
93 > y = x is 5346
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
94 > y = x is -6
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
95 > y = x is not 'foo'
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
96 > y = x is not "foo"
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
97 > y = x is not 5346
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
98 > y = x is not -6
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
99 > EOF
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
100
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
101 $ "$check_code" ./is-op.py
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
102 ./is-op.py:3:
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
103 > y = x is 'foo'
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
104 object comparison with literal
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
105 ./is-op.py:4:
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
106 > y = x is "foo"
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
107 object comparison with literal
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
108 ./is-op.py:5:
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
109 > y = x is 5346
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
110 object comparison with literal
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
111 ./is-op.py:6:
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
112 > y = x is -6
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
113 object comparison with literal
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
114 ./is-op.py:7:
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
115 > y = x is not 'foo'
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
116 object comparison with literal
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
117 ./is-op.py:8:
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
118 > y = x is not "foo"
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
119 object comparison with literal
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
120 ./is-op.py:9:
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
121 > y = x is not 5346
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
122 object comparison with literal
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
123 ./is-op.py:10:
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
124 > y = x is not -6
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
125 object comparison with literal
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
126 [1]
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
127
18762
a91387a37f05 check-code: do not prepend "warning" to a failure message
Simon Heimberg <simohe@besonet.ch>
parents: 18183
diff changeset
128 $ cat > for-nolineno.py <<EOF
15502
7917a104a285 check-code: add --nolineno option for hiding line numbers
Mads Kiilerich <mads@kiilerich.com>
parents: 15285
diff changeset
129 > except:
7917a104a285 check-code: add --nolineno option for hiding line numbers
Mads Kiilerich <mads@kiilerich.com>
parents: 15285
diff changeset
130 > EOF
18762
a91387a37f05 check-code: do not prepend "warning" to a failure message
Simon Heimberg <simohe@besonet.ch>
parents: 18183
diff changeset
131 $ "$check_code" for-nolineno.py --nolineno
a91387a37f05 check-code: do not prepend "warning" to a failure message
Simon Heimberg <simohe@besonet.ch>
parents: 18183
diff changeset
132 for-nolineno.py:0:
15502
7917a104a285 check-code: add --nolineno option for hiding line numbers
Mads Kiilerich <mads@kiilerich.com>
parents: 15285
diff changeset
133 > except:
18762
a91387a37f05 check-code: do not prepend "warning" to a failure message
Simon Heimberg <simohe@besonet.ch>
parents: 18183
diff changeset
134 naked except clause
15502
7917a104a285 check-code: add --nolineno option for hiding line numbers
Mads Kiilerich <mads@kiilerich.com>
parents: 15285
diff changeset
135 [1]
18180
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
136
19422
d9e86d656017 check-code: automatically preppend "warning: " to all warning messages
Simon Heimberg <simohe@besonet.ch>
parents: 18762
diff changeset
137 $ cat > warning.t <<EOF
d9e86d656017 check-code: automatically preppend "warning: " to all warning messages
Simon Heimberg <simohe@besonet.ch>
parents: 18762
diff changeset
138 > $ function warnonly {
d9e86d656017 check-code: automatically preppend "warning: " to all warning messages
Simon Heimberg <simohe@besonet.ch>
parents: 18762
diff changeset
139 > > }
20005
22154ec6fb8b check-code: prepend warning prefix only once, but for each warning
Simon Heimberg <simohe@besonet.ch>
parents: 19998
diff changeset
140 > $ diff -N aaa
22154ec6fb8b check-code: prepend warning prefix only once, but for each warning
Simon Heimberg <simohe@besonet.ch>
parents: 19998
diff changeset
141 > $ function onwarn {}
19422
d9e86d656017 check-code: automatically preppend "warning: " to all warning messages
Simon Heimberg <simohe@besonet.ch>
parents: 18762
diff changeset
142 > EOF
d9e86d656017 check-code: automatically preppend "warning: " to all warning messages
Simon Heimberg <simohe@besonet.ch>
parents: 18762
diff changeset
143 $ "$check_code" warning.t
d9e86d656017 check-code: automatically preppend "warning: " to all warning messages
Simon Heimberg <simohe@besonet.ch>
parents: 18762
diff changeset
144 $ "$check_code" --warn warning.t
d9e86d656017 check-code: automatically preppend "warning: " to all warning messages
Simon Heimberg <simohe@besonet.ch>
parents: 18762
diff changeset
145 warning.t:1:
d9e86d656017 check-code: automatically preppend "warning: " to all warning messages
Simon Heimberg <simohe@besonet.ch>
parents: 18762
diff changeset
146 > $ function warnonly {
d9e86d656017 check-code: automatically preppend "warning: " to all warning messages
Simon Heimberg <simohe@besonet.ch>
parents: 18762
diff changeset
147 warning: don't use 'function', use old style
20005
22154ec6fb8b check-code: prepend warning prefix only once, but for each warning
Simon Heimberg <simohe@besonet.ch>
parents: 19998
diff changeset
148 warning.t:3:
22154ec6fb8b check-code: prepend warning prefix only once, but for each warning
Simon Heimberg <simohe@besonet.ch>
parents: 19998
diff changeset
149 > $ diff -N aaa
22154ec6fb8b check-code: prepend warning prefix only once, but for each warning
Simon Heimberg <simohe@besonet.ch>
parents: 19998
diff changeset
150 warning: don't use 'diff -N'
22154ec6fb8b check-code: prepend warning prefix only once, but for each warning
Simon Heimberg <simohe@besonet.ch>
parents: 19998
diff changeset
151 warning.t:4:
22154ec6fb8b check-code: prepend warning prefix only once, but for each warning
Simon Heimberg <simohe@besonet.ch>
parents: 19998
diff changeset
152 > $ function onwarn {}
22154ec6fb8b check-code: prepend warning prefix only once, but for each warning
Simon Heimberg <simohe@besonet.ch>
parents: 19998
diff changeset
153 warning: don't use 'function', use old style
19422
d9e86d656017 check-code: automatically preppend "warning: " to all warning messages
Simon Heimberg <simohe@besonet.ch>
parents: 18762
diff changeset
154 [1]
32293
ca727147ff9f style: ban [ foo == bar] bashism in tests
Augie Fackler <augie@google.com>
parents: 29398
diff changeset
155 $ cat > error.t <<EOF
ca727147ff9f style: ban [ foo == bar] bashism in tests
Augie Fackler <augie@google.com>
parents: 29398
diff changeset
156 > $ [ foo == bar ]
ca727147ff9f style: ban [ foo == bar] bashism in tests
Augie Fackler <augie@google.com>
parents: 29398
diff changeset
157 > EOF
ca727147ff9f style: ban [ foo == bar] bashism in tests
Augie Fackler <augie@google.com>
parents: 29398
diff changeset
158 $ "$check_code" error.t
ca727147ff9f style: ban [ foo == bar] bashism in tests
Augie Fackler <augie@google.com>
parents: 29398
diff changeset
159 error.t:1:
ca727147ff9f style: ban [ foo == bar] bashism in tests
Augie Fackler <augie@google.com>
parents: 29398
diff changeset
160 > $ [ foo == bar ]
ca727147ff9f style: ban [ foo == bar] bashism in tests
Augie Fackler <augie@google.com>
parents: 29398
diff changeset
161 [ foo == bar ] is a bashism, use [ foo = bar ] instead
ca727147ff9f style: ban [ foo == bar] bashism in tests
Augie Fackler <augie@google.com>
parents: 29398
diff changeset
162 [1]
ca727147ff9f style: ban [ foo == bar] bashism in tests
Augie Fackler <augie@google.com>
parents: 29398
diff changeset
163 $ rm error.t
18180
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
164 $ cat > raise-format.py <<EOF
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
165 > raise SomeException, message
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
166 > # this next line is okay
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
167 > raise SomeException(arg1, arg2)
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
168 > EOF
19494
3119dc155ac2 check-code: do not abort on an unreadable file, only report this
Simon Heimberg <simohe@besonet.ch>
parents: 19422
diff changeset
169 $ "$check_code" not-existing.py raise-format.py
3119dc155ac2 check-code: do not abort on an unreadable file, only report this
Simon Heimberg <simohe@besonet.ch>
parents: 19422
diff changeset
170 Skipping*not-existing.py* (glob)
18180
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
171 raise-format.py:1:
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
172 > raise SomeException, message
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
173 don't use old-style two-argument raise, use Exception(message)
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
174 [1]
19494
3119dc155ac2 check-code: do not abort on an unreadable file, only report this
Simon Heimberg <simohe@besonet.ch>
parents: 19422
diff changeset
175
35315
e223c0438f89 check-code: allow tabs in heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 34384
diff changeset
176 $ cat <<EOF > tab.t
e223c0438f89 check-code: allow tabs in heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 34384
diff changeset
177 > indent
e223c0438f89 check-code: allow tabs in heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 34384
diff changeset
178 > > heredoc
e223c0438f89 check-code: allow tabs in heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 34384
diff changeset
179 > EOF
e223c0438f89 check-code: allow tabs in heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 34384
diff changeset
180 $ "$check_code" tab.t
e223c0438f89 check-code: allow tabs in heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 34384
diff changeset
181 tab.t:1:
e223c0438f89 check-code: allow tabs in heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 34384
diff changeset
182 > indent
e223c0438f89 check-code: allow tabs in heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 34384
diff changeset
183 don't use tabs to indent
e223c0438f89 check-code: allow tabs in heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 34384
diff changeset
184 [1]
e223c0438f89 check-code: allow tabs in heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 34384
diff changeset
185 $ rm tab.t
e223c0438f89 check-code: allow tabs in heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 34384
diff changeset
186
19998
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
187 $ cat > rst.py <<EOF
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
188 > """problematic rst text
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
189 >
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
190 > .. note::
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
191 > wrong
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
192 > """
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
193 >
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
194 > '''
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
195 >
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
196 > .. note::
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
197 >
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
198 > valid
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
199 >
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
200 > new text
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
201 >
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
202 > .. note::
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
203 >
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
204 > also valid
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
205 > '''
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
206 >
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
207 > """mixed
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
208 >
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
209 > .. note::
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
210 >
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
211 > good
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
212 >
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
213 > .. note::
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
214 > plus bad
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
215 > """
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
216 > EOF
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
217 $ $check_code -w rst.py
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
218 rst.py:3:
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
219 > .. note::
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
220 warning: add two newlines after '.. note::'
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
221 rst.py:26:
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
222 > .. note::
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
223 warning: add two newlines after '.. note::'
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
224 [1]
289bbb294e82 check-code: check comment for '.. note::' without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 19501
diff changeset
225
21097
e8ef59b351c3 check-code: detect "% inside _()" when there are leading whitespaces
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20688
diff changeset
226 $ cat > ./map-inside-gettext.py <<EOF
33721
24849d53697d tests: clean up many print statements to be print functions instead
Augie Fackler <augie@google.com>
parents: 32293
diff changeset
227 > print(_("map inside gettext %s" % v))
21097
e8ef59b351c3 check-code: detect "% inside _()" when there are leading whitespaces
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20688
diff changeset
228 >
33721
24849d53697d tests: clean up many print statements to be print functions instead
Augie Fackler <augie@google.com>
parents: 32293
diff changeset
229 > print(_("concatenating " " by " " space %s" % v))
24849d53697d tests: clean up many print statements to be print functions instead
Augie Fackler <augie@google.com>
parents: 32293
diff changeset
230 > print(_("concatenating " + " by " + " '+' %s" % v))
21097
e8ef59b351c3 check-code: detect "% inside _()" when there are leading whitespaces
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20688
diff changeset
231 >
33721
24849d53697d tests: clean up many print statements to be print functions instead
Augie Fackler <augie@google.com>
parents: 32293
diff changeset
232 > print(_("mapping operation in different line %s"
24849d53697d tests: clean up many print statements to be print functions instead
Augie Fackler <augie@google.com>
parents: 32293
diff changeset
233 > % v))
21097
e8ef59b351c3 check-code: detect "% inside _()" when there are leading whitespaces
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20688
diff changeset
234 >
33721
24849d53697d tests: clean up many print statements to be print functions instead
Augie Fackler <augie@google.com>
parents: 32293
diff changeset
235 > print(_(
24849d53697d tests: clean up many print statements to be print functions instead
Augie Fackler <augie@google.com>
parents: 32293
diff changeset
236 > "leading spaces inside of '(' %s" % v))
21097
e8ef59b351c3 check-code: detect "% inside _()" when there are leading whitespaces
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20688
diff changeset
237 > EOF
e8ef59b351c3 check-code: detect "% inside _()" when there are leading whitespaces
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20688
diff changeset
238 $ "$check_code" ./map-inside-gettext.py
e8ef59b351c3 check-code: detect "% inside _()" when there are leading whitespaces
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20688
diff changeset
239 ./map-inside-gettext.py:1:
33721
24849d53697d tests: clean up many print statements to be print functions instead
Augie Fackler <augie@google.com>
parents: 32293
diff changeset
240 > print(_("map inside gettext %s" % v))
21097
e8ef59b351c3 check-code: detect "% inside _()" when there are leading whitespaces
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20688
diff changeset
241 don't use % inside _()
e8ef59b351c3 check-code: detect "% inside _()" when there are leading whitespaces
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20688
diff changeset
242 ./map-inside-gettext.py:3:
33721
24849d53697d tests: clean up many print statements to be print functions instead
Augie Fackler <augie@google.com>
parents: 32293
diff changeset
243 > print(_("concatenating " " by " " space %s" % v))
21097
e8ef59b351c3 check-code: detect "% inside _()" when there are leading whitespaces
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20688
diff changeset
244 don't use % inside _()
e8ef59b351c3 check-code: detect "% inside _()" when there are leading whitespaces
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20688
diff changeset
245 ./map-inside-gettext.py:4:
33721
24849d53697d tests: clean up many print statements to be print functions instead
Augie Fackler <augie@google.com>
parents: 32293
diff changeset
246 > print(_("concatenating " + " by " + " '+' %s" % v))
21097
e8ef59b351c3 check-code: detect "% inside _()" when there are leading whitespaces
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20688
diff changeset
247 don't use % inside _()
e8ef59b351c3 check-code: detect "% inside _()" when there are leading whitespaces
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20688
diff changeset
248 ./map-inside-gettext.py:6:
33721
24849d53697d tests: clean up many print statements to be print functions instead
Augie Fackler <augie@google.com>
parents: 32293
diff changeset
249 > print(_("mapping operation in different line %s"
21097
e8ef59b351c3 check-code: detect "% inside _()" when there are leading whitespaces
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20688
diff changeset
250 don't use % inside _()
e8ef59b351c3 check-code: detect "% inside _()" when there are leading whitespaces
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20688
diff changeset
251 ./map-inside-gettext.py:9:
33721
24849d53697d tests: clean up many print statements to be print functions instead
Augie Fackler <augie@google.com>
parents: 32293
diff changeset
252 > print(_(
21097
e8ef59b351c3 check-code: detect "% inside _()" when there are leading whitespaces
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20688
diff changeset
253 don't use % inside _()
e8ef59b351c3 check-code: detect "% inside _()" when there are leading whitespaces
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20688
diff changeset
254 [1]
21487
c26464ce0781 check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents: 21097
diff changeset
255
c26464ce0781 check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents: 21097
diff changeset
256 web templates
c26464ce0781 check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents: 21097
diff changeset
257
c26464ce0781 check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents: 21097
diff changeset
258 $ mkdir -p mercurial/templates
c26464ce0781 check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents: 21097
diff changeset
259 $ cat > mercurial/templates/example.tmpl <<EOF
c26464ce0781 check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents: 21097
diff changeset
260 > {desc}
c26464ce0781 check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents: 21097
diff changeset
261 > {desc|escape}
c26464ce0781 check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents: 21097
diff changeset
262 > {desc|firstline}
c26464ce0781 check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents: 21097
diff changeset
263 > {desc|websub}
c26464ce0781 check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents: 21097
diff changeset
264 > EOF
c26464ce0781 check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents: 21097
diff changeset
265
c26464ce0781 check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents: 21097
diff changeset
266 $ "$check_code" --warnings mercurial/templates/example.tmpl
c26464ce0781 check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents: 21097
diff changeset
267 mercurial/templates/example.tmpl:2:
c26464ce0781 check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents: 21097
diff changeset
268 > {desc|escape}
c26464ce0781 check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents: 21097
diff changeset
269 warning: follow desc keyword with either firstline or websub
c26464ce0781 check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents: 21097
diff changeset
270 [1]
29276
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
271
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
272 'string join across lines with no space' detection
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
273
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
274 $ cat > stringjoin.py <<EOF
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
275 > foo = (' foo'
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
276 > 'bar foo.'
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
277 > 'bar foo:'
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
278 > 'bar foo@'
29279
438caf194160 check-code: make repquote distinguish more characters for exact detection
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29276
diff changeset
279 > 'bar foo%'
438caf194160 check-code: make repquote distinguish more characters for exact detection
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29276
diff changeset
280 > 'bar foo*'
438caf194160 check-code: make repquote distinguish more characters for exact detection
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29276
diff changeset
281 > 'bar foo+'
438caf194160 check-code: make repquote distinguish more characters for exact detection
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29276
diff changeset
282 > 'bar foo-'
29276
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
283 > 'bar')
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
284 > EOF
29397
844f72885fb9 check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29279
diff changeset
285
844f72885fb9 check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29279
diff changeset
286 'missing _() in ui message' detection
844f72885fb9 check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29279
diff changeset
287
844f72885fb9 check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29279
diff changeset
288 $ cat > uigettext.py <<EOF
844f72885fb9 check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29279
diff changeset
289 > ui.status("% 10s %05d % -3.2f %*s %%"
844f72885fb9 check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29279
diff changeset
290 > # this use '\\\\' instead of '\\', because the latter in
844f72885fb9 check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29279
diff changeset
291 > # heredoc on shell becomes just '\'
844f72885fb9 check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29279
diff changeset
292 > '\\\\ \n \t \0'
844f72885fb9 check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29279
diff changeset
293 > """12345
844f72885fb9 check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29279
diff changeset
294 > """
844f72885fb9 check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29279
diff changeset
295 > '''.:*+-=
844f72885fb9 check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29279
diff changeset
296 > ''' "%-6d \n 123456 .:*+-= foobar")
844f72885fb9 check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29279
diff changeset
297 > EOF
844f72885fb9 check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29279
diff changeset
298
34384
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
299 superfluous pass
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
300
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
301 $ cat > superfluous_pass.py <<EOF
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
302 > # correct examples
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
303 > if foo:
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
304 > pass
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
305 > else:
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
306 > # comment-only line means still need pass
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
307 > pass
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
308 > def nothing():
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
309 > pass
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
310 > class empty(object):
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
311 > pass
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
312 > if whatever:
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
313 > passvalue(value)
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
314 > # bad examples
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
315 > if foo:
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
316 > "foo"
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
317 > pass
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
318 > else: # trailing comment doesn't fool checker
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
319 > wat()
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
320 > pass
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
321 > def nothing():
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
322 > "docstring means no pass"
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
323 > pass
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
324 > class empty(object):
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
325 > """multiline
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
326 > docstring also
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
327 > means no pass"""
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
328 > pass
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
329 > EOF
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
330
29398
2a54cf92c773 check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29397
diff changeset
331 (Checking multiple invalid files at once examines whether caching
2a54cf92c773 check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29397
diff changeset
332 translation table for repquote() works as expected or not. All files
2a54cf92c773 check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29397
diff changeset
333 should break rules depending on result of repquote(), in this case)
2a54cf92c773 check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29397
diff changeset
334
34384
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
335 $ "$check_code" stringjoin.py uigettext.py superfluous_pass.py
29276
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
336 stringjoin.py:1:
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
337 > foo = (' foo'
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
338 string join across lines with no space
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
339 stringjoin.py:2:
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
340 > 'bar foo.'
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
341 string join across lines with no space
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
342 stringjoin.py:3:
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
343 > 'bar foo:'
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
344 string join across lines with no space
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
345 stringjoin.py:4:
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
346 > 'bar foo@'
4dd530df4742 check-code: replace quoted characters correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28594
diff changeset
347 string join across lines with no space
29279
438caf194160 check-code: make repquote distinguish more characters for exact detection
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29276
diff changeset
348 stringjoin.py:5:
438caf194160 check-code: make repquote distinguish more characters for exact detection
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29276
diff changeset
349 > 'bar foo%'
438caf194160 check-code: make repquote distinguish more characters for exact detection
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29276
diff changeset
350 string join across lines with no space
438caf194160 check-code: make repquote distinguish more characters for exact detection
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29276
diff changeset
351 stringjoin.py:6:
438caf194160 check-code: make repquote distinguish more characters for exact detection
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29276
diff changeset
352 > 'bar foo*'
438caf194160 check-code: make repquote distinguish more characters for exact detection
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29276
diff changeset
353 string join across lines with no space
438caf194160 check-code: make repquote distinguish more characters for exact detection
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29276
diff changeset
354 stringjoin.py:7:
438caf194160 check-code: make repquote distinguish more characters for exact detection
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29276
diff changeset
355 > 'bar foo+'
438caf194160 check-code: make repquote distinguish more characters for exact detection
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29276
diff changeset
356 string join across lines with no space
438caf194160 check-code: make repquote distinguish more characters for exact detection
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29276
diff changeset
357 stringjoin.py:8:
438caf194160 check-code: make repquote distinguish more characters for exact detection
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29276
diff changeset
358 > 'bar foo-'
438caf194160 check-code: make repquote distinguish more characters for exact detection
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29276
diff changeset
359 string join across lines with no space
29397
844f72885fb9 check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29279
diff changeset
360 uigettext.py:1:
844f72885fb9 check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29279
diff changeset
361 > ui.status("% 10s %05d % -3.2f %*s %%"
844f72885fb9 check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29279
diff changeset
362 missing _() in ui message (use () to hide false-positives)
34384
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
363 superfluous_pass.py:14:
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
364 > if foo:
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
365 omit superfluous pass
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
366 superfluous_pass.py:17:
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
367 > else: # trailing comment doesn't fool checker
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
368 omit superfluous pass
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
369 superfluous_pass.py:20:
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
370 > def nothing():
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
371 omit superfluous pass
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
372 superfluous_pass.py:23:
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
373 > class empty(object):
b52f22d9afa5 contrib: add a check to check-code to ban superfluous pass statements
Augie Fackler <augie@google.com>
parents: 33721
diff changeset
374 omit superfluous pass
29397
844f72885fb9 check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 29279
diff changeset
375 [1]