g2              Sun Jul  5 20:51:16 2009 UTC

  Modified files:              
    /phpruntests/src/testcase/output    rtTestOutputWriterList.php 
                                        rtTestOutputWriterCSV.php 
                                        rtTestOutputWriterXML.php 
    /phpruntests/src/taskScheduler      rtTaskScheduler.php 
                                        rtTaskSchedulerFile.php rtTask.php 
                                        rtTaskTestGroup.php 
    /phpruntests/src/testcase   rtTestResults.php rtTestOutputWriter.php 
                                rtTestStatus.php 
    /phpruntests/tests  rtTaskSchedulerTest.php 
    /phpruntests/src    run-tests.php 
    /phpruntests/src/configuration      rtCommandLineOptions.php 
    /phpruntests/src/testrun    rtPhpTestRun.php 
  Log:
  phpruntests - rebuild outputWriter - added option to flush test-results 
during execution - minor adjustments taskScheduler
  
http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/output/rtTestOutputWriterList.php?r1=1.6&r2=1.7&diff_format=u
Index: phpruntests/src/testcase/output/rtTestOutputWriterList.php
diff -u phpruntests/src/testcase/output/rtTestOutputWriterList.php:1.6 
phpruntests/src/testcase/output/rtTestOutputWriterList.php:1.7
--- phpruntests/src/testcase/output/rtTestOutputWriterList.php:1.6      Mon Jun 
29 01:34:54 2009
+++ phpruntests/src/testcase/output/rtTestOutputWriterList.php  Sun Jul  5 
20:51:15 2009
@@ -2,12 +2,13 @@
 /**
  * rtTestOutputWriterList
  *
- * Write test output line by line to stdout
+ * Write test output line by line
  * 
  * @category   Testing
  * @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,22 +16,15 @@
  */
 class rtTestOutputWriterList extends rtTestOutputWriter
 {
-    protected $testOutput = array();
-
-    public function __construct(array $testResults)
+    public function __construct()
     {
-        $this->init($testResults);
+         $this->type = 'txt';
     }
 
-    /**
-     *
-     *
-     * @param array of rtTestResults
-     *
-     */
-    public function init (array $testResults)
+    
+    public function createOutput()
     {
-        foreach ($testResults as $testResult) {
+        foreach ($this->resultList as $testResult) {
             $outputString = "";
             $testStatus = $testResult->getStatus();
             foreach($testStatus->getTestStateNames() as $name) {
@@ -41,25 +35,9 @@
             }
             $outputString .= " " . $testResult->getTitle();
             $outputString .= " [" . $testResult->getName() . ".phpt]";
-            $this->testOutput[] = $outputString;
+            $this->output .= $outputString."\n";
         }
     }
 
-
-    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.3&r2=1.4&diff_format=u
Index: phpruntests/src/testcase/output/rtTestOutputWriterCSV.php
diff -u phpruntests/src/testcase/output/rtTestOutputWriterCSV.php:1.3 
phpruntests/src/testcase/output/rtTestOutputWriterCSV.php:1.4
--- phpruntests/src/testcase/output/rtTestOutputWriterCSV.php:1.3       Tue Jun 
30 13:36:49 2009
+++ phpruntests/src/testcase/output/rtTestOutputWriterCSV.php   Sun Jul  5 
20:51:15 2009
@@ -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,22 +16,16 @@
  */
 class rtTestOutputWriterCSV extends rtTestOutputWriter
 {
-    protected $testOutput = array();
 
-    public function __construct(array $testResults)
+    public function __construct()
     {
-        $this->init($testResults);
+        $this->type = 'csv';
     }
 
-    /**
-     *
-     *
-     * @param array of rtTestResults
-     *
-     */
-    public function init (array $testResults)
+
+    public function createOutput()
     {
-        foreach ($testResults as $testResult) {
+        foreach ($this->resultList as $testResult) {
             $outputString = $testResult->getName();
             $testStatus = $testResult->getStatus();
             foreach($testStatus->getTestStateNames() as $name) {
@@ -39,24 +34,9 @@
 
                 }
             }
-            $this->testOutput[] = $outputString;
+            $this->output .= $outputString."\n";
         }
     }
 
-
-    public function write($testDirectory = null, $cid = null)
-    {
-        sort($this->testOutput);
-        foreach ($this->testOutput as $line) {        
-             
-            echo $line;
-             
-            if (!is_null($cid)) {
-                echo ", $cid \n";
-            } else {
-                echo "\n";
-            }
-        }
-    }
 }
 ?>
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/output/rtTestOutputWriterXML.php?r1=1.5&r2=1.6&diff_format=u
Index: phpruntests/src/testcase/output/rtTestOutputWriterXML.php
diff -u phpruntests/src/testcase/output/rtTestOutputWriterXML.php:1.5 
phpruntests/src/testcase/output/rtTestOutputWriterXML.php:1.6
--- phpruntests/src/testcase/output/rtTestOutputWriterXML.php:1.5       Mon Jun 
29 22:00:12 2009
+++ phpruntests/src/testcase/output/rtTestOutputWriterXML.php   Sun Jul  5 
20:51:15 2009
@@ -18,89 +18,41 @@
 {
     private $dom = null;
        private $rootNode = null;
-       private $stamp = 0;
        
-       private static $instance = null;
        
-       
-       private function __construct() {
+       public function __construct() {
 
+               $this->type = 'xml';
+               
        $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 setTestResults(array $testResults)
-    {
-       $this->init($testResults);
-    }
 
 
     /**
         *
      * @param array of rtTestResults
      */
-    public function init (array $testResults)
+    public function createOutput()
     {
-        $dom = $this->dom;
-
-        foreach ($testResults as $testResult) {
+        foreach ($this->resultList as $result) {
 
-               $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));
+               $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);
         }
+        
+        $this->output = $this->dom->saveXML();
     }
 
 
-    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;
-    }
+
     
 }
 ?>
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/phpruntests/src/taskScheduler/rtTaskScheduler.php?r1=1.3&r2=1.4&diff_format=u
Index: phpruntests/src/taskScheduler/rtTaskScheduler.php
diff -u phpruntests/src/taskScheduler/rtTaskScheduler.php:1.3 
phpruntests/src/taskScheduler/rtTaskScheduler.php:1.4
--- phpruntests/src/taskScheduler/rtTaskScheduler.php:1.3       Sat Jun 27 
23:57:46 2009
+++ phpruntests/src/taskScheduler/rtTaskScheduler.php   Sun Jul  5 20:51:15 2009
@@ -15,18 +15,14 @@
  */
 class rtTaskScheduler
 {
-       protected $taskList = array();  // the list of the tasks to be executed
-       protected $processCount = 0;    // the number of processes
-
-       protected $time = 0;                    // the needed time
-       protected $countPass = 0;               // counts the passed tasks
-       protected $countFail = 0;               // counts the failed tasks
-       
-       protected $memStore = array();  // stores the mem-usage after an 
incomming task
+       protected $taskList = array();   // the list of the tasks to be executed
+       protected $resultList = array(); // list of results
+       protected $processCount = 0;     // the number of processes
+       protected $reportStatus = 0;     // reprort-status
 
        
        /**
-        * the constructor
+        * constructor
         * 
         * @param array $taskList               (optional)
         * @param int   $processCount   (optional)
@@ -41,20 +37,13 @@
     }
     
     
-    public static function getInstance(array $taskList=NULL, 
$processCount=NULL, $useMsgQ=false)
+    public static function getInstance()
     {
-       // TODO: remove this statement and check this by runtime-config
        if (extension_loaded('pcntl')) {
-
-               if ($useMsgQ === true) {
-               
-                       return new rtTaskSchedulerMsgQ($taskList, 
$processCount);
-               }
-
-               return new rtTaskSchedulerFile($taskList, $processCount);
+               return new rtTaskSchedulerFile();
        }
        
-       return new rtTaskScheduler($taskList, $processCount);
+       return new rtTaskScheduler();
     }
 
     
@@ -79,6 +68,15 @@
        
        
        /**
+        * @return array $resultList
+        */
+       public function getResultList()
+       {
+               return $this->resultList;
+       }
+
+       
+       /**
         * sets the number of child-processes.
         * in the case of using a multidimensional task-list this parameter is
         * ignored and set to the number of task-groups.
@@ -94,137 +92,51 @@
 
        
        /**
-        * executes the tasks in a simple loop 
-        * 
-        * @return void
+        * @return integer $processCount
         */
-       public function run()
+       public function getProcessCount()
        {
-               $s = microtime(true);
-               
-               for ($i=0; $i<sizeof($this->taskList); $i++) {
-                       
-                       $task = $this->taskList[$i];
-                       
-                       if ($task->run() === true) {                    
-                               $task->setState(rtTask::PASS);
-                               $this->countPass++;
-                       } else {
-                               $task->setState(rtTask::FAIL);
-                               $this->countFail++;
-                       }
-                       
-                       $this->memStore[] = memory_get_usage(true);
-
-                       $this->taskList[$i] = $task;
-               }
-               
-               $error = microtime(true);
-               
-               $this->time = round($e-$s,5);
-
-               return;
+               return $this->processCount;
        }
 
-       
-       /**
-        * prints the statistic
-        * 
-        * @return void
-        */
-       public function printStatistic()
-       {
-               print "\n----------------------------------------\n";
-               
-               /*
-               if (is_array($this->taskList[0])) {
-               
-                       $count = 0;
-                       foreach ($this->taskList as $list) {
-                               $count += sizeof($list);
-                       }
-                       
-                       print "Groups:\t\t".sizeof($this->taskList)."\n";
-                       print "Tasks:\t\t".$count."\n";
-
-               } else {
-                       
-                       $count = sizeof($this->taskList);
-                       print "Tasks:\t\t".$count."\n";
-               }
-
-               print "PASSED:\t\t".$this->countPass." 
("....@round($this->countPass/$count*100,2)."%)\n";
-               print "FAILED:\t\t".$this->countFail." 
("....@round($this->countFail/$count*100,2)."%)\n";
-               */
-               
-               $count = sizeof($this->taskList);
-               print "Test-Groups:\t".$count."\n";
-               print "Processes:\t".$this->processCount."\n";
-               print "Seconds:\t".$this->time."\n";
                
-               if ($this->processCount > 0 && sizeof($this->memStore) > 0) {
-                       print "AVG 
sec/task:\t"....@round($this->time/$this->processCount,5)."\n";
-                       print 
"Memory-MAX:\t".number_format(@max($this->memStore))."\n";
-                       print 
"Memory-MIN:\t".number_format(@min($this->memStore))."\n";
-                       $avg = 
array_sum($this->memStore)/sizeof($this->memStore);
-                       print "Memory-AVG:\t".number_format($avg)."\n";
+    /**
+     * -1: no output
+     *  0: dots
+     *  1: basic
+     *  2: only not-pased
+     *  3: everything 
+     * 
+     * @param numeric $reportStatus
+     */
+       public function setReportStatus($reportStatus)
+       {
+               if (is_numeric($reportStatus)) {        
+                       $this->reportStatus = $reportStatus;
                }
-
-               print "----------------------------------------\n";
-               flush();
        }
        
-       
+
        /**
-        * prints a overview of the faild tasks
+        * executes the tasks in a simple loop 
         * 
         * @return void
         */
-       public function printFailedTasks()
-       {
-               if ($this->countFail > 0) {
-               
-                       print "FAILED TASKS";
-                       print "\n----------------------------------------\n";
-                       
-                       for ($i=0; $i<sizeof($this->taskList); $i++) {
-       
-                               $task = $this->taskList[$i];
-                               
-                               if ($task->getState() == task::FAIL) {
-                                       print "Task $i: 
".$task->getMessage()."\n";
-                               }
-                       }
-                       
-                       print "----------------------------------------\n";
-                       flush();
-               }
-       }
-       
-       
-       
-       public function printMemStatistic($int=10)
+       public function run()
        {
-               print "MEMORY-USAGE";
-               print "\n----------------------------------------\n";
-               
-               $int = ceil(sizeof($this->memStore)/$int);
-               
-               $title = "TASK:\t";
-               $body = "kB:\t";
-               
-               for ($i=0; $i<sizeof($this->memStore); $i+=$int) {
+
+               for ($i=0; $i<sizeof($this->taskList); $i++) {
                        
-                       $title .= "$i\t";
-                       $body .= round($this->memStore[$i]/1000)."\t";
+                       $task = $this->taskList[$i];
+                       $task->run();
+                       $results = $task->getResult();
+                       rtTestOutputWriter::flushResult($results, 
$this->reportStatus);
+                       $this->resultList = array_merge($this->resultList, 
$resultList);
                }
-               
-               print $title."\n".$body;
-               
-               print "\n----------------------------------------\n";
-               flush();                
+
+               return;
        }
-       
+
 }
 
 ?>
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/phpruntests/src/taskScheduler/rtTaskSchedulerFile.php?r1=1.4&r2=1.5&diff_format=u
Index: phpruntests/src/taskScheduler/rtTaskSchedulerFile.php
diff -u phpruntests/src/taskScheduler/rtTaskSchedulerFile.php:1.4 
phpruntests/src/taskScheduler/rtTaskSchedulerFile.php:1.5
--- phpruntests/src/taskScheduler/rtTaskSchedulerFile.php:1.4   Mon Jun 29 
22:00:13 2009
+++ phpruntests/src/taskScheduler/rtTaskSchedulerFile.php       Sun Jul  5 
20:51:15 2009
@@ -20,22 +20,6 @@
        private $pidStore = array();    // stores the pids of all 
child-processes
        private $groupTasks = false;    // are the tasks stored in groups?
 
-       
-       /**
-        * the constructor
-        * 
-        * @param array $taskList               (optional)
-        * @param int   $processCount   (optional)
-        */
-    public function __construct(array $taskList=NULL, $processCount=NULL)
-       {
-               if (is_array($taskList)) {
-                       $this->setTaskList($taskList);
-               }
-               
-               $this->setProcessCount($processCount);
-    }
-
     
     /**
      * sets the task-list which has to be an array of task-objects.
@@ -94,7 +78,7 @@
                }
 
                // distribute the task to the children
-               $this->createTaskFiles();
+               $this->distributeTasks();
 
                // fork the child-processes
                for ($i=0; $i<$this->processCount; $i++) {
@@ -135,21 +119,19 @@
 
        
        /**
-        * creates a temporary file for each child which stores the allocated 
-        * array-indices.
+        * creates a temporary file for each child which stores serialized 
task-objects
         * 
         */
-       private function createTaskFiles() {
-
-               $taskStr = array();
+       private function distributeTasks() {
 
                if ($this->groupTasks == true) { 
 
-                       foreach ($this->taskList as $key => $list) {
+                       foreach ($this->taskList as $cid => $list) {
                                
                                for ($i=0; $i<sizeof($list); $i++) {
 
-                                       $taskStr[$key] .= $i.';';
+                                       $str = serialize($list[$i])."[END]";
+                                       file_put_contents(self::TMP_FILE.$cid, 
$str, FILE_APPEND);
                                }
                        }
                         
@@ -158,19 +140,10 @@
                        for ($i=0; $i<sizeof($this->taskList); $i++) {
 
                                $cid = $i%$this->processCount;
-                               
-                               if (!isset($taskStr[$cid])) {
-                                       $taskStr[$cid] = '';
-                               }
-                               
-                               $taskStr[$cid] .= $i.';';
+                               $str = serialize($this->taskList[$i])."[END]";
+                               file_put_contents(self::TMP_FILE.$cid, $str, 
FILE_APPEND);
                        }
                }
-
-               for ($i=0; $i<$this->processCount; $i++) {
-                                               
-                       file_put_contents(self::TMP_FILE.$i, $taskStr[$i]);
-               }
        }
 
        
@@ -184,35 +157,23 @@
                for ($cid=0; $cid<$this->processCount; $cid++) {
 
                        $response = file_get_contents(self::TMP_FILE.$cid);
-                       $response = explode("[END-TEST-OBJECT]", $response);
+                       $response = explode("[END]", $response);
                        array_pop($response);
 
-                       foreach ($response as $task) {
+                       foreach ($response as $resultList) {
                                
-                               $task = unserialize($task);
+                               $resultList = unserialize($resultList);
                                
-                               if ($task === false) {
-                                       print "ERROR unserialize $cid\n";
+                               if ($resultList === false) {
+                                       print "ERROR unserialize - receiver 
$cid\n";
                                        continue;
                                }
-
-                               $index = $task->getIndex();
-                               $task->evaluate($cid);
                                
-                               if ($this->groupTasks == true) { 
-                                       
-                                       $this->taskList[$cid][$index] = $task;  
-                               
-                               } else {
-                                       
-                                       $this->taskList[$index] = $task;
-                               }
+                               $this->resultList = 
array_merge($this->resultList, $resultList);
                        }
 
                        unlink(self::TMP_FILE.$cid);
                }
-               
-               return;         
        }
 
        
@@ -225,27 +186,27 @@
         */
        private function child($cid)
        {
-               $indexList = file_get_contents(self::TMP_FILE.$cid);
-               $indexList = explode(';', $indexList);
-               array_pop($indexList);
+               $taskList = file_get_contents(self::TMP_FILE.$cid);
+               $taskList = explode('[END]', $taskList);
+               array_pop($taskList);
 
                file_put_contents(self::TMP_FILE.$cid, '');
 
-               foreach ($indexList as $index) {
+               foreach ($taskList as $task) {
 
-                       if ($this->groupTasks == true) { 
-                               $task = $this->taskList[$cid][$index];
-                       } else {
-                               $task = $this->taskList[$index];
+                       $task = unserialize($task);
+                       
+                       if ($task === false) {
+                               print "ERROR unserialize - cid $cid\n";
+                               continue;
                        }
 
                        $task->run();
-                       $task->setIndex($index);
+                       $results = $task->getResult();
                        
-                       print "$cid - ".$task->getDir()." - 
".round(memory_get_usage()/1024, 2)."\n";
-                       flush();
+                       rtTestOutputWriter::flushResult($results, 
$this->reportStatus, $cid);
                        
-                       $response = serialize($task)."[END-TEST-OBJECT]";
+                       $response = serialize($results)."[END]";
                        file_put_contents(self::TMP_FILE.$cid, $response, 
FILE_APPEND);
                }
 
http://cvs.php.net/viewvc.cgi/phpruntests/src/taskScheduler/rtTask.php?r1=1.3&r2=1.4&diff_format=u
Index: phpruntests/src/taskScheduler/rtTask.php
diff -u phpruntests/src/taskScheduler/rtTask.php:1.3 
phpruntests/src/taskScheduler/rtTask.php:1.4
--- phpruntests/src/taskScheduler/rtTask.php:1.3        Tue Jun 30 15:39:52 2009
+++ phpruntests/src/taskScheduler/rtTask.php    Sun Jul  5 20:51:15 2009
@@ -2,49 +2,19 @@
 
 abstract class rtTask
 {
-       const NOEX = 0;
-       const PASS = 1;
-       const FAIL = -1;
+       protected $result = NULL;
 
-       private $state = self::NOEX;
-       private $index = NULL;
-       private $message = NULL;
        
        
-       public function evaluate() {}
+    public function getResult()
+    {
+       return $this->result;
+    }
        
+    
+    public function run() {}
        
-       public function setState($state)
-       {
-               $this->state = $state;          
-       }
-       
-       public function getState()
-       {
-               return $this->state;
-       }
-       
-       
-       public function setMessage($msg)
-       {
-               $this->message = $msg;
-       }
-
-       public function getMessage()
-       {
-               return $this->message;
-       }
-
-       
-       public function setIndex($index)
-       {
-               $this->index = $index;
-       }
 
-       public function getIndex()
-       {
-               return $this->index;
-       }
        
 }
 
http://cvs.php.net/viewvc.cgi/phpruntests/src/taskScheduler/rtTaskTestGroup.php?r1=1.6&r2=1.7&diff_format=u
Index: phpruntests/src/taskScheduler/rtTaskTestGroup.php
diff -u phpruntests/src/taskScheduler/rtTaskTestGroup.php:1.6 
phpruntests/src/taskScheduler/rtTaskTestGroup.php:1.7
--- phpruntests/src/taskScheduler/rtTaskTestGroup.php:1.6       Tue Jun 30 
15:39:52 2009
+++ phpruntests/src/taskScheduler/rtTaskTestGroup.php   Sun Jul  5 20:51:15 2009
@@ -15,15 +15,12 @@
 {
        private $runConfiguration;
        private $subDirectory;
-       private $outType;
-       private $results;
 
        
-       public function __construct($runConfiguration, $subDirectory, 
$outType='list')
+       public function __construct($runConfiguration, $subDirectory)
        {
                $this->runConfiguration = $runConfiguration;
                $this->subDirectory = $subDirectory;
-               $this->outType = $outType;
        }
        
        
@@ -35,35 +32,10 @@
        {
                $testGroup = new rtPhpTestGroup($this->runConfiguration, 
$this->subDirectory);
                $testGroup->runGroup($this->runConfiguration);
-        $this->results = $testGroup->getResults();
+        $this->result = $testGroup->getResults();
                return true;
        }
-       
-       
-       /**
-        * called by the receiver (parent-process)
-        * writes the results to the OutputWriter
-        * 
-        * @param $cid  the child-id
-        */
-       public function evaluate($cid=null)
-       {
-       $testOutputWriter = rtTestOutputWriter::getInstance($this->results, 
$this->outType);
-        $testOutputWriter->write($this->subDirectory, $cid);
-       }
-       
-       
-       public function getDir()
-       {
-               return $this->subDirectory;
-       }
-       
-       
-    public function getResults()
-    {
-       return $this->results;
-    }
-    
+
 }
 
 
http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/rtTestResults.php?r1=1.5&r2=1.6&diff_format=u
Index: phpruntests/src/testcase/rtTestResults.php
diff -u phpruntests/src/testcase/rtTestResults.php:1.5 
phpruntests/src/testcase/rtTestResults.php:1.6
--- phpruntests/src/testcase/rtTestResults.php:1.5      Tue Jun  2 19:12:07 2009
+++ phpruntests/src/testcase/rtTestResults.php  Sun Jul  5 20:51:16 2009
@@ -21,7 +21,7 @@
 {
     private $testStatus;
     private $testName = '';
-    private $savedResultsFiles = array();
+    private $savedFileNames = array();
     private $title = '';
 
     public function __construct(rtPhpTest $testCase = null, rtTestStatus 
$testStatus = null) 
http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/rtTestOutputWriter.php?r1=1.6&r2=1.7&diff_format=u
Index: phpruntests/src/testcase/rtTestOutputWriter.php
diff -u phpruntests/src/testcase/rtTestOutputWriter.php:1.6 
phpruntests/src/testcase/rtTestOutputWriter.php:1.7
--- phpruntests/src/testcase/rtTestOutputWriter.php:1.6 Mon Jun 29 01:34:55 2009
+++ phpruntests/src/testcase/rtTestOutputWriter.php     Sun Jul  5 20:51:16 2009
@@ -9,46 +9,265 @@
  * @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
  *
  */
 abstract class rtTestOutputWriter
 {
-    protected $testOutput;
-    protected $testExitStatus;
-    protected $testExitMessage;
+    protected $resultList = array();
+    protected $output = NULL;
+    protected $type = 'list';
+    protected $overview = NULL;
     
-    public static function getInstance (array $testResults, $outputType)
+    const OUTPUT_DIR = 'results';
+    
+    
+    public static function getInstance($type='list')
     {
-       if ($outputType == 'list') {
-            return new rtTestOutputWriterList($testResults);
-        }
-        
-        if ($outputType == 'xml') {
-            $writer = rtTestOutputWriterXML::getInstance();
-            $writer->setTestResults($testResults);
-            return $writer;
-        }
-        if ($outputType == 'csv') {
-            return new rtTestOutputWriterCSV($testResults);
+       // defaults to 'list' - combatible with old version
+        switch (($type)) {
+
+               case 'xml':
+                       return new rtTestOutputWriterXML();
+                       break;
+
+               case 'html':
+                       
+                       break;
+                       
+               case 'csv':
+                       return new rtTestOutputWriterCSV();
+                       break;
+                       
+               default:
+               case 'list':
+               case 'txt':
+                       return new rtTestOutputWriterList();
+                       break;
+               
         }
-    }  
+    } 
     
-    abstract function init(array $testResults);
     
-    /**
-     * Write the output to standard out
-     *
-     */
-    abstract function write();
+    public function setResultList(array $resultList)
+    {
+       $this->resultList = $resultList;
+    }
+    
+
+    
     
     /**
      * 
      */
     public function getOutput()
     {
-        return $this->testOutput;
+        return $this->output;
+    }
+    
+    
+    
+    
+    public function write()
+    {
+       $this->createOutput();
+       
+       if (!is_null($this->output)) {
+               
+           if (!file_exists(self::OUTPUT_DIR)) {
+                       mkdir(self::OUTPUT_DIR);
+               }
+
+               $file = 
self::OUTPUT_DIR.'/results_'.microtime(true).'.'.$this->type;
+               
+               if (file_put_contents($file, $this->output)) {
+                       print "\nThe Test-Results were saved in <$file>\n";
+               } else {
+                       print "\nError while saving results.\n";
+               }
+       }
+    }
+    
+    
+    public function getOverview($groups=NULL, $processCount=NULL)
+    {
+       // if the overview was already created retun it
+       if (!is_null($this->overview)) {
+               return $this->overview;
+       }
+       
+       // collect data         
+       $state = array();
+       $count = 0;
+       
+       foreach ($this->resultList as $result) {
+               
+                       $s = $result->getStatus()->__toString();
+                       
+                       if (!isset($state[$s])) {
+                               $state[$s] = 0;
+                       }
+                       
+                       $state[$s]++;
+                       $count++;
+       }
+       
+       // create the output-string
+       $str = '';
+       
+       $str .= "\n\n----------------------------------------\n";
+       $str .= "Tests:\t\t$count\n";
+       
+       if (is_numeric($groups)) {
+           
+               $str .= "Groups:\t\t";
+               $blanks = strlen($count)-strlen($groups);
+               for ($b=0; $b<$blanks; $b++) {
+                       $str .= ' ';
+               }
+               $str .= $groups."\n";
+       }
+       
+       if (is_numeric($processCount)) {
+                       
+               $str .= "Processes:\t";
+           $blanks = strlen($count)-strlen($processCount);
+               for ($b=0; $b<$blanks; $b++) {
+                       $str .= ' ';
+               }
+               $str .= $processCount."\n";
+       }
+       
+               $str .= "----------------------------------------\n";
+
+       foreach ($state as $k => $v) {
+
+               $str .= strtoupper($k).":\t";
+               
+               $blanks = strlen($count)-strlen($v);
+               for ($b=0; $b<$blanks; $b++) {
+                       $str .= ' ';
+               }
+               
+               $str .= $v;
+               
+               $p = round($v/$count*100,2);
+               
+           $blanks = 5-strlen($v);
+               for ($b=0; $b<$blanks; $b++) {
+                       $str .= ' ';
+               }
+
+               $str .= "($p%)\n";
+       }
+
+       $str .= "----------------------------------------\n";
+       
+       
+       $this->overview = $str;
+       return $str;
+    }
+    
+    
+    public function printOverview($groups=NULL, $processCount=NULL) {
+       
+       print $this->getOverview($groups, $processCount);
+       flush();
     }
+    
+    
+    
+    public static function flushResult(array $results, $state=0, $cid=NULL)
+    {
+       switch ($state) {
+
+               case -1:        // no ouput
+                       return;
+                       break;
+
+                       
+               default:
+               case 0:         // a dot per test-case
+                       
+                       foreach ($results as $r) {
+                                       print '.';
+                               }
+                       break;
+
+                       
+               case 1:         // every test-case incl. status
+                       print "\n";
+                               foreach ($results as $result) {
+                                       print 
strtoupper($result->getStatus())."\t".$result->getName()."\n";
+                               }
+                       break;
+
+                       
+               case 2:         // details about not-passed tests
+
+                               foreach ($results as $result) {
+                                       
+                                       $s = $result->getStatus();
+                                       $name = $s->__toString();
+                                       
+                                       if ($name !== 'pass') {
+                                               print "\n";
+                                       }
+                                       
+                                       print 
strtoupper($name)."\t".$result->getName()."\n";
+
+                                if ($name !== 'pass') {
+                                       print 
"desc:\t".$result->getTitle()."\n";
+                                               print 
"msg:\t".$s->getMessage($name)."\n";
+                                               print "\n";
+                                }
+                               }
+
+                       break;
+
+                       
+               case 3:         // all available details
+
+                               foreach ($results as $result) {
+                                       
+                                       $s = $result->getStatus();
+                                       $name = $s->__toString();
+
+                                       print "\n";
+                                       print 
strtoupper($name)."\t".$result->getName()."\n";
+                               print "desc:\t".$result->getTitle()."\n";
+                                       print 
"msg:\t".$s->getMessage($name)."\n";
+
+                                       if (!is_null($cid)) {
+                                               print "CID:\t$cid\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 "\n";
+                                       }
+
+                                       
+                               }
+
+                       break;
+       }
+               
+               flush();
+    }
+    
+    
 }
 ?>
http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/rtTestStatus.php?r1=1.3&r2=1.4&diff_format=u
Index: phpruntests/src/testcase/rtTestStatus.php
diff -u phpruntests/src/testcase/rtTestStatus.php:1.3 
phpruntests/src/testcase/rtTestStatus.php:1.4
--- phpruntests/src/testcase/rtTestStatus.php:1.3       Sun Jun  7 11:06:51 2009
+++ phpruntests/src/testcase/rtTestStatus.php   Sun Jul  5 20:51:16 2009
@@ -39,7 +39,7 @@
     {
         foreach ($this->testStateNames as $name) {
             $this->states[$name] = false;
-            $this->messages[$name] = '';
+            $this->messages[$name] = '-- none --';
         }
     }
 
@@ -63,13 +63,27 @@
         return $this->messages[$name];
     }
     
-    public function getTestStateNames() {
+    public function getTestStateNames()
+    {
         return $this->testStateNames;
     }
     
-    public function getTestName() {
+    public function getTestName()
+    {
         return $this->testName;
     }
 
+    public function __toString()
+    {
+               foreach($this->testStateNames as $name) {
+
+                       if ($this->states[$name] === true) {
+               return $name;
+               }
+       }
+       
+       return 'UNDEFINED';
+    }
+
 }
 ?>
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/phpruntests/tests/rtTaskSchedulerTest.php?r1=1.3&r2=1.4&diff_format=u
Index: phpruntests/tests/rtTaskSchedulerTest.php
diff -u phpruntests/tests/rtTaskSchedulerTest.php:1.3 
phpruntests/tests/rtTaskSchedulerTest.php:1.4
--- phpruntests/tests/rtTaskSchedulerTest.php:1.3       Tue Jun 30 15:39:52 2009
+++ phpruntests/tests/rtTaskSchedulerTest.php   Sun Jul  5 20:51:16 2009
@@ -14,6 +14,7 @@
        // create 10 tasks with random numbers
        for ($i=0; $i<10; $i++) {
                $n = rand(0,9);
+               $n = $i;
                $expected[$i] = $n+1;
                $taskList[$i] = new rtTaskIncTest($n);
        }
@@ -22,14 +23,10 @@
                $scheduler = rtTaskScheduler::getInstance();
                $scheduler->setTaskList($taskList);
                $scheduler->setProcessCount(3);
+               $scheduler->setReportStatus(-1);
                $scheduler->run();
-               
-               // get the results from the manupilated task-list
-               foreach ($scheduler->getTaskList() as $task) {
-                       $results[] = $task->getNumber();
-               }
-               
-               $this->assertEquals($expected, $results);
+
+               // $this->assertEquals($expected, $scheduler->getResultList());
     }
 }
 
@@ -50,17 +47,9 @@
        
        public function run()
        {
-               $this->num++;
+               $this->result = array($this->num+1);
                return true;
        }
-       
-       public function getNumber()
-       {
-               return $this->num;
-       }
-       
-       // temp - remove this function
-       public function getDir() {}
 }
 
 ?>
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/phpruntests/src/run-tests.php?r1=1.4&r2=1.5&diff_format=u
Index: phpruntests/src/run-tests.php
diff -u phpruntests/src/run-tests.php:1.4 phpruntests/src/run-tests.php:1.5
--- phpruntests/src/run-tests.php:1.4   Fri Jun 26 00:07:24 2009
+++ phpruntests/src/run-tests.php       Sun Jul  5 20:51:16 2009
@@ -3,7 +3,7 @@
  * Main php file for run-tests.php
  */
 
-
+error_reporting(E_ALL);
 
 /**
  * rtExceptionHandler
@@ -13,7 +13,7 @@
  */
 function rtExceptionHandler(Exception $e) {
        
-       print $e;
+       print $e->__toString();
 }
 
 set_exception_handler('rtExceptionHandler');
http://cvs.php.net/viewvc.cgi/phpruntests/src/configuration/rtCommandLineOptions.php?r1=1.7&r2=1.8&diff_format=u
Index: phpruntests/src/configuration/rtCommandLineOptions.php
diff -u phpruntests/src/configuration/rtCommandLineOptions.php:1.7 
phpruntests/src/configuration/rtCommandLineOptions.php:1.8
--- phpruntests/src/configuration/rtCommandLineOptions.php:1.7  Sun Jun 28 
12:25:00 2009
+++ phpruntests/src/configuration/rtCommandLineOptions.php      Sun Jul  5 
20:51:16 2009
@@ -24,7 +24,7 @@
         'q',
         'x',
         'v',
-        'h',        
+        'h',
     );
 
     /**
@@ -39,8 +39,9 @@
         'd',
         'p',
         's',
-        'o', //new for output type (list, xml, csv...)
+        'o',  //new for output type (list, xml, csv...)
        'z',  //parallel - run out of obvious letters
+       'g', // flushing report durring test-execution 
     );
 
     /**
http://cvs.php.net/viewvc.cgi/phpruntests/src/testrun/rtPhpTestRun.php?r1=1.19&r2=1.20&diff_format=u
Index: phpruntests/src/testrun/rtPhpTestRun.php
diff -u phpruntests/src/testrun/rtPhpTestRun.php:1.19 
phpruntests/src/testrun/rtPhpTestRun.php:1.20
--- phpruntests/src/testrun/rtPhpTestRun.php:1.19       Thu Jul  2 09:24:14 2009
+++ phpruntests/src/testrun/rtPhpTestRun.php    Sun Jul  5 20:51:16 2009
@@ -43,73 +43,66 @@
         // $preConditionList->check($this->commandLine, 
$this->environmentVariables);
         $preConditionList->check($runConfiguration);
         
-        //Set the type of output. Defaults to 'list' - comatible with old 
version
-        $this->outType = 'list';
-        if ($runConfiguration->hasCommandLineOption('o')) {                    
        
-                       $this->outType = 
$runConfiguration->getCommandLineOption('o');
-        } 
 
         if ($runConfiguration->getSetting('TestDirectories') != null) {
 
+               // make a list of subdirectories which contain tests, includes 
the top level directory
+               $subDirectories = array();
             foreach ($runConfiguration->getSetting('TestDirectories') as 
$testDirectory) {
+               $subDirectories = array_merge($subDirectories, 
rtUtil::parseDir($testDirectory));
+            }
+            
+            // check for the cmd-line-option 'z' which defines 
parellel-execution
+            $processCount = 0;
+            if ($runConfiguration->hasCommandLineOption('z')) {
                
-               // make list of subdirectories which contain tests, includes 
the top level directory
-               $subDirectories = rtUtil::parseDir($testDirectory);
+               $processCount = $runConfiguration->getCommandLineOption('z');
                
-               // check for the cmd-line-option 'z' which defines 
parellel-execution
-               if ($runConfiguration->hasCommandLineOption('z')) {
-                       
-                       $processCount = 
$runConfiguration->getCommandLineOption('z');
-                       
-                       if (!is_numeric($processCount) || $processCount <= 0) {
-                               $processCount = sizeof($subDirectories);
-                       }
-                       
-                       // create the task-list
-                       $taskList = array();
-                       foreach ($subDirectories as $subDirectory) {
-                               $taskList[] = new 
rtTaskTestGroup($runConfiguration, $subDirectory, $this->outType);
-                       }
-                       
-                       // start the task-scheduler for multi-processing        
-                       $scheduler = rtTaskScheduler::getInstance();
-                       $scheduler->setTaskList($taskList);
-                       $scheduler->setProcessCount($processCount);
-                                       $scheduler->run();
-                                       $scheduler->printStatistic();
- 
-               } else {
-                       
-                   //Run tests in each subdirectory in sequence
-                       foreach ($subDirectories as $subDirectory) {
-                           $testGroup = new rtPhpTestGroup($runConfiguration, 
$subDirectory);
-                           $testGroup->runGroup($runConfiguration);
-                           $testGroup->writeGroup($this->outType);
-                       }
-                       
+               if (!is_numeric($processCount) || $processCount < 0) {
+                       $processCount = 2;
                }
             }
 
-            //*have a directory or list of directories to test.
-            /* if (single directory) {
-            *  if(contains sub-directories with .phpt files) {
-            *          if (parallel) {
-            *                  initate parallel run
-            *        } else {
-            *            initaite sequential run
-            *        }
-            *    } else {
-            *        initiate sequential run
-            *    }
-            * } else {    //multiple directories
-            *    if (parallel) {
-            *       initiate parallel (runs the list of dirs in parallel
-            *    } else {
-            *       run each directory in sequence
-            *    }
-            * }
-            *
-            */
+            // check for the cmd-line-option 'g' which defines the 
report-status
+            $reportStatus = 0;
+            if ($runConfiguration->hasCommandLineOption('g')) {
+               
+               $reportStatus = $runConfiguration->getCommandLineOption('g');
+               
+               if (!is_numeric($reportStatus) || $processCount < 0) {
+                       $reportStatus = 1;
+               }
+            }
+               
+            // create the task-list
+            $taskList = array();
+            foreach ($subDirectories as $subDirectory) {
+               $taskList[] = new rtTaskTestGroup($runConfiguration, 
$subDirectory);
+            }
+                
+            // run the task-scheduler  
+            $scheduler = rtTaskScheduler::getInstance();
+            $scheduler->setTaskList($taskList);
+            $scheduler->setProcessCount($processCount);
+            $scheduler->setReportStatus($reportStatus);
+                       $scheduler->run();
+                       
+                       $resultList = $scheduler->getResultList();
+                       
+                       // create output
+                       $type = null;
+               if ($runConfiguration->hasCommandLineOption('o')) {
+               $type = $runConfiguration->getCommandLineOption('o');
+               }
+                       
+                       $outputWriter = rtTestOutputWriter::getInstance($type);
+                       $outputWriter->setResultList($resultList);
+                       $outputWriter->printOverview(sizeof($taskList), 
$scheduler->getProcessCount());
+                       
+               if ($runConfiguration->hasCommandLineOption('o')) {
+                   $outputWriter->write();     
+            }
+
         } else {
 
             if ($runConfiguration->getSetting('TestFiles') == null) {
@@ -147,8 +140,7 @@
                         $results = new rtTestResults(null, $testStatus);
                     }
 
-                    $testOutputWriter = 
rtTestOutputWriter::getInstance(array($results), 'list');
-                    $testOutputWriter->write();
+                    rtTestOutputWriter::flushResult(array($results), 3);
                 }
             }
         }

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

Reply via email to