From b753e7631bd318a1f428d8925dec64693879fd0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Tue, 27 Oct 2015 16:09:13 +0100 Subject: [PATCH 1/2] Enable DAV app testing on travis --- .travis.yml | 39 +++++++ apps/dav/tests/travis/litmus-v1.sh | 24 ++++ apps/dav/tests/travis/litmus-v2.sh | 24 ++++ tests/travis/before_install.sh | 40 +++++++ tests/travis/custom.ini | 4 + tests/travis/install.sh | 180 +++++++++++++++++++++++++++++ 6 files changed, 311 insertions(+) create mode 100644 .travis.yml create mode 100644 apps/dav/tests/travis/litmus-v1.sh create mode 100644 apps/dav/tests/travis/litmus-v2.sh create mode 100644 tests/travis/before_install.sh create mode 100644 tests/travis/custom.ini create mode 100755 tests/travis/install.sh diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000..98cf035473 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,39 @@ +sudo: false +language: php +php: + - 5.4 + +env: + global: + - APP=dav + - TC=litmus-v2 + matrix: + - DB=sqlite + +branches: + only: + - master +# - /^stable\d+(\.\d+)?$/ + +addons: + apt: + packages: + - realpath + +before_install: + - bash tests/travis/before_install.sh $DB + +install: + - bash tests/travis/install.sh $DB + +script: + - bash apps/$APP/tests/travis/$TC.sh + +matrix: + include: + - php: 5.4 + env: DB=pgsql;TC=litmus-v1;APP=dav +# - php: 5.4 +# env: DB=mysql;TC=caldavtester;APP=dav + + fast_finish: true diff --git a/apps/dav/tests/travis/litmus-v1.sh b/apps/dav/tests/travis/litmus-v1.sh new file mode 100644 index 0000000000..587561ed29 --- /dev/null +++ b/apps/dav/tests/travis/litmus-v1.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +SCRIPT=`realpath $0` +SCRIPTPATH=`dirname $SCRIPT` + + +# start the server +php -S 127.0.0.1:8888 -t "$SCRIPTPATH/../../../.." & + + +# compile litmus +if [ ! -f /tmp/litmus/litmus-0.13.tar.gz ]; then + mkdir -p /tmp/litmus + wget -O /tmp/litmus/litmus-0.13.tar.gz http://www.webdav.org/neon/litmus/litmus-0.13.tar.gz + cd /tmp/litmus + tar -xzf litmus-0.13.tar.gz + cd /tmp/litmus/litmus-0.13 + ./configure + make +fi + +# run the tests +cd /tmp/litmus/litmus-0.13 +make URL=http://127.0.0.1:8888/remote.php/webdav CREDS="admin admin" TESTS="basic copymove props locks" check diff --git a/apps/dav/tests/travis/litmus-v2.sh b/apps/dav/tests/travis/litmus-v2.sh new file mode 100644 index 0000000000..40a06a26e6 --- /dev/null +++ b/apps/dav/tests/travis/litmus-v2.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +SCRIPT=`realpath $0` +SCRIPTPATH=`dirname $SCRIPT` + + +# start the server +php -S 127.0.0.1:8888 -t "$SCRIPTPATH/../../../.." & + + +# compile litmus +if [ ! -f /tmp/litmus/litmus-0.13.tar.gz ]; then + mkdir -p /tmp/litmus + wget -O /tmp/litmus/litmus-0.13.tar.gz http://www.webdav.org/neon/litmus/litmus-0.13.tar.gz + cd /tmp/litmus + tar -xzf litmus-0.13.tar.gz + cd /tmp/litmus/litmus-0.13 + ./configure + make +fi + +# run the tests +cd /tmp/litmus/litmus-0.13 +make URL=http://127.0.0.1:8888/remote.php/dav/files/admin CREDS="admin admin" TESTS="basic copymove props locks" check diff --git a/tests/travis/before_install.sh b/tests/travis/before_install.sh new file mode 100644 index 0000000000..ee8c3a9862 --- /dev/null +++ b/tests/travis/before_install.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# +# ownCloud +# +# @author Thomas Müller +# @copyright 2014 Thomas Müller thomas.mueller@tmit.eu +# + +set -e + +WORKDIR=$PWD +DB=$1 +echo "Work directory: $WORKDIR" +echo "Database: $DB" + +if [ "$DB" == "mysql" ] ; then + echo "Setting up mysql ..." + mysql -e 'create database oc_autotest;' + mysql -u root -e "CREATE USER 'oc_autotest'@'localhost' IDENTIFIED BY 'owncloud'"; + mysql -u root -e "grant all on oc_autotest.* to 'oc_autotest'@'localhost'"; + mysql -e "SELECT User FROM mysql.user;" +fi + +if [ "$DB" == "pgsql" ] ; then + createuser -U travis -s oc_autotest +fi + +#if [ "$DB" == "oracle" ] ; then +# if [ ! -f before_install_oracle.sh ]; then +# wget https://raw.githubusercontent.com/owncloud/administration/master/travis-ci/before_install_oracle.sh +# fi +# bash ./before_install_oracle.sh +#fi + +# +# copy custom php.ini settings +# +if [ $(phpenv version-name) != 'hhvm' ]; then + phpenv config-add tests/travis/custom.ini +fi diff --git a/tests/travis/custom.ini b/tests/travis/custom.ini new file mode 100644 index 0000000000..7a2c0aab42 --- /dev/null +++ b/tests/travis/custom.ini @@ -0,0 +1,4 @@ +always_populate_raw_post_data = -1 +mbstring.func_overload = 0 +default_charset = 'UTF-8' +output_buffering = off diff --git a/tests/travis/install.sh b/tests/travis/install.sh new file mode 100755 index 0000000000..fe7907f798 --- /dev/null +++ b/tests/travis/install.sh @@ -0,0 +1,180 @@ +#!/bin/bash +# +# ownCloud +# +# @author Thomas Müller +# @copyright 2014 Thomas Müller thomas.mueller@tmit.eu +# + +set -e + +DATABASENAME=oc_autotest +DATABASEUSER=oc_autotest +ADMINLOGIN=admin +BASEDIR=$PWD + +DBCONFIGS="sqlite mysql pgsql oracle" +PHPUNIT=$(which phpunit) + +# set oracle home if it is not set +TRAVIS_ORACLE_HOME="/usr/lib/oracle/xe/app/oracle/product/10.2.0/server" +[ -z "$ORACLE_HOME" ] && ORACLE_HOME=$TRAVIS_ORACLE_HOME + +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 database $DATABASENAME" + +# create autoconfig for sqlite, mysql and postgresql +cat > ./tests/autoconfig-sqlite.php < false, + 'dbtype' => 'sqlite', + 'dbtableprefix' => 'oc_', + 'adminlogin' => '$ADMINLOGIN', + 'adminpass' => 'admin', + 'directory' => '$DATADIR', +); +DELIM + +cat > ./tests/autoconfig-mysql.php < false, + 'dbtype' => 'mysql', + 'dbtableprefix' => 'oc_', + 'adminlogin' => '$ADMINLOGIN', + 'adminpass' => 'admin', + 'directory' => '$DATADIR', + 'dbuser' => '$DATABASEUSER', + 'dbname' => '$DATABASENAME', + 'dbhost' => 'localhost', + 'dbpass' => 'owncloud', +); +DELIM + +cat > ./tests/autoconfig-pgsql.php < false, + 'dbtype' => 'pgsql', + 'dbtableprefix' => 'oc_', + 'adminlogin' => '$ADMINLOGIN', + 'adminpass' => 'admin', + 'directory' => '$DATADIR', + 'dbuser' => '$DATABASEUSER', + 'dbname' => '$DATABASENAME', + 'dbhost' => 'localhost', + 'dbpass' => '', +); +DELIM + +cat > ./tests/autoconfig-oracle.php < false, + 'dbtype' => 'oci', + 'dbtableprefix' => 'oc_', + 'adminlogin' => '$ADMINLOGIN', + 'adminpass' => 'admin', + 'directory' => '$DATADIR', + 'dbuser' => '$DATABASENAME', + 'dbname' => 'XE', + 'dbhost' => 'localhost', + 'dbpass' => 'owncloud', + 'loglevel' => 0, +); +DELIM + +function execute_tests { + 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 + + cp tests/preseed-config.php config/config.php + + if [ "$1" == "oracle" ] ; then + echo "Load Oracle environment variables so that we can run 'sqlplus'." + . $ORACLE_HOME/bin/oracle_env.sh + + echo "create the database" + sqlplus -s -l / as sysdba < Date: Wed, 28 Oct 2015 08:41:23 +0100 Subject: [PATCH 2/2] run litmus scripts only if code in the dav app did change changed --- .travis.yml | 1 + apps/dav/tests/travis/litmus-v1.sh | 1 - apps/dav/tests/travis/litmus-v2.sh | 1 - tests/travis/test_for_app.sh | 17 +++++++++++++++++ 4 files changed, 18 insertions(+), 2 deletions(-) create mode 100755 tests/travis/test_for_app.sh diff --git a/.travis.yml b/.travis.yml index 98cf035473..74dbfe00f0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,6 +21,7 @@ addons: - realpath before_install: + - bash tests/travis/test_for_app.sh $APP - bash tests/travis/before_install.sh $DB install: diff --git a/apps/dav/tests/travis/litmus-v1.sh b/apps/dav/tests/travis/litmus-v1.sh index 587561ed29..ab0690f392 100644 --- a/apps/dav/tests/travis/litmus-v1.sh +++ b/apps/dav/tests/travis/litmus-v1.sh @@ -1,5 +1,4 @@ #!/usr/bin/env bash - SCRIPT=`realpath $0` SCRIPTPATH=`dirname $SCRIPT` diff --git a/apps/dav/tests/travis/litmus-v2.sh b/apps/dav/tests/travis/litmus-v2.sh index 40a06a26e6..892ad327d3 100644 --- a/apps/dav/tests/travis/litmus-v2.sh +++ b/apps/dav/tests/travis/litmus-v2.sh @@ -1,5 +1,4 @@ #!/usr/bin/env bash - SCRIPT=`realpath $0` SCRIPTPATH=`dirname $SCRIPT` diff --git a/tests/travis/test_for_app.sh b/tests/travis/test_for_app.sh new file mode 100755 index 0000000000..a97c66dba8 --- /dev/null +++ b/tests/travis/test_for_app.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# +# ownCloud +# +# @author Thomas Müller +# @copyright 2015 Thomas Müller thomas.mueller@tmit.eu +# + +set -e +APP=$1 + +if git diff ${TRAVIS_COMMIT_RANGE} | grep -- "^+++ b/apps/$APP/"; then + echo "Executing this test config ...." +else + echo "Test config is not relevant for this change. terminating" + exit 1 +fi