Permalink
Browse files

Fix Console "extract i18n from sources" to handle quotes in Model::va…

…lidate parameters correctly
  • Loading branch information...
1 parent 9b4c2f3 commit 42daa25340564df3019e607fce9d1bbcdaec0f2a joostdekeijzer committed Jan 29, 2014
View
1 lib/Cake/Console/Command/Task/ExtractTask.php
@@ -525,6 +525,7 @@ protected function _processValidationRules($field, $rules, $file, $domain, $cate
$msgid = $rule;
}
if ($msgid) {
+ $msgid = $this->_formatString(sprintf("'%s'", $msgid));
$details = array(
'file' => $file,
'line' => 'validation for field ' . $field
View
3 lib/Cake/Test/Case/Console/Command/Task/ExtractTaskTest.php
@@ -351,6 +351,9 @@ public function testExtractModelValidation() {
$pattern = '#msgid "Post body is super required"#';
$this->assertRegExp($pattern, $result);
+
+ $this->assertContains('msgid "double \\"quoted\\" validation"', $result, 'Strings with quotes not handled correctly');
+ $this->assertContains("msgid \"single 'quoted' validation\"", $result, 'Strings with quotes not handled correctly');
}
/**
View
45 lib/Cake/Test/test_app/Model/Extract.php
@@ -0,0 +1,45 @@
+<?php
+/**
+ * Test App Extract Model
+ *
+ * CakePHP : Rapid Development Framework (http://cakephp.org)
+ * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
+ *
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
+ *
+ * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
+ * @link http://cakephp.org CakePHP Project
+ * @package Cake.Test.TestApp.Model
+ * @since CakePHP v 2.4
+ * @license http://www.opensource.org/licenses/mit-license.php MIT License
+ */
+
+/**
+ * Class Extract
+ *
+ * For testing Console i18n validation message extraction with quotes
+ *
+ * @package Cake.Test.TestApp.Model
+ */
+class Extract extends AppModel {
+
+ public $useTable = false;
+
+ public $validate = array(
+ 'title' => array(
+ 'custom' => array(
+ 'rule' => array('custom', '.*'),
+ 'allowEmpty' => true,
+ 'required' => false,
+ 'message' => 'double "quoted" validation'
+ ),
+ 'between' => array(
+ 'rule' => array('between', 5, 15),
+ 'message' => "single 'quoted' validation"
+ )
+ ),
+ );
+
+}

0 comments on commit 42daa25

Please sign in to comment.