zoe             Sun Jul  5 17:22:16 2009 UTC

  Modified files:              
    /phpruntests/src/testcase   rtPhpTest.php rtPhpTestFile.php 
  Log:
  rewritten parser - was failing on some sections
  
http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/rtPhpTest.php?r1=1.13&r2=1.14&diff_format=u
Index: phpruntests/src/testcase/rtPhpTest.php
diff -u phpruntests/src/testcase/rtPhpTest.php:1.13 
phpruntests/src/testcase/rtPhpTest.php:1.14
--- phpruntests/src/testcase/rtPhpTest.php:1.13 Thu Jul  2 10:22:59 2009
+++ phpruntests/src/testcase/rtPhpTest.php      Sun Jul  5 17:22:15 2009
@@ -40,30 +40,44 @@
      */
     public function parse()
     {
-        for ($i=0; $i<count($this->contents); $i++) {
-            //Create an array of section objects
-            if ($this->isSectionKey($this->contents[$i])) {
-                $sectionKey = $this->contents[$i];
-
-                $tempArray = array();
-                for ($j=$i+1; $j<count($this->contents); $j++) {
-                     
-                    if ($this->isSectionKey($this->contents[$j]) || 
stripos($this->contents[$j], "===done===") !== false) {
-                        if(stripos($this->contents[$j], "===done===") !== 
false) {
-                            $tempArray[] = trim($this->contents[$j]);
+        $lastSection = end($this->sectionHeadings);
+
+        foreach($this->sectionHeadings as $keyNumber => $sectionKey) {
+            if($keyNumber < count($this->sectionHeadings) - 1) {
+                $nextKey = $this->sectionHeadings[$keyNumber + 1];
+            }
+            $tempArray=array();
+            foreach($this->contents as $lineNumber => $line) {
+                if($line == "--".$sectionKey."--") {
+                //Found the beginning of the section
+                
+                    for($contentsLine=$lineNumber + 1; 
$contentsLine<count($this->contents); $contentsLine ++) {
+                         
+                        if( ($this->contents[$contentsLine] == 
"--".$nextKey."--") || ($contentsLine == count($this->contents))) {
+                        //Found the end of the section OR the end of the test
+                            $lineNumber --;
+                            $sectionContents = array();
+                            foreach($tempArray as $line) {
+                            //Check for a ===DONE== 
+                                $sectionContents[] = $line;
+                                if(stripos($line, "===done===") !== false) {
+                                    break;
+                                }
+                            }
+                            $testSection = rtSection::getInstance($sectionKey, 
$sectionContents);
+                            $this->sections[$sectionKey] = $testSection;
+                            break;
+                        } else {
+                            $tempArray[] = $this->contents[$contentsLine];
                         }
-                        $testSection = rtSection::getInstance($sectionKey, 
$tempArray);
-                        $this->sections[$sectionKey] = $testSection;
-                        break;
                     }
-                    $tempArray[] = $this->contents[$j];
                 }
             }
         }
+         
+        $testSection = rtSection::getInstance($lastSection, $tempArray);
+        $this->sections[$lastSection] = $testSection;
 
-        $testSection = rtSection::getInstance($sectionKey, $tempArray);
-        $this->sections[$sectionKey] = $testSection;
-        
 
         //Identify the file and expect section types
         $this->fileSection = $this->setFileSection();
@@ -71,23 +85,23 @@
 
         $this->fileSection->setExecutableFileName($this->getName());
     }
-    
+
 
     /**
      * Initialises the configuration for this test. Uses the configuration 
sections from teh test case
-     * 
+     *
      * @param rtRunTEstsConfiuration $runConfiguration
-     * 
+     *
      */
     public function init(rtRuntestsConfiguration $runConfiguration)
     {
         $this->testConfiguration = new rtTestConfiguration($runConfiguration, 
$this->sections, $this->sectionHeadings, $this->fileSection);
     }
-    
+
 
     /**
      * Executes the test case
-     * 
+     *
      * @param rtRunTEstsConfiuration $runConfiguration
      */
     public function executeTest(rtRuntestsConfiguration $runConfiguration)
@@ -119,7 +133,7 @@
 
     /**
      * Test the output against the expect section
-     * 
+     *
      */
     public function compareOutput()
     {
@@ -132,10 +146,10 @@
         }
     }
 
-    
+
     /**
      * Test the expected headers against actual headers. Only relevant for CGI 
tests.
-     * 
+     *
      */
     public function compareHeaders()
     {
@@ -148,10 +162,10 @@
         }
     }
 
-    
+
     /**
      * Identify a section heading
-     * 
+     *
      */
     private function isSectionKey($line)
     {
@@ -180,7 +194,7 @@
         }
     }
 
-    
+
     /**
      * Sets the test's expect section
      */
@@ -223,9 +237,9 @@
     {
         return $this->sections[$sectionKey];
     }
-    
+
     /*
-     * Return the object containing all test status 
+     * Return the object containing all test status
      */
     public function getStatus()
     {
http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/rtPhpTestFile.php?r1=1.6&r2=1.7&diff_format=u
Index: phpruntests/src/testcase/rtPhpTestFile.php
diff -u phpruntests/src/testcase/rtPhpTestFile.php:1.6 
phpruntests/src/testcase/rtPhpTestFile.php:1.7
--- phpruntests/src/testcase/rtPhpTestFile.php:1.6      Wed Jul  1 20:16:12 2009
+++ phpruntests/src/testcase/rtPhpTestFile.php  Sun Jul  5 17:22:15 2009
@@ -55,7 +55,7 @@
                     if($i< count($this->testContents) - 1) {
                         if (!preg_match("/--([A-Z]+(_[A-Z]+|))--/", 
$this->testContents[$i+1])) {
                             $this->sectionHeadings[] = $matches[1];
-                            $tempArray[] = $matches[1];
+                            $tempArray[] = "--".$matches[1]."--";
                         }
                     }
                 } else {



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

Reply via email to