Newer versions of MyPy aren't silent any more when they complete succesfully, so test for 'Success' in the message before failing the test.
33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
import pathlib
|
|
import sys
|
|
import unittest
|
|
|
|
import mypy.api
|
|
|
|
import blender_asset_tracer
|
|
|
|
|
|
class MypyRunnerTest(unittest.TestCase):
|
|
def test_run_mypy(self):
|
|
# This test doesn't work with Tox, it raises an AssertionError:
|
|
# /path/to/blender-asset-tracer/.tox/py37/lib/python3.7/site-packages is in the PYTHONPATH.
|
|
# Please change directory so it is not.
|
|
for path in sys.path:
|
|
if '/.tox/' in path and path.endswith('/site-packages'):
|
|
self.skipTest("Mypy doesn't like Tox")
|
|
|
|
path = pathlib.Path(blender_asset_tracer.__file__).parent
|
|
result = mypy.api.run(['--incremental', '--ignore-missing-imports', str(path)])
|
|
|
|
stdout, stderr, status = result
|
|
|
|
messages = []
|
|
if stderr:
|
|
messages.append(stderr)
|
|
if stdout:
|
|
messages.append(stdout)
|
|
if status:
|
|
messages.append('Mypy failed with status %d' % status)
|
|
if messages and not all(msg.startswith('Success: ') for msg in messages):
|
|
self.fail('\n'.join(['Mypy errors:'] + messages))
|