You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.4 KiB
57 lines
1.4 KiB
#!/usr/bin/env php
|
|
<?php
|
|
/**
|
|
* @license MIT
|
|
* Copyright 2022 Dustin Wilson, et al.
|
|
* See LICENSE and AUTHORS files for details
|
|
*/
|
|
|
|
$dir = ini_get('extension_dir');
|
|
$php = escapeshellarg(\PHP_BINARY);
|
|
$code = escapeshellarg(__DIR__ . '/lib');
|
|
|
|
|
|
array_shift($argv);
|
|
foreach ($argv as $k => $v) {
|
|
if (in_array($v, ['--coverage', '--coverage-html'])) {
|
|
$argv[$k] = '--coverage-html tests/coverage';
|
|
}
|
|
}
|
|
|
|
$cmd = [
|
|
$php,
|
|
'-d opcache.enable_cli=0',
|
|
];
|
|
|
|
$pcovLoaded = extension_loaded('pcov');
|
|
$xdebugLoaded = extension_loaded('xdebug');
|
|
|
|
if (!$pcovLoaded && !$xdebugLoaded) {
|
|
$extDir = ini_get('extension_dir');
|
|
if (!extension_loaded('pcov') && file_exists("$extDir/pcov.so")) {
|
|
$cmd[] = '-d zend_extension=pcov.so';
|
|
$pcovLoaded = true;
|
|
} elseif (!extension_loaded('xdebug') && file_exists("$extDir/xdebug.so")) {
|
|
$cmd[] = '-d zend_extension=xdebug.so';
|
|
$xdebugLoaded = true;
|
|
}
|
|
}
|
|
|
|
if ($pcovLoaded) {
|
|
$cmd[] = '-d pcov.enabled=1';
|
|
$cmd[] = "-d pcov.directory=$code";
|
|
} elseif ($xdebugLoaded) {
|
|
$cmd[] = '-d xdebug.mode=coverage,develop,trace';
|
|
} else {
|
|
fwrite(\STDERR, "Either the pcov or xdebug extension is required to run tests.\n");
|
|
exit(1);
|
|
}
|
|
|
|
$cmd = implode(' ', [
|
|
...$cmd,
|
|
escapeshellarg(__DIR__ . '/vendor/bin/phpunit'),
|
|
'--configuration tests/phpunit.xml',
|
|
...$argv,
|
|
'--display-deprecations'
|
|
]);
|
|
passthru($cmd);
|