Ejemplo n.º 1
0
$testName = isset($_SERVER['argv'][2]) ? $_SERVER['argv'][2] : "";
$aLayer = array('unit', 'integration');
// Take a copy in memory of the conf file
$testConfFile = dirname(__FILE__) . '/../var/test.conf.php';
$testConf = file_get_contents($testConfFile);
$oReporter = new ReviveXmlReporter();
$oReporter->paintGroupStart("Tests", count($aLayer));
foreach ($aLayer as $layer) {
    $aTestFiles = TestFiles::getAllTestFiles($layer);
    $oReporter->paintGroupStart("Layer {$layer}", count($aTestFiles));
    foreach ($aTestFiles as $subLayer => $aDirectories) {
        $oReporter->paintGroupStart("Sublayer {$subLayer}", count($aDirectories));
        foreach ($aDirectories as $dirName => $aFiles) {
            $oReporter->paintGroupStart("Directory {$dirName} ({$testName})", count($aFiles));
            foreach ($aFiles as $fileName) {
                $oReporter->paintCaseStart("File {$fileName} ({$testName})");
                // Prepare the name of the test to display when running
                for ($counter = 0; $counter < count($GLOBALS['_MAX']['TEST']['groups']) - 1; $counter++) {
                    if ($layer == $GLOBALS['_MAX']['TEST']['groups'][$counter]) {
                        $layerDisplayName = $GLOBALS['_MAX']['TEST'][$GLOBALS['_MAX']['TEST']['groups'][$counter] . '_layers'][$subLayer][0];
                    }
                }
                preg_match('/^([^\\.]+)/', $fileName, $aMatches);
                $testDisplayName = ucfirst(strtolower($layer)) . '.' . $layerDisplayName . '.' . $aMatches[1];
                $oReporter->paintMethodStart($testDisplayName);
                // Restore conf file to make sure each test runs with a clean one
                file_put_contents($testConfFile, $testConf);
                $returncode = -1;
                $output_lines = '';
                $exec = "run.php --type={$layer} --level=file --layer={$subLayer} --folder={$dirName}" . " --file={$fileName} --format=text --host=test 2>&1";
                exec("{$php} {$exec}", $output_lines, $returncode);