From 72a5662f598aa95effabee8ef08c75ab9eebea5d Mon Sep 17 00:00:00 2001 From: Victor Dubiniuk Date: Wed, 29 Oct 2014 19:27:53 +0300 Subject: [PATCH] Let the battle begin --- .travis.yml | 42 +++++++++++-- tests/bootstrap.php | 1 - tests/env_setup.sh | 144 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 180 insertions(+), 7 deletions(-) create mode 100755 tests/env_setup.sh diff --git a/.travis.yml b/.travis.yml index af69e92e..ef4228d1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,6 +16,19 @@ php: #env: # - DB=mysql # - DB=pgsql +env: + global: + - CORE_BRANCH=master + matrix: + - DB=sqlite + +branches: + only: + - master + +before_install: + - wget https://raw.githubusercontent.com/owncloud/administration/master/travis-ci/before_install.sh + - bash ./before_install.sh documents $CORE_BRANCH $DB # execute any number of scripts before the test run, custom env's are available as variables #before_script: @@ -24,11 +37,28 @@ php: # - if [[ "$DB" == "mysql" ]]; then mysql -e "create database IF NOT EXISTS hello_world_test;" -uroot; fi # omitting "script:" will default to phpunit -# use the $DB env variable to determine the phpunit.xml to use -#script: phpunit --configuration phpunit_$DB.xml --coverage-text -script: ant test -# configure notifications (email, IRC, campfire etc) -#notifications: -# irc: "irc.freenode.org#travis" +script: + # Test lint + - cd ../core/apps/documents + - sh -c "if [ '$DB' = 'sqlite' ]; then ant test; fi" + + # Run phpunit tests + - cd tests + - phpunit --configuration phpunit.xml + # Create coverage report + - wget https://scrutinizer-ci.com/ocular.phar + - php ocular.phar code-coverage:upload --format=php-clover clover.xml + +matrix: + include: + - php: 5.4 + env: DB=mysql + - php: 5.4 + env: DB=pgsql + - php: 5.4 + env: DB=oracle + allow_failures: + - php: hhvm + fast_finish: true \ No newline at end of file diff --git a/tests/bootstrap.php b/tests/bootstrap.php index e69f5862..57bf2fa0 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -6,7 +6,6 @@ $RUNTIME_NOAPPS = true; define('PHPUNIT_RUN', 1); require_once __DIR__.'/../../../lib/base.php'; -require_once __DIR__.'/../vendor/autoload.php'; if(!class_exists('PHPUnit_Framework_TestCase')) { require_once('PHPUnit/Autoload.php'); diff --git a/tests/env_setup.sh b/tests/env_setup.sh new file mode 100755 index 00000000..64cb96f0 --- /dev/null +++ b/tests/env_setup.sh @@ -0,0 +1,144 @@ +#!/bin/bash +# +# ownCloud + +BASEDIR=$PWD + +if [ "$DB" == "mysql" ] ; then + DATABASENAME=documents_test + DATABASEUSER=documents_test + ADMINLOGIN=travis + mysql -e 'CREATE DATABASE IF NOT EXISTS documents_test' + mysql -e "UPDATE mysql.user SET Password=PASSWORD('travis') WHERE User='travis' AND Host='localhost';" + mysql -e "FLUSH PRIVILEGES;" +fi + +if [ "$DB" == "sqlite" ] ; then + DATABASENAME=documents_test + DATABASEUSER=documents_test + ADMINLOGIN=oc_autotest +fi + +DATADIR=$BASEDIR/data-autotest + +echo "Using database $DATABASENAME with $DB" + +# create autoconfig for sqlite, mysql and postgresql +cat > $BASEDIR/tests/autoconfig-sqlite.php < false, + 'dbtype' => 'sqlite', + 'dbtableprefix' => 'oc_', + 'adminlogin' => '$ADMINLOGIN', + 'adminpass' => 'admin', + 'directory' => '$DATADIR', +); +DELIM + +cat > $BASEDIR/tests/autoconfig-mysql.php < false, + 'dbtype' => 'mysql', + 'dbtableprefix' => 'oc_', + 'adminlogin' => '$ADMINLOGIN', + 'adminpass' => 'travis', + 'directory' => '$DATADIR', + 'dbuser' => 'travis', + 'dbname' => '$DATABASENAME', + 'dbhost' => 'localhost', + 'dbpass' => 'travis', +); +DELIM + +cat > $BASEDIR/tests/autoconfig-pgsql.php < false, + 'dbtype' => 'pgsql', + 'dbtableprefix' => 'oc_', + 'adminlogin' => '$ADMINLOGIN', + 'adminpass' => 'admin', + 'directory' => '$DATADIR', + 'dbuser' => '$DATABASEUSER', + 'dbname' => '$DATABASENAME', + 'dbhost' => 'localhost', + 'dbpass' => 'owncloud', +); +DELIM + +function setup_db { + echo "Setup environment for $DB testing ..." + # back to root folder + cd $BASEDIR + + # reset data directory + rm -rf $DATADIR + mkdir $DATADIR + + #rm -rf config/config.php + cp $BASEDIR/tests/preseed-config.php $BASEDIR/../core/config/config.php + + # copy autoconfig + cat $BASEDIR/tests/autoconfig-$DB.php + cp $BASEDIR/tests/autoconfig-$DB.php $BASEDIR/../core/config/autoconfig.php + ls -l $BASEDIR/../core/config/ + + # trigger installation + cd $BASEDIR/../core/ + php -f index.php + cd - + + #test execution + echo "Testing with $DB ..." + cd tests +} + +# +# start test execution +# +setup_db '$DB' + +ls $BASEDIR/tests/ +ls $BASEDIR/../core/config/ +cat $BASEDIR/../core/config/config.php +#ls $BASEDIR/../core/data/ +#cat $BASEDIR/../core/data/owncloud.log + +# +# NOTES on mysql: +# - CREATE DATABASE oc_autotest; +# - CREATE USER 'oc_autotest'@'localhost' IDENTIFIED BY 'owncloud'; +# - grant all on oc_autotest.* to 'oc_autotest'@'localhost'; +# +# - for parallel executor support with EXECUTOR_NUMBER=0: +# - CREATE DATABASE oc_autotest0; +# - CREATE USER 'oc_autotest0'@'localhost' IDENTIFIED BY 'owncloud'; +# - grant all on oc_autotest0.* to 'oc_autotest0'@'localhost'; +# +# NOTES on pgsql: +# - su - postgres +# - createuser -P oc_autotest (enter password and enable superuser) +# - to enable dropdb I decided to add following line to pg_hba.conf (this is not the safest way but I don't care for the testing machine): +# local all all trust +# +# - for parallel executor support with EXECUTOR_NUMBER=0: +# - createuser -P oc_autotest0 (enter password and enable superuser) +# +# NOTES on oci: +# - it's a pure nightmare to install Oracle on a Linux-System +# - DON'T TRY THIS AT HOME! +# - if you really need it: we feel sorry for you +# + +cd $BASEDIR +cd .. +git clone https://github.com/owncloud/core +cd core +git submodule update --init +mkdir apps2 +ln -s $BASEDIR apps2 +cd - + +cd $BASEDIR \ No newline at end of file