Permalink
Browse files

Fixes last items for #1665.

- Changes double quotes to single quotes.
- Documents and tests array-based string replace.
- Rewrites test case.

Rewrites the test case because the tests didn't work as well as
they should be. The test file copied itself to the tmp directory,
did some string replace stuff on it and then loaded the data to
test its contents. However in those contents were also the
expectations, so assertContains() would always see the string in
the file... even if the replacing didn't work.

Closes #1665.
  • Loading branch information...
1 parent 98e11ce commit 9260a78ea3cdb8d0f786f262edd1bcfc27d6ed43 @Phally Phally committed Oct 26, 2013
Showing with 23 additions and 8 deletions.
  1. +17 −3 lib/Cake/Test/Case/Utility/FileTest.php
  2. +6 −5 lib/Cake/Utility/File.php
@@ -569,18 +569,32 @@ protected function _getTmpFile($paintSkip = true) {
* @return void
*/
public function testReplaceText() {
- $TestFile = new File(__FILE__);
+ $TestFile = new File(dirname(__FILE__) . '/../../test_app/Vendor/welcome.php');
$TmpFile = new File(TMP . 'tests' . DS . 'cakephp.file.test.tmp');
+
// Copy the test file to the temporary location
$TestFile->copy($TmpFile->path, true);
// Replace the contents of the tempory file
- $result = $TmpFile->replaceText("* testReplaceText method", "* testReplaceText method passed");
+ $result = $TmpFile->replaceText('welcome.php', 'welcome.tmp');
+ $this->assertTrue($result);
+
+ // Double check
+ $expected = 'This is the welcome.tmp file in vendors directory';
+ $contents = $TmpFile->read();
+ $this->assertContains($expected, $contents);
+
+ $search = array('This is the', 'welcome.php file', 'in tmp directory');
+ $replace = array('This should be a', 'welcome.tmp file', 'in the Lib directory');
+
+ // Replace the contents of the tempory file
+ $result = $TmpFile->replaceText($search, $replace);
$this->assertTrue($result);
// Double check
+ $expected = 'This should be a welcome.tmp file in vendors directory';
$contents = $TmpFile->read();
- $this->assertContains("* testReplaceText method passed", $contents);
+ $this->assertContains($expected, $contents);
$TmpFile->delete();
}
@@ -588,13 +588,14 @@ public function clearStatCache($all = false) {
}
/**
- * Searches for a given text and replaces the text if found
- * @param string $search
- * @param string $replace
+ * Searches for a given text and replaces the text if found.
+ *
+ * @param string|array $search Text(s) to search for.
+ * @param string|array $replace Text(s) to replace with.
* @return boolean Success
*/
public function replaceText($search, $replace) {
- if (!$this->open("r+")) {
+ if (!$this->open('r+')) {
return false;
}
@@ -604,7 +605,7 @@ public function replaceText($search, $replace) {
}
}
- $replaced = $this->write(str_replace($search, $replace, $this->read()), "w", true);
+ $replaced = $this->write(str_replace($search, $replace, $this->read()), 'w', true);
if ($this->lock !== null) {
flock($this->handle, LOCK_UN);

0 comments on commit 9260a78

Please sign in to comment.