Merge pull request #4122 from chinpei215/master-scaffold-error-fix

Fix a fatal error occurs in combination with a scaffold error.
This commit is contained in:
Mark Story 2014-07-31 10:44:33 -04:00
commit a6caf28ea6
2 changed files with 76 additions and 3 deletions

View file

@ -63,7 +63,7 @@ class ScaffoldMockControllerWithFields extends Controller {
/** /**
* function beforeScaffold * function beforeScaffold
* *
* @param string method * @param string $method Method name.
* @return bool true * @return bool true
*/ */
public function beforeScaffold($method) { 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 * TestScaffoldMock class
* *
@ -83,7 +116,7 @@ class TestScaffoldMock extends Scaffold {
/** /**
* Overload _scaffold * Overload _scaffold
* *
* @param CakeRequest $request * @param CakeRequest $request Request object for scaffolding
* @return void * @return void
*/ */
protected function _scaffold(CakeRequest $request) { 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); $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);
}
} }

View file

@ -31,4 +31,8 @@ function _scaffoldError() {<br />
</pre> </pre>
<?php echo $this->element('exception_stack_trace'); ?> <?php
if (isset($error) && $error instanceof Exception) {
echo $this->element('exception_stack_trace');
}
?>