From f8044cbbce7e19877754a27ae3d7a0716a67a3ae Mon Sep 17 00:00:00 2001
From: Morris Jobke <hey@morrisjobke.de>
Date: Thu, 4 May 2017 20:43:03 -0300
Subject: [PATCH] Proper exception for upload of .htaccess file via WebDAV

* fixes #2860

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
---
 apps/files_versions/tests/VersioningTest.php | 24 ++++++++++----------
 lib/private/Files/View.php                   |  6 ++++-
 2 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/apps/files_versions/tests/VersioningTest.php b/apps/files_versions/tests/VersioningTest.php
index a1649b2b600..4cd202113dd 100644
--- a/apps/files_versions/tests/VersioningTest.php
+++ b/apps/files_versions/tests/VersioningTest.php
@@ -289,11 +289,11 @@ class VersioningTest extends \Test\TestCase {
 
 		$this->runCommands();
 
-		$this->assertFalse($this->rootView->file_exists($v1));
-		$this->assertFalse($this->rootView->file_exists($v2));
+		$this->assertFalse($this->rootView->file_exists($v1), 'version 1 of old file does not exist');
+		$this->assertFalse($this->rootView->file_exists($v2), 'version 2 of old file does not exist');
 
-		$this->assertTrue($this->rootView->file_exists($v1Renamed));
-		$this->assertTrue($this->rootView->file_exists($v2Renamed));
+		$this->assertTrue($this->rootView->file_exists($v1Renamed), 'version 1 of renamed file exists');
+		$this->assertTrue($this->rootView->file_exists($v2Renamed), 'version 2 of renamed file exists');
 	}
 
 	public function testRenameInSharedFolder() {
@@ -337,11 +337,11 @@ class VersioningTest extends \Test\TestCase {
 
 		self::loginHelper(self::TEST_VERSIONS_USER);
 
-		$this->assertFalse($this->rootView->file_exists($v1));
-		$this->assertFalse($this->rootView->file_exists($v2));
+		$this->assertFalse($this->rootView->file_exists($v1), 'version 1 of old file does not exist');
+		$this->assertFalse($this->rootView->file_exists($v2), 'version 2 of old file does not exist');
 
-		$this->assertTrue($this->rootView->file_exists($v1Renamed));
-		$this->assertTrue($this->rootView->file_exists($v2Renamed));
+		$this->assertTrue($this->rootView->file_exists($v1Renamed), 'version 1 of renamed file exists');
+		$this->assertTrue($this->rootView->file_exists($v2Renamed), 'version 2 of renamed file exists');
 
 		\OC::$server->getShareManager()->deleteShare($share);
 	}
@@ -553,11 +553,11 @@ class VersioningTest extends \Test\TestCase {
 
 		$this->runCommands();
 
-		$this->assertTrue($this->rootView->file_exists($v1));
-		$this->assertTrue($this->rootView->file_exists($v2));
+		$this->assertTrue($this->rootView->file_exists($v1), 'version 1 of original file exists');
+		$this->assertTrue($this->rootView->file_exists($v2), 'version 2 of original file exists');
 
-		$this->assertTrue($this->rootView->file_exists($v1Copied));
-		$this->assertTrue($this->rootView->file_exists($v2Copied));
+		$this->assertTrue($this->rootView->file_exists($v1Copied), 'version 1 of copied file exists');
+		$this->assertTrue($this->rootView->file_exists($v2Copied), 'version 2 of copied file exists');
 	}
 
 	/**
diff --git a/lib/private/Files/View.php b/lib/private/Files/View.php
index 5e581feba6e..0e22415e6f7 100644
--- a/lib/private/Files/View.php
+++ b/lib/private/Files/View.php
@@ -1081,7 +1081,11 @@ class View {
 	 */
 	public function free_space($path = '/') {
 		$this->assertPathLength($path);
-		return $this->basicOperation('free_space', $path);
+		$result = $this->basicOperation('free_space', $path);
+		if ($result === null) {
+			throw new InvalidPathException();
+		}
+		return $result;
 	}
 
 	/**
-- 
GitLab