Test all supported ownCloud/Nextcloud version

Add missing tests for the compatible versions from the README:
- ownCloud: 9.1+
- Nextcloud: 9+
This commit is contained in:
Laurens Stötzel 2017-12-21 09:31:51 +01:00
parent 0906f19557
commit 9846259394
3 changed files with 44 additions and 20 deletions

View File

@ -4,7 +4,6 @@ php:
- 5.6
- 7.0
- 7.1
- 7.2
cache:
directories:
@ -24,43 +23,64 @@ env:
global:
- PHP_COVERAGE=FALSE
matrix:
# Nextcloud 9+
- CORE_TYPE=nextcloud CORE_BRANCH=master DB=sqlite
- CORE_TYPE=nextcloud CORE_BRANCH=stable12 DB=sqlite
- CORE_TYPE=nextcloud CORE_BRANCH=stable11 DB=sqlite
- CORE_TYPE=nextcloud CORE_BRANCH=stable10 DB=sqlite
- CORE_TYPE=nextcloud CORE_BRANCH=stable9 DB=sqlite
- CORE_TYPE=nextcloud CORE_BRANCH=master DB=mysql
- CORE_TYPE=nextcloud CORE_BRANCH=stable12 DB=mysql
- CORE_TYPE=nextcloud CORE_BRANCH=stable11 DB=mysql
- CORE_TYPE=nextcloud CORE_BRANCH=stable10 DB=mysql
- CORE_TYPE=nextcloud CORE_BRANCH=stable9 DB=mysql
- CORE_TYPE=nextcloud CORE_BRANCH=master DB=pgsql
- CORE_TYPE=nextcloud CORE_BRANCH=stable12 DB=pgsql
- CORE_TYPE=nextcloud CORE_BRANCH=stable11 DB=pgsql
- CORE_TYPE=nextcloud CORE_BRANCH=stable10 DB=pgsql
- CORE_TYPE=nextcloud CORE_BRANCH=stable9 DB=pgsql
# ownCloud 9.1+
- CORE_TYPE=owncloud CORE_BRANCH=master DB=sqlite
- CORE_TYPE=owncloud CORE_BRANCH=stable10 DB=sqlite
- CORE_TYPE=owncloud CORE_BRANCH=stable9.1 DB=sqlite
- CORE_TYPE=owncloud CORE_BRANCH=master DB=mysql
- CORE_TYPE=owncloud CORE_BRANCH=stable10 DB=mysql
- CORE_TYPE=owncloud CORE_BRANCH=stable9.1 DB=mysql
- CORE_TYPE=owncloud CORE_BRANCH=master DB=pgsql
- CORE_TYPE=owncloud CORE_BRANCH=stable10 DB=pgsql
- CORE_TYPE=owncloud CORE_BRANCH=stable9.1 DB=pgsql
matrix:
fast_finish: true
exclude:
# Nextcloud 11/12 are not compatible with PHP 7.2
include:
# Nextcloud prior v13 is not compatible with PHP 7.2
# (see https://github.com/nextcloud/server/issues/6786#issuecomment-335154372)
- php: 7.2
env: CORE_TYPE=nextcloud CORE_BRANCH=stable11 DB=mysql
env: CORE_TYPE=nextcloud CORE_BRANCH=master DB=sqlite
- php: 7.2
env: CORE_TYPE=nextcloud CORE_BRANCH=stable12 DB=mysql
env: CORE_TYPE=nextcloud CORE_BRANCH=master DB=mysql
- php: 7.2
env: CORE_TYPE=nextcloud CORE_BRANCH=stable11 DB=sqlite
env: CORE_TYPE=nextcloud CORE_BRANCH=master DB=pgsql
# ownCloud prior v10 is not compatible with PHP 7.2
# (see https://github.com/owncloud/core/pull/29878)
- php: 7.2
env: CORE_TYPE=nextcloud CORE_BRANCH=stable12 DB=sqlite
env: CORE_TYPE=owncloud CORE_BRANCH=master DB=sqlite
- php: 7.2
env: CORE_TYPE=nextcloud CORE_BRANCH=stable11 DB=pgsql
env: CORE_TYPE=owncloud CORE_BRANCH=master DB=mysql
- php: 7.2
env: CORE_TYPE=nextcloud CORE_BRANCH=stable12 DB=pgsql
env: CORE_TYPE=owncloud CORE_BRANCH=master DB=pgsql
- php: 7.2
env: CORE_TYPE=owncloud CORE_BRANCH=stable10 DB=sqlite
- php: 7.2
env: CORE_TYPE=owncloud CORE_BRANCH=stable10 DB=mysql
- php: 7.2
env: CORE_TYPE=owncloud CORE_BRANCH=stable10 DB=pgsql
before_install:
# XDebug is only needed if we report coverage -> speeds up other builds

View File

@ -15,7 +15,7 @@ Flow:
1. ownCloud 9.1.0.7+
2. Nextcloud 9+
Supports SQLite and MariaDB, PostgreSQL support is [enabled but not tested](https://github.com/pellaeon/registration/issues/24#issuecomment-294504028).
Supports SQLite, MySQL/MariaDB and PostgreSQL.
# Install
1. Place this app in `owncloud/apps/` or `nextcloud/apps`

View File

@ -5,6 +5,9 @@ namespace OCA\Registration\Util;
class CoreBridge
{
/**
* This function maps an exception class to the available exception class of the core
* in order to provide cross-core and cross-version compatibility.
*
* @param string $className
* @return string
* @throws \LogicException
@ -13,20 +16,20 @@ class CoreBridge
{
static $classes = [
'OCSException' => [
'nextcloud' => 'OCP\AppFramework\OCS\OCSException',
'owncloud' => 'OC\OCS\Exception',
'OCP\AppFramework\OCS\OCSException',
'OC\OCS\Exception',
],
'OCSBadRequestException' => [
'nextcloud' => 'OCP\AppFramework\OCS\OCSBadRequestException',
'owncloud' => 'OC\OCS\Exception',
'OCP\AppFramework\OCS\OCSBadRequestException',
'OC\OCS\Exception',
],
'OCSNotFoundException' => [
'nextcloud' => 'OCP\AppFramework\OCS\OCSNotFoundException',
'owncloud' => 'OC\OCS\Exception',
'OCP\AppFramework\OCS\OCSNotFoundException',
'OC\OCS\Exception',
],
'DoesNotExistException' => [
'nextcloud' => 'OCP\AppFramework\Db\DoesNotExistException',
'owncloud' => 'OCP\AppFramework\Db\DoesNotExistException',
'OCP\AppFramework\Db\DoesNotExistException',
'OCP\AppFramework\Db\DoesNotExistException',
],
];
@ -56,8 +59,9 @@ class CoreBridge
$reflection = new \ReflectionClass($exceptionClassName);
$params = $reflection->getConstructor()->getParameters();
if ($params[0]->getClass() && $params[0]->getClass()->getName() === 'OC\OCS\Result') {
return new $exceptionClassName(new \OC\OCS\Result($message, $code));
if ($params[0]->getClass() && ($params[0]->getClass()->getName() === 'OC\OCS\Result' || $params[0]->getClass()->getName() === 'OC_OCS_Result')) {
$subClass = $params[0]->getClass()->getName();
return new $exceptionClassName(new $subClass($message, $code));
}
if (count($params) >= 2) {