summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2014-09-08 15:05:57 +0200
committerThomas Müller <thomas.mueller@tmit.eu>2014-09-30 10:24:52 +0200
commit6c09c0e0821379fef9571be12e8f72367ffc426a (patch)
tree463b772451b2dbf0adc6d587f84ae45e71f31b82
parent2376d6911534127431cac5ce7600d2327804440d (diff)
downloadnextcloud-server-6c09c0e0821379fef9571be12e8f72367ffc426a.tar.gz
nextcloud-server-6c09c0e0821379fef9571be12e8f72367ffc426a.zip
Don't complain about non-writable datadirs before we're installed
Conflicts: lib/private/util.php
-rwxr-xr-xlib/private/util.php36
-rw-r--r--tests/lib/utilcheckserver.php37
2 files changed, 56 insertions, 17 deletions
diff --git a/lib/private/util.php b/lib/private/util.php
index 4c17c769563..c88b47c38a7 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 78888bd909d..be5596c1900 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);
+ }
}