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
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
parent70331ba79f56346ad3d6a5e44261addbcdc42c75 (diff)
Add unit test framework to test installing
Signed-off-by: Julius Härtl <jus@bitgrid.net>
-rw-r--r--package-lock.json41
-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
6 files changed, 261 insertions, 30 deletions
diff --git a/package-lock.json b/package-lock.json
index 4380c1afb..fe4d3bffd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5178,8 +5178,7 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"aproba": {
"version": "1.2.0",
@@ -5200,14 +5199,12 @@
"balanced-match": {
"version": "1.0.0",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -5222,20 +5219,17 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"core-util-is": {
"version": "1.0.2",
@@ -5352,8 +5346,7 @@
"inherits": {
"version": "2.0.3",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"ini": {
"version": "1.3.5",
@@ -5365,7 +5358,6 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@@ -5380,7 +5372,6 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -5388,14 +5379,12 @@
"minimist": {
"version": "0.0.8",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"minipass": {
"version": "2.3.5",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@@ -5414,7 +5403,6 @@
"version": "0.5.1",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"minimist": "0.0.8"
}
@@ -5495,8 +5483,7 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"object-assign": {
"version": "4.1.1",
@@ -5508,7 +5495,6 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"wrappy": "1"
}
@@ -5594,8 +5580,7 @@
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"safer-buffer": {
"version": "2.1.2",
@@ -5631,7 +5616,6 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -5651,7 +5635,6 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@@ -5695,14 +5678,12 @@
"wrappy": {
"version": "1.0.2",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"yallist": {
"version": "3.0.3",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
}
}
},
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>
+