Skip to content

Commit 2d858f2

Browse files
committed
Added mypy and django-stubs to Py3 requirements, and added a mypy test case.
- Legacy-Id: 16768
1 parent 4ed73d2 commit 2d858f2

2 files changed

Lines changed: 20 additions & 3 deletions

File tree

ietf/utils/test_runner.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
from django.template.loaders.base import Loader as BaseLoader
6767
from django.test.runner import DiscoverRunner
6868
from django.core.management import call_command
69-
from django.urls import RegexURLResolver
69+
from django.urls import RegexURLResolver # type: ignore
7070

7171
import debug # pyflakes:ignore
7272
debug.debug = True
@@ -138,6 +138,20 @@ def pyflakes_test(self):
138138
warnings = pyflakes.checkPaths([path], verbosity=0)
139139
self.assertEqual([], [str(w) for w in warnings])
140140

141+
class MyPyTest(TestCase):
142+
143+
def __init__(self, test_runner=None, **kwargs):
144+
self.runner = test_runner
145+
super(MyPyTest, self).__init__(**kwargs)
146+
147+
@unittest.skipIf(sys.version_info[0] < 3, "Mypy and django-stubs not available under Py2")
148+
def mypy_test(self):
149+
from mypy import api
150+
out, err, code = api.run(['ietf', ])
151+
self.assertEqual([], err.splitlines())
152+
self.assertEqual([], out.splitlines())
153+
self.assertEqual(code, 0)
154+
141155
class TemplateCoverageLoader(BaseLoader):
142156
is_usable = True
143157

@@ -146,7 +160,7 @@ def load_template_source(self, template_name, dirs):
146160
if template_coverage_collection == True:
147161
loaded_templates.add(str(template_name))
148162
raise TemplateDoesNotExist(template_name)
149-
load_template_source.is_usable = True
163+
load_template_source.is_usable = True # type: ignore # https://github.com/python/mypy/issues/2087
150164

151165
def record_urls_middleware(get_response):
152166
def record_urls(request):
@@ -694,6 +708,7 @@ def run_tests(self, test_labels, extra_tests=[], **kwargs):
694708
url_coverage_collection = True
695709
extra_tests += [
696710
PyFlakesTestCase(test_runner=self, methodName='pyflakes_test'),
711+
MyPyTest(test_runner=self, methodName='mypy_test'),
697712
CoverageTest(test_runner=self, methodName='interleaved_migrations_test'),
698713
CoverageTest(test_runner=self, methodName='url_coverage_test'),
699714
CoverageTest(test_runner=self, methodName='template_coverage_test'),
@@ -705,7 +720,7 @@ def run_tests(self, test_labels, extra_tests=[], **kwargs):
705720
# parent classes to later subclasses, the parent classes will
706721
# determine the ordering, so use the most specific classes
707722
# necessary to get the right ordering:
708-
self.reorder_by = (PyFlakesTestCase, ) + self.reorder_by + (StaticLiveServerTestCase, TemplateTagTest, CoverageTest, )
723+
self.reorder_by = (PyFlakesTestCase, MyPyTest, ) + self.reorder_by + (StaticLiveServerTestCase, TemplateTagTest, CoverageTest, )
709724

710725
failures = super(IetfTestRunner, self).run_tests(test_labels, extra_tests=extra_tests, **kwargs)
711726

requirements3.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ django-markup>=1.1
2020
django-password-strength>=1.2.1
2121
django-referrer-policy>=1.0
2222
django-simple-history>=2.3.0
23+
django-stubs>=1.1.0
2324
django-tastypie>=0.13.2
2425
django-webtest>=1.9.7
2526
django-widget-tweaks>=1.3
@@ -35,6 +36,7 @@ jwcrypto>=0.4.0 # for signed notifications
3536
#lxml>=3.4.0 # from PyQuery;
3637
markdown2>=2.3.8
3738
mock>=2.0.0
39+
mypy>=0.7.3
3840
mysqlclient>=1.3.13
3941
oauth2client>=4.0.0 # required by google-api-python-client, but not always pulled in
4042
patch>=1.16,<2.0

0 commit comments

Comments
 (0)