kopia lustrzana https://github.com/nextcloud/social
Add basic test skeleton
Signed-off-by: Julius Härtl <jus@bitgrid.net>pull/454/head
rodzic
90779e4e6c
commit
3383843670
46
.drone.yml
46
.drone.yml
|
@ -69,6 +69,20 @@ pipeline:
|
|||
when:
|
||||
matrix:
|
||||
TESTS: syntax-php7.3
|
||||
php7.1:
|
||||
image: nextcloudci/php7.1:php7.1-16
|
||||
environment:
|
||||
- APP_NAME=social
|
||||
- CORE_BRANCH=stable15
|
||||
commands:
|
||||
- bash ./tests/drone-server-setup.sh $APP_NAME $CORE_BRANCH ${DB}
|
||||
- cd ../server/apps/$APP_NAME
|
||||
- composer install
|
||||
- phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
|
||||
when:
|
||||
matrix:
|
||||
TESTS: php7.1
|
||||
|
||||
eslint:
|
||||
image: node:lts-alpine
|
||||
commands:
|
||||
|
@ -85,6 +99,32 @@ pipeline:
|
|||
when:
|
||||
matrix:
|
||||
TESTS: vue-build
|
||||
services:
|
||||
mysql:
|
||||
image: mysql:5.7.22
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=owncloud
|
||||
- MYSQL_USER=oc_autotest
|
||||
- MYSQL_PASSWORD=owncloud
|
||||
- MYSQL_DATABASE=oc_autotest
|
||||
command: [ "--innodb_large_prefix=true", "--innodb_file_format=barracuda", "--innodb_file_per_table=true" ]
|
||||
tmpfs:
|
||||
- /var/lib/mysql
|
||||
when:
|
||||
matrix:
|
||||
DB: mysql
|
||||
postgres:
|
||||
image: postgres:10
|
||||
environment:
|
||||
- POSTGRES_USER=oc_autotest
|
||||
# This is required as nextcloud will create a separte user since the oc_autotest user can create roles
|
||||
- POSTGRES_DB=oc_autotest_dummy
|
||||
- POSTGRES_PASSWORD=owncloud
|
||||
tmpfs:
|
||||
- /var/lib/postgresql/data
|
||||
when:
|
||||
matrix:
|
||||
DB: postgres
|
||||
|
||||
matrix:
|
||||
include:
|
||||
|
@ -93,6 +133,12 @@ matrix:
|
|||
- TESTS: syntax-php7.1
|
||||
- TESTS: syntax-php7.2
|
||||
- TESTS: syntax-php7.3
|
||||
- TESTS: php7.1
|
||||
DB: sqlite
|
||||
- TESTS: php7.1
|
||||
DB: mysql
|
||||
- TESTS: php7.1
|
||||
DB: postgres
|
||||
- TESTS: eslint
|
||||
- TESTS: vue-build
|
||||
|
||||
|
|
|
@ -9,12 +9,18 @@
|
|||
"email": "maxence@artificial-owl.com"
|
||||
}
|
||||
],
|
||||
"config": {
|
||||
"platform": {
|
||||
"php": "7.0.0"
|
||||
}
|
||||
},
|
||||
"require": {
|
||||
"daita/my-small-php-tools": "dev-master",
|
||||
"friendica/json-ld": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"jakub-onderka/php-parallel-lint": "^1.0"
|
||||
"jakub-onderka/php-parallel-lint": "^1.0",
|
||||
"phpunit/phpunit": "^6.4"
|
||||
},
|
||||
"repositories": [
|
||||
{
|
||||
|
|
Plik diff jest za duży
Load Diff
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
namespace OCA\Social\Tests;
|
||||
|
||||
use OCA\Social\Controller\NavigationController;
|
||||
use OCA\Social\Controller\SocialPubController;
|
||||
use OCA\Social\Service\CacheActorService;
|
||||
use OCP\IL10N;
|
||||
use OCP\IRequest;
|
||||
|
||||
class SocialTest extends \PHPUnit\Framework\TestCase {
|
||||
|
||||
public function testDummy() {
|
||||
/**
|
||||
* Dummy test to check if phpunit is working properly
|
||||
*/
|
||||
$socialPub = new SocialPubController(
|
||||
'admin',
|
||||
$this->createMock(IRequest::class),
|
||||
$this->createMock(IL10N::class),
|
||||
$this->createMock(CacheActorService::class),
|
||||
$this->createMock(NavigationController::class)
|
||||
);
|
||||
$socialPub->actor('123');
|
||||
$this->assertTrue(true);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
|
||||
require_once __DIR__ . '/../../../tests/bootstrap.php';
|
||||
require_once __DIR__.'/../vendor/autoload.php';
|
||||
|
||||
\OC_App::loadApp('social');
|
||||
OC_Hook::clear();
|
|
@ -0,0 +1,138 @@
|
|||
#!/bin/bash
|
||||
# TODO: move this out of the repo to make it usable in other apps
|
||||
|
||||
set -e
|
||||
|
||||
DATABASENAME=oc_autotest
|
||||
DATABASEUSER=oc_autotest
|
||||
[ -z "$DATABASEHOST" ] && DATABASEHOST="localhost"
|
||||
ADMINLOGIN=admin
|
||||
BASEDIR=$PWD
|
||||
|
||||
DBCONFIGS="sqlite mysql pgsql oracle"
|
||||
PHPUNIT=$(which phpunit)
|
||||
|
||||
if [ $1 ]; then
|
||||
FOUND=0
|
||||
for DBCONFIG in $DBCONFIGS; do
|
||||
if [ $1 = $DBCONFIG ]; then
|
||||
FOUND=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ $FOUND = 0 ]; then
|
||||
echo -e "Unknown database config name \"$1\"\n" >&2
|
||||
print_syntax
|
||||
exit 2
|
||||
fi
|
||||
fi
|
||||
|
||||
# use tmpfs for datadir - should speedup unit test execution
|
||||
DATADIR=$BASEDIR/data-autotest
|
||||
|
||||
echo "Using $1 database $DATABASENAME"
|
||||
|
||||
# create autoconfig for sqlite, mysql and postgresql
|
||||
cat > ./tests/autoconfig-sqlite.php <<DELIM
|
||||
<?php
|
||||
\$AUTOCONFIG = array (
|
||||
'installed' => false,
|
||||
'dbtype' => 'sqlite',
|
||||
'dbtableprefix' => 'oc_',
|
||||
'adminlogin' => '$ADMINLOGIN',
|
||||
'adminpass' => 'admin',
|
||||
'directory' => '$DATADIR',
|
||||
);
|
||||
DELIM
|
||||
|
||||
cat > ./tests/autoconfig-mysql.php <<DELIM
|
||||
<?php
|
||||
\$AUTOCONFIG = array (
|
||||
'installed' => false,
|
||||
'dbtype' => 'mysql',
|
||||
'dbtableprefix' => 'oc_',
|
||||
'adminlogin' => '$ADMINLOGIN',
|
||||
'adminpass' => 'admin',
|
||||
'directory' => '$DATADIR',
|
||||
'dbuser' => '$DATABASEUSER',
|
||||
'dbname' => '$DATABASENAME',
|
||||
'dbhost' => '$DATABASEHOST',
|
||||
'dbpass' => 'owncloud',
|
||||
);
|
||||
DELIM
|
||||
|
||||
cat > ./tests/autoconfig-pgsql.php <<DELIM
|
||||
<?php
|
||||
\$AUTOCONFIG = array (
|
||||
'installed' => false,
|
||||
'dbtype' => 'pgsql',
|
||||
'dbtableprefix' => 'oc_',
|
||||
'adminlogin' => '$ADMINLOGIN',
|
||||
'adminpass' => 'admin',
|
||||
'directory' => '$DATADIR',
|
||||
'dbuser' => '$DATABASEUSER',
|
||||
'dbname' => '$DATABASENAME',
|
||||
'dbhost' => '$DATABASEHOST',
|
||||
'dbpass' => 'owncloud',
|
||||
);
|
||||
DELIM
|
||||
|
||||
cat > ./tests/autoconfig-oracle.php <<DELIM
|
||||
<?php
|
||||
\$AUTOCONFIG = array (
|
||||
'installed' => false,
|
||||
'dbtype' => 'oci',
|
||||
'dbtableprefix' => 'oc_',
|
||||
'adminlogin' => '$ADMINLOGIN',
|
||||
'adminpass' => 'admin',
|
||||
'directory' => '$DATADIR',
|
||||
'dbuser' => 'autotest',
|
||||
'dbname' => 'XE',
|
||||
'dbhost' =>'$DATABASEHOST',
|
||||
'dbpass' => 'owncloud',
|
||||
'loglevel' => 0,
|
||||
);
|
||||
DELIM
|
||||
|
||||
function run_install {
|
||||
echo "Setup environment for $1 testing ..."
|
||||
# back to root folder
|
||||
cd $BASEDIR
|
||||
|
||||
# revert changes to tests/data
|
||||
git checkout tests/data/*
|
||||
|
||||
# reset data directory
|
||||
rm -rf $DATADIR
|
||||
mkdir $DATADIR
|
||||
touch $DATADIR/nextcloud.log
|
||||
|
||||
cp tests/preseed-config.php config/config.php
|
||||
|
||||
# copy autoconfig
|
||||
cp $BASEDIR/tests/autoconfig-$1.php $BASEDIR/config/autoconfig.php
|
||||
|
||||
# trigger installation
|
||||
echo "INDEX"
|
||||
php -f index.php
|
||||
echo "END INDEX"
|
||||
|
||||
}
|
||||
|
||||
function print_config {
|
||||
|
||||
echo "nextcloud configuration:"
|
||||
cat $BASEDIR/config/config.php
|
||||
|
||||
echo "data directory:"
|
||||
ls -ll $DATADIR
|
||||
|
||||
echo "nextcloud.log:"
|
||||
[[ -f "$DATADIR/nextcloud.log" ]] && cat $DATADIR/nextcloud.log
|
||||
|
||||
}
|
||||
|
||||
run_install $1
|
||||
print_config
|
||||
|
||||
cd $BASEDIR
|
|
@ -0,0 +1,65 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# ownCloud
|
||||
#
|
||||
# @author Thomas Müller
|
||||
# @copyright 2014 Thomas Müller thomas.mueller@tmit.eu
|
||||
#
|
||||
|
||||
# TODO: move this out of the repo to make it usable in other apps
|
||||
|
||||
set -e
|
||||
|
||||
WORKDIR=$PWD
|
||||
APP_NAME=$1
|
||||
CORE_BRANCH=$2
|
||||
DB=$3
|
||||
echo "Work directory: $WORKDIR"
|
||||
echo "Database: $DB"
|
||||
|
||||
# Cloning server
|
||||
cd ..
|
||||
git clone --depth 1 -b $CORE_BRANCH https://github.com/nextcloud/server
|
||||
cd server
|
||||
git submodule update --init
|
||||
|
||||
# Move app into apps folder
|
||||
cd apps
|
||||
cp -R $WORKDIR/ $APP_NAME
|
||||
cd $WORKDIR
|
||||
|
||||
[[ -z "$DATABASEHOST" ]] && DATABASEHOST="$DB"
|
||||
|
||||
if [[ "$DB" == "mysql" ]] ; then
|
||||
echo "Waiting for MySQL initialisation ..."
|
||||
if ! ../server/apps/files_external/tests/env/wait-for-connection $DATABASEHOST 3306 600; then
|
||||
echo "[ERROR] Waited 600 seconds, no response" >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$DB" == "postgres" ]] ; then
|
||||
echo "Waiting for Postgres to be available ..."
|
||||
if ! ../server/apps/files_external/tests/env/wait-for-connection $DATABASEHOST 5432 60; then
|
||||
echo "[ERROR] Waited 60 seconds for $DATABASEHOST, no response" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "Give it 10 additional seconds ..."
|
||||
sleep 10
|
||||
# Temporary fix since core_install uses pgsql
|
||||
DB="pgsql"
|
||||
fi
|
||||
|
||||
# TODO: oracle
|
||||
export DATABASEHOST="$DATABASEHOST"
|
||||
|
||||
echo "Installing server"
|
||||
cd ../server
|
||||
bash $WORKDIR/tests/drone-server-install.sh $DB
|
||||
|
||||
echo "Installing app: $APP_NAME"
|
||||
php occ app:enable $APP_NAME
|
||||
|
||||
cd apps/$APP_NAME
|
||||
pwd
|
||||
ls /drone/src
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<phpunit bootstrap="bootstrap.php"
|
||||
verbose="true"
|
||||
timeoutForSmallTests="900"
|
||||
timeoutForMediumTests="900"
|
||||
timeoutForLargeTests="900"
|
||||
>
|
||||
<testsuite name='Social App Tests'>
|
||||
<directory suffix='Test.php'>.</directory>
|
||||
</testsuite>
|
||||
<!-- filters for code coverage -->
|
||||
<filter>
|
||||
<whitelist>
|
||||
<directory suffix=".php">../appinfo</directory>
|
||||
<directory suffix=".php">../lib</directory>
|
||||
</whitelist>
|
||||
</filter>
|
||||
<logging>
|
||||
<!-- and this is where your report will be written -->
|
||||
<log type="coverage-clover" target="./clover.xml"/>
|
||||
</logging>
|
||||
</phpunit>
|
||||
|
Ładowanie…
Reference in New Issue