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:
|
when:
|
||||||
matrix:
|
matrix:
|
||||||
TESTS: syntax-php7.3
|
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:
|
eslint:
|
||||||
image: node:lts-alpine
|
image: node:lts-alpine
|
||||||
commands:
|
commands:
|
||||||
|
@ -85,6 +99,32 @@ pipeline:
|
||||||
when:
|
when:
|
||||||
matrix:
|
matrix:
|
||||||
TESTS: vue-build
|
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:
|
matrix:
|
||||||
include:
|
include:
|
||||||
|
@ -93,6 +133,12 @@ matrix:
|
||||||
- TESTS: syntax-php7.1
|
- TESTS: syntax-php7.1
|
||||||
- TESTS: syntax-php7.2
|
- TESTS: syntax-php7.2
|
||||||
- TESTS: syntax-php7.3
|
- TESTS: syntax-php7.3
|
||||||
|
- TESTS: php7.1
|
||||||
|
DB: sqlite
|
||||||
|
- TESTS: php7.1
|
||||||
|
DB: mysql
|
||||||
|
- TESTS: php7.1
|
||||||
|
DB: postgres
|
||||||
- TESTS: eslint
|
- TESTS: eslint
|
||||||
- TESTS: vue-build
|
- TESTS: vue-build
|
||||||
|
|
||||||
|
|
|
@ -9,12 +9,18 @@
|
||||||
"email": "maxence@artificial-owl.com"
|
"email": "maxence@artificial-owl.com"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"config": {
|
||||||
|
"platform": {
|
||||||
|
"php": "7.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"daita/my-small-php-tools": "dev-master",
|
"daita/my-small-php-tools": "dev-master",
|
||||||
"friendica/json-ld": "^1.0"
|
"friendica/json-ld": "^1.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"jakub-onderka/php-parallel-lint": "^1.0"
|
"jakub-onderka/php-parallel-lint": "^1.0",
|
||||||
|
"phpunit/phpunit": "^6.4"
|
||||||
},
|
},
|
||||||
"repositories": [
|
"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