g2 Wed, 15 Jul 2009 21:44:54 +0000
URL: http://svn.php.net/viewvc?view=revision&revision=284148
Changed paths:
U php/phpruntests/trunk/src/testcase/output/rtTestOutputWriterCSV.php
U php/phpruntests/trunk/src/testcase/output/rtTestOutputWriterList.php
U php/phpruntests/trunk/src/testcase/output/rtTestOutputWriterXML.php
U php/phpruntests/trunk/src/testcase/rtTestOutputWriter.php
U php/phpruntests/trunk/src/testcase/rtTestResults.php
U php/phpruntests/trunk/src/testcase/rtTestStatus.php
Log:
update outputWriter - extended xml-output
Modified: php/phpruntests/trunk/src/testcase/output/rtTestOutputWriterCSV.php
===================================================================
--- php/phpruntests/trunk/src/testcase/output/rtTestOutputWriterCSV.php 2009-07-15 20:59:08 UTC (rev 284147)
+++ php/phpruntests/trunk/src/testcase/output/rtTestOutputWriterCSV.php 2009-07-15 21:44:54 UTC (rev 284148)
@@ -25,16 +25,21 @@
public function createOutput()
{
- foreach ($this->resultList as $testResult) {
- $outputString = $testResult->getName();
- $testStatus = $testResult->getStatus();
- foreach($testStatus->getTestStateNames() as $name) {
- if($testStatus->getValue($name)) {
- $outputString .= " , ". strtoupper($name);
-
- }
- }
- $this->output .= $outputString."\n";
+ foreach ($this->resultList as $testGroupResults) {
+
+ foreach ($testGroupResults as $testResult) {
+
+ $outputString = $testResult->getName();
+ $testStatus = $testResult->getStatus();
+
+ foreach($testStatus->getTestStateNames() as $name) {
+
+ if($testStatus->getValue($name)) {
+ $outputString .= " , ". strtoupper($name);
+ }
+ }
+ $this->output .= $outputString."\n";
+ }
}
}
Modified: php/phpruntests/trunk/src/testcase/output/rtTestOutputWriterList.php
===================================================================
--- php/phpruntests/trunk/src/testcase/output/rtTestOutputWriterList.php 2009-07-15 20:59:08 UTC (rev 284147)
+++ php/phpruntests/trunk/src/testcase/output/rtTestOutputWriterList.php 2009-07-15 21:44:54 UTC (rev 284148)
@@ -24,20 +24,27 @@
public function createOutput()
{
- foreach ($this->resultList as $testResult) {
- $outputString = "";
- $testStatus = $testResult->getStatus();
- foreach($testStatus->getTestStateNames() as $name) {
- if($testStatus->getValue($name)) {
- $outputString .= " ". strtoupper($name);
- $outputString .= " " . $testStatus->getMessage($name);
- }
- }
- $outputString .= " " . $testResult->getTitle();
- $outputString .= " [" . $testResult->getName() . ".phpt]";
- $this->output .= $outputString."\n";
+ foreach ($this->resultList as $testGroupResults) {
+
+ foreach ($testGroupResults as $testResult) {
+
+ $outputString = "";
+ $testStatus = $testResult->getStatus();
+
+ foreach($testStatus->getTestStateNames() as $name) {
+
+ if ($testStatus->getValue($name)) {
+ $outputString .= " ". strtoupper($name);
+ $outputString .= " " . $testStatus->getMessage($name);
+ }
+ }
+
+ $outputString .= " " . $testResult->getTitle();
+ $outputString .= " [" . $testResult->getName() . ".phpt]";
+ $this->output .= $outputString."\n";
+ }
}
}
}
-?>
+?>
\ No newline at end of file
Modified: php/phpruntests/trunk/src/testcase/output/rtTestOutputWriterXML.php
===================================================================
--- php/phpruntests/trunk/src/testcase/output/rtTestOutputWriterXML.php 2009-07-15 20:59:08 UTC (rev 284147)
+++ php/phpruntests/trunk/src/testcase/output/rtTestOutputWriterXML.php 2009-07-15 21:44:54 UTC (rev 284148)
@@ -38,14 +38,97 @@
*/
public function createOutput()
{
- foreach ($this->resultList as $result) {
+ $wdir = getcwd();
+
+ $global_state = array();
+ $global_count = 0;
+
+ foreach ($this->resultList as $testGroupResults) {
+
+ // creat group-node
+ $groupNode = $this->dom->createElement('testgroup');
+ $this->rootNode->appendChild($groupNode);
- $test = $this->dom->createElement('testcase');
- $test->appendChild($this->dom->createElement('name', $result->getName()));
- $test->appendChild($this->dom->createElement('status', $result->getStatus()));
- $this->rootNode->appendChild($test);
- }
+ $state = array();
+
+ foreach ($testGroupResults as $testResult) {
+
+ // create test-node
+ $testNode = $this->dom->createElement('testcase');
+ $groupNode->appendChild($testNode);
+
+ // name
+ $n = explode($wdir, $testResult->getName());
+ $n = explode('/', $n[1]);
+ $n = array_pop($n);
+ $testNode->setAttribute('name', $n);
+
+ // status
+ $status = $testResult->getStatus();
+ $s = $status->__toString();
+ $testNode->setAttribute('status', strtoupper($s));
+
+ // title
+ $title = $testResult->getTitle();
+
+ if (strlen($title) > 0) {
+ $titleNode = $this->dom->createElement('title', utf8_encode(htmlentities($title)));
+ $testNode->appendChild($titleNode);
+ }
+
+ // message
+ $msg = $status->getMessage($s);
+
+ if (!is_null($msg)) {
+ $msgNode = $this->dom->createElement('message', utf8_encode(htmlentities($msg)));
+ $testNode->appendChild($msgNode);
+ }
+
+ // files
+ $files = $testResult->getSavedFileNames();
+
+ if (sizeof($files) > 0) {
+
+ $fileNode = $this->dom->createElement('files');
+ $testNode->appendChild($fileNode);
+
+ foreach ($files as $type => $file) {
+ $fileNode->setAttribute($type, $file);
+ }
+ }
+
+ // count
+ if (!isset($state[$s])) {
+ $state[$s] = 0;
+ $global_state[$s] = 0;
+ }
+
+ $state[$s]++;
+ $global_state[$s]++;
+ }
+
+ $global_count += sizeof($testGroupResults);
+
+ // add group-node attributes
+
+ $n = explode($wdir, $testGroupResults[0]->getName());
+ $n = explode('/', $n[1]);
+ array_pop($n);
+ $n = implode('/', $n);
+
+ $groupNode->setAttribute('name', $n);
+ $groupNode->setAttribute('tests', sizeof($testGroupResults));
+
+ $time = round($testGroupResults[0]->getTime(), 2);
+ $groupNode->setAttribute('time', $time);
+
+ foreach ($state as $k => $v) {
+ $groupNode->setAttribute($k, $v);
+ }
+ }
+ $this->dom->formatOutput = true;
+ $this->dom->normalizeDocument();
$this->output = $this->dom->saveXML();
}
Modified: php/phpruntests/trunk/src/testcase/rtTestOutputWriter.php
===================================================================
--- php/phpruntests/trunk/src/testcase/rtTestOutputWriter.php 2009-07-15 20:59:08 UTC (rev 284147)
+++ php/phpruntests/trunk/src/testcase/rtTestOutputWriter.php 2009-07-15 21:44:54 UTC (rev 284148)
@@ -2,8 +2,7 @@
/**
* rtTestOutputWriter
*
- * Writes test output. This is concerned with status (PASS, FAIL etc) not
- * with the log files.
+ * Writes test output.
*
* @category Testing
* @package RUNTESTS
@@ -20,10 +19,8 @@
protected $output = NULL;
protected $type = 'list';
protected $overview = NULL;
+
- const OUTPUT_DIR = 'results';
-
-
public static function getInstance($type='list')
{
// defaults to 'list' - combatible with old version
@@ -34,7 +31,7 @@
break;
case 'html':
-
+ return new rtTestOutputWriterHTML();
break;
case 'csv':
@@ -46,42 +43,43 @@
case 'txt':
return new rtTestOutputWriterList();
break;
-
}
}
+
-
+ /**
+ *
+ * @param array $resultList an array of arrays (testgroups) of rtTestResults
+ */
public function setResultList(array $resultList)
{
$this->resultList = $resultList;
}
-
-
- /**
- *
- */
+ /**
+ *
+ * @return string $output
+ */
public function getOutput()
{
return $this->output;
}
-
-
-
+
+ /**
+ * writes the the results to a file
+ *
+ * @param $filename
+ */
public function write($filename=null)
{
$this->createOutput();
if (!is_null($this->output)) {
-
- if (!file_exists(self::OUTPUT_DIR)) {
- mkdir(self::OUTPUT_DIR);
- }
if (is_null($filename)) {
- $filename = self::OUTPUT_DIR.'/results_'.round(microtime(true)).'.'.$this->type;
+ $filename = 'results_'.round(microtime(true)).'.'.$this->type;
}
if (file_put_contents($filename, $this->output)) {
@@ -93,6 +91,13 @@
}
+ /**
+ * creates an overview about the test-results
+ *
+ * @param integer $groups
+ * @param integer $processCount
+ * @return string
+ */
public function getOverview($groups=NULL, $processCount=NULL)
{
// if the overview was already created retun it
@@ -104,16 +109,19 @@
$state = array();
$count = 0;
- foreach ($this->resultList as $result) {
+ foreach ($this->resultList as $testGroupResults) {
+
+ foreach ($testGroupResults as $testResult) {
- $s = $result->getStatus()->__toString();
-
- if (!isset($state[$s])) {
- $state[$s] = 0;
- }
-
- $state[$s]++;
- $count++;
+ $s = $testResult->getStatus()->__toString();
+
+ if (!isset($state[$s])) {
+ $state[$s] = 0;
+ }
+
+ $state[$s]++;
+ $count++;
+ }
}
// create the output-string
@@ -153,11 +161,11 @@
$str .= ' ';
}
- $str .= $v;
+ $str .= $v.' ';
$p = round($v/$count*100,2);
- $blanks = 5-strlen($v);
+ $blanks = 5-strlen($p);
for ($b=0; $b<$blanks; $b++) {
$str .= ' ';
}
@@ -180,7 +188,13 @@
}
-
+ /**
+ * prints out the results of a testgroup
+ *
+ * @param array $results
+ * @param $state
+ * @param $cid
+ */
public static function flushResult(array $results, $state=0, $cid=NULL)
{
switch ($state) {
@@ -189,7 +203,6 @@
return;
break;
-
default:
case 0: // a dot per test-case
@@ -198,7 +211,6 @@
}
break;
-
case 1: // every test-case incl. status
print "\n";
foreach ($results as $result) {
@@ -206,7 +218,6 @@
}
break;
-
case 2: // details about not-passed tests
foreach ($results as $result) {
@@ -221,15 +232,19 @@
print strtoupper($name)."\t".$result->getName()."\n";
if ($name !== 'pass') {
- print "desc:\t".$result->getTitle()."\n";
- print "msg:\t".$s->getMessage($name)."\n";
+ print "DESC:\t".$result->getTitle()."\n";
+
+ $msg = $s->getMessage($name);
+ if (!is_null($msg)) {
+ print "MSG:\t".$msg."\n";
+ }
+
print "\n";
}
}
break;
-
case 3: // all available details
foreach ($results as $result) {
@@ -239,31 +254,30 @@
print "\n";
print strtoupper($name)."\t".$result->getName()."\n";
- print "desc:\t".$result->getTitle()."\n";
- print "msg:\t".$s->getMessage($name)."\n";
+ print "DESC:\t".$result->getTitle()."\n";
+
+ $msg = $s->getMessage($name);
+ if (!is_null($msg)) {
+ print "MSG:\t".$msg."\n";
+ }
+
if (!is_null($cid)) {
print "CID:\t$cid\n";
}
+
+ print "MEM:\t".round(memory_get_usage()/1024, 2)." kB\n";
- print "mem:\t".round(memory_get_usage()/1024, 2)." kB\n";
-
$files = $result->getSavedFileNames();
if (sizeof($files) > 0) {
- print "files:\t";
-
- foreach ($files as $file) {
- print $file.', ';
+ print "FILES:\n";
+ foreach ($files as $t => $file) {
+ print "$t:\t$file\n";
}
-
- print "\n";
}
-
-
}
-
break;
}
@@ -272,4 +286,4 @@
}
-?>
+?>
\ No newline at end of file
Modified: php/phpruntests/trunk/src/testcase/rtTestResults.php
===================================================================
--- php/phpruntests/trunk/src/testcase/rtTestResults.php 2009-07-15 20:59:08 UTC (rev 284147)
+++ php/phpruntests/trunk/src/testcase/rtTestResults.php 2009-07-15 21:44:54 UTC (rev 284148)
@@ -23,6 +23,7 @@
private $testName = '';
private $savedFileNames = array();
private $title = '';
+ private $time = 0;
public function __construct(rtPhpTest $testCase = null, rtTestStatus $testStatus = null)
{
@@ -166,5 +167,15 @@
{
return $this->title;
}
+
+ public function getTime()
+ {
+ return $this->time;
+ }
+
+ public function setTime($time)
+ {
+ $this->time = $time;
+ }
}
?>
Modified: php/phpruntests/trunk/src/testcase/rtTestStatus.php
===================================================================
--- php/phpruntests/trunk/src/testcase/rtTestStatus.php 2009-07-15 20:59:08 UTC (rev 284147)
+++ php/phpruntests/trunk/src/testcase/rtTestStatus.php 2009-07-15 21:44:54 UTC (rev 284148)
@@ -39,7 +39,7 @@
{
foreach ($this->testStateNames as $name) {
$this->states[$name] = false;
- $this->messages[$name] = '-- none --';
+ $this->messages[$name] = null;
}
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php