55use PHPStan \Parser \Parser ;
66use PHPStan \Reflection \ReflectionProvider ;
77use PHPStan \Type \FileTypeMapper ;
8- use PHPUnit \Framework \TestCase ;
9- use function dirname ;
10- use function explode ;
11- use function file_get_contents ;
12- use function is_file ;
13- use function json_decode ;
148
159class DataProviderHelperFactory
1610{
@@ -21,43 +15,24 @@ class DataProviderHelperFactory
2115
2216 private Parser $ parser ;
2317
18+ private PHPUnitVersionDetector $ PHPUnitVersionDetector ;
19+
2420 public function __construct (
2521 ReflectionProvider $ reflectionProvider ,
2622 FileTypeMapper $ fileTypeMapper ,
27- Parser $ parser
23+ Parser $ parser ,
24+ PHPUnitVersionDetector $ PHPUnitVersionDetector
2825 )
2926 {
3027 $ this ->reflectionProvider = $ reflectionProvider ;
3128 $ this ->fileTypeMapper = $ fileTypeMapper ;
3229 $ this ->parser = $ parser ;
30+ $ this ->PHPUnitVersionDetector = $ PHPUnitVersionDetector ;
3331 }
3432
3533 public function create (): DataProviderHelper
3634 {
37- $ phpUnit10OrNewer = false ;
38- if ($ this ->reflectionProvider ->hasClass (TestCase::class)) {
39- $ testCase = $ this ->reflectionProvider ->getClass (TestCase::class);
40- $ file = $ testCase ->getFileName ();
41- if ($ file !== null ) {
42- $ phpUnitRoot = dirname ($ file , 3 );
43- $ phpUnitComposer = $ phpUnitRoot . '/composer.json ' ;
44- if (is_file ($ phpUnitComposer )) {
45- $ composerJson = @file_get_contents ($ phpUnitComposer );
46- if ($ composerJson !== false ) {
47- $ json = json_decode ($ composerJson , true );
48- $ version = $ json ['extra ' ]['branch-alias ' ]['dev-main ' ] ?? null ;
49- if ($ version !== null ) {
50- $ majorVersion = (int ) explode ('. ' , $ version )[0 ];
51- if ($ majorVersion >= 10 ) {
52- $ phpUnit10OrNewer = true ;
53- }
54- }
55- }
56- }
57- }
58- }
59-
60- return new DataProviderHelper ($ this ->reflectionProvider , $ this ->fileTypeMapper , $ this ->parser , $ phpUnit10OrNewer );
35+ return new DataProviderHelper ($ this ->reflectionProvider , $ this ->fileTypeMapper , $ this ->parser , $ this ->PHPUnitVersionDetector ->isPHPUnit10OrNewer ());
6136 }
6237
6338}
0 commit comments