[Pkg-owncloud-commits] [owncloud] 179/258: Don't complain about non-writable datadirs before we're installed
David Prévot
taffit at moszumanska.debian.org
Sat Oct 11 17:22:34 UTC 2014
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository owncloud.
commit 6c09c0e0821379fef9571be12e8f72367ffc426a
Author: Robin Appelman <icewind at owncloud.com>
Date: Mon Sep 8 15:05:57 2014 +0200
Don't complain about non-writable datadirs before we're installed
Conflicts:
lib/private/util.php
---
lib/private/util.php | 36 +++++++++++++++++++-----------------
tests/lib/utilcheckserver.php | 37 +++++++++++++++++++++++++++++++++++++
2 files changed, 56 insertions(+), 17 deletions(-)
diff --git a/lib/private/util.php b/lib/private/util.php
index 4c17c76..c88b47c 100755
--- a/lib/private/util.php
+++ b/lib/private/util.php
@@ -451,25 +451,27 @@ class OC_Util {
}
}
// Create root dir.
- if(!is_dir($CONFIG_DATADIRECTORY)) {
- $success=@mkdir($CONFIG_DATADIRECTORY);
- if ($success) {
- $errors = array_merge($errors, self::checkDataDirectoryPermissions($CONFIG_DATADIRECTORY));
- } else {
- $errors[] = array(
- 'error' => $l->t('Cannot create "data" directory (%s)', array($CONFIG_DATADIRECTORY)),
- 'hint' => $l->t('This can usually be fixed by '
- .'<a href="%s" target="_blank">giving the webserver write access to the root directory</a>.',
- array(OC_Helper::linkToDocs('admin-dir_permissions')))
+ if ($config->getSystemValue('installed', false)) {
+ if (!is_dir($CONFIG_DATADIRECTORY)) {
+ $success = @mkdir($CONFIG_DATADIRECTORY);
+ if ($success) {
+ $errors = array_merge($errors, self::checkDataDirectoryPermissions($CONFIG_DATADIRECTORY));
+ } else {
+ $errors[] = array(
+ 'error' => $l->t('Cannot create "data" directory (%s)', array($CONFIG_DATADIRECTORY)),
+ 'hint' => $l->t('This can usually be fixed by '
+ . '<a href="%s" target="_blank">giving the webserver write access to the root directory</a>.',
+ array(OC_Helper::linkToDocs('admin-dir_permissions')))
);
+ }
+ } else if (!is_writable($CONFIG_DATADIRECTORY) or !is_readable($CONFIG_DATADIRECTORY)) {
+ $errors[] = array(
+ 'error' => 'Data directory (' . $CONFIG_DATADIRECTORY . ') not writable by ownCloud',
+ 'hint' => $permissionsHint
+ );
+ } else {
+ $errors = array_merge($errors, self::checkDataDirectoryPermissions($CONFIG_DATADIRECTORY));
}
- } else if(!is_writable($CONFIG_DATADIRECTORY) or !is_readable($CONFIG_DATADIRECTORY)) {
- $errors[] = array(
- 'error'=>'Data directory ('.$CONFIG_DATADIRECTORY.') not writable by ownCloud',
- 'hint'=>$permissionsHint
- );
- } else {
- $errors = array_merge($errors, self::checkDataDirectoryPermissions($CONFIG_DATADIRECTORY));
}
if(!OC_Util::isSetLocaleWorking()) {
diff --git a/tests/lib/utilcheckserver.php b/tests/lib/utilcheckserver.php
index 78888bd..be5596c 100644
--- a/tests/lib/utilcheckserver.php
+++ b/tests/lib/utilcheckserver.php
@@ -19,6 +19,7 @@ class Test_Util_CheckServer extends PHPUnit_Framework_TestCase {
*/
protected function getConfig($systemOptions) {
$systemOptions['datadirectory'] = $this->datadir;
+ $systemOptions['appstoreenabled'] = false; //it's likely that there is no app folder we can write in
$config = $this->getMockBuilder('\OCP\IConfig')
->disableOriginalConstructor()
->getMock();
@@ -35,6 +36,7 @@ class Test_Util_CheckServer extends PHPUnit_Framework_TestCase {
$this->datadir = \OC_Helper::tmpFolder();
file_put_contents($this->datadir . '/.ocdata', '');
+ \OC::$server->getSession()->set('checkServer_succeeded', false);
}
public function tearDown() {
@@ -121,4 +123,39 @@ class Test_Util_CheckServer extends PHPUnit_Framework_TestCase {
$this->assertCount(1, $result);
}
+ /**
+ * Tests that no error is given when the datadir is writable
+ */
+ public function testDataDirWritable() {
+ $result = \OC_Util::checkServer($this->getConfig(array(
+ 'installed' => true,
+ 'version' => implode('.', OC_Util::getVersion())
+ )));
+ $this->assertEmpty($result);
+ }
+
+ /**
+ * Tests an error is given when the datadir is not writable
+ */
+ public function testDataDirNotWritable() {
+ chmod($this->datadir, 0300);
+ $result = \OC_Util::checkServer($this->getConfig(array(
+ 'installed' => true,
+ 'version' => implode('.', OC_Util::getVersion())
+ )));
+ $this->assertCount(1, $result);
+ }
+
+ /**
+ * Tests no error is given when the datadir is not writable during setup
+ */
+ public function testDataDirNotWritableSetup() {
+ chmod($this->datadir, 0300);
+ $result = \OC_Util::checkServer($this->getConfig(array(
+ 'installed' => false,
+ 'version' => implode('.', OC_Util::getVersion())
+ )));
+ chmod($this->datadir, 0700); //needed for cleanup
+ $this->assertEmpty($result);
+ }
}
--
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