tests/test-check-code.t
author Pierre-Yves David <pierre-yves.david@logilab.fr>
Wed, 16 Jan 2013 19:17:36 +0100
changeset 18438 81e77a8820f3
parent 18183 e1caaeb5a2ed
child 18762 a91387a37f05
permissions -rw-r--r--
test-histedit: fix instability creation test The current test does not rewrite anything and therefor does not create any instability. We also clean up the repo state after the test. This required the rebase extension.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    20
  $ cat > non-py24.py <<EOF
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    21
  > # Using builtins that does not exist in Python 2.4
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    22
  > if any():
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    23
  >     x = all()
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    24
  >     y = format(x)
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    25
  > 
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    26
  > # Do not complain about our own definition
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    27
  > def any(x):
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    28
  >     pass
15285
42e71f5852ee test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15281
diff changeset
    29
  > 
42e71f5852ee test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15281
diff changeset
    30
  > # try/except/finally block does not exist in Python 2.4
42e71f5852ee test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15281
diff changeset
    31
  >     try:
42e71f5852ee test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15281
diff changeset
    32
  >         pass
42e71f5852ee test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15281
diff changeset
    33
  >     except StandardError, inst:
42e71f5852ee test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15281
diff changeset
    34
  >         pass
42e71f5852ee test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15281
diff changeset
    35
  >     finally:
42e71f5852ee test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15281
diff changeset
    36
  >         pass
42e71f5852ee test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15281
diff changeset
    37
  > 
42e71f5852ee test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15281
diff changeset
    38
  > # nested try/finally+try/except is allowed
42e71f5852ee test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15281
diff changeset
    39
  >     try:
42e71f5852ee test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15281
diff changeset
    40
  >         try:
42e71f5852ee test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15281
diff changeset
    41
  >             pass
42e71f5852ee test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15281
diff changeset
    42
  >         except StandardError, inst:
42e71f5852ee test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15281
diff changeset
    43
  >             pass
42e71f5852ee test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15281
diff changeset
    44
  >     finally:
42e71f5852ee test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15281
diff changeset
    45
  >         pass
