g2              Mon Jun 29 01:34:55 2009 UTC

  Added files:                 
    /phpruntests/src    cmpResults.php 

  Modified files:              
    /phpruntests/src/testcase/output    rtTestOutputWriterList.php 
                                        rtTestOutputWriterCSV.php 
                                        rtTestOutputWriterXML.php 
    /phpruntests/src/testgroup  rtPhpTestGroup.php 
    /phpruntests/src/testrun    rtPhpTestRun.php 
    /phpruntests/src/taskScheduler      rtTask.php rtTaskSchedulerFile.php 
                                        rtTaskTestGroup.php 
    /phpruntests/src/testcase   rtTestOutputWriter.php 
  Log:
  phpruntests - implemented rtTestOutputWriterXML - added cmpResults to compare 
test-results 
  
http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/output/rtTestOutputWriterList.php?r1=1.5&r2=1.6&diff_format=u
Index: phpruntests/src/testcase/output/rtTestOutputWriterList.php
diff -u phpruntests/src/testcase/output/rtTestOutputWriterList.php:1.5 
phpruntests/src/testcase/output/rtTestOutputWriterList.php:1.6
--- phpruntests/src/testcase/output/rtTestOutputWriterList.php:1.5      Sun Jun 
 7 11:06:51 2009
+++ phpruntests/src/testcase/output/rtTestOutputWriterList.php  Mon Jun 29 
01:34:54 2009
@@ -46,13 +46,18 @@
     }
 
 
-    public function write($testDirectory = null)
+    public function write($testDirectory = null,  $cid = null)
     {
         if ($testDirectory != null) {
             echo "\n\nTest output for tests in " . $testDirectory . "\n";
         }
         sort($this->testOutput);
         foreach ($this->testOutput as $line) {
+               
+             if (!is_null($cid)) {
+                       echo "$cid - ";
+               }
+               
             echo $line ."\n";
         }
     }
http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/output/rtTestOutputWriterCSV.php?r1=1.1&r2=1.2&diff_format=u
Index: phpruntests/src/testcase/output/rtTestOutputWriterCSV.php
diff -u phpruntests/src/testcase/output/rtTestOutputWriterCSV.php:1.1 
phpruntests/src/testcase/output/rtTestOutputWriterCSV.php:1.2
--- phpruntests/src/testcase/output/rtTestOutputWriterCSV.php:1.1       Sun Jun 
28 09:46:48 2009
+++ phpruntests/src/testcase/output/rtTestOutputWriterCSV.php   Mon Jun 29 
01:34:54 2009
@@ -44,11 +44,16 @@
     }
 
 
-    public function write($testDirectory = null)
+    public function write($testDirectory = null, $cid = null)
     {
         sort($this->testOutput);
         foreach ($this->testOutput as $line) {
-            echo $line ."\n";
+            
+               if (!is_null($cid)) {
+                       echo "$cid - ";
+               }
+               
+               echo $line ."\n";
         }
     }
 }
