@@ -209,14 +209,14 @@ private function getFullWhitelist()
209
209
}
210
210
211
211
/**
212
- * Retrieves the lowest PHP version specified in <kbd>composer.json</var> of project.
212
+ * Retrieves the lowest and highest PHP version specified in <kbd>composer.json</var> of project.
213
213
*
214
- * @return string
214
+ * @return array
215
215
*/
216
- private function getLowestPhpVersion (): string
216
+ private function getTargetPhpVersions (): array
217
217
{
218
218
$ composerJson = json_decode (file_get_contents (BP . '/composer.json ' ), true );
219
- $ phpVersion = ' 7.0 ' ;
219
+ $ versionsRange = [] ;
220
220
221
221
if (isset ($ composerJson ['require ' ]['php ' ])) {
222
222
$ versions = explode ('|| ' , $ composerJson ['require ' ]['php ' ]);
@@ -232,12 +232,17 @@ private function getLowestPhpVersion(): string
232
232
//sort versions
233
233
usort ($ versions , 'version_compare ' );
234
234
235
- $ lowestVersion = array_shift ($ versions );
236
- $ versionParts = explode ('. ' , $ lowestVersion );
237
- $ phpVersion = sprintf ('%s.%s ' , $ versionParts [0 ], $ versionParts [1 ] ?? '0 ' );
235
+ $ versionsRange [] = array_shift ($ versions );
236
+ if (!empty ($ versions )) {
237
+ $ versionsRange [] = array_pop ($ versions );
238
+ }
239
+ foreach ($ versionsRange as $ key => $ version ) {
240
+ $ versionParts = explode ('. ' , $ versionsRange [$ key ]);
241
+ $ versionsRange [$ key ] = sprintf ('%s.%s ' , $ versionParts [0 ], $ versionParts [1 ] ?? '0 ' );
242
+ }
238
243
}
239
244
240
- return $ phpVersion ;
245
+ return $ versionsRange ;
241
246
}
242
247
243
248
/**
@@ -408,7 +413,8 @@ public function testStrictTypes()
408
413
*/
409
414
public function testPhpCompatibility ()
410
415
{
411
- $ targetVersion = $ this ->getLowestPhpVersion ();
416
+ $ targetVersions = $ this ->getTargetPhpVersions ();
417
+ $ this ->assertNotEmpty ($ targetVersions , 'No supported versions information in composer.json ' );
412
418
$ reportFile = self ::$ reportDir . '/phpcompatibility_report.txt ' ;
413
419
$ rulesetDir = __DIR__ . '/_files/PHPCompatibilityMagento ' ;
414
420
@@ -417,7 +423,11 @@ public function testPhpCompatibility()
417
423
}
418
424
419
425
$ codeSniffer = new PhpCompatibility ($ rulesetDir , $ reportFile , new Wrapper ());
420
- $ codeSniffer ->setTestVersion ($ targetVersion );
426
+ if (count ($ targetVersions ) > 1 ) {
427
+ $ codeSniffer ->setTestVersion ($ targetVersions [0 ] . '- ' . $ targetVersions [1 ]);
428
+ } else {
429
+ $ codeSniffer ->setTestVersion ($ targetVersions [0 ]);
430
+ }
421
431
422
432
$ result = $ codeSniffer ->run (
423
433
$ this ->isFullScan () ? $ this ->getFullWhitelist () : self ::getWhitelist (['php ' , 'phtml ' ])
0 commit comments