-from subprocess import run
+from pkg_resources import get_distribution, DistributionNotFound
+from subprocess import call
from shutil import which
-from unittest import TestCase
+from unittest import skipUnless, TestCase
+
+mypy_version = 0.0
+try:
+ mypy_version = float(get_distribution("mypy").version)
+except DistributionNotFound:
+ pass
class TypeCheck(TestCase):
- def test_mypy(self):
+ @skipUnless(mypy_version >= 0.942, "Do not trust earlier mypy versions")
+ def test_mypy(self) -> None:
if not which("mypy"):
- self.fail(f"mypy not installed.")
- cmd = ["mypy", "--strict", "--ignore-missing-imports", "gps303"]
- output = run(cmd, capture_output=True)
- if output.returncode != 0:
- self.fail(
- f"mypy exited with code {output.returncode}:\n{output.stderr.decode()}"
- )
+ self.fail("mypy not installed.")
+ cmd = [
+ "mypy",
+ "--strict",
+ "--ignore-missing-imports",
+ "gps303",
+ "test",
+ ]
+ self.assertEqual(call(cmd), 0, "mypy typecheck")