10
10
import sys
11
11
12
12
import pytest # type: ignore # no pytest in typeshed
13
- from typing import List , Tuple , Set , Optional , Iterator , Any , Dict , NamedTuple , Union
13
+ from typing import (
14
+ Any ,
15
+ Callable ,
16
+ Dict ,
17
+ Iterator ,
18
+ List ,
19
+ NamedTuple ,
20
+ Optional ,
21
+ Set ,
22
+ Tuple ,
23
+ Union ,
24
+ )
14
25
15
26
from mypy .test .config import test_data_prefix , test_temp_dir , PREFIX
16
27
@@ -510,7 +521,10 @@ def pytest_pycollect_makeitem(collector: Any, name: str,
510
521
# Non-None result means this obj is a test case.
511
522
# The collect method of the returned DataSuiteCollector instance will be called later,
512
523
# with self.obj being obj.
513
- return DataSuiteCollector (name , parent = collector )
524
+ if hasattr (DataSuiteCollector , 'from_parent' ):
525
+ return DataSuiteCollector .from_parent (parent = collector , name = name )
526
+ else :
527
+ return DataSuiteCollector (name = name , parent = collector )
514
528
return None
515
529
516
530
@@ -535,14 +549,22 @@ def split_test_cases(parent: 'DataSuiteCollector', suite: 'DataSuite',
535
549
for i in range (1 , len (cases ), 6 ):
536
550
name , writescache , only_when , platform_flag , skip , data = cases [i :i + 6 ]
537
551
platform = platform_flag [1 :] if platform_flag else None
538
- yield DataDrivenTestCase (parent , suite , file ,
539
- name = add_test_name_suffix (name , suite .test_name_suffix ),
540
- writescache = bool (writescache ),
541
- only_when = only_when ,
542
- platform = platform ,
543
- skip = bool (skip ),
544
- data = data ,
545
- line = line_no )
552
+ if hasattr (DataDrivenTestCase , 'from_parent' ):
553
+ creator : Callable [..., DataDrivenTestCase ] = DataDrivenTestCase .from_parent
554
+ else :
555
+ creator = DataDrivenTestCase
556
+ yield creator (
557
+ parent = parent ,
558
+ suite = suite ,
559
+ file = file ,
560
+ name = add_test_name_suffix (name , suite .test_name_suffix ),
561
+ writescache = bool (writescache ),
562
+ only_when = only_when ,
563
+ platform = platform ,
564
+ skip = bool (skip ),
565
+ data = data ,
566
+ line = line_no ,
567
+ )
546
568
line_no += data .count ('\n ' ) + 1
547
569
548
570
0 commit comments