Skip to content

Commit f08ddae

Browse files
[PhpUnitBridge] fix installing under PHP >= 8
1 parent 6a4aa15 commit f08ddae

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

bin/simple-phpunit

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,31 @@ if (!file_exists("$PHPUNIT_DIR/phpunit-$PHPUNIT_VERSION/phpunit") || md5_file(__
8787
rename("phpunit-$PHPUNIT_VERSION", "phpunit-$PHPUNIT_VERSION.old");
8888
passthru(sprintf('\\' === DIRECTORY_SEPARATOR ? 'rmdir /S /Q %s': 'rm -rf %s', "phpunit-$PHPUNIT_VERSION.old"));
8989
}
90+
91+
$info = array();
92+
foreach (explode("\n", `$COMPOSER info -a -n phpunit/phpunit "$PHPUNIT_VERSION.*"`) as $line) {
93+
$line = rtrim($line);
94+
95+
if (!$info && preg_match('/^versions +: /', $line)) {
96+
$info['versions'] = explode(', ', ltrim(substr($line, 9), ': '));
97+
} elseif (isset($info['requires'])) {
98+
if ('' === $line) {
99+
break;
100+
}
101+
102+
$line = explode(' ', $line, 2);
103+
$info['requires'][$line[0]] = $line[1];
104+
} elseif ($info && 'requires' === $line) {
105+
$info['requires'] = array();
106+
}
107+
}
108+
109+
if (1 === \count($info['versions'])) {
110+
$passthruOrFail("$COMPOSER create-project --ignore-platform-reqs --no-install --prefer-dist --no-scripts --no-plugins --no-progress --ansi -s dev phpunit/phpunit $PHPUNIT_VERSION_DIR \"$PHPUNIT_VERSION.*\"");
111+
} else {
112+
$passthruOrFail("$COMPOSER create-project --ignore-platform-reqs --no-install --prefer-dist --no-scripts --no-plugins --no-progress --ansi phpunit/phpunit $PHPUNIT_VERSION_DIR \"$PHPUNIT_VERSION.*\"");
113+
}
114+
90115
$passthruOrFail("$COMPOSER create-project --no-install --prefer-dist --no-scripts --no-plugins --no-progress --ansi phpunit/phpunit phpunit-$PHPUNIT_VERSION \"$PHPUNIT_VERSION.*\"");
91116
@copy("phpunit-$PHPUNIT_VERSION/phpunit.xsd", 'phpunit.xsd');
92117
chdir("phpunit-$PHPUNIT_VERSION");
@@ -97,6 +122,9 @@ if (!file_exists("$PHPUNIT_DIR/phpunit-$PHPUNIT_VERSION/phpunit") || md5_file(__
97122
$passthruOrFail("$COMPOSER require --no-update phpunit/phpunit-mock-objects \"~3.1.0\"");
98123
}
99124

125+
if ($info['requires']['php'] !== $phpVersion = preg_replace('{\^([\d\.]++)$}', '>=$1', $info['requires']['php'])) {
126+
$passthruOrFail("$COMPOSER require --no-update \"php:$phpVersion\"");
127+
}
100128
$passthruOrFail("$COMPOSER config --unset platform.php");
101129
if (file_exists($path = $root.'/vendor/symfony/phpunit-bridge')) {
102130
$passthruOrFail("$COMPOSER require --no-update symfony/phpunit-bridge \"*@dev\"");

0 commit comments

Comments
 (0)