Why didn't you merge this to all branches? The run-test.php has so far been same in all of them. Can't really do regression testing if you change how tests are run for one branch..:)

--Jani

On 12/16/2009 01:16 PM, Dmitry Stogov wrote:
dmitry                                   Wed, 16 Dec 2009 11:16:03 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=292196

Log:
Fixed test engine to support non utf-8 tests

Changed paths:
     U   php/php-src/trunk/run-tests.php

Modified: php/php-src/trunk/run-tests.php
===================================================================
--- php/php-src/trunk/run-tests.php     2009-12-16 11:15:22 UTC (rev 292195)
+++ php/php-src/trunk/run-tests.php     2009-12-16 11:16:03 UTC (rev 292196)
@@ -1130,6 +1130,17 @@
        }
  }

+function binary_section($section) {
+       return ($section == 'FILE' ||
+               $section == 'FILEEOF' ||
+                       $section == 'EXPECT' ||
+                       $section == 'EXPECTF' ||
+                       $section == 'EXPECTREGEX' ||
+                       $section == 'EXPECTHEADERS' ||
+                       $section == 'SKIPIF' ||
+                       $section == 'CLEAN');
+}
+
  //
  //  Run an individual test case.
  //
@@ -1159,7 +1170,7 @@
        // Load the sections of the test file.
        $section_text = array('TEST' =>  '');

-       $fp = fopen($file, "rt") or error("Cannot open test file: $file");
+       $fp = fopen($file, "rb") or error("Cannot open test file: $file");

        $borked = false;
        $bork_info = '';
@@ -1187,28 +1198,41 @@
        while (!feof($fp)) {
                $line = fgets($fp);

+               if ($line === false) {
+                       break;
+               }
+
                // Match the beginning of a section.
-               if (preg_match('/^--([_A-Z]+)--/', $line, $r)) {
-                       $section = $r[1];
+               if (preg_match(b'/^--([_A-Z]+)--/', $line, $r)) {
+                       $section = (unicode)$r[1];

                        if (isset($section_text[$section])) {
                                $bork_info = "duplicated $section section";
                                $borked    = true;
                        }

-                       $section_text[$section] = '';
+                       $section_text[$section] = binary_section($section) ? 
b'' : '';
                        $secfile = $section == 'FILE' || $section == 'FILEEOF' 
|| $section == 'FILE_EXTERNAL';
                        $secdone = false;
                        continue;
                }

+               if (!binary_section($section)) {
+                       $line = unicode_decode($line, "utf-8");
+                       if ($line == false) {
+                               $bork_info = "cannot read test";
+                               $borked = true;
+                               break;
+                       }
+               }
+
                // Add to the section text.
                if (!$secdone) {
                        $section_text[$section] .= $line;
                }

                // End of actual test?
-               if ($secfile&&  preg_match('/^===DONE===\s*$/', $line)) {
+               if ($secfile&&  preg_match(b'/^===DONE===\s*$/', $line)) {
                        $secdone = true;
                }
        }
@@ -1233,7 +1257,7 @@
                        }

                        if (@count($section_text['FILEEOF']) == 1) {
-                               $section_text['FILE'] = 
preg_replace("/[\r\n]+$/", '', $section_text['FILEEOF']);
+                               $section_text['FILE'] = 
preg_replace(b"/[\r\n]+$/", b'', $section_text['FILEEOF']);
                                unset($section_text['FILEEOF']);
                        }

@@ -1776,7 +1800,9 @@
                                // quote a non re portion of the string
                                $temp = $temp . preg_quote(substr($wanted_re, 
$startOffset, ($start - $startOffset)),  b'/');
                                // add the re unquoted.
-                               $temp = $temp . b'(' . substr($wanted_re, 
$start+2, ($end - $start-2)). b')';
+                               if ($end>  $start) {
+                                       $temp = $temp . b'(' . 
substr($wanted_re, $start+2, ($end - $start-2)). b')';
+                               }
                                $startOffset = $end + 2;
                        }
                        $wanted_re = $temp;
@@ -1956,7 +1982,7 @@
  function comp_line($l1, $l2, $is_reg)
  {
        if ($is_reg) {
-               return preg_match((binary) "/^$l1$/s", (binary) $l2);
+               return preg_match(b'/^'. (binary) $l1 . b'$/s', (binary) $l2);
        } else {
                return !strcmp((binary) $l1, (binary) $l2);
        }




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

Reply via email to