5
5
6
6
from mypy .waiter import Waiter , LazySubprocess
7
7
from mypy import util
8
- from mypy .test .config import test_data_prefix
9
- from mypy .test .testpythoneval import python_eval_files , python_34_eval_files
10
8
11
9
import itertools
12
10
import os
13
11
from os .path import join , isdir
14
- import re
15
12
import sys
16
13
17
14
@@ -92,7 +89,8 @@ def add_mypy_package(self, name: str, packagename: str, *flags: str) -> None:
92
89
def add_mypy_string (self , name : str , * args : str , cwd : Optional [str ] = None ) -> None :
93
90
self .add_mypy_cmd (name , ['-c' ] + list (args ), cwd = cwd )
94
91
95
- def add_pytest (self , name : str , pytest_args : List [str ], coverage : bool = False ) -> None :
92
+ def add_pytest (self , name : str , pytest_files : List [str ], coverage : bool = True ) -> None :
93
+ pytest_args = pytest_files + self .arglist + self .pyt_arglist
96
94
full_name = 'pytest %s' % name
97
95
if not self .allow (full_name ):
98
96
return
@@ -197,7 +195,12 @@ def add_imports(driver: Driver) -> None:
197
195
driver .add_python_string ('import %s' % mod , 'import %s' % mod )
198
196
199
197
200
- PYTEST_FILES = [os .path .join ('mypy' , 'test' , '{}.py' .format (name )) for name in [
198
+ def test_path (* names : str ):
199
+ return [os .path .join ('mypy' , 'test' , '{}.py' .format (name ))
200
+ for name in names ]
201
+
202
+
203
+ PYTEST_FILES = test_path (
201
204
'testcheck' ,
202
205
'testextensions' ,
203
206
'testdeps' ,
@@ -208,11 +211,35 @@ def add_imports(driver: Driver) -> None:
208
211
'testtypegen' ,
209
212
'testparse' ,
210
213
'testsemanal' ,
211
- ]]
214
+ )
215
+
216
+ PYEVAL_FILES = test_path ('testpythoneval' )
217
+ CMD_FILES = test_path ('testcmdline' )
218
+
219
+ MYUNIT_FILES = test_path (
220
+ 'teststubgen' , # contains data-driven suite
221
+
222
+ 'testargs' ,
223
+ 'testgraph' ,
224
+ 'testinfer' ,
225
+ 'testmoduleinfo' ,
226
+ 'testreports' ,
227
+ 'testsolve' ,
228
+ 'testsubtypes' ,
229
+ 'testtypes'
230
+ )
212
231
213
232
214
233
def add_pytest (driver : Driver ) -> None :
215
- driver .add_pytest ('pytest' , PYTEST_FILES + driver .arglist + driver .pyt_arglist , True )
234
+ driver .add_pytest ('pytest' , PYTEST_FILES )
235
+
236
+
237
+ def add_pythoneval (driver : Driver ) -> None :
238
+ driver .add_pytest ('eval' , PYEVAL_FILES )
239
+
240
+
241
+ def add_cmdline (driver : Driver ) -> None :
242
+ driver .add_pytest ('cmd' , CMD_FILES )
216
243
217
244
218
245
def add_myunit (driver : Driver ) -> None :
@@ -227,40 +254,11 @@ def add_myunit(driver: Driver) -> None:
227
254
# This module has been converted to pytest; don't try to use myunit.
228
255
pass
229
256
else :
257
+ assert f in MYUNIT_FILES , f
230
258
driver .add_python_mod ('unit-test %s' % mod , 'mypy.myunit' , '-m' , mod ,
231
259
* driver .arglist , coverage = True )
232
260
233
261
234
- def add_pythoneval (driver : Driver ) -> None :
235
- cases = set ()
236
- case_re = re .compile (r'^\[case ([^\]]+)\]$' )
237
- for file in python_eval_files + python_34_eval_files :
238
- with open (os .path .join (test_data_prefix , file ), 'r' ) as f :
239
- for line in f :
240
- m = case_re .match (line )
241
- if m :
242
- case_name = m .group (1 )
243
- assert case_name [:4 ] == 'test'
244
- cases .add (case_name [4 :5 ])
245
-
246
- for prefix in sorted (cases ):
247
- driver .add_python_mod (
248
- 'eval-test-' + prefix ,
249
- 'mypy.myunit' ,
250
- '-m' ,
251
- 'mypy.test.testpythoneval' ,
252
- 'test_testpythoneval_PythonEvaluationSuite.test' + prefix + '*' ,
253
- * driver .arglist ,
254
- coverage = True
255
- )
256
-
257
-
258
- def add_cmdline (driver : Driver ) -> None :
259
- driver .add_python_mod ('cmdline-test' , 'mypy.myunit' ,
260
- '-m' , 'mypy.test.testcmdline' , * driver .arglist ,
261
- coverage = True )
262
-
263
-
264
262
def add_stubs (driver : Driver ) -> None :
265
263
# We only test each module in the one version mypy prefers to find.
266
264
# TODO: test stubs for other versions, especially Python 2 stubs.
0 commit comments