tests/test-contrib-check-code.t
author Yuya Nishihara <yuya@tcha.org>
Sat, 26 Jan 2019 17:53:03 +0900
changeset 41421 f83b230b7fb3
parent 40094 ff47ba7a2903
child 41761 e2472b12c842
permissions -rw-r--r--
dispatch: unify handler of IOError and OSError These exceptions were merged in Python 3.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
     1
  $ cat > correct.py <<NO_CHECK_EOF
12632
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)
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
     5
  > NO_CHECK_EOF
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
     6
  $ cat > wrong.py <<NO_CHECK_EOF
12632
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)
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
    10
  > NO_CHECK_EOF
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
    11
  $ cat > quote.py <<NO_CHECK_EOF
12632
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"
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
    19
  > NO_CHECK_EOF
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
    20
  $ cat > classstyle.py <<NO_CHECK_EOF
14763
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
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
    32
  > NO_CHECK_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]
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
    55
  $ cat > python3-compat.py << NO_CHECK_EOF
18183
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)
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
    59
  > NO_CHECK_EOF
18183
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
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
    72
  $ cat > foo.c <<NO_CHECK_EOF
28594
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
  > }
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
    78
  > NO_CHECK_EOF
28594
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
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
    88
  $ cat > is-op.py <<NO_CHECK_EOF
13026
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
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
    99
  > NO_CHECK_EOF
13026
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
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   128
  $ cat > for-nolineno.py <<NO_CHECK_EOF
15502
7917a104a285 check-code: add --nolineno option for hiding line numbers
Mads Kiilerich <mads@kiilerich.com>
parents: 15285
diff changeset
   129
  > except:
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   130
  > NO_CHECK_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
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   137
  $ cat > warning.t <<NO_CHECK_EOF
19422
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 {}
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   142
  > NO_CHECK_EOF
19422
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]
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   155
  $ cat > error.t <<NO_CHECK_EOF
32293
ca727147ff9f style: ban [ foo == bar] bashism in tests
Augie Fackler <augie@google.com>
parents: 29398
diff changeset
   156
  >   $ [ foo == bar ]
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   157
  > NO_CHECK_EOF
32293
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
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   164
  $ cat > raise-format.py <<NO_CHECK_EOF
18180
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)
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   168
  > NO_CHECK_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
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   176
  $ cat <<NO_CHECK_EOF > tab.t
35315
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
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   179
  > NO_CHECK_EOF
35315
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
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   187
  $ cat > rst.py <<NO_CHECK_EOF
19998
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
  > """
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   216
  > NO_CHECK_EOF
19998
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
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   226
  $ cat > ./map-inside-gettext.py <<NO_CHECK_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))
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   237
  > NO_CHECK_EOF
21097
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
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   259
  $ cat > mercurial/templates/example.tmpl <<NO_CHECK_EOF
21487
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}
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   264
  > NO_CHECK_EOF
21487
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
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   274
  $ cat > stringjoin.py <<NO_CHECK_EOF
29276
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')
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   284
  > NO_CHECK_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
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   288
  $ cat > uigettext.py <<NO_CHECK_EOF
29397
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")
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   297
  > NO_CHECK_EOF
29397
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
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   301
  $ cat > superfluous_pass.py <<NO_CHECK_EOF
34384
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
40094
ff47ba7a2903 tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 35315
diff changeset
   329
  > NO_CHECK_EOF
34384
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]