Add basic test skeleton

Signed-off-by: Julius Härtl <jus@bitgrid.net>
pull/454/head
Julius Härtl 2019-03-06 10:50:21 +01:00 zatwierdzone przez Maxence Lange
rodzic 90779e4e6c
commit 3383843670
8 zmienionych plików z 1840 dodań i 8 usunięć

Wyświetl plik

@ -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

Wyświetl plik

@ -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": [
{

1534
composer.lock wygenerowano

Plik diff jest za duży Load Diff

Wyświetl plik

@ -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);
}
}

Wyświetl plik

@ -0,0 +1,7 @@
<?php
require_once __DIR__ . '/../../../tests/bootstrap.php';
require_once __DIR__.'/../vendor/autoload.php';
\OC_App::loadApp('social');
OC_Hook::clear();

Wyświetl plik

@ -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

Wyświetl plik

@ -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

23
tests/phpunit.xml 100644
Wyświetl plik

@ -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>