mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
64 lines
2.3 KiB
PHP
64 lines
2.3 KiB
PHP
<?php
|
|
/**
|
|
* Usage: php run_class_by_class.php
|
|
*
|
|
* Execute the whole test suite (as declared in phpunit.xml.dist) one class at a time.
|
|
* This is to ensure that test class are still independant from each other, after a rework of ItopTestCase, for instance.
|
|
*/
|
|
const PHP_EXE = 'php';
|
|
const ITOP_ROOT = __DIR__.'/../../dev-itop';
|
|
|
|
const ITOP_PHPUNIT = ITOP_ROOT.'/tests/php-unit-tests';
|
|
const PHPUNIT_COMMAND = PHP_EXE.' '.ITOP_PHPUNIT.'/vendor/phpunit/phpunit/phpunit';
|
|
|
|
function ListTests($sUnitaryTestsDir = '')
|
|
{
|
|
$sConfigFile = ITOP_PHPUNIT."/phpunit.xml.dist";
|
|
$sCommand = PHPUNIT_COMMAND." --configuration $sConfigFile --list-tests $sUnitaryTestsDir";
|
|
exec($sCommand, $aOutput, $iResultCode);
|
|
//passthru($sCommand, $iResultCode);
|
|
if ($iResultCode != 0) { // or 1 in case of a failing test
|
|
echo "Failed executing command: $sCommand\n";
|
|
return [];
|
|
}
|
|
$aClasses = [];
|
|
foreach ($aOutput as $iLine => $sLine) {
|
|
// Example of formats to be filtered
|
|
//- DatamodelsXmlFilesTest::testAllItopXmlFilesCovered
|
|
//- Combodo\iTop\Test\UnitTest\Application\DashboardLayoutTest::testGetDashletCoordinates"OneColLayout-Cell0"
|
|
//if (preg_match('@^- ([a-z]+\\\\)*([a-z]+::[a-z0-9]+)@i', $sLine, $aMatches)) {
|
|
if (preg_match('@([a-z0-9]+)::test@i', $sLine, $aMatches)) {
|
|
$sTestClass = $aMatches[1];
|
|
$aClasses[$sTestClass] = $sTestClass;
|
|
}
|
|
}
|
|
return array_keys($aClasses);
|
|
}
|
|
|
|
function RunTests($sFilterRegExp, $sUnitaryTestsDir = '', $bPassthru = false)
|
|
{
|
|
$sRegExpShellArg = '"'.str_replace('"', '\\"', $sFilterRegExp).'"';
|
|
$sConfigFile = ITOP_PHPUNIT."/phpunit.xml.dist";
|
|
$sCommand = PHPUNIT_COMMAND." --configuration $sConfigFile --filter $sRegExpShellArg $sUnitaryTestsDir";
|
|
///echo "executing <<<$sCommand>>>\n";
|
|
if ($bPassthru) {
|
|
passthru($sCommand, $iResultCode);
|
|
}
|
|
else {
|
|
exec($sCommand, $aTrashedOutput, $iResultCode);
|
|
}
|
|
$bTestSuccess = ($iResultCode == 0); // or 1 in case of a failing test
|
|
return $bTestSuccess;
|
|
}
|
|
|
|
$sUnitaryTestsDir = '';
|
|
|
|
$aTestClasses = ListTests($sUnitaryTestsDir);
|
|
echo "Found ".count($aTestClasses)." to execute: ".implode(", ", $aTestClasses)."\n";
|
|
echo "Testing...\n";
|
|
foreach ($aTestClasses as $sTestClass) {
|
|
$fStarted = microtime(true);
|
|
$bSuccess = RunTests($sTestClass);
|
|
$sDuration = round(microtime(true) - $fStarted, 3);
|
|
echo "$sTestClass: ".($bSuccess ? 'Ok' : "FAILURE")." [$sDuration s]\n";
|
|
} |