http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/output/rtTestOutputWriterXML.php?r1=1.3&r2=1.4&diff_format=u
Index: phpruntests/src/testcase/output/rtTestOutputWriterXML.php
diff -u phpruntests/src/testcase/output/rtTestOutputWriterXML.php:1.3 
phpruntests/src/testcase/output/rtTestOutputWriterXML.php:1.4
--- phpruntests/src/testcase/output/rtTestOutputWriterXML.php:1.3       Mon May 
25 11:59:58 2009
+++ phpruntests/src/testcase/output/rtTestOutputWriterXML.php   Mon Jun 29 
01:34:54 2009
@@ -1,6 +1,6 @@
 <?php
 /**
- * rtTestOutputWriterXML
+ * rtTestOutputWriterXML <singleton>
  *
  * Write test output as XML
  * 
@@ -8,6 +8,7 @@
  * @package    RUNTESTS
  * @author     Zoe Slattery <z...@php.net>
  * @author     Stefan Priebsch <sprieb...@php.net>
+ * @author     Georg Gradwohl <g...@php.net>
  * @copyright  2009 The PHP Group
  * @license    http://www.php.net/license/3_01.txt  PHP License 3.01
  * @link       http://qa.php.net/
@@ -15,12 +16,92 @@
  */
 class rtTestOutputWriterXML extends rtTestOutputWriter
 {
-    public function assemble(rtPhpTest $testCase)
+    private $dom = null;
+       private $rootNode = null;
+       private $stamp = 0;
+       
+       private static $instance = null;
+       
+       
+       private function __construct() {
+
+       $this->dom = new DOMDocument();
+       $this->rootNode = $this->dom->createElement('RUNTESTS');
+       $this->dom->appendChild($this->rootNode);
+       
+       $this->stamp = round(microtime(true));
+       }
+    
+    private function __clone() {}
+
+    
+    public static function getInstance()
     {
+       if (is_null(self::$instance)) {
+               self::$instance = new self;
+       }
+       
+       return self::$instance;
     }
-  
-    public function write()
+    
+    
+    public function setTestResults(array $testResults)
     {
+       $this->init($testResults);
+    }
+
+
+    /**
+     *
+     *
+     * @param array of rtTestResults
+     *
+     */
+    public function init (array $testResults)
+    {
+        $dom = $this->dom;
+
+        foreach ($testResults as $testResult) {
+
+               $test = $dom->createElement('testcase');
+               $test->appendChild($dom->createElement('name', 
$testResult->getName()));
+               
+               $status = 'UNDEFINED';
+               $testStatus = $testResult->getStatus();
+               
+            foreach($testStatus->getTestStateNames() as $name) {
+
+               if ($testStatus->getValue($name)) {
+                    $status = strtoupper($name);
+                }
+            }
+
+               $test->appendChild($dom->createElement('status', $status));
+               $this->rootNode->appendChild($test);
+        }
+    }
+
+
+    public function write($testDirectory = null, $cid = null)
+    {
+        if (!is_null($this->dom)) {
+               
+               $xml = $this->dom->saveXML();
+               file_put_contents('results_'.$this->stamp.'.xml', $xml);
+        }
+    }
+    
+    
+    /**
+     * @Overrides src/testcase/rtTestOutputWriter#getOutput()
+     */
+    public function getOutput()
+    {
+       if (!is_null($this->dom)) {
+               return $this->dom->saveXML();
+       }
+       
+       return null;
     }
 }
 ?>
http://cvs.php.net/viewvc.cgi/phpruntests/src/testgroup/rtPhpTestGroup.php?r1=1.10&r2=1.11&diff_format=u
Index: phpruntests/src/testgroup/rtPhpTestGroup.php
diff -u phpruntests/src/testgroup/rtPhpTestGroup.php:1.10 
phpruntests/src/testgroup/rtPhpTestGroup.php:1.11
--- phpruntests/src/testgroup/rtPhpTestGroup.php:1.10   Sun Jun 28 12:25:00 2009
+++ phpruntests/src/testgroup/rtPhpTestGroup.php        Mon Jun 29 01:34:54 2009
@@ -70,10 +70,10 @@
         }
     }
 
-    public function writeGroup($outType)
+    public function writeGroup($outType, $cid=null)
     {
         $testOutputWriter = rtTestOutputWriter::getInstance($this->results, 
$outType);
-        $testOutputWriter->write($this->testDirectory);
+        $testOutputWriter->write($this->testDirectory, $cid);
     }
 }
 ?>
http://cvs.php.net/viewvc.cgi/phpruntests/src/testrun/rtPhpTestRun.php?r1=1.14&r2=1.15&diff_format=u
Index: phpruntests/src/testrun/rtPhpTestRun.php
diff -u phpruntests/src/testrun/rtPhpTestRun.php:1.14 
phpruntests/src/testrun/rtPhpTestRun.php:1.15
--- phpruntests/src/testrun/rtPhpTestRun.php:1.14       Sun Jun 28 12:25:00 2009
+++ phpruntests/src/testrun/rtPhpTestRun.php    Mon Jun 29 01:34:54 2009
@@ -62,7 +62,7 @@
                        // create the task-list
                        $taskList = array();
                        foreach ($subDirectories as $subDirectory) {
-                               $taskList[] = new 
rtTaskTestGroup(&$runConfiguration, &$subDirectory);
+                               $taskList[] = new 
rtTaskTestGroup($runConfiguration, $subDirectory);
                        }
 
                        
