]> source.dussan.org Git - nextcloud-server.git/commitdiff
streamCopy() should return proper structure.
authorThomas Müller <thomas.mueller@tmit.eu>
Mon, 14 Oct 2013 19:33:23 +0000 (21:33 +0200)
committerThomas Müller <thomas.mueller@tmit.eu>
Mon, 14 Oct 2013 19:33:23 +0000 (21:33 +0200)
Callers of streamCopy() expect an array to be returned containing count and result.

lib/private/helper.php
tests/lib/helper.php

index a34640d8e362ba5b9cb1965f713aba98501d7802..1236e748256cf64780022bd1c5a64c8210df0f72 100644 (file)
@@ -509,11 +509,11 @@ class OC_Helper {
         *
         * @param resource $source
         * @param resource $target
-        * @return int the number of bytes copied
+        * @return array the number of bytes copied and result
         */
        public static function streamCopy($source, $target) {
                if (!$source or !$target) {
-                       return false;
+                       return array(0, false);
                }
                $result = true;
                $count = 0;
index b4d896e51967effe1b6a1b55b08f936e9a27fedb..babafab52c06bb4583c9ebe2ed7a1443125a6807 100644 (file)
@@ -208,4 +208,38 @@ class Test_Helper extends PHPUnit_Framework_TestCase {
                        ->will($this->returnValue(true)); // filename(1) (2) (3).ext exists
                $this->assertEquals('dir/filename(1) (2) (4).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename(1) (2) (3).ext', $viewMock));
        }
+
+       /**
+        * @dataProvider streamCopyDataProvider
+        */
+       public function testStreamCopy($expectedCount, $expectedResult, $source, $target) {
+
+               if (is_string($source)) {
+                       $source = fopen($source, 'r');
+               }
+               if (is_string($target)) {
+                       $target = fopen($target, 'w');
+               }
+
+               list($count, $result) = \OC_Helper::streamCopy($source, $target);
+
+               if (is_resource($source)) {
+                       fclose($source);
+               }
+               if (is_resource($target)) {
+                       fclose($target);
+               }
+
+               $this->assertSame($expectedCount, $count);
+               $this->assertSame($expectedResult, $result);
+       }
+
+
+       function streamCopyDataProvider() {
+               return array(
+                       array(0, false, false, false),
+                       array(0, false, \OC::$SERVERROOT . '/tests/data/lorem.txt', false),
+                       array(446, true, \OC::$SERVERROOT . '/tests/data/lorem.txt', \OC::$SERVERROOT . '/tests/data/lorem-copy.txt'),
+               );
+       }
 }