Exemplo n.º 1
0
 function _generateReport($xmlFile, $php, $env)
 {
     if (version_compare(PHP_VERSION, '5', '>=') && extension_loaded('xsl')) {
         $this->debug('Including php5 xslt wrapper');
         require_once AK_BASE_DIR . DS . 'vendor' . DS . 'xslt-php4-php5' . DS . 'xslt-php4-php5.php';
     }
     // Fail if XSLT extension is not available
     if (!function_exists('xslt_create')) {
         $this->error('Cannot generate report: xslt extension missing');
         return FALSE;
     }
     $currentDir = getcwd();
     chdir(AK_BASE_DIR . DIRECTORY_SEPARATOR . 'resources' . DIRECTORY_SEPARATOR . 'xsl');
     $xsl_file = AK_BASE_DIR . DIRECTORY_SEPARATOR . 'resources' . DIRECTORY_SEPARATOR . 'xsl' . DIRECTORY_SEPARATOR . 'phpunit2-noframes.xsl';
     // look for xsl
     if (!is_readable($xsl_file)) {
         $this->error('Cannot generate report: ' . $xsl_file . ' missing');
         chdir($currentDir);
         return FALSE;
     }
     if (!is_readable($xmlFile)) {
         return false;
     }
     $schema = file_get_contents($xmlFile);
     $xml = new SimpleXMLElement($schema);
     $suites = $xml->xpath("/testsuites/testsuite");
     $tests = 0;
     $failures = 0;
     $errors = 0;
     $time = 0;
     foreach ($suites as $suite) {
         $attributes = $suite->attributes();
         $tests += (int) $attributes->tests;
         $failures += (int) $attributes->failures;
         $errors += (int) $attributes->errors;
         $time += (double) $attributes->time;
     }
     $environment = array();
     $environment['php'] = $php;
     $environment['class'] = $failures > 0 ? 'failure' : $errors > 0 ? 'error' : '';
     $environment['backend'] = $env;
     $environment['tests'] = $tests;
     $environment['failures'] = $failures;
     $environment['errors'] = $errors;
     $environment['time'] = round($time, 3);
     $link = AK_BASE_DIR . DS . 'test' . DS . 'report' . DS . $php . DS . $env . DS . 'index.html';
     $environment['details'] = 'file://' . $link;
     $this->report_environments[] = $environment;
     $arguments = array('/_xml' => $schema, '/_xsl' => file_get_contents($xsl_file));
     // create an XSLT processor
     $xh = xslt_create();
     // set error handler
     xslt_set_error_handler($xh, array(&$this, 'xslt_error_handler'));
     // process the schema
     $result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments);
     xslt_free($xh);
     $targetFile = AK_BASE_DIR . DS . 'test' . DS . 'report' . DS . $php . DS . $env . DS . 'index.html';
     if (!file_exists(dirname($targetFile))) {
         mkdir(dirname($targetFile), 0777, true);
     }
     file_put_contents($targetFile, $result);
     chdir($currentDir);
 }
 function TransformSchema($schema, $xsl, $schematype = 'string')
 {
     // Fail if XSLT extension is not available
     if (!function_exists('xslt_create')) {
         return FALSE;
     }
     $xsl_file = dirname(__FILE__) . '/xsl/' . $xsl . '.xsl';
     // look for xsl
     if (!is_readable($xsl_file)) {
         return FALSE;
     }
     switch ($schematype) {
         case 'file':
             if (!is_readable($schema)) {
                 return FALSE;
             }
             $schema = _file_get_contents($schema);
             break;
         case 'string':
         default:
             if (!is_string($schema)) {
                 return FALSE;
             }
     }
     $arguments = array('/_xml' => $schema, '/_xsl' => _file_get_contents($xsl_file));
     // create an XSLT processor
     $xh = xslt_create();
     // set error handler
     xslt_set_error_handler($xh, array(&$this, 'xslt_error_handler'));
     // process the schema
     $result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments);
     xslt_free($xh);
     return $result;
 }
 /**
  * Converts an XML schema file to the specified DTD version.
  *
  * Call this method to convert the specified XML schema file to a different AXMLS
  * DTD version. For instance, to convert a schema created for an pre-1.0 version for 
  * AXMLS (DTD version 0.1) to a newer version of the DTD (e.g. 0.2). If no DTD version 
  * parameter is specified, the schema will be converted to the current DTD version. 
  * If the newFile parameter is provided, the converted schema will be written to the specified
  * file.
  * @see ConvertSchemaString()
  *
  * @param string $filename Name of XML schema file that will be converted.
  * @param string $newVersion DTD version to convert to.
  * @param string $newFile File name of (converted) output file.
  * @return string Converted XML schema or FALSE if an error occurs.
  */
 function ConvertSchemaFile($filename, $newVersion = NULL, $newFile = NULL)
 {
     // grab current version
     if (!($version = $this->SchemaFileVersion($filename))) {
         return FALSE;
     }
     if (!isset($newVersion)) {
         $newVersion = $this->schemaVersion;
     }
     if ($version == $newVersion) {
         $result = file_get_contents($filename);
         // remove unicode BOM if present
         if (substr($result, 0, 3) == sprintf('%c%c%c', 239, 187, 191)) {
             $result = substr($result, 3);
         }
     } else {
         // Fail if XSLT extension is not available
         if (!function_exists('xslt_create')) {
             return FALSE;
         }
         $xsl_file = dirname(__FILE__) . '/xsl/convert-' . $version . '-' . $newVersion . '.xsl';
         // look for xsl
         if (!is_readable($xsl_file)) {
             return FALSE;
         }
         $arguments = array('/_xml' => file_get_contents($filename), '/_xsl' => file_get_contents($xsl_file));
         // create an XSLT processor
         $xh = xslt_create();
         // set error handler
         xslt_set_error_handler($xh, array(&$this, 'xslt_error_handler'));
         // process the schema
         $result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments);
         xslt_free($xh);
     }
     if (is_string($newFile) and $fp = fopen($newFile, 'w')) {
         fwrite($fp, $result);
         fclose($fp);
     }
     return $result;
 }