[Pkg-owncloud-commits] [owncloud] 87/111: Fixed SMB file deletion success detection

David Prévot taffit at moszumanska.debian.org
Wed Nov 20 21:38:46 UTC 2013


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository owncloud.

commit 5b6d1d79d06e404ce4a52f75393a98f52769da48
Author: Vincent Petry <pvince81 at owncloud.com>
Date:   Thu Nov 14 18:39:39 2013 +0100

    Fixed SMB file deletion success detection
    
    Since unlink() smb4php doesn't return true on deletion success, we need
    to check whether the file was deleted to confirm success.
    
    Fixes #5866
---
 apps/files_external/lib/smb.php     |   12 ++++++++++++
 tests/lib/files/storage/storage.php |   16 ++++++++++++++--
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php
index c464fa9..5bff597 100644
--- a/apps/files_external/lib/smb.php
+++ b/apps/files_external/lib/smb.php
@@ -82,6 +82,18 @@ class SMB extends \OC\Files\Storage\StreamWrapper{
 	}
 
 	/**
+	 * Unlinks file
+	 * @param string @path
+	 */
+	public function unlink($path) {
+		unlink($this->constructUrl($path));
+		clearstatcache();
+		// smb4php still returns false even on success so
+		// check here whether file was really deleted
+		return !file_exists($path);
+	}
+
+	/**
 	 * check if a file or folder has been updated since $time
 	 * @param string $path
 	 * @param int $time
diff --git a/tests/lib/files/storage/storage.php b/tests/lib/files/storage/storage.php
index f72a527..6c433e9 100644
--- a/tests/lib/files/storage/storage.php
+++ b/tests/lib/files/storage/storage.php
@@ -182,8 +182,9 @@ abstract class Storage extends \PHPUnit_Framework_TestCase {
 		$this->assertTrue($this->instance->hasUpdated('/lorem.txt', $ctimeStart - 5));
 		$this->assertTrue($this->instance->hasUpdated('/', $ctimeStart - 5));
 
-		$this->assertTrue(($ctimeStart - 5) <= $mTime);
-		$this->assertTrue($mTime <= ($ctimeEnd + 1));
+		// check that ($ctimeStart - 5) <= $mTime <= ($ctimeEnd + 1)
+		$this->assertGreaterThanOrEqual(($ctimeStart - 5), $mTime);
+		$this->assertLessThanOrEqual(($ctimeEnd + 1), $mTime);
 		$this->assertEquals(filesize($textFile), $this->instance->filesize('/lorem.txt'));
 
 		$stat = $this->instance->stat('/lorem.txt');
@@ -202,6 +203,17 @@ abstract class Storage extends \PHPUnit_Framework_TestCase {
 		$this->assertTrue($this->instance->hasUpdated('/', $mtimeStart - 5));
 	}
 
+	public function testUnlink() {
+		$textFile = \OC::$SERVERROOT . '/tests/data/lorem.txt';
+		$this->instance->file_put_contents('/lorem.txt', file_get_contents($textFile));
+
+		$this->assertTrue($this->instance->file_exists('/lorem.txt'));
+
+		$this->assertTrue($this->instance->unlink('/lorem.txt'));
+
+		$this->assertFalse($this->instance->file_exists('/lorem.txt'));
+	}
+
 	public function testFOpen() {
 		$textFile = \OC::$SERVERROOT . '/tests/data/lorem.txt';
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list