17620
efd1a4378b64 check-code: catch yield inside try/finally (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 17428
diff changeset
    46
  > 
efd1a4378b64 check-code: catch yield inside try/finally (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 17428
diff changeset
    47
  > # yield inside a try/finally block is not allowed in Python 2.4
efd1a4378b64 check-code: catch yield inside try/finally (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 17428
diff changeset
    48
  >     try:
efd1a4378b64 check-code: catch yield inside try/finally (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 17428
diff changeset
    49
  >         pass
efd1a4378b64 check-code: catch yield inside try/finally (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 17428
diff changeset
    50
  >         yield 1
efd1a4378b64 check-code: catch yield inside try/finally (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 17428
diff changeset
    51
  >     finally:
efd1a4378b64 check-code: catch yield inside try/finally (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 17428
diff changeset
    52
  >         pass
efd1a4378b64 check-code: catch yield inside try/finally (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 17428
diff changeset
    53
  >     try:
efd1a4378b64 check-code: catch yield inside try/finally (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 17428
diff changeset
    54
  >         yield
efd1a4378b64 check-code: catch yield inside try/finally (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 17428
diff changeset
    55
  >         pass
efd1a4378b64 check-code: catch yield inside try/finally (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 17428
diff changeset
    56
  >     finally:
efd1a4378b64 check-code: catch yield inside try/finally (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 17428
diff changeset
    57
  >         pass
efd1a4378b64 check-code: catch yield inside try/finally (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 17428
diff changeset
    58
  > 
12632
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    59
  > EOF
14763
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
    60
  $ cat > classstyle.py <<EOF
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
    61
  > class newstyle_class(object):
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
    62
  >     pass
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
    63
  > 
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
    64
  > class oldstyle_class:
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
    65
  >     pass
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
    66
  > 
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
    67
  > class empty():
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
    68
  >     pass
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
    69
  > 
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
    70
  > no_class = 1:
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
    71
  >     pass
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
    72
  > EOF
12632
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    73
  $ check_code="$TESTDIR"/../contrib/check-code.py
14763
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
    74
  $ "$check_code" ./wrong.py ./correct.py ./quote.py ./non-py24.py ./classstyle.py
12632
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    75
  ./wrong.py:1:
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    76
   > def toto( arg1, arg2):
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    77
   gratuitous whitespace in () or []
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    78
  ./wrong.py:2:
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    79
   >     del(arg2)
13077
6b8d2ee24ce2 coding style: fix yield used as a function
Thomas Arendsen Hein <thomas@jtah.de>
parents: 13026
diff changeset
    80
   Python keyword is not a function
12632
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    81
  ./wrong.py:3:
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    82
   >     return ( 5+6, 9)
15281
aeeb2afcdc25 check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 14763
diff changeset
    83
   gratuitous whitespace in () or []
12632
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    84
   missing whitespace in expression
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    85
  ./quote.py:5:
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    86
   > '"""', 42+1, """and
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    87
   missing whitespace in expression
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    88
  ./non-py24.py:2:
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    89
   > if any():
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    90
   any/all/format not available in Python 2.4
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    91
  ./non-py24.py:3:
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    92
   >     x = all()
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    93
   any/all/format not available in Python 2.4
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    94
  ./non-py24.py:4:
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    95
   >     y = format(x)
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
    96
   any/all/format not available in Python 2.4
15285
42e71f5852ee test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15281
diff changeset
    97
  ./non-py24.py:11:
42e71f5852ee test-check-code.t: test matching try/except/finally introduced in aeeb2afcdc25
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15281
diff changeset
    98
   >     try:
17428
72803c8edaa4 avoid using abbreviations that look like spelling errors
Mads Kiilerich <mads@kiilerich.com>
parents: 15502
diff changeset
    99
   no try/except/finally in Python 2.4
17620
efd1a4378b64 check-code: catch yield inside try/finally (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 17428
diff changeset
   100
  ./non-py24.py:28:
efd1a4378b64 check-code: catch yield inside try/finally (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 17428
diff changeset
   101
   >     try:
efd1a4378b64 check-code: catch yield inside try/finally (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 17428
diff changeset
   102
   no yield inside try/finally in Python 2.4
efd1a4378b64 check-code: catch yield inside try/finally (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 17428
diff changeset
   103
  ./non-py24.py:33:
efd1a4378b64 check-code: catch yield inside try/finally (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 17428
diff changeset
   104
   >     try:
efd1a4378b64 check-code: catch yield inside try/finally (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 17428
diff changeset
   105
   no yield inside try/finally in Python 2.4
14763
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
   106
  ./classstyle.py:4:
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
   107
   > class oldstyle_class:
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
   108
   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
   109
  ./classstyle.py:7:
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
   110
   > class empty():
b071cd58af50 check-code: fix class style checking (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 13077
diff changeset
   111
   class foo() not available in Python 2.4, use class foo(object)
12632
6c98107f787e tests: unify test-check-code
Brodie Rao <brodie@bitheap.org>
parents: 11822
diff changeset
   112
  [1]
18183
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
   113
  $ cat > python3-compat.py << EOF
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
   114
  > foo <> bar
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
   115
  > 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
   116
  > EOF
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
   117
  $ "$check_code" python3-compat.py
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
   118
  python3-compat.py:1:
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
   119
   > foo <> bar
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
   120
   <> operator is not available in Python 3+, use !=
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
   121
  python3-compat.py:2:
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
   122
   > 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
   123
   reduce is not available in Python 3+
e1caaeb5a2ed check-code: disallow defunct <> operator
Augie Fackler <raf@durin42.com>
parents: 18180
diff changeset
   124
  [1]
13026
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   125
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   126
  $ 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
   127
  > # 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
   128
  > x = None
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   129
  > y = x is 'foo'
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   130
  > y = x is "foo"
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   131
  > y = x is 5346
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   132
  > y = x is -6
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   133
  > 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
   134
  > 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
   135
  > 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
   136
  > 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
   137
  > EOF
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   138
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   139
  $ "$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
   140
  ./is-op.py:3:
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   141
   > y = x is 'foo'
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   142
   object comparison with literal
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   143
  ./is-op.py:4:
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   144
   > y = x is "foo"
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   145
   object comparison with literal
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   146
  ./is-op.py:5:
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   147
   > y = x is 5346
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   148
   object comparison with literal
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   149
  ./is-op.py:6:
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   150
   > y = x is -6
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   151
   object comparison with literal
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   152
  ./is-op.py:7:
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   153
   > 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
   154
   object comparison with literal
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   155
  ./is-op.py:8:
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   156
   > 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
   157
   object comparison with literal
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   158
  ./is-op.py:9:
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   159
   > 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
   160
   object comparison with literal
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   161
  ./is-op.py:10:
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   162
   > 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
   163
   object comparison with literal
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   164
  [1]
53391819f195 check-code: catch Python 'is' comparing number or string literals
Adrian Buehlmann <adrian@cadifra.com>
parents: 12632
diff changeset
   165
15502
7917a104a285 check-code: add --nolineno option for hiding line numbers
Mads Kiilerich <mads@kiilerich.com>
parents: 15285
diff changeset
   166
  $ cat > warning.py <<EOF
7917a104a285 check-code: add --nolineno option for hiding line numbers
Mads Kiilerich <mads@kiilerich.com>
parents: 15285
diff changeset
   167
  > except:
7917a104a285 check-code: add --nolineno option for hiding line numbers
Mads Kiilerich <mads@kiilerich.com>
parents: 15285
diff changeset
   168
  > EOF
7917a104a285 check-code: add --nolineno option for hiding line numbers
Mads Kiilerich <mads@kiilerich.com>
parents: 15285
diff changeset
   169
  $ "$check_code" warning.py --warning --nolineno
7917a104a285 check-code: add --nolineno option for hiding line numbers
Mads Kiilerich <mads@kiilerich.com>
parents: 15285
diff changeset
   170
  warning.py:0:
7917a104a285 check-code: add --nolineno option for hiding line numbers
Mads Kiilerich <mads@kiilerich.com>
parents: 15285
diff changeset
   171
   > except:
7917a104a285 check-code: add --nolineno option for hiding line numbers
Mads Kiilerich <mads@kiilerich.com>
parents: 15285
diff changeset
   172
   warning: naked except clause
7917a104a285 check-code: add --nolineno option for hiding line numbers
Mads Kiilerich <mads@kiilerich.com>
parents: 15285
diff changeset
   173
  [1]
18180
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
   174
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
   175
  $ cat > raise-format.py <<EOF
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
   176
  > raise SomeException, message
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
   177
  > # this next line is okay
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
   178
  > raise SomeException(arg1, arg2)
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
   179
  > EOF
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
   180
  $ "$check_code" raise-format.py
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
   181
  raise-format.py:1:
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
   182
   > raise SomeException, message
c582a71457e5 check-code: disallow two-argument form of raise
Augie Fackler <raf@durin42.com>
parents: 17620
diff changeset
   183
   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
   184
  [1]