Browse Source

ZF-9018: Zend_Reflection_Method::getBody() drops closing curly brace of method content

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@24860 44c647ce-9c0f-0410-b52a-842ac1e357ba
adamlundrigan 13 years ago
parent
commit
bc02562bf2

+ 1 - 1
library/Zend/Reflection/Method.php

@@ -163,6 +163,6 @@ class Zend_Reflection_Method extends ReflectionMethod
         }
 
         // just in case we had code on the bracket lines
-        return rtrim(ltrim(implode("\n", $lines), '{'), '}');
+        return implode("\n", $lines);
     }
 }

+ 35 - 0
tests/Zend/Reflection/MethodTest.php

@@ -26,6 +26,11 @@
 require_once 'Zend/Reflection/Method.php';
 
 /**
+ * @see ZF-9018
+ */
+require_once dirname(__FILE__) . '/_files/ZF9018TestClass.php';
+
+/**
  * @category   Zend
  * @package    Zend_Reflection
  * @subpackage UnitTests
@@ -80,6 +85,36 @@ class Zend_Reflection_MethodTest extends PHPUnit_Framework_TestCase
         $this->assertEquals($body, $reflectionMethod->getBody());
     }
 
+    /**
+     * @group ZF-9018
+     * @group ZF-9501
+     */
+    public function testGetBodyReturnsCorrectBodyWhenContentEndsWithClosingCurlyBrace()
+    {
+        $body = '        if ( true ) {
+            echo "True";
+        } else {
+            echo "False";
+        }';
+        $reflectionMethod = new Zend_Reflection_Method('ZF9018TestClass', 'doSomething');
+        $this->assertEquals($body, $reflectionMethod->getBody());
+    }
+
+    /**
+     * @group ZF-9018
+     * @group ZF-9501
+     */
+    public function testGetBodyReturnsCorrectBodyWhenMethodWithInlineOpenBraceHasBodyWhichEndsWithClosingCurlyBrace()
+    {
+        $body = '        if ( true ) {
+            echo "True";
+        } else {
+            echo "False";
+        }';
+        $reflectionMethod = new Zend_Reflection_Method('ZF9018TestClass', 'doSomethingOpenBraceInline');
+        $this->assertEquals($body, $reflectionMethod->getBody());
+    }
+
     public function testGetContentsReturnsCorrectContent()
     {
         $reflectionMethod = new Zend_Reflection_Method('Zend_Reflection_TestSampleClass5', 'doSomething');

+ 21 - 0
tests/Zend/Reflection/_files/ZF9018TestClass.php

@@ -0,0 +1,21 @@
+<?php
+
+class ZF9018TestClass
+{
+    public function doSomething($var)
+    {
+        if ( true ) {
+            echo "True";
+        } else {
+            echo "False";
+        }
+    }
+
+    public function doSomethingOpenBraceInline($var) {
+        if ( true ) {
+            echo "True";
+        } else {
+            echo "False";
+        }
+    }
+}