http://cvs.php.net/viewvc.cgi/phpruntests/src/taskScheduler/rtTask.php?r1=1.1&r2=1.2&diff_format=u
Index: phpruntests/src/taskScheduler/rtTask.php
diff -u phpruntests/src/taskScheduler/rtTask.php:1.1 
phpruntests/src/taskScheduler/rtTask.php:1.2
--- phpruntests/src/taskScheduler/rtTask.php:1.1        Fri Jun 26 00:07:24 2009
+++ phpruntests/src/taskScheduler/rtTask.php    Mon Jun 29 01:34:54 2009
@@ -11,6 +11,9 @@
        private $message = NULL;
        
        
+       public function finish() {}
+       
+       
        public function setState($state)
        {
                $this->state = $state;          
http://cvs.php.net/viewvc.cgi/phpruntests/src/taskScheduler/rtTaskSchedulerFile.php?r1=1.2&r2=1.3&diff_format=u
Index: phpruntests/src/taskScheduler/rtTaskSchedulerFile.php
diff -u phpruntests/src/taskScheduler/rtTaskSchedulerFile.php:1.2 
phpruntests/src/taskScheduler/rtTaskSchedulerFile.php:1.3
--- phpruntests/src/taskScheduler/rtTaskSchedulerFile.php:1.2   Sat Jun 27 
23:57:46 2009
+++ phpruntests/src/taskScheduler/rtTaskSchedulerFile.php       Mon Jun 29 
01:34:54 2009
@@ -187,22 +187,22 @@
        private function receiver()
        {
                for ($cid=0; $cid<$this->processCount; $cid++) {
-               
+
                        $response = file_get_contents(self::TMP_FILE.$cid);
-                       $response = explode("\n", $response);
+                       $response = explode("[END-TEST-OBJECT]", $response);
                        array_pop($response);
 
                        foreach ($response as $task) {
                                
                                $task = unserialize($task);
                                
-                               if ($task->getState() == rtTask::PASS) {
-                                       $this->countPass++;
-                               } else {
-                                       $this->countFail++;
+                               if ($task === false) {
+                                       print "ERROR unserialize $cid\n";
+                                       continue;
                                }
-                               
+
                                $index = $task->getIndex();
+                               $task->finish($cid);
                                
                                if ($this->groupTasks == true) { 
                                        
@@ -213,7 +213,7 @@
                                        $this->taskList[$index] = $task;
                                }
                        }
-                       
+
                        unlink(self::TMP_FILE.$cid);
                }
                
@@ -242,16 +242,10 @@
                                $task = $this->taskList[$index];
                        }
 
-                       if ($task->run() === true) {                    
-                               $task->setState(rtTask::PASS);
-                               
-                       } else {
-                               $task->setState(rtTask::FAIL);
-                       }
-                       
+                       $task->run();
                        $task->setIndex($index);
 
-                       $response .= serialize($task)."\n";
+                       $response .= serialize($task)."[END-TEST-OBJECT]";
                }
                
                file_put_contents(self::TMP_FILE.$cid, $response);
http://cvs.php.net/viewvc.cgi/phpruntests/src/taskScheduler/rtTaskTestGroup.php?r1=1.3&r2=1.4&diff_format=u
Index: phpruntests/src/taskScheduler/rtTaskTestGroup.php
diff -u phpruntests/src/taskScheduler/rtTaskTestGroup.php:1.3 
phpruntests/src/taskScheduler/rtTaskTestGroup.php:1.4
--- phpruntests/src/taskScheduler/rtTaskTestGroup.php:1.3       Sun Jun 28 
12:25:00 2009
+++ phpruntests/src/taskScheduler/rtTaskTestGroup.php   Mon Jun 29 01:34:54 2009
@@ -15,7 +15,7 @@
 {
        private $runConfiguration;
        private $subDirectory;
-       
+       private $testGroup;
        
        public function __construct($runConfiguration, $subDirectory)
        {
@@ -25,22 +25,25 @@
                
        public function run()
        {
-               $testGroup = new rtPhpTestGroup($this->runConfiguration, 
$this->subDirectory);
-               $testGroup->runGroup($this->runConfiguration);
+               $this->testGroup = new rtPhpTestGroup($this->runConfiguration, 
$this->subDirectory);
+               $this->testGroup->runGroup($this->runConfiguration);
+               
+               return true;
+       }
+       
+       public function finish($cid=null) {
+
+               if (!is_null($cid)) {
+                       print "\n$cid - ".$this->subDirectory."\n";
+               }
                
                $outType = 'list';
         if ($this->runConfiguration->hasCommandLineOption('o')) {              
        
-                       $outType = 
$this->runConfiguration->getCommandLineOption('o');
+               $outType = $this->runConfiguration->getCommandLineOption('o');
         } 
-               $testGroup->writeGroup($outType);
-               return true;
-       }
                
-       public function getDir()
-       {
-               return $this->subDirectory;
+        $this->testGroup->writeGroup($outType, $cid);
        }
-       
 }
 
 
http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/rtTestOutputWriter.php?r1=1.5&r2=1.6&diff_format=u
Index: phpruntests/src/testcase/rtTestOutputWriter.php
diff -u phpruntests/src/testcase/rtTestOutputWriter.php:1.5 
phpruntests/src/testcase/rtTestOutputWriter.php:1.6
--- phpruntests/src/testcase/rtTestOutputWriter.php:1.5 Sun Jun 28 09:48:54 2009
+++ phpruntests/src/testcase/rtTestOutputWriter.php     Mon Jun 29 01:34:55 2009
@@ -21,12 +21,14 @@
     
     public static function getInstance (array $testResults, $outputType)
     {
-        if ($outputType == 'list') {
+       if ($outputType == 'list') {
             return new rtTestOutputWriterList($testResults);
         }
         
         if ($outputType == 'xml') {
-            return new rtTestOutputWriterXML($testResults);
+            $writer = rtTestOutputWriterXML::getInstance();
+            $writer->setTestResults($testResults);
+            return $writer;
         }
         if ($outputType == 'csv') {
             return new rtTestOutputWriterCSV($testResults);

http://cvs.php.net/viewvc.cgi/phpruntests/src/cmpResults.php?view=markup&rev=1.1
Index: phpruntests/src/cmpResults.php
+++ phpruntests/src/cmpResults.php
<?php

error_reporting(E_ALL);


function domToArray($dom) {

        $list = array();
        $tests = $dom->getElementsByTagName('testcase');

        foreach ($tests as $test) {
                
                $n = $test->getElementsByTagName('name');
                $n = $n->item(0)->nodeValue;
                
                $s = $test->getElementsByTagName('status');
                $s = $s->item(0)->nodeValue;
                
                $list[$n] = $s;
        }
        
        return $list;
}


function getResultList() {

        $list = array();
        
        foreach (scandir('.') as $file) { 
        
                if (strpos($file, '.xml') !== false && strpos($file, 
'results_') !== false) {
                
                        $xml = new DOMDocument();
                        $xml->load($file);
                        $n = explode('_', basename($file, ".xml"));
                        $list[$n[1]] = domToArray($xml);
                } 
        }
        
        return $list;
}


function compareWith($list, $index) {
        
        $cmp = false;
        $base = $list[$index];
        
        foreach ($list as $key => $result) {
                
                if ($key == $index) {
                        $cmp = true;
                }
                
                elseif ($cmp === true) {
                        
                        print "\nDIFF $index - $key\n";
                        
                        $dif = array_diff_assoc($result, $base);
                        
                        if (sizeof($dif) > 0) {
                                print_r($dif);
                        } else {
                                print 'NONE';
                        }
                        
                        print "\n";
                }       
        }
}



$results = getResultList();

if (sizeof($results) < 2) {
        die("at least 2 results needed\n");
}

foreach ($results as $index => $list) {
        
        compareWith($results, $index);
}






?>
-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to