44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
|
|
import sys
|
|
import textwrap
|
|
import unittest
|
|
|
|
from pyflakes import checker
|
|
|
|
__all__ = ['TestCase', 'skip', 'skipIf']
|
|
|
|
if sys.version_info < (2, 7):
|
|
skip = lambda why: (lambda func: 'skip') # not callable
|
|
skipIf = lambda cond, why: (skip(why) if cond else lambda func: func)
|
|
else:
|
|
skip = unittest.skip
|
|
skipIf = unittest.skipIf
|
|
PyCF_ONLY_AST = 1024
|
|
|
|
|
|
class TestCase(unittest.TestCase):
|
|
|
|
withDoctest = False
|
|
|
|
def flakes(self, input, *expectedOutputs, **kw):
|
|
tree = compile(textwrap.dedent(input), "<test>", "exec", PyCF_ONLY_AST)
|
|
w = checker.Checker(tree, withDoctest=self.withDoctest, **kw)
|
|
outputs = [type(o) for o in w.messages]
|
|
expectedOutputs = list(expectedOutputs)
|
|
outputs.sort(key=lambda t: t.__name__)
|
|
expectedOutputs.sort(key=lambda t: t.__name__)
|
|
self.assertEqual(outputs, expectedOutputs, '''\
|
|
for input:
|
|
%s
|
|
expected outputs:
|
|
%r
|
|
but got:
|
|
%s''' % (input, expectedOutputs, '\n'.join([str(o) for o in w.messages])))
|
|
return w
|
|
|
|
if sys.version_info < (2, 7):
|
|
|
|
def assertIs(self, expr1, expr2, msg=None):
|
|
if expr1 is not expr2:
|
|
self.fail(msg or '%r is not %r' % (expr1, expr2))
|