]> granicus.if.org Git - php/commitdiff
Added %r section
authorZoe Slattery <zoe@php.net>
Tue, 3 Mar 2009 10:54:16 +0000 (10:54 +0000)
committerZoe Slattery <zoe@php.net>
Tue, 3 Mar 2009 10:54:16 +0000 (10:54 +0000)
run-tests.php

index 993065ef5d48462a27e3d24535ca75b23ed7d8fe..bc4a50deacff9a1fa9a07f81105dad1ce5a51b8b 100755 (executable)
@@ -1738,7 +1738,32 @@ COMMAND $cmd
                $wanted_re = preg_replace('/\r\n/', "\n", $wanted);
 
                if (isset($section_text['EXPECTF'])) {
-                       $wanted_re = preg_quote($wanted_re, '/');
+                       
+                // do preg_quote, but miss out any %r delimited sections
+                $temp = "";
+                $r = "%r";
+                $startOffset = 0;
+                $length = strlen($wanted_re);
+                while($startOffset < $length) {
+                  $start = strpos($wanted_re, $r, $startOffset);
+                  if ($start !== false) {
+                    // we have found a start tag
+                    $end = strpos($wanted_re, $r, $start+2);
+                    if ($end === false) {
+                      // unbalanced tag, ignore it.
+                      $end = $start = $length;
+                    }
+                  } else {
+                    // no more %r sections
+                    $start = $end = $length;
+                  }
+                  // quote a non re portion of the string
+                  $temp = $temp . preg_quote(substr($wanted_re, $startOffset, ($start - $startOffset)),  '/');
+                  // add the re unquoted.
+                  $temp = $temp . substr($wanted_re, $start+2, ($end - $start-2));
+                  $startOffset = $end + 2;
+                }
+                $wanted_re = $temp;
                        $wanted_re = str_replace(
                                array('%binary_string_optional%'),
                                version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? 'string' : 'binary string',