# Redmine runs tests on own continuous integration server.
# http://www.redmine.org/projects/redmine/wiki/Continuous_integration
# You can also run tests on your environment.
language: ruby
rvm:
  - 1.9.3
  - 2.0
  - 2.1
  - 2.2
  - jruby-9.0.1.0
  - jruby
env:
  - "SUITE=units       DB=postgresql"
  - "SUITE=functionals DB=postgresql"
  - "SUITE=integration DB=postgresql"
  - "SUITE=ui          DB=postgresql"
  - "SUITE=units       DB=postgresql-8.4"
  - "SUITE=functionals DB=postgresql-8.4"
  - "SUITE=integration DB=postgresql-8.4"
  - "SUITE=ui          DB=postgresql-8.4"
  - "SUITE=units       DB=postgresql-9.1"
  - "SUITE=functionals DB=postgresql-9.1"
  - "SUITE=integration DB=postgresql-9.1"
  - "SUITE=ui          DB=postgresql-9.1"
  - "SUITE=units       DB=postgresql-9.2"
  - "SUITE=functionals DB=postgresql-9.2"
  - "SUITE=integration DB=postgresql-9.2"
  - "SUITE=ui          DB=postgresql-9.2"
  - "SUITE=units       DB=postgresql-9.3"
  - "SUITE=functionals DB=postgresql-9.3"
  - "SUITE=integration DB=postgresql-9.3"
  - "SUITE=ui          DB=postgresql-9.3"
  - "SUITE=units       DB=postgresql-9.4"
  - "SUITE=functionals DB=postgresql-9.4"
  - "SUITE=integration DB=postgresql-9.4"
  - "SUITE=ui          DB=postgresql-9.4"
  - "SUITE=units       DB=postgresql-9.5"
  - "SUITE=functionals DB=postgresql-9.5"
  - "SUITE=integration DB=postgresql-9.5"
  - "SUITE=ui          DB=postgresql-9.5"
  - "SUITE=units       DB=mysql-5.5"
  - "SUITE=functionals DB=mysql-5.5"
  - "SUITE=integration DB=mysql-5.5"
  - "SUITE=ui          DB=mysql-5.5"
  - "SUITE=units       DB=mysql-5.6"
  - "SUITE=functionals DB=mysql-5.6"
  - "SUITE=integration DB=mysql-5.6"
  - "SUITE=ui          DB=mysql-5.6"
  - "SUITE=units       DB=mysql-5.7-dmr"
  - "SUITE=functionals DB=mysql-5.7-dmr"
  - "SUITE=integration DB=mysql-5.7-dmr"
  - "SUITE=ui          DB=mysql-5.7-dmr"
  - "SUITE=units       DB=mariadb-5.5"
  - "SUITE=functionals DB=mariadb-5.5"
  - "SUITE=integration DB=mariadb-5.5"
  - "SUITE=ui          DB=mariadb-5.5"
  - "SUITE=units       DB=mariadb-10.0"
  - "SUITE=functionals DB=mariadb-10.0"
  - "SUITE=integration DB=mariadb-10.0"
  - "SUITE=ui          DB=mariadb-10.0"
  - "SUITE=units       DB=sqlite3"
  - "SUITE=functionals DB=sqlite3"
  - "SUITE=integration DB=sqlite3"
  - "SUITE=ui          DB=sqlite3"
matrix:
  allow_failures:
    # http://www.redmine.org/issues/20251
    - env: "SUITE=ui          DB=postgresql"
    - env: "SUITE=ui          DB=mysql-5.5"
    - env: "SUITE=ui          DB=mysql-5.6"
    - env: "SUITE=ui          DB=mysql-5.7-dmr"
    - env: "SUITE=ui          DB=mariadb-5.5"
    - env: "SUITE=ui          DB=mariadb-10.0"
    - env: "SUITE=ui          DB=sqlite3"
    - env: "SUITE=units       DB=mysql-5.7-dmr"
    - env: "SUITE=functionals DB=mysql-5.7-dmr"
    - env: "SUITE=integration DB=mysql-5.7-dmr"
    - env: "SUITE=ui          DB=postgresql-8.4"
    - env: "SUITE=ui          DB=postgresql-9.1"
    - env: "SUITE=ui          DB=postgresql-9.2"
    - env: "SUITE=ui          DB=postgresql-9.3"
    - env: "SUITE=ui          DB=postgresql-9.4"
    - env: "SUITE=ui          DB=postgresql-9.5"
    - rvm: jruby-9.0.1.0
    # SCM tests fail randomly due to IO.popen().
    # http://www.redmine.org/issues/19091
    # https://github.com/jruby/jruby/issues/779
    - rvm: jruby
    # http://www.redmine.org/issues/17460
    # http://www.redmine.org/issues/19344
    - env: "SUITE=units       DB=mysql-5.6"
    - env: "SUITE=units       DB=mysql-5.7-dmr"
    - env: "SUITE=units       DB=mariadb-5.5"
    - env: "SUITE=units       DB=mariadb-10.0"
