zoe Sun Jul 5 22:07:00 2009 UTC
Modified files:
/phpruntests/src/testcase rtPhpTest.php rtPhpTestFile.php
Log:
more work on the parser
http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/rtPhpTest.php?r1=1.14&r2=1.15&diff_format=u
Index: phpruntests/src/testcase/rtPhpTest.php
diff -u phpruntests/src/testcase/rtPhpTest.php:1.14
phpruntests/src/testcase/rtPhpTest.php:1.15
--- phpruntests/src/testcase/rtPhpTest.php:1.14 Sun Jul 5 17:22:15 2009
+++ phpruntests/src/testcase/rtPhpTest.php Sun Jul 5 22:07:00 2009
@@ -41,35 +41,35 @@
public function parse()
{
$lastSection = end($this->sectionHeadings);
+ $start=0;
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."--") {
+ for($index=$start; $index<count($this->contents); $index++)
+ if($this->contents[$index] == "--".$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))) {
+
+ for($contentsLine=$index + 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);
+ $start = $contentsLine - 1;
+ if($this->isFileSection($sectionKey)) {
+ $tempArray = $this->removeDone($tempArray);
+ }
+
+ if(count($tempArray) > 0) {
+ $testSection = rtSection::getInstance($sectionKey,
$tempArray);
$this->sections[$sectionKey] = $testSection;
- break;
- } else {
- $tempArray[] = $this->contents[$contentsLine];
}
+ break;
+ } else {
+ $tempArray[] = $this->contents[$contentsLine];
}
}
}
@@ -84,6 +84,7 @@
$this->expectSection = $this->setExpectSection();
$this->fileSection->setExecutableFileName($this->getName());
+
}
@@ -164,18 +165,33 @@
/**
- * Identify a section heading
+ * Identify a FILE section
*
*/
- private function isSectionKey($line)
+ private function isFileSection($key)
{
- if (in_array($line, $this->sectionHeadings)) {
+ if (strpos($key, "FILE") !== false) {
return true;
}
return false;
}
+ /*
+ * Strip the lines after ===DONE=== from the file section of a test
+ */
+ private function removeDone($array) {
+ $result = array();
+ foreach($array as $line) {
+ $result[] = $line;
+ if(stripos($line, "===done===") !== false) {
+ break;
+ }
+ }
+ return $result;
+ }
+
+
/**
* Set the test's file section
*/
http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/rtPhpTestFile.php?r1=1.7&r2=1.8&diff_format=u
Index: phpruntests/src/testcase/rtPhpTestFile.php
diff -u phpruntests/src/testcase/rtPhpTestFile.php:1.7
phpruntests/src/testcase/rtPhpTestFile.php:1.8
--- phpruntests/src/testcase/rtPhpTestFile.php:1.7 Sun Jul 5 17:22:15 2009
+++ phpruntests/src/testcase/rtPhpTestFile.php Sun Jul 5 22:07:00 2009
@@ -44,32 +44,21 @@
public function normaliseLineEndings()
{
- $tempArray = array();
for ($i=0; $i<count($this->testContents); $i++) {
//This is not nice but there are a huge number of tests with
random spacs at the end of the section header
- //and empty sections.
if (preg_match("/^\s*--([A-Z]+(_[A-Z]+|))--/",
$this->testContents[$i], $matches)) {
- //look ahead to next section unless this is the last test
section.
- //if the EXPECT section is empty (missing) it will be
caught by preconditions.
- //If the next line is also a section heading than skip
adding it to the test case or headings.
- if($i< count($this->testContents) - 1) {
- if (!preg_match("/--([A-Z]+(_[A-Z]+|))--/",
$this->testContents[$i+1])) {
- $this->sectionHeadings[] = $matches[1];
- $tempArray[] = "--".$matches[1]."--";
- }
- }
+ $this->sectionHeadings[] = $matches[1];
+ $this->testContents[$i] = '--' . $matches[1] . '--';
} else {
- $tempArray[] = rtrim($this->testContents[$i],
$this->carriageReturn.$this->newLine);
+ $this->testContents[$i] = rtrim($this->testContents[$i],
$this->carriageReturn.$this->newLine);
}
}
- $this->testContents = $tempArray;
-
}
public function arePreConditionsMet()
{
foreach ($this->preConditions as $preCondition) {
- $condition = new $preCondition;
+ $condition = new $preCondition;
if (!$condition->isMet($this->sectionHeadings)) {
$this->testExitMessage = $condition->getMessage();
return false;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php