Exemple #1
0
 /**
  * Render job template for test case
  *
  * @param \PHPUnit_Framework_Test $testcase
  * @param \PHPUnit_Framework_TestResult $result
  * @param array $params
  * @param Environment $environment
  * @return string
  */
 private function generateTestCaseJob(\PHPUnit_Framework_Test $testcase, \PHPUnit_Framework_TestResult $result, array $params, Environment $environment)
 {
     if ($result === null) {
         $result = new \PHPUnit_Framework_TestResult();
     }
     $configFile = false;
     if (isset($_SERVER['argv']['--configuration'])) {
         for ($index = 0; $index <= count($_SERVER['argv']); $index++) {
             if ($_SERVER['argv'][$index] == '--configuration') {
                 $configFile = $_SERVER['argv'][$index + 1];
                 break;
             }
         }
     } else {
         $phpunitPath = MTF_BP . '/phpunit.xml';
         if (file_exists($phpunitPath)) {
             $configFile = realpath($phpunitPath);
         } else {
             if (file_exists($phpunitPath . '.dist')) {
                 $configFile = realpath($phpunitPath . '.dist');
             }
         }
     }
     if (!$configFile) {
         throw new \Exception('Cannot define phpunit configuration path');
     }
     $configuration = \PHPUnit_Util_Configuration::getInstance($configFile);
     $listenerConfiguration = var_export(serialize($configuration->getListenerConfiguration()), true);
     $class = new \ReflectionClass($testcase);
     $template = new \Text_Template(sprintf('%s%sTestCaseRun.tpl', __DIR__, DIRECTORY_SEPARATOR));
     if ($result->getCollectCodeCoverageInformation()) {
         $coverage = 'TRUE';
     } else {
         $coverage = 'FALSE';
     }
     if (defined('MTF_BOOT_FILE')) {
         $bootstrap = var_export(MTF_BOOT_FILE, true);
     } else {
         if (defined('PHPUNIT_COMPOSER_INSTALL')) {
             $bootstrap = var_export(PHPUNIT_COMPOSER_INSTALL, true);
         } else {
             $bootstrap = '\'\'';
         }
     }
     if (defined('__PHPUNIT_PHAR__')) {
         $phar = var_export(__PHPUNIT_PHAR__, true);
     } else {
         $phar = '\'\'';
     }
     if ($testcase instanceof \Mtf\TestCase\Injectable) {
         $filePath = $testcase->getFilePath();
     } else {
         $filePath = false;
     }
     $data = var_export(serialize($params['data']), true);
     $includePath = var_export(get_include_path(), true);
     $env = var_export(serialize($environment->getEnvironmentVariables()), true);
     // must do these fixes because TestCaseMethod.tpl has unserialize('{data}') in it, and we can't break BC
     // the lines above used to use addcslashes() rather than var_export(), which breaks null byte escape sequences
     $data = "'." . $data . ".'";
     $includePath = "'." . $includePath . ".'";
     $env = "'." . $env . ".'";
     $listenerConfiguration = "'." . $listenerConfiguration . ".'";
     $template->setVar(array('bootstrap' => $bootstrap, 'phar' => $phar, 'filename' => $class->getFileName(), 'className' => $class->getName(), 'methodName' => $params['name'], 'collectCodeCoverageInformation' => $coverage, 'data' => $data, 'dataName' => $params['dataName'], 'include_path' => $includePath, 'env' => $env, 'filePath' => $filePath, 'listenerConfiguration' => $listenerConfiguration));
     return $template->render();
 }