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: self.fail('\n'.join(['Mypy errors:'] + messages))