Merge pull request #347 from nextcloud/drop-windows-foo

Remove unneeded checks if it runs on a Windows machine
This commit is contained in:
Lukas Reschke 2016-07-11 13:16:03 +02:00 committed by GitHub
commit 0c1cf5f7eb
22 changed files with 51 additions and 269 deletions

View file

@ -90,13 +90,10 @@ class Application extends App implements IBackendProvider, IAuthMechanismProvide
$container->query('OCA\Files_External\Lib\Backend\Google'),
$container->query('OCA\Files_External\Lib\Backend\Swift'),
$container->query('OCA\Files_External\Lib\Backend\SFTP_Key'),
$container->query('OCA\Files_External\Lib\Backend\SMB'),
$container->query('OCA\Files_External\Lib\Backend\SMB_OC'),
];
if (!\OC_Util::runningOnWindows()) {
$backends[] = $container->query('OCA\Files_External\Lib\Backend\SMB');
$backends[] = $container->query('OCA\Files_External\Lib\Backend\SMB_OC');
}
return $backends;
}

View file

@ -59,20 +59,18 @@ try {
set_exception_handler('exceptionHandler');
if (!OC_Util::runningOnWindows()) {
if (!function_exists('posix_getuid')) {
echo "The posix extensions are required - see http://php.net/manual/en/book.posix.php" . PHP_EOL;
exit(0);
}
$user = posix_getpwuid(posix_getuid());
$configUser = posix_getpwuid(fileowner(OC::$configDir . 'config.php'));
if ($user['name'] !== $configUser['name']) {
echo "Console has to be executed with the user that owns the file config/config.php" . PHP_EOL;
echo "Current user: " . $user['name'] . PHP_EOL;
echo "Owner of config.php: " . $configUser['name'] . PHP_EOL;
echo "Try adding 'sudo -u " . $configUser['name'] . " ' to the beginning of the command (without the single quotes)" . PHP_EOL;
exit(0);
}
if (!function_exists('posix_getuid')) {
echo "The posix extensions are required - see http://php.net/manual/en/book.posix.php" . PHP_EOL;
exit(0);
}
$user = posix_getpwuid(posix_getuid());
$configUser = posix_getpwuid(fileowner(OC::$configDir . 'config.php'));
if ($user['name'] !== $configUser['name']) {
echo "Console has to be executed with the user that owns the file config/config.php" . PHP_EOL;
echo "Current user: " . $user['name'] . PHP_EOL;
echo "Owner of config.php: " . $configUser['name'] . PHP_EOL;
echo "Try adding 'sudo -u " . $configUser['name'] . " ' to the beginning of the command (without the single quotes)" . PHP_EOL;
exit(0);
}
$oldWorkingDir = getcwd();

View file

@ -84,19 +84,17 @@ try {
set_time_limit(0);
// the cron job must be executed with the right user
if (!OC_Util::runningOnWindows()) {
if (!function_exists('posix_getuid')) {
echo "The posix extensions are required - see http://php.net/manual/en/book.posix.php" . PHP_EOL;
exit(0);
}
$user = posix_getpwuid(posix_getuid());
$configUser = posix_getpwuid(fileowner(OC::$SERVERROOT . '/config/config.php'));
if ($user['name'] !== $configUser['name']) {
echo "Console has to be executed with the same user as the web server is operated" . PHP_EOL;
echo "Current user: " . $user['name'] . PHP_EOL;
echo "Web server user: " . $configUser['name'] . PHP_EOL;
exit(0);
}
if (!function_exists('posix_getuid')) {
echo "The posix extensions are required - see http://php.net/manual/en/book.posix.php" . PHP_EOL;
exit(0);
}
$user = posix_getpwuid(posix_getuid());
$configUser = posix_getpwuid(fileowner(OC::$SERVERROOT . '/config/config.php'));
if ($user['name'] !== $configUser['name']) {
echo "Console has to be executed with the same user as the web server is operated" . PHP_EOL;
echo "Current user: " . $user['name'] . PHP_EOL;
echo "Web server user: " . $configUser['name'] . PHP_EOL;
exit(0);
}
// We call ownCloud from the CLI (aka cron)

View file

@ -489,25 +489,7 @@ abstract class Common implements Storage, ILockingStorage {
}
// NOTE: $path will remain unverified for now
if (\OC_Util::runningOnWindows()) {
$this->verifyWindowsPath($fileName);
} else {
$this->verifyPosixPath($fileName);
}
}
/**
* https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx
* @param string $fileName
* @throws InvalidPathException
*/
protected function verifyWindowsPath($fileName) {
$fileName = trim($fileName);
$this->scanForInvalidCharacters($fileName, "\\/<>:\"|?*");
$reservedNames = ['CON', 'PRN', 'AUX', 'NUL', 'COM1', 'COM2', 'COM3', 'COM4', 'COM5', 'COM6', 'COM7', 'COM8', 'COM9', 'LPT1', 'LPT2', 'LPT3', 'LPT4', 'LPT5', 'LPT6', 'LPT7', 'LPT8', 'LPT9'];
if (in_array(strtoupper($fileName), $reservedNames)) {
throw new ReservedWordException();
}
$this->verifyPosixPath($fileName);
}
/**

View file

@ -299,8 +299,7 @@ class PreviewManager implements IPreview {
}
if (count($checkImagick->queryFormats('PDF')) === 1) {
// Office previews are currently not supported on Windows
if (!\OC_Util::runningOnWindows() && \OC_Helper::is_function_enabled('shell_exec')) {
if (\OC_Helper::is_function_enabled('shell_exec')) {
$officeFound = is_string($this->config->getSystemValue('preview_libreoffice_path', null));
if (!$officeFound) {
@ -324,9 +323,8 @@ class PreviewManager implements IPreview {
}
}
// Video requires avconv or ffmpeg and is therefor
// currently not supported on Windows.
if (in_array('OC\Preview\Movie', $this->getEnabledDefaultProvider()) && !\OC_Util::runningOnWindows()) {
// Video requires avconv or ffmpeg
if (in_array('OC\Preview\Movie', $this->getEnabledDefaultProvider())) {
$avconvBinary = \OC_Helper::findBinaryPath('avconv');
$ffmpegBinary = ($avconvBinary) ? null : \OC_Helper::findBinaryPath('ffmpeg');

View file

@ -305,10 +305,6 @@ class Setup {
$trustedDomains = [$request->getInsecureServerHost()];
}
if (\OC_Util::runningOnWindows()) {
$dataDir = rtrim(realpath($dataDir), '\\');
}
//use sqlite3 when available, otherwise sqlite2 will be used.
if($dbType=='sqlite' and class_exists('SQLite3')) {
$dbType='sqlite3';

View file

@ -534,7 +534,7 @@ class OC_Helper {
return $memcache->get($program);
}
$result = null;
if (!\OC_Util::runningOnWindows() && self::is_function_enabled('exec')) {
if (self::is_function_enabled('exec')) {
$exeSniffer = new ExecutableFinder();
// Returns null if nothing is found
$result = $exeSniffer->find($program);

View file

@ -902,22 +902,18 @@ class OC_Util {
public static function checkDataDirectoryPermissions($dataDirectory) {
$l = \OC::$server->getL10N('lib');
$errors = array();
if (self::runningOnWindows()) {
//TODO: permissions checks for windows hosts
} else {
$permissionsModHint = $l->t('Please change the permissions to 0770 so that the directory'
. ' cannot be listed by other users.');
$permissionsModHint = $l->t('Please change the permissions to 0770 so that the directory'
. ' cannot be listed by other users.');
$perms = substr(decoct(@fileperms($dataDirectory)), -3);
if (substr($perms, -1) != '0') {
chmod($dataDirectory, 0770);
clearstatcache();
$perms = substr(decoct(@fileperms($dataDirectory)), -3);
if (substr($perms, -1) != '0') {
chmod($dataDirectory, 0770);
clearstatcache();
$perms = substr(decoct(@fileperms($dataDirectory)), -3);
if (substr($perms, 2, 1) != '0') {
$errors[] = array(
'error' => $l->t('Data directory (%s) is readable by other users', array($dataDirectory)),
'hint' => $permissionsModHint
);
}
if (substr($perms, 2, 1) != '0') {
$errors[] = array(
'error' => $l->t('Data directory (%s) is readable by other users', array($dataDirectory)),
'hint' => $permissionsModHint
);
}
}
return $errors;
@ -933,7 +929,7 @@ class OC_Util {
public static function checkDataDirectoryValidity($dataDirectory) {
$l = \OC::$server->getL10N('lib');
$errors = [];
if (!self::runningOnWindows() && $dataDirectory[0] !== '/') {
if ($dataDirectory[0] !== '/') {
$errors[] = [
'error' => $l->t('Data directory (%s) must be an absolute path', [$dataDirectory]),
'hint' => $l->t('Check the value of "datadirectory" in your configuration')
@ -1203,11 +1199,6 @@ class OC_Util {
* @return bool
*/
public static function isSetLocaleWorking() {
// setlocale test is pointless on Windows
if (OC_Util::runningOnWindows()) {
return true;
}
\Patchwork\Utf8\Bootup::initLocale();
if ('' === basename('§')) {
return false;

View file

@ -154,9 +154,6 @@ $template->assign('cronErrors', $appConfig->getValue('core', 'cronErrors'));
$path = getenv('PATH');
$template->assign('getenvServerNotWorking', empty($path));
// warn if Windows is used
$template->assign('WindowsWarning', OC_Util::runningOnWindows());
// warn if outdated version of a memcache module is used
$caches = [
'apcu' => ['name' => $l->t('APCu'), 'version' => '4.0.6'],

View file

@ -106,15 +106,6 @@ if ($_['invalidTransactionIsolationLevel']) {
<?php
}
// Windows Warning
if ($_['WindowsWarning']) {
?>
<li>
<?php p($l->t('Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience.')); ?>
</li>
<?php
}
// Warning if memcache is outdated
foreach ($_['OutdatedCacheWarning'] as $php_module => $data) {
?>

View file

@ -12,14 +12,6 @@ namespace Test\Archive;
use OC\Archive\TAR;
class TARTest extends TestBase {
protected function setUp() {
parent::setUp();
if (\OC_Util::runningOnWindows()) {
$this->markTestSkipped('[Windows] tar archives are not supported on Windows');
}
}
protected function getExisting() {
$dir = \OC::$SERVERROOT . '/tests/data';
return new TAR($dir . '/data.tar.gz');

View file

@ -12,14 +12,6 @@ namespace Test\Archive;
use OC\Archive\ZIP;
class ZIPTest extends TestBase {
protected function setUp() {
parent::setUp();
if (\OC_Util::runningOnWindows()) {
$this->markTestSkipped('[Windows] ');
}
}
protected function getExisting() {
$dir = \OC::$SERVERROOT . '/tests/data';
return new ZIP($dir . '/data.zip');

View file

@ -272,28 +272,6 @@ class FilesystemTest extends \Test\TestCase {
$this->assertSame($expected, \OC\Files\Filesystem::isFileBlacklisted($path));
}
public function normalizePathWindowsAbsolutePathData() {
return array(
array('C:/', 'C:\\'),
array('C:/', 'C:\\', false),
array('C:/tests', 'C:\\tests'),
array('C:/tests', 'C:\\tests', false),
array('C:/tests', 'C:\\tests\\'),
array('C:/tests/', 'C:\\tests\\', false),
);
}
/**
* @dataProvider normalizePathWindowsAbsolutePathData
*/
public function testNormalizePathWindowsAbsolutePath($expected, $path, $stripTrailingSlash = true) {
if (!\OC_Util::runningOnWindows()) {
$this->markTestSkipped('This test is Windows only');
}
$this->assertEquals($expected, \OC\Files\Filesystem::normalizePath($path, $stripTrailingSlash, true));
}
public function testNormalizePathUTF8() {
if (!class_exists('Patchwork\PHP\Shim\Normalizer')) {
$this->markTestSkipped('UTF8 normalizer Patchwork was not found');

View file

@ -97,63 +97,6 @@ class PathVerificationTest extends \Test\TestCase {
];
}
/**
* @dataProvider providesInvalidCharsWindows
* @expectedException \OCP\Files\InvalidCharacterInPathException
*/
public function testPathVerificationInvalidCharsWindows($fileName) {
$storage = new Local(['datadir' => '']);
$fileName = " 123{$fileName}456 ";
self::invokePrivate($storage, 'verifyWindowsPath', [$fileName]);
}
public function providesInvalidCharsWindows() {
return [
[\chr(0)],
[\chr(1)],
[\chr(2)],
[\chr(3)],
[\chr(4)],
[\chr(5)],
[\chr(6)],
[\chr(7)],
[\chr(8)],
[\chr(9)],
[\chr(10)],
[\chr(11)],
[\chr(12)],
[\chr(13)],
[\chr(14)],
[\chr(15)],
[\chr(16)],
[\chr(17)],
[\chr(18)],
[\chr(19)],
[\chr(20)],
[\chr(21)],
[\chr(22)],
[\chr(23)],
[\chr(24)],
[\chr(25)],
[\chr(26)],
[\chr(27)],
[\chr(28)],
[\chr(29)],
[\chr(30)],
[\chr(31)],
['<'],
['>'],
[':'],
['"'],
['/'],
['\\'],
['|'],
['?'],
['*'],
];
}
/**
* @dataProvider providesInvalidCharsPosix
* @expectedException \OCP\Files\InvalidCharacterInPathException
@ -162,7 +105,7 @@ class PathVerificationTest extends \Test\TestCase {
$storage = new Local(['datadir' => '']);
$fileName = " 123{$fileName}456 ";
self::invokePrivate($storage, 'verifyWindowsPath', [$fileName]);
self::invokePrivate($storage, 'verifyPosixPath', [$fileName]);
}
public function providesInvalidCharsPosix() {
@ -204,43 +147,6 @@ class PathVerificationTest extends \Test\TestCase {
];
}
/**
* @dataProvider providesReservedNamesWindows
* @expectedException \OCP\Files\ReservedWordException
*/
public function testPathVerificationReservedNamesWindows($fileName) {
$storage = new Local(['datadir' => '']);
self::invokePrivate($storage, 'verifyWindowsPath', [$fileName]);
}
public function providesReservedNamesWindows() {
return [
[' CON '],
['prn '],
['AUX'],
['NUL'],
['COM1'],
['COM2'],
['COM3'],
['COM4'],
['COM5'],
['COM6'],
['COM7'],
['COM8'],
['COM9'],
['LPT1'],
['LPT2'],
['LPT3'],
['LPT4'],
['LPT5'],
['LPT6'],
['LPT7'],
['LPT8'],
['LPT9']
];
}
/**
* @dataProvider providesValidPosixPaths
*/
@ -248,7 +154,6 @@ class PathVerificationTest extends \Test\TestCase {
$storage = new Local(['datadir' => '']);
self::invokePrivate($storage, 'verifyPosixPath', [$fileName]);
self::invokePrivate($storage, 'verifyWindowsPath', [$fileName]);
// nothing thrown
$this->assertTrue(true);
}

View file

@ -48,10 +48,6 @@ class LocalTest extends Storage {
}
public function testStableEtag() {
if (\OC_Util::runningOnWindows()) {
$this->markTestSkipped('[Windows] On Windows platform we have no stable etag generation - yet');
}
$this->instance->file_put_contents('test.txt', 'foobar');
$etag1 = $this->instance->getETag('test.txt');
$etag2 = $this->instance->getETag('test.txt');
@ -59,10 +55,6 @@ class LocalTest extends Storage {
}
public function testEtagChange() {
if (\OC_Util::runningOnWindows()) {
$this->markTestSkipped('[Windows] On Windows platform we have no stable etag generation - yet');
}
$this->instance->file_put_contents('test.txt', 'foo');
$this->instance->touch('test.txt', time() - 2);
$etag1 = $this->instance->getETag('test.txt');

View file

@ -80,10 +80,6 @@ class DetectionTest extends \Test\TestCase {
}
public function testDetectString() {
if (\OC_Util::runningOnWindows()) {
$this->markTestSkipped('[Windows] Strings have mimetype application/octet-stream on Windows');
}
$result = $this->detection->detectString("/data/data.tar.gz");
$expected = 'text/plain; charset=us-ascii';
$this->assertEquals($expected, $result);

View file

@ -104,7 +104,7 @@ class ViewTest extends \Test\TestCase {
$cache->clear();
}
if ($this->tempStorage && !\OC_Util::runningOnWindows()) {
if ($this->tempStorage) {
system('rm -rf ' . escapeshellarg($this->tempStorage->getDataDir()));
}
@ -761,14 +761,10 @@ class ViewTest extends \Test\TestCase {
/*
* 4096 is the maximum path length in file_cache.path in *nix
* 1024 is the max path length in mac
* 228 is the max path length in windows
*/
$folderName = 'abcdefghijklmnopqrstuvwxyz012345678901234567890123456789';
$tmpdirLength = strlen(\OC::$server->getTempManager()->getTemporaryFolder());
if (\OC_Util::runningOnWindows()) {
$this->markTestSkipped('[Windows] ');
$depth = ((260 - $tmpdirLength) / 57);
} elseif (\OC_Util::runningOnMac()) {
if (\OC_Util::runningOnMac()) {
$depth = ((1024 - $tmpdirLength) / 57);
} else {
$depth = ((4000 - $tmpdirLength) / 57);

View file

@ -75,10 +75,6 @@ class ImageTest extends \Test\TestCase {
$img = new \OC_Image(null);
$this->assertEquals('', $img->mimeType());
if (\OC_Util::runningOnWindows()) {
$this->markTestSkipped('[Windows] Images created with imagecreate() are pngs on windows');
}
$img = new \OC_Image(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
$this->assertEquals('image/jpeg', $img->mimeType());

View file

@ -28,12 +28,10 @@ class LargeFileHelperGetFileSizeTest extends TestCase {
public function dataFileNameProvider() {
$path = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR;
$filePaths = array(array($path . 'lorem.txt', 446));
if (!\OC_Util::runningOnWindows()) {
$filePaths[] = array($path . 'strängé filename (duplicate #2).txt', 446);
}
return $filePaths;
return [
[ $path . 'lorem.txt', 446 ],
[ $path . 'strängé filename (duplicate #2).txt', 446 ],
];
}
/**

View file

@ -138,9 +138,6 @@ class TempManagerTest extends \Test\TestCase {
}
public function testLogCantCreateFile() {
if (\OC_Util::runningOnWindows()) {
$this->markTestSkipped('[Windows] chmod() does not work as intended on Windows.');
}
$this->markTestSkipped('TODO: Disable because fails on drone');
$logger = $this->getMock('\Test\NullLogger');
@ -153,9 +150,6 @@ class TempManagerTest extends \Test\TestCase {
}
public function testLogCantCreateFolder() {
if (\OC_Util::runningOnWindows()) {
$this->markTestSkipped('[Windows] chmod() does not work as intended on Windows.');
}
$this->markTestSkipped('TODO: Disable because fails on drone');
$logger = $this->getMock('\Test\NullLogger');

View file

@ -145,9 +145,6 @@ class UtilCheckServerTest extends \Test\TestCase {
* Tests an error is given when the datadir is not writable
*/
public function testDataDirNotWritable() {
if (\OC_Util::runningOnWindows()) {
$this->markTestSkipped('[Windows] chmod() does not work as intended on Windows.');
}
$this->markTestSkipped('TODO: Disable because fails on drone');
chmod($this->datadir, 0300);

View file

@ -396,10 +396,8 @@ class UtilTest extends \Test\TestCase {
$this->assertNotEmpty($errors);
\OCP\Files::rmdirr($dataDir);
if (!\OC_Util::runningOnWindows()) {
$errors = \OC_Util::checkDataDirectoryValidity('relative/path');
$this->assertNotEmpty($errors);
}
$errors = \OC_Util::checkDataDirectoryValidity('relative/path');
$this->assertNotEmpty($errors);
}
protected function setUp() {