35 lines
891 B
Python
35 lines
891 B
Python
import ast
|
|
import textwrap
|
|
import unittest
|
|
|
|
from pyflakes import checker
|
|
|
|
__all__ = ['TestCase', 'skip', 'skipIf']
|
|
|
|
skip = unittest.skip
|
|
skipIf = unittest.skipIf
|
|
|
|
|
|
class TestCase(unittest.TestCase):
|
|
|
|
withDoctest = False
|
|
|
|
def flakes(self, input, *expectedOutputs, **kw):
|
|
tree = ast.parse(textwrap.dedent(input))
|
|
if kw.get('is_segment'):
|
|
tree = tree.body[0]
|
|
kw.pop('is_segment')
|
|
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:
|
|
{}
|
|
expected outputs:
|
|
{!r}
|
|
but got:
|
|
{}'''.format(input, expectedOutputs, '\n'.join([str(o) for o in w.messages])))
|
|
return w
|