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