From f3e1a187400ff577ec5cae9d392b4937ea26fd77 Mon Sep 17 00:00:00 2001 From: chinpei215 Date: Thu, 31 Jul 2014 05:49:23 +0900 Subject: [PATCH] Fix a fatal error occurs in combination with a scaffold error. --- .../Test/Case/Controller/ScaffoldTest.php | 73 ++++++++++++++++++- lib/Cake/View/Errors/scaffold_error.ctp | 6 +- 2 files changed, 76 insertions(+), 3 deletions(-) diff --git a/lib/Cake/Test/Case/Controller/ScaffoldTest.php b/lib/Cake/Test/Case/Controller/ScaffoldTest.php index 88ec9cea8..fc512c5e5 100644 --- a/lib/Cake/Test/Case/Controller/ScaffoldTest.php +++ b/lib/Cake/Test/Case/Controller/ScaffoldTest.php @@ -63,7 +63,7 @@ class ScaffoldMockControllerWithFields extends Controller { /** * function beforeScaffold * - * @param string method + * @param string $method Method name. * @return bool true */ public function beforeScaffold($method) { @@ -73,6 +73,39 @@ class ScaffoldMockControllerWithFields extends Controller { } +/** + * ScaffoldMockControllerWithError class + * + * @package Cake.Test.Case.Controller + */ +class ScaffoldMockControllerWithError extends Controller { + +/** + * name property + * + * @var string + */ + public $name = 'ScaffoldMock'; + +/** + * scaffold property + * + * @var mixed + */ + public $scaffold; + +/** + * function beforeScaffold + * + * @param string $method Method name. + * @return bool false + */ + public function beforeScaffold($method) { + return false; + } + +} + /** * TestScaffoldMock class * @@ -83,7 +116,7 @@ class TestScaffoldMock extends Scaffold { /** * Overload _scaffold * - * @param CakeRequest $request + * @param CakeRequest $request Request object for scaffolding * @return void */ protected function _scaffold(CakeRequest $request) { @@ -344,4 +377,40 @@ class ScaffoldTest extends CakeTestCase { $this->assertNotRegExp('/textarea name="data\[ScaffoldMock\]\[body\]" cols="30" rows="6" id="ScaffoldMockBody"/', $result); } +/** + * test in case of scaffold error + * + * @return void + */ + public function testScaffoldError() { + $request = new CakeRequest(null, false); + $this->Controller = new ScaffoldMockControllerWithError($request); + $this->Controller->response = $this->getMock('CakeResponse', array('_sendHeader')); + + $params = array( + 'plugin' => null, + 'pass' => array(1), + 'form' => array(), + 'named' => array(), + 'url' => array('url' => 'scaffold_mock/edit'), + 'controller' => 'scaffold_mock', + 'action' => 'edit', + ); + $this->Controller->request->base = ''; + $this->Controller->request->webroot = '/'; + $this->Controller->request->here = '/scaffold_mock/edit'; + $this->Controller->request->addParams($params); + + //set router. + Router::reload(); + Router::setRequestInfo($this->Controller->request); + + $this->Controller->constructClasses(); + ob_start(); + new Scaffold($this->Controller, $this->Controller->request); + $this->Controller->response->send(); + $result = ob_get_clean(); + + $this->assertRegExp('/Scaffold Error/', $result); + } } diff --git a/lib/Cake/View/Errors/scaffold_error.ctp b/lib/Cake/View/Errors/scaffold_error.ctp index ad4208fc9..ce1eea8e6 100644 --- a/lib/Cake/View/Errors/scaffold_error.ctp +++ b/lib/Cake/View/Errors/scaffold_error.ctp @@ -31,4 +31,8 @@ function _scaffoldError() {
-element('exception_stack_trace'); ?> +element('exception_stack_trace'); +} +?>