Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/text.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2019-06-17 14:14:40 +0300
committerJulius Härtl <jus@bitgrid.net>2019-06-17 14:14:40 +0300
commit2291dd63c281efbec3d6e8f27459af1fcd9e023d (patch)
treecc8d410907d3d5c3bb7a31a768b090dfb165dbc2 /tests
parent70331ba79f56346ad3d6a5e44261addbcdc42c75 (diff)
Add unit test framework to test installing
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'tests')
-rw-r--r--tests/TextTest.php18
-rw-r--r--tests/bootstrap.php6
-rw-r--r--tests/drone-server-install.sh138
-rw-r--r--tests/drone-server-setup.sh65
-rw-r--r--tests/phpunit.xml23
5 files changed, 250 insertions, 0 deletions
diff --git a/tests/TextTest.php b/tests/TextTest.php
new file mode 100644
index 000000000..5bbab6a0f
--- /dev/null
+++ b/tests/TextTest.php
@@ -0,0 +1,18 @@
+<?php
+namespace OCA\Text\Tests;
+
+use OCA\Social\Controller\NavigationController;
+use OCA\Social\Controller\SocialPubController;
+use OCA\Social\Service\CacheActorService;
+use OCA\Text\AppInfo\Application;
+use OCP\IL10N;
+use OCP\IRequest;
+
+class TextTest extends \PHPUnit\Framework\TestCase {
+
+ public function testDummy() {
+ $app = new Application();
+ $this->assertEquals('text', $app::APP_NAME);
+ }
+
+}
diff --git a/tests/bootstrap.php b/tests/bootstrap.php
new file mode 100644
index 000000000..a36794493
--- /dev/null
+++ b/tests/bootstrap.php
@@ -0,0 +1,6 @@
+<?php
+
+require_once __DIR__ . '/../../../tests/bootstrap.php';
+
+\OC_App::loadApp('text');
+OC_Hook::clear();
diff --git a/tests/drone-server-install.sh b/tests/drone-server-install.sh
new file mode 100644
index 000000000..65559056f
--- /dev/null
+++ b/tests/drone-server-install.sh
@@ -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 \ No newline at end of file
diff --git a/tests/drone-server-setup.sh b/tests/drone-server-setup.sh
new file mode 100644
index 000000000..8d754c65b
--- /dev/null
+++ b/tests/drone-server-setup.sh
@@ -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
diff --git a/tests/phpunit.xml b/tests/phpunit.xml
new file mode 100644
index 000000000..3ecf457ab
--- /dev/null
+++ b/tests/phpunit.xml
@@ -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='Text 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>
+