before_install:
  # https://github.com/travis-ci/travis-ci/issues/4720
  - if [[ ${TRAVIS_RUBY_VERSION} =~ jruby-9\.0 ]] ;
    then
      rvm get master ;
      rvm use ${TRAVIS_RUBY_VERSION} --install ;
      ruby --version ;
    fi
  - "sudo apt-get update -qq"
  - "sudo apt-get --no-install-recommends install bzr cvs git mercurial subversion"
  - dpkg -l '*mysql*'
  - if [[ $DB =~ (mariadb|mysql-5\.[67]) ]] ;
    then
      sudo service mysql stop ;
      sudo apt-get install python-software-properties ;
      if [[ $DB =~ mariadb ]] ;
      then
        sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db ;
        MARIADB_VER=`echo $DB | sed -e 's/mariadb-//'` ;
        sudo add-apt-repository ''"deb http://ftp.osuosl.org/pub/mariadb/repo/${MARIADB_VER}/ubuntu precise main"'' ;
        sudo cp test/travis/mariadb.pref /etc/apt/preferences.d/mariadb.pref ;
        sudo apt-get update ;
        sudo DEBIAN_FRONTEND=noninteractive apt-get -q --yes --force-yes -f --option DPkg::Options::=--force-confnew install mariadb-server ;
        sudo apt-get install libmariadbd-dev ;
      else
        echo mysql-apt-config mysql-apt-config/enable-repo select $DB | sudo debconf-set-selections ;
        wget http://dev.mysql.com/get/mysql-apt-config_0.2.1-1ubuntu12.04_all.deb ;
        sudo dpkg --install mysql-apt-config_0.2.1-1ubuntu12.04_all.deb ;
        sudo apt-get update -q ;
        sudo apt-get install -q -y -o Dpkg::Options::=--force-confnew mysql-server ;
      fi
    elif [[ $DB =~ postgresql ]] ;
    then
      if [[ $DB =~ postgresql- ]] ;
      then
        PG_VER=`echo $DB | sed -e 's/postgresql-//'` ;
        sudo service postgresql stop ;
        sudo apt-get -y -qq --purge remove postgresql libpq-dev libpq5 postgresql-client-common postgresql-common ;
        sudo rm -rf /var/lib/postgresql ;
        sudo sh -c "echo deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main ${PG_VER} >> /etc/apt/sources.list.d/pgdg.list" ;
        wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add - ;
        sudo apt-get update -qq ;
        sudo apt-get -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::="--force-confnew" install postgresql-${PG_VER} postgresql-contrib-${PG_VER} postgresql-server-dev-${PG_VER} ;
        echo "local all all trust" | sudo tee /etc/postgresql/${PG_VER}/main/pg_hba.conf ;
        echo "host all all 127.0.0.1/32 trust" | sudo tee -a /etc/postgresql/${PG_VER}/main/pg_hba.conf ;
        echo "host all all ::1/128 trust" | sudo tee -a /etc/postgresql/${PG_VER}/main/pg_hba.conf ;
        sudo service postgresql restart ;
      fi ;
      psql --version ;
      psql -c "SHOW SERVER_VERSION" -U postgres ;
      psql -c "SHOW SERVER_ENCODING" -U postgres ;
      psql -c "SHOW DateStyle" -U postgres ;
    fi
  - sudo sh -x test/travis/install-openldap.sh
script:
  - export DATABASE_ADAPTER=${DB}
  - "SCMS=bazaar,cvs,subversion,git,mercurial,filesystem"
  - "export SCMS"
  - "git --version"
  - "bundle install"
  - "RUN_ON_NOT_OFFICIAL='' RUBY_VER=1.9 BRANCH=trunk bundle exec rake config/database.yml"
  - "bundle install"
  - "bundle exec rake ci:setup"
  - phantomjs --webdriver 4444 &
  - JRUBY_OPTS='-J-Xmx1024m -J-XX:MaxPermSize=1024m' bundle exec rake test:${SUITE}
notifications:
  email: false
