diff --git a/build.xml b/build.xml index fca6ec4ae..9759aec9b 100644 --- a/build.xml +++ b/build.xml @@ -197,7 +197,7 @@ - + @@ -208,7 +208,7 @@ - - + + diff --git a/lib/Cake/Console/Command/ConsoleShell.php b/lib/Cake/Console/Command/ConsoleShell.php index 66d286c03..6ae1c29d1 100644 --- a/lib/Cake/Console/Command/ConsoleShell.php +++ b/lib/Cake/Console/Command/ConsoleShell.php @@ -238,7 +238,9 @@ class ConsoleShell extends AppShell { if ($this->_isValidModel($modelToCheck)) { $findCommand = "\$data = \$this->$command;"; + //@codingStandardsIgnoreStart @eval($findCommand); + //@codingStandardsIgnoreEnd if (is_array($data)) { foreach ($data as $idx => $results) { @@ -294,7 +296,9 @@ class ConsoleShell extends AppShell { list($foo, $data) = explode("->save", $command); $data = preg_replace('/^\(*(array)?\(*(.+?)\)*$/i', '\\2', $data); $saveCommand = "\$this->{$modelToSave}->save(array('{$modelToSave}' => array({$data})));"; + //@codingStandardsIgnoreStart @eval($saveCommand); + //@codingStandardsIgnoreEnd $this->out(__d('cake_console', 'Saved record for %s', $modelToSave)); } break; @@ -304,7 +308,9 @@ class ConsoleShell extends AppShell { if ($this->_isValidModel($modelToCheck)) { // Get the column info for this model $fieldsCommand = "\$data = \$this->{$modelToCheck}->getColumnTypes();"; + //@codingStandardsIgnoreStart @eval($fieldsCommand); + //@codingStandardsIgnoreEnd if (is_array($data)) { foreach ($data as $field => $type) { @@ -325,8 +331,10 @@ class ConsoleShell extends AppShell { case preg_match("/^routes\s+show/i", $command, $tmp): $this->out(print_r(Hash::combine(Router::$routes, '{n}.template', '{n}.defaults'), true)); break; - case preg_match("/^route\s+(\(.*\))$/i", $command, $tmp): + case (preg_match("/^route\s+(\(.*\))$/i", $command, $tmp) == true): + //@codingStandardsIgnoreStart if ($url = eval('return array' . $tmp[1] . ';')) { + //@codingStandardsIgnoreEnd $this->out(Router::url($url)); } break; @@ -362,7 +370,9 @@ class ConsoleShell extends AppShell { Router::reload(); extract(Router::getNamedExpressions()); + //@codingStandardsIgnoreStart if (!@include APP . 'Config' . DS . 'routes.php') { + //@codingStandardsIgnoreEnd return false; } CakePlugin::routes(); diff --git a/lib/Cake/Console/Command/Task/TemplateTask.php b/lib/Cake/Console/Command/Task/TemplateTask.php index 0a0366c5c..2ba14caec 100644 --- a/lib/Cake/Console/Command/Task/TemplateTask.php +++ b/lib/Cake/Console/Command/Task/TemplateTask.php @@ -78,7 +78,6 @@ class TemplateTask extends AppShell { $paths[] = $core; - // TEMPORARY TODO remove when all paths are DS terminated foreach ($paths as $i => $path) { $paths[$i] = rtrim($path, DS) . DS; } diff --git a/lib/Cake/Console/ConsoleOptionParser.php b/lib/Cake/Console/ConsoleOptionParser.php index 1983e22ce..16371165a 100644 --- a/lib/Cake/Console/ConsoleOptionParser.php +++ b/lib/Cake/Console/ConsoleOptionParser.php @@ -345,6 +345,7 @@ class ConsoleOptionParser { $arg = new ConsoleInputArgument($options); } $this->_args[$index] = $arg; + ksort($this->_args); return $this; } diff --git a/lib/Cake/Console/Shell.php b/lib/Cake/Console/Shell.php index f23004e4a..3872efae8 100644 --- a/lib/Cake/Console/Shell.php +++ b/lib/Cake/Console/Shell.php @@ -686,7 +686,9 @@ class Shell extends Object { protected function _checkUnitTest() { if (class_exists('PHPUnit_Framework_TestCase')) { return true; + //@codingStandardsIgnoreStart } elseif (@include 'PHPUnit' . DS . 'Autoload.php') { + //@codingStandardsIgnoreEnd return true; } elseif (App::import('Vendor', 'phpunit', array('file' => 'PHPUnit' . DS . 'Autoload.php'))) { return true; diff --git a/lib/Cake/Controller/Controller.php b/lib/Cake/Controller/Controller.php index 5f9b8865e..b393baffb 100644 --- a/lib/Cake/Controller/Controller.php +++ b/lib/Cake/Controller/Controller.php @@ -755,7 +755,7 @@ class Controller extends Object implements CakeEventListener { extract($status, EXTR_OVERWRITE); } $event = new CakeEvent('Controller.beforeRedirect', $this, array($url, $status, $exit)); - //TODO: Remove the following line when the events are fully migrated to the CakeEventManager + list($event->break, $event->breakOn, $event->collectReturn) = array(true, false, true); $this->getEventManager()->dispatch($event); diff --git a/lib/Cake/Error/exceptions.php b/lib/Cake/Error/exceptions.php index 3d0757106..70f24b6e1 100644 --- a/lib/Cake/Error/exceptions.php +++ b/lib/Cake/Error/exceptions.php @@ -261,9 +261,11 @@ class MissingControllerException extends CakeException { protected $_messageTemplate = 'Controller class %s could not be found.'; +//@codingStandardsIgnoreStart public function __construct($message, $code = 404) { parent::__construct($message, $code); } +//@codingStandardsIgnoreEnd } @@ -277,9 +279,11 @@ class MissingActionException extends CakeException { protected $_messageTemplate = 'Action %s::%s() could not be found.'; +//@codingStandardsIgnoreStart public function __construct($message, $code = 404) { parent::__construct($message, $code); } +//@codingStandardsIgnoreEnd } @@ -293,9 +297,11 @@ class PrivateActionException extends CakeException { protected $_messageTemplate = 'Private Action %s::%s() is not directly accessible.'; +//@codingStandardsIgnoreStart public function __construct($message, $code = 404, Exception $previous = null) { parent::__construct($message, $code, $previous); } +//@codingStandardsIgnoreEnd } @@ -609,8 +615,10 @@ class NotImplementedException extends CakeException { protected $_messageTemplate = '%s is not implemented.'; +//@codingStandardsIgnoreStart public function __construct($message, $code = 501) { parent::__construct($message, $code); } +//@codingStandardsIgnoreEnd } diff --git a/lib/Cake/I18n/Multibyte.php b/lib/Cake/I18n/Multibyte.php index f68e5f06a..84675aba9 100644 --- a/lib/Cake/I18n/Multibyte.php +++ b/lib/Cake/I18n/Multibyte.php @@ -732,7 +732,6 @@ class Multibyte { * @param string $charset charset to use for encoding. defaults to UTF-8 * @param string $newline * @return string - * @TODO: add support for 'Q'('Quoted Printable') encoding */ public static function mimeEncode($string, $charset = null, $newline = "\r\n") { if (!Multibyte::checkMultibyte($string) && strlen($string) < 75) { diff --git a/lib/Cake/Model/Behavior/TreeBehavior.php b/lib/Cake/Model/Behavior/TreeBehavior.php index 5ac714b47..7507ede6a 100644 --- a/lib/Cake/Model/Behavior/TreeBehavior.php +++ b/lib/Cake/Model/Behavior/TreeBehavior.php @@ -588,7 +588,6 @@ class TreeBehavior extends ModelBehavior { * 'parent' the values of the parent_id field will be used to populate the left and right fields. The missingParentAction * parameter only applies to "parent" mode and determines what to do if the parent field contains an id that is not present. * - * @todo Could be written to be faster, *maybe*. Ideally using a subquery and putting all the logic burden on the DB. * @param Model $Model Model instance * @param string $mode parent or tree * @param string|integer $missingParentAction 'return' to do nothing and return, 'delete' to diff --git a/lib/Cake/Model/BehaviorCollection.php b/lib/Cake/Model/BehaviorCollection.php index fff3e7d5b..56be23eac 100644 --- a/lib/Cake/Model/BehaviorCollection.php +++ b/lib/Cake/Model/BehaviorCollection.php @@ -55,7 +55,6 @@ class BehaviorCollection extends ObjectCollection implements CakeEventListener { /** * Attaches a model object and loads a list of behaviors * - * @todo Make this method a constructor instead.. * @param string $modelName * @param array $behaviors * @return void diff --git a/lib/Cake/Model/Datasource/DataSource.php b/lib/Cake/Model/Datasource/DataSource.php index af65276ce..c04e6771a 100644 --- a/lib/Cake/Model/Datasource/DataSource.php +++ b/lib/Cake/Model/Datasource/DataSource.php @@ -322,7 +322,6 @@ class DataSource extends Object { * @param Model $linkModel Instance of model to replace $__cakeForeignKey__$ * @param array $stack * @return string String of query data with placeholders replaced. - * @todo Remove and refactor $assocData, ensure uses of the method have the param removed too. */ public function insertQueryData($query, $data, $association, $assocData, Model $model, Model $linkModel, $stack) { $keys = array('{$__cakeID__$}', '{$__cakeForeignKey__$}'); diff --git a/lib/Cake/Model/Datasource/Database/Sqlite.php b/lib/Cake/Model/Datasource/Database/Sqlite.php index 83803a1c8..7a9294193 100644 --- a/lib/Cake/Model/Datasource/Database/Sqlite.php +++ b/lib/Cake/Model/Datasource/Database/Sqlite.php @@ -250,7 +250,9 @@ class Sqlite extends DboSource { $col = strtolower(str_replace(')', '', $real)); $limit = null; - @list($col, $limit) = explode('(', $col); + if (strpos($col, '(') !== false) { + list($col, $limit) = explode('(', $col); + } $standard = array( 'text', diff --git a/lib/Cake/Network/CakeResponse.php b/lib/Cake/Network/CakeResponse.php index 67bf771a7..90b3ee170 100644 --- a/lib/Cake/Network/CakeResponse.php +++ b/lib/Cake/Network/CakeResponse.php @@ -446,6 +446,8 @@ class CakeResponse { } if (strpos($this->_contentType, 'text/') === 0) { $this->header('Content-Type', "{$this->_contentType}; charset={$this->_charset}"); + } elseif ($this->_contentType === 'application/json') { + $this->header('Content-Type', "{$this->_contentType}; charset=UTF-8"); } else { $this->header('Content-Type', "{$this->_contentType}"); } diff --git a/lib/Cake/Network/Email/MailTransport.php b/lib/Cake/Network/Email/MailTransport.php index 2b849772a..a037e3418 100644 --- a/lib/Cake/Network/Email/MailTransport.php +++ b/lib/Cake/Network/Email/MailTransport.php @@ -63,9 +63,11 @@ class MailTransport extends AbstractTransport { * @return void */ protected function _mail($to, $subject, $message, $headers, $params = null) { + //@codingStandardsIgnoreStart if (!@mail($to, $subject, $message, $headers, $params)) { throw new SocketException(__d('cake_dev', 'Could not send email.')); } + //@codingStandardsIgnoreEnd } } diff --git a/lib/Cake/Network/Http/HttpSocket.php b/lib/Cake/Network/Http/HttpSocket.php index e032c3231..b3c268476 100644 --- a/lib/Cake/Network/Http/HttpSocket.php +++ b/lib/Cake/Network/Http/HttpSocket.php @@ -935,7 +935,6 @@ class HttpSocket extends CakeSocket { * * @param array $cookies Array of cookies to send with the request. * @return string Cookie header string to be sent with the request. - * @todo Refactor token escape mechanism to be configurable */ public function buildCookies($cookies) { $header = array(); @@ -951,7 +950,6 @@ class HttpSocket extends CakeSocket { * @param string $token Token to escape * @param array $chars * @return string Escaped token - * @todo Test $chars parameter */ protected function _escapeToken($token, $chars = null) { $regex = '/([' . implode('', $this->_tokenEscapeChars(true, $chars)) . '])/'; @@ -965,7 +963,6 @@ class HttpSocket extends CakeSocket { * @param boolean $hex true to get them as HEX values, false otherwise * @param array $chars * @return array Escape chars - * @todo Test $chars parameter */ protected function _tokenEscapeChars($hex = true, $chars = null) { if (!empty($chars)) { diff --git a/lib/Cake/Test/Case/BasicsTest.php b/lib/Cake/Test/Case/BasicsTest.php index 6d67fd8be..cedd4a220 100644 --- a/lib/Cake/Test/Case/BasicsTest.php +++ b/lib/Cake/Test/Case/BasicsTest.php @@ -282,7 +282,9 @@ class BasicsTest extends CakeTestCase { $result = cache('basics_test'); $this->assertEquals('simple cache write', $result); - @unlink(CACHE . 'basics_test'); + if (file_exists(CACHE . 'basics_test')) { + unlink(CACHE . 'basics_test'); + } cache('basics_test', 'expired', '+1 second'); sleep(2); @@ -603,7 +605,9 @@ class BasicsTest extends CakeTestCase { * @return void */ public function testLogError() { - @unlink(LOGS . 'error.log'); + if (file_exists(LOGS . 'error.log')) { + unlink(LOGS . 'error.log'); + } // disable stderr output for this test if (CakeLog::stream('stderr')) { diff --git a/lib/Cake/Test/Case/Cache/Engine/MemcacheEngineTest.php b/lib/Cake/Test/Case/Cache/Engine/MemcacheEngineTest.php index 54c225c72..27453d84e 100644 --- a/lib/Cake/Test/Case/Cache/Engine/MemcacheEngineTest.php +++ b/lib/Cake/Test/Case/Cache/Engine/MemcacheEngineTest.php @@ -111,9 +111,11 @@ class MemcacheEngineTest extends CakeTestCase { foreach ($servers as $server) { list($host, $port) = explode(':', $server); + //@codingStandardsIgnoreStart if (!@$Memcache->connect($host, $port)) { $available = false; } + //@codingStandardsIgnoreEnd } $this->skipIf(!$available, 'Need memcache servers at ' . implode(', ', $servers) . ' to run this test.'); diff --git a/lib/Cake/Test/Case/Console/ConsoleOptionParserTest.php b/lib/Cake/Test/Case/Console/ConsoleOptionParserTest.php index 0677b09c4..2cf265995 100644 --- a/lib/Cake/Test/Case/Console/ConsoleOptionParserTest.php +++ b/lib/Cake/Test/Case/Console/ConsoleOptionParserTest.php @@ -314,10 +314,29 @@ class ConsoleOptionParserTest extends CakeTestCase { $parser = new ConsoleOptionParser('test', false); $parser->addArgument(new ConsoleInputArgument('test')); $result = $parser->arguments(); - $this->assertEquals(1, count($result)); + $this->assertCount(1, $result); $this->assertEquals('test', $result[0]->name()); } +/** + * Test adding arguments out of order. + * + * @return void + */ + public function testAddArgumentOutOfOrder() { + $parser = new ConsoleOptionParser('test', false); + $parser->addArgument('name', array('index' => 1, 'help' => 'first argument')) + ->addArgument('bag', array('index' => 2, 'help' => 'second argument')) + ->addArgument('other', array('index' => 0, 'help' => 'Zeroth argument')); + + $result = $parser->arguments(); + $this->assertCount(3, $result); + $this->assertEquals('other', $result[0]->name()); + $this->assertEquals('name', $result[1]->name()); + $this->assertEquals('bag', $result[2]->name()); + $this->assertSame(array(0, 1, 2), array_keys($result)); + } + /** * test overwriting positional arguments. * diff --git a/lib/Cake/Test/Case/Core/ConfigureTest.php b/lib/Cake/Test/Case/Core/ConfigureTest.php index 5dd1fe0b6..e1d3c9f07 100644 --- a/lib/Cake/Test/Case/Core/ConfigureTest.php +++ b/lib/Cake/Test/Case/Core/ConfigureTest.php @@ -437,7 +437,9 @@ class ConfigureTest extends CakeTestCase { $result = file_get_contents(TMP . 'config_test.php'); $this->assertContains('assertContains('$config = ', $result); - @unlink(TMP . 'config_test.php'); + if (file_exists(TMP . 'config_test.php')) { + unlink(TMP . 'config_test.php'); + } } /** @@ -456,7 +458,9 @@ class ConfigureTest extends CakeTestCase { $this->assertContains('Error', $result); $this->assertNotContains('debug', $result); - @unlink(TMP . 'config_test.php'); + if (file_exists(TMP . 'config_test.php')) { + unlink(TMP . 'config_test.php'); + } } } diff --git a/lib/Cake/Test/Case/Error/ErrorHandlerTest.php b/lib/Cake/Test/Case/Error/ErrorHandlerTest.php index e4bd57902..4945533ff 100644 --- a/lib/Cake/Test/Case/Error/ErrorHandlerTest.php +++ b/lib/Cake/Test/Case/Error/ErrorHandlerTest.php @@ -124,7 +124,9 @@ class ErrorHandlerTest extends CakeTestCase { $this->_restoreError = true; ob_start(); + //@codingStandardsIgnoreStart @include 'invalid.file'; + //@codingStandardsIgnoreEnd $result = ob_get_clean(); $this->assertTrue(empty($result)); } @@ -138,7 +140,7 @@ class ErrorHandlerTest extends CakeTestCase { Configure::write('debug', 0); Configure::write('Error.trace', false); if (file_exists(LOGS . 'debug.log')) { - @unlink(LOGS . 'debug.log'); + unlink(LOGS . 'debug.log'); } set_error_handler('ErrorHandler::handleError'); @@ -152,7 +154,9 @@ class ErrorHandlerTest extends CakeTestCase { '/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} (Notice|Debug): Notice \(8\): Undefined variable:\s+out in \[.+ line \d+\]$/', $result[0] ); - @unlink(LOGS . 'debug.log'); + if (file_exists(LOGS . 'debug.log')) { + unlink(LOGS . 'debug.log'); + } } /** @@ -164,7 +168,7 @@ class ErrorHandlerTest extends CakeTestCase { Configure::write('debug', 0); Configure::write('Error.trace', true); if (file_exists(LOGS . 'debug.log')) { - @unlink(LOGS . 'debug.log'); + unlink(LOGS . 'debug.log'); } set_error_handler('ErrorHandler::handleError'); @@ -179,7 +183,9 @@ class ErrorHandlerTest extends CakeTestCase { ); $this->assertRegExp('/^Trace:/', $result[1]); $this->assertRegExp('/^ErrorHandlerTest\:\:testHandleErrorLoggingTrace\(\)/', $result[2]); - @unlink(LOGS . 'debug.log'); + if (file_exists(LOGS . 'debug.log')) { + unlink(LOGS . 'debug.log'); + } } /** diff --git a/lib/Cake/Test/Case/Log/CakeLogTest.php b/lib/Cake/Test/Case/Log/CakeLogTest.php index 2f3e3d3dd..5e7b0e9c4 100644 --- a/lib/Cake/Test/Case/Log/CakeLogTest.php +++ b/lib/Cake/Test/Case/Log/CakeLogTest.php @@ -150,7 +150,7 @@ class CakeLogTest extends CakeTestCase { $this->assertEquals(array('file'), $result); if (file_exists(LOGS . 'error.log')) { - @unlink(LOGS . 'error.log'); + unlink(LOGS . 'error.log'); } CakeLog::write(LOG_WARNING, 'Test warning'); $this->assertTrue(file_exists(LOGS . 'error.log')); diff --git a/lib/Cake/Test/Case/Model/ModelReadTest.php b/lib/Cake/Test/Case/Model/ModelReadTest.php index c242e3d11..abbbd13a6 100644 --- a/lib/Cake/Test/Case/Model/ModelReadTest.php +++ b/lib/Cake/Test/Case/Model/ModelReadTest.php @@ -4054,7 +4054,6 @@ class ModelReadTest extends BaseModelTest { /** * testFindAllWithConditionInChildQuery * - * @todo external conditions like this are going to need to be revisited at some point * @return void */ public function testFindAllWithConditionInChildQuery() { diff --git a/lib/Cake/Test/Case/Network/CakeResponseTest.php b/lib/Cake/Test/Case/Network/CakeResponseTest.php index 5446c0f96..b373d158f 100644 --- a/lib/Cake/Test/Case/Network/CakeResponseTest.php +++ b/lib/Cake/Test/Case/Network/CakeResponseTest.php @@ -199,7 +199,7 @@ class CakeResponseTest extends CakeTestCase { * Tests the send method and changing the content type * */ - public function testSendChangingContentYype() { + public function testSendChangingContentType() { $response = $this->getMock('CakeResponse', array('_sendHeader', '_sendContent', '_setCookies')); $response->type('mp3'); $response->body('the response body'); @@ -215,12 +215,12 @@ class CakeResponseTest extends CakeTestCase { } /** - * Tests the send method and changing the content type + * Tests the send method and changing the content type to JSON * */ - public function testSendChangingContentType() { + public function testSendChangingContentTypeJSON() { $response = $this->getMock('CakeResponse', array('_sendHeader', '_sendContent', '_setCookies')); - $response->type('mp3'); + $response->type('json'); $response->body('the response body'); $response->expects($this->once())->method('_sendContent')->with('the response body'); $response->expects($this->at(0))->method('_setCookies'); @@ -229,7 +229,7 @@ class CakeResponseTest extends CakeTestCase { $response->expects($this->at(2)) ->method('_sendHeader')->with('Content-Length', 17); $response->expects($this->at(3)) - ->method('_sendHeader')->with('Content-Type', 'audio/mpeg'); + ->method('_sendHeader')->with('Content-Type', 'application/json; charset=UTF-8'); $response->send(); } diff --git a/lib/Cake/Test/Case/Network/Http/HttpSocketTest.php b/lib/Cake/Test/Case/Network/Http/HttpSocketTest.php index 8b74d2c4a..1b507e964 100644 --- a/lib/Cake/Test/Case/Network/Http/HttpSocketTest.php +++ b/lib/Cake/Test/Case/Network/Http/HttpSocketTest.php @@ -1567,7 +1567,6 @@ class HttpSocketTest extends CakeTestCase { * testBuildCookies method * * @return void - * @todo Test more scenarios */ public function testBuildCookies() { $cookies = array( diff --git a/lib/Cake/Test/Case/Routing/RouterTest.php b/lib/Cake/Test/Case/Routing/RouterTest.php index b1be402d5..a2fef73c2 100644 --- a/lib/Cake/Test/Case/Routing/RouterTest.php +++ b/lib/Cake/Test/Case/Routing/RouterTest.php @@ -1538,7 +1538,6 @@ class RouterTest extends CakeTestCase { * test url generation with legacy (1.2) style prefix routes. * * @return void - * @todo Remove tests related to legacy style routes. * @see testUrlGenerationWithAutoPrefixes */ public function testUrlGenerationWithLegacyPrefixes() { diff --git a/lib/Cake/Test/Case/Utility/SetTest.php b/lib/Cake/Test/Case/Utility/SetTest.php index c49ec3278..a8ccfef3e 100644 --- a/lib/Cake/Test/Case/Utility/SetTest.php +++ b/lib/Cake/Test/Case/Utility/SetTest.php @@ -152,6 +152,9 @@ class SetTest extends CakeTestCase { $r = Set::merge('foo', 'bar'); $this->assertEquals(array('foo', 'bar'), $r); + $r = Set::merge(array('foo'), array(), array('bar')); + $this->assertEquals(array('foo', 'bar'), $r); + $r = Set::merge('foo', array('user' => 'bob', 'no-bar'), 'bar'); $this->assertEquals(array('foo', 'user' => 'bob', 'no-bar', 'bar'), $r); diff --git a/lib/Cake/Test/Case/Utility/XmlTest.php b/lib/Cake/Test/Case/Utility/XmlTest.php index 7108d75a7..e90217d93 100644 --- a/lib/Cake/Test/Case/Utility/XmlTest.php +++ b/lib/Cake/Test/Case/Utility/XmlTest.php @@ -177,6 +177,7 @@ class XmlTest extends CakeTestCase { array(null), array(false), array(''), + array('http://localhost/notthere.xml'), ); } diff --git a/lib/Cake/Test/Case/View/Helper/JsHelperTest.php b/lib/Cake/Test/Case/View/Helper/JsHelperTest.php index 47833e085..53b8cce97 100644 --- a/lib/Cake/Test/Case/View/Helper/JsHelperTest.php +++ b/lib/Cake/Test/Case/View/Helper/JsHelperTest.php @@ -29,7 +29,9 @@ class JsEncodingObject { protected $_title = 'Old thing'; + //@codingStandardsIgnoreStart private $__noshow = 'Never ever'; + //@codingStandardsIgnoreEnd } @@ -366,7 +368,9 @@ class JsHelperTest extends CakeTestCase { $this->assertTrue(file_exists(WWW_ROOT . $filename[1])); $contents = file_get_contents(WWW_ROOT . $filename[1]); $this->assertRegExp('/one\s=\s1;\ntwo\s=\s2;/', $contents); - @unlink(WWW_ROOT . $filename[1]); + if (file_exists(WWW_ROOT . $filename[1])) { + unlink(WWW_ROOT . $filename[1]); + } Configure::write('Cache.disable', true); $this->Js->buffer('one = 1;'); diff --git a/lib/Cake/Test/Case/View/ScaffoldViewTest.php b/lib/Cake/Test/Case/View/ScaffoldViewTest.php index a5f2d85c0..87bf9bd9a 100644 --- a/lib/Cake/Test/Case/View/ScaffoldViewTest.php +++ b/lib/Cake/Test/Case/View/ScaffoldViewTest.php @@ -279,7 +279,7 @@ class ScaffoldViewTest extends CakeTestCase { $this->assertRegExp('/

View Scaffold Mock<\/h2>/', $result); $this->assertRegExp('/
/', $result); - //TODO: add specific tests for fields. + $this->assertRegExp('/1<\/a>/', $result); //belongsTo links $this->assertRegExp('/
  • Edit Scaffold Mock<\/a>\s<\/li>/', $result); $this->assertRegExp('//', $result); - //TODO: add testing for table generation + $this->assertRegExp('/
  • New Scaffold Mock<\/a><\/li>/', $result); Configure::write('Routing.prefixes', $_backAdmin); @@ -454,7 +454,7 @@ class ScaffoldViewTest extends CakeTestCase { $this->assertRegExp('/

    Scaffold Mock<\/h2>/', $result); $this->assertRegExp('//', $result); - //TODO: add testing for table generation + $this->assertRegExp('/
  • New Scaffold Mock<\/a><\/li>/', $result); Configure::write('Routing.prefixes', $_backAdmin); diff --git a/lib/Cake/Test/Case/View/ViewTest.php b/lib/Cake/Test/Case/View/ViewTest.php index cc8713dcd..0d8b85cee 100644 --- a/lib/Cake/Test/Case/View/ViewTest.php +++ b/lib/Cake/Test/Case/View/ViewTest.php @@ -1101,7 +1101,9 @@ class ViewTest extends CakeTestCase { $this->assertRegExp('/^some cacheText/', $result); - @unlink($path); + if (file_exists($path)) { + unlink($path); + } } /** diff --git a/lib/Cake/TestSuite/CakeTestCase.php b/lib/Cake/TestSuite/CakeTestCase.php index be34a710a..585a4b6db 100644 --- a/lib/Cake/TestSuite/CakeTestCase.php +++ b/lib/Cake/TestSuite/CakeTestCase.php @@ -674,7 +674,7 @@ abstract class CakeTestCase extends PHPUnit_Framework_TestCase { } return $condition; } - // @codingStandardsIgnoreStop + // @codingStandardsIgnoreEnd /** * Mock a model, maintain fixtures and table association diff --git a/lib/Cake/TestSuite/CakeTestSuiteCommand.php b/lib/Cake/TestSuite/CakeTestSuiteCommand.php index d7ba59337..dbadb12aa 100644 --- a/lib/Cake/TestSuite/CakeTestSuiteCommand.php +++ b/lib/Cake/TestSuite/CakeTestSuiteCommand.php @@ -82,7 +82,9 @@ class CakeTestSuiteCommand extends PHPUnit_TextUI_Command { $result = $skeleton->generate(true); if (!$result['incomplete']) { + //@codingStandardsIgnoreStart eval(str_replace(array(''), '', $result['code'])); + //@codingStandardsIgnoreEnd $suite = new PHPUnit_Framework_TestSuite( $this->arguments['test'] . 'Test' ); diff --git a/lib/Cake/TestSuite/ControllerTestCase.php b/lib/Cake/TestSuite/ControllerTestCase.php index d2ef8bbe3..28412b43b 100644 --- a/lib/Cake/TestSuite/ControllerTestCase.php +++ b/lib/Cake/TestSuite/ControllerTestCase.php @@ -173,7 +173,7 @@ abstract class ControllerTestCase extends CakeTestCase { * * @var boolean */ - private $__dirtyController = false; + protected $_dirtyController = false; /** * Used to enable calling ControllerTestCase::testAction() without the testing @@ -252,7 +252,7 @@ abstract class ControllerTestCase extends CakeTestCase { $this->headers = Router::currentRoute()->response->header(); return; } - if ($this->__dirtyController) { + if ($this->_dirtyController) { $this->controller = null; } @@ -275,7 +275,7 @@ abstract class ControllerTestCase extends CakeTestCase { if (isset($this->controller->View)) { $this->view = $this->controller->View->fetch('__view_no_layout__'); } - $this->__dirtyController = true; + $this->_dirtyController = true; $this->headers = $Dispatch->response->header(); $_GET = $restore['get']; @@ -366,7 +366,7 @@ abstract class ControllerTestCase extends CakeTestCase { } $_controller->constructClasses(); - $this->__dirtyController = false; + $this->_dirtyController = false; $this->controller = $_controller; return $this->controller; diff --git a/lib/Cake/Utility/Debugger.php b/lib/Cake/Utility/Debugger.php index a43bccb2a..5abcee676 100644 --- a/lib/Cake/Utility/Debugger.php +++ b/lib/Cake/Utility/Debugger.php @@ -395,7 +395,10 @@ class Debugger { if (!file_exists($file)) { return array(); } - $data = @explode("\n", file_get_contents($file)); + $data = file_get_contents($file); + if (!empty($data) && strpos($data, "\n") !== false) { + $data = explode("\n", $data); + } if (empty($data) || !isset($data[$line])) { return; diff --git a/lib/Cake/Utility/Folder.php b/lib/Cake/Utility/Folder.php index 56402c14e..cc630759e 100644 --- a/lib/Cake/Utility/Folder.php +++ b/lib/Cake/Utility/Folder.php @@ -378,7 +378,9 @@ class Folder { } if ($recursive === false && is_dir($path)) { + //@codingStandardsIgnoreStart if (@chmod($path, intval($mode, 8))) { + //@codingStandardsIgnoreEnd $this->_messages[] = __d('cake_dev', '%s changed to %s', $path, $mode); return true; } @@ -399,7 +401,9 @@ class Folder { continue; } + //@codingStandardsIgnoreStart if (@chmod($fullpath, intval($mode, 8))) { + //@codingStandardsIgnoreEnd $this->_messages[] = __d('cake_dev', '%s changed to %s', $fullpath, $mode); } else { $this->_errors[] = __d('cake_dev', '%s NOT changed to %s', $fullpath, $mode); @@ -583,13 +587,17 @@ class Folder { foreach ($iterator as $item) { $filePath = $item->getPathname(); if ($item->isFile() || $item->isLink()) { + //@codingStandardsIgnoreStart if (@unlink($filePath)) { + //@codingStandardsIgnoreEnd $this->_messages[] = __d('cake_dev', '%s removed', $filePath); } else { $this->_errors[] = __d('cake_dev', '%s NOT removed', $filePath); } } elseif ($item->isDir() && !$item->isDot()) { + //@codingStandardsIgnoreStart if (@rmdir($filePath)) { + //@codingStandardsIgnoreEnd $this->_messages[] = __d('cake_dev', '%s removed', $filePath); } else { $this->_errors[] = __d('cake_dev', '%s NOT removed', $filePath); @@ -599,7 +607,9 @@ class Folder { } $path = rtrim($path, DS); + //@codingStandardsIgnoreStart if (@rmdir($path)) { + //@codingStandardsIgnoreEnd $this->_messages[] = __d('cake_dev', '%s removed', $path); } else { $this->_errors[] = __d('cake_dev', '%s NOT removed', $path); @@ -654,7 +664,9 @@ class Folder { } $exceptions = array_merge(array('.', '..', '.svn'), $options['skip']); + //@codingStandardsIgnoreStart if ($handle = @opendir($fromDir)) { + //@codingStandardsIgnoreEnd while (($item = readdir($handle)) !== false) { $to = Folder::addPathElement($toDir, $item); if (($options['scheme'] != Folder::SKIP || !is_dir($to)) && !in_array($item, $exceptions)) { diff --git a/lib/Cake/Utility/ObjectCollection.php b/lib/Cake/Utility/ObjectCollection.php index 12ae30c8d..66b639d06 100644 --- a/lib/Cake/Utility/ObjectCollection.php +++ b/lib/Cake/Utility/ObjectCollection.php @@ -103,7 +103,7 @@ abstract class ObjectCollection { if (empty($event->omitSubject)) { $subject = $event->subject(); } - //TODO: Temporary BC check, while we move all the triggers system into the CakeEventManager + foreach (array('break', 'breakOn', 'collectReturn', 'modParams') as $opt) { if (isset($event->{$opt})) { $options[$opt] = $event->{$opt}; diff --git a/lib/Cake/Utility/Security.php b/lib/Cake/Utility/Security.php index 8bde98e6d..651996957 100644 --- a/lib/Cake/Utility/Security.php +++ b/lib/Cake/Utility/Security.php @@ -71,7 +71,6 @@ class Security { * * @param string $authKey Authorization hash * @return boolean Success - * @todo Complete implementation */ public static function validateAuthKey($authKey) { return true; diff --git a/lib/Cake/Utility/Set.php b/lib/Cake/Utility/Set.php index 637e88d7d..3c64d0412 100644 --- a/lib/Cake/Utility/Set.php +++ b/lib/Cake/Utility/Set.php @@ -45,7 +45,7 @@ class Set { */ public static function merge($data, $merge = null) { $args = func_get_args(); - if (empty($args[1])) { + if (empty($args[1]) && count($args) <= 2) { return (array)$args[0]; } if (!is_array($args[0])) { diff --git a/lib/Cake/Utility/Xml.php b/lib/Cake/Utility/Xml.php index 3e717bcc1..20563e911 100644 --- a/lib/Cake/Utility/Xml.php +++ b/lib/Cake/Utility/Xml.php @@ -18,6 +18,7 @@ * @since CakePHP v .0.10.3.1400 * @license MIT License (http://www.opensource.org/licenses/mit-license.php) */ +App::uses('HttpSocket', 'Network/Http'); /** * XML handling for Cake. @@ -97,9 +98,15 @@ class Xml { return self::fromArray((array)$input, $options); } elseif (strpos($input, '<') !== false) { return self::_loadXml($input, $options); - } elseif (file_exists($input) || strpos($input, 'http://') === 0 || strpos($input, 'https://') === 0) { - $input = file_get_contents($input); - return self::_loadXml($input, $options); + } elseif (file_exists($input)) { + return self::_loadXml(file_get_contents($input), $options); + } elseif (strpos($input, 'http://') === 0 || strpos($input, 'https://') === 0) { + $socket = new HttpSocket(); + $response = $socket->get($input); + if (!$response->isOk()) { + throw new XmlException(__d('cake_dev', 'XML cannot be read.')); + } + return self::_loadXml($response->body, $options); } elseif (!is_string($input)) { throw new XmlException(__d('cake_dev', 'Invalid input.')); } diff --git a/lib/Cake/View/Helper.php b/lib/Cake/View/Helper.php index 66018b7c2..3a22c7292 100644 --- a/lib/Cake/View/Helper.php +++ b/lib/Cake/View/Helper.php @@ -341,20 +341,26 @@ class Helper extends Object { $filepath = preg_replace('/^' . preg_quote($this->request->webroot, '/') . '/', '', $path); $webrootPath = WWW_ROOT . str_replace('/', DS, $filepath); if (file_exists($webrootPath)) { + //@codingStandardsIgnoreStart return $path . '?' . @filemtime($webrootPath); + //@codingStandardsIgnoreEnd } $segments = explode('/', ltrim($filepath, '/')); if ($segments[0] === 'theme') { $theme = $segments[1]; unset($segments[0], $segments[1]); $themePath = App::themePath($theme) . 'webroot' . DS . implode(DS, $segments); + //@codingStandardsIgnoreStart return $path . '?' . @filemtime($themePath); + //@codingStandardsIgnoreEnd } else { $plugin = Inflector::camelize($segments[0]); if (CakePlugin::loaded($plugin)) { unset($segments[0]); $pluginPath = CakePlugin::path($plugin) . 'webroot' . DS . implode(DS, $segments); + //@codingStandardsIgnoreStart return $path . '?' . @filemtime($pluginPath); + //@codingStandardsIgnoreEnd } } } @@ -593,7 +599,6 @@ class Helper extends Object { * @param string $id The name of the 'id' attribute. * @return mixed If $options was an array, an array will be returned with $id set. If a string * was supplied, a string will be returned. - * @todo Refactor this method to not have as many input/output options. */ public function domId($options = null, $id = 'id') { if (is_array($options) && array_key_exists($id, $options) && $options[$id] === null) { @@ -626,7 +631,6 @@ class Helper extends Object { * @param string $key The name of the attribute to be set, defaults to 'name' * @return mixed If an array was given for $options, an array with $key set will be returned. * If a string was supplied a string will be returned. - * @todo Refactor this method to not have as many input/output options. */ protected function _name($options = array(), $field = null, $key = 'name') { if ($options === null) { @@ -670,7 +674,6 @@ class Helper extends Object { * @param string $key The name of the attribute to be set, defaults to 'value' * @return mixed If an array was given for $options, an array with $key set will be returned. * If a string was supplied a string will be returned. - * @todo Refactor this method to not have as many input/output options. */ public function value($options = array(), $field = null, $key = 'value') { if ($options === null) { diff --git a/lib/Cake/View/View.php b/lib/Cake/View/View.php index 22ac90b0e..fc6daf098 100644 --- a/lib/Cake/View/View.php +++ b/lib/Cake/View/View.php @@ -530,7 +530,9 @@ class View extends Object { if (preg_match('/^/', $out, $match)) { if (time() >= $match['1']) { + //@codingStandardsIgnoreStart @unlink($filename); + //@codingStandardsIgnoreEnd unset ($out); return false; } else { @@ -869,7 +871,7 @@ class View extends Object { $content = $this->_evaluate($viewFile, $data); $afterEvent = new CakeEvent('View.afterRenderFile', $this, array($viewFile, $content)); - //TODO: For BC puporses, set extra info in the event object. Remove when appropriate + $afterEvent->modParams = 1; $eventManager->dispatch($afterEvent); $content = $afterEvent->data[1]; diff --git a/lib/Cake/basics.php b/lib/Cake/basics.php index 8915fa17f..043f66605 100644 --- a/lib/Cake/basics.php +++ b/lib/Cake/basics.php @@ -422,19 +422,27 @@ if (!function_exists('cache')) { $filetime = false; if (file_exists($filename)) { + //@codingStandardsIgnoreStart $filetime = @filemtime($filename); + //@codingStandardsIgnoreEnd } if ($data === null) { if (file_exists($filename) && $filetime !== false) { if ($filetime + $timediff < $now) { + //@codingStandardsIgnoreStart @unlink($filename); + //@codingStandardsIgnoreEnd } else { + //@codingStandardsIgnoreStart $data = @file_get_contents($filename); + //@codingStandardsIgnoreEnd } } } elseif (is_writable(dirname($filename))) { + //@codingStandardsIgnoreStart @file_put_contents($filename, $data, LOCK_EX); + //@codingStandardsIgnoreEnd } return $data; } @@ -459,7 +467,9 @@ if (!function_exists('clearCache')) { $cache = CACHE . $type . DS . $params; if (is_file($cache . $ext)) { + //@codingStandardsIgnoreStart @unlink($cache . $ext); + //@codingStandardsIgnoreEnd return true; } elseif (is_dir($cache)) { $files = glob($cache . '*'); @@ -470,7 +480,9 @@ if (!function_exists('clearCache')) { foreach ($files as $file) { if (is_file($file) && strrpos($file, DS . 'empty') !== strlen($file) - 6) { + //@codingStandardsIgnoreStart @unlink($file); + //@codingStandardsIgnoreEnd } } return true; @@ -491,7 +503,9 @@ if (!function_exists('clearCache')) { } foreach ($files as $file) { if (is_file($file) && strrpos($file, DS . 'empty') !== strlen($file) - 6) { + //@codingStandardsIgnoreStart @unlink($file); + //@codingStandardsIgnoreEnd } } return true;