Browse Source

expand regex and testcases

Rob Bast 6 years ago
parent
commit
25e3f6d4b9

+ 1 - 1
src/Composer/Autoload/ClassMapGenerator.php

@@ -162,7 +162,7 @@ class ClassMapGenerator
         }
 
         // strip heredocs/nowdocs
-        $contents = preg_replace('{<<<\s*([\'"]?)(\w+)\\1(?:\r\n|\n|\r)(?:.*?)(?:\r\n|\n|\r|\s*)\\2(?=\r\n|\n|\r|\s|;)}s', 'null', $contents);
+        $contents = preg_replace('{<<<[ \t]*([\'"]?)(\w+)\\1(?:\r\n|\n|\r)(?:.*?)(?:\s+)\\2(?=\s+|[;,.)])}s', 'null', $contents);
         // strip strings
         $contents = preg_replace('{"[^"\\\\]*+(\\\\.[^"\\\\]*+)*+"|\'[^\'\\\\]*+(\\\\.[^\'\\\\]*+)*+\'}s', 'null', $contents);
         // strip leading non-php code if needed

+ 59 - 26
tests/Composer/Test/Autoload/Fixtures/classmap/StripNoise.php

@@ -7,48 +7,81 @@ namespace Foo;
  */
 class StripNoise
 {
-    public function test()
+    public function test_heredoc()
     {
-        return <<<A
-class Fail2
+        return <<<HEREDOC
+class FailHeredocBasic
 {
-
 }
-A
-. <<<  AB
-class Fail3
+HEREDOC . <<<  WHITESPACE
+class FailHeredocWhitespace
 {
-
 }
-AB
-. <<<'TEST'
-class Fail4
+WHITESPACE . <<<"DOUBLEQUOTES"
+class FailHeredocDoubleQuotes
 {
-
 }
-TEST
-. <<< 'ANOTHER'
-class Fail5
+DOUBLEQUOTES . <<<	"DOUBLEQUOTESTABBED"
+class FailHeredocDoubleQuotesTabbed
 {
+}
+DOUBLEQUOTESTABBED . <<<HEREDOCPHP73
+  class FailHeredocPHP73
+  {
+  }
+  HEREDOCPHP73;
+    }
 
+    public function test_nowdoc()
+    {
+        return <<<'NOWDOC'
+class FailNowdocBasic
+{
 }
-ANOTHER
-. <<<	"ONEMORE"
-class Fail6
+NOWDOC . <<<  'WHITESPACE'
+class FailNowdocWhitespace
+{
+}
+WHITESPACE . <<<	'NOWDOCTABBED'
+class FailNowdocTabbed
 {
-
 }
-ONEMORE
-. <<<PHP73
-  class Fail7
+NOWDOCTABBED . <<<'NOWDOCPHP73'
+  class FailNowdocPHP73
   {
-
   }
-  PHP73;
+  NOWDOCPHP73;
+    }
+
+    public function test_followed_by_parentheses()
+    {
+        return array(<<<PARENTHESES
+            class FailParentheses
+            {
+            }
+            PARENTHESES);
+    }
+
+    public function test_followed_by_comma()
+    {
+        return array(1, 2, <<<COMMA
+            class FailComma
+            {
+            }
+            COMMA, 3, 4);
+    }
+
+    public function test_followed_by_period()
+    {
+        return <<<PERIOD
+            class FailPeriod
+            {
+            }
+            PERIOD.'?>';
     }
 
-    public function test2()
+    public function test_simple_string()
     {
-        $class = 'class Fail4 {}';
+        return 'class FailSimpleString {}';
     }
 }