@@ -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,7 @@ public function testStrictTypes()
408
413
*/
409
414
public function testPhpCompatibility ()
410
415
{
411
- $ targetVersion = $ this ->getLowestPhpVersion ();
416
+ $ targetVersions = $ this ->getTargetPhpVersions ();
412
417
$ reportFile = self ::$ reportDir . '/phpcompatibility_report.txt ' ;
413
418
$ rulesetDir = __DIR__ . '/_files/PHPCompatibilityMagento ' ;
414
419
@@ -417,7 +422,11 @@ public function testPhpCompatibility()
417
422
}
418
423
419
424
$ codeSniffer = new PhpCompatibility ($ rulesetDir , $ reportFile , new Wrapper ());
420
- $ codeSniffer ->setTestVersion ($ targetVersion );
425
+ if (count ($ targetVersions ) > 1 ) {
426
+ $ codeSniffer ->setTestVersion ($ targetVersions [0 ] . '- ' . $ targetVersions [1 ]);
427
+ } else {
428
+ $ codeSniffer ->setTestVersion ($ targetVersions [0 ]);
429
+ }
421
430
422
431
$ result = $ codeSniffer ->run (
423
432
$ this ->isFullScan () ? $ this ->getFullWhitelist () : self ::getWhitelist (['php ' , 'phtml ' ])
0 commit comments