diff options
author | Jonas <jonas@freesources.org> | 2022-02-08 15:49:31 +0300 |
---|---|---|
committer | Jonas <jonas@freesources.org> | 2022-02-08 17:00:01 +0300 |
commit | 809226b4e967636977756c3af35ec2fbb9c4146b (patch) | |
tree | 6617c1168f036dcc52fe1c7efc9081f9976d0b65 | |
parent | b73651e1060da43b8f3d9db154530c6ade1da123 (diff) |
Migrate phpunit tests from drone to github actions (Fixes: #1679)
Only test with sqlite and oc for now. There's no added value to run our
basic phpunit test on mysql and postgresql environments.
Also drops the obsolete `occ app:check-code` compatibility tests.
Signed-off-by: Jonas <jonas@freesources.org>
-rw-r--r-- | .drone.yml | 137 | ||||
-rw-r--r-- | .github/workflows/phpunit.yml (renamed from .github/workflows/oci.yml) | 63 | ||||
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | tests/drone-server-install.sh | 138 | ||||
-rw-r--r-- | tests/drone-server-setup.sh | 65 |
5 files changed, 45 insertions, 360 deletions
diff --git a/.drone.yml b/.drone.yml deleted file mode 100644 index 1963b2b72..000000000 --- a/.drone.yml +++ /dev/null @@ -1,137 +0,0 @@ -kind: pipeline -name: compatibility -steps: - - name: compatibility - image: nextcloudci/php7.4:latest - environment: - APP_NAME: text - CORE_BRANCH: master - DB: sqlite - commands: - - composer install - - bash ./tests/drone-server-setup.sh $APP_NAME $CORE_BRANCH $DB - - cd ../server - - ./occ app:check-code $APP_NAME -c strong-comparison - - ./occ app:check-code $APP_NAME -c deprecation -trigger: - branch: - - master - - stable* - event: - - pull_request - - push ---- -kind: pipeline -name: php-sqlite -steps: - - name: php7.4 - image: nextcloudci/php7.4:latest - environment: - APP_NAME: text - CORE_BRANCH: master - DB: sqlite - commands: - - bash ./tests/drone-server-setup.sh $APP_NAME $CORE_BRANCH $DB - - cd ../server/apps/$APP_NAME - - composer install - - phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml - - name: php8.0 - image: nextcloudci/php8.0:latest - environment: - APP_NAME: text - CORE_BRANCH: master - DB: sqlite - commands: - - bash ./tests/drone-server-setup.sh $APP_NAME $CORE_BRANCH $DB - - cd ../server/apps/$APP_NAME - - composer install - - phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml -trigger: - branch: - - master - - stable* - event: - - pull_request - - push ---- -kind: pipeline -name: php-mysql -steps: - - name: php7.4 - image: nextcloudci/php7.4:latest - environment: - APP_NAME: text - CORE_BRANCH: master - DB: mysql - commands: - - bash ./tests/drone-server-setup.sh $APP_NAME $CORE_BRANCH $DB - - cd ../server/apps/$APP_NAME - - composer install - - phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml - #- name: php8.0 - # image: nextcloudci/php8.0:latest - # environment: - # APP_NAME: text - # CORE_BRANCH: master - # DB: mysql - # commands: - # - bash ./tests/drone-server-setup.sh $APP_NAME $CORE_BRANCH $DB - # - cd ../server/apps/$APP_NAME - # - composer install - # - phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml -services: - - name: mysql - image: mysql:5.7.22 - environment: - MYSQL_ROOT_PASSWORD: owncloud - MYSQL_USER: oc_autotest - MYSQL_PASSWORD: owncloud - MYSQL_DATABASE: oc_autotest - command: [ "--innodb_large_prefix=true", "--innodb_file_format=barracuda", "--innodb_file_per_table=true" ] -trigger: - branch: - - master - - stable* - event: - - pull_request - - push ---- -kind: pipeline -name: php-postgres -steps: - - name: php7.4 - image: nextcloudci/php7.4:latest - environment: - APP_NAME: text - CORE_BRANCH: master - DB: postgres - commands: - - bash ./tests/drone-server-setup.sh $APP_NAME $CORE_BRANCH $DB - - cd ../server/apps/$APP_NAME - - composer install - - phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml - #- name: php8.0 - # image: nextcloudci/php8.0:latest - # environment: - # APP_NAME: text - # CORE_BRANCH: master - # DB: postgres - # commands: - # - bash ./tests/drone-server-setup.sh $APP_NAME $CORE_BRANCH $DB - # - cd ../server/apps/$APP_NAME - # - composer install - # - phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml -services: - - name: postgres - image: postgres:10 - environment: - POSTGRES_USER: oc_autotest - POSTGRES_DB: oc_autotest_dummy - POSTGRES_PASSWORD: owncloud -trigger: - branch: - - master - - stable* - event: - - pull_request - - push diff --git a/.github/workflows/oci.yml b/.github/workflows/phpunit.yml index 18a75d9c0..7d0905bfb 100644 --- a/.github/workflows/oci.yml +++ b/.github/workflows/phpunit.yml @@ -2,10 +2,6 @@ name: PHPUnit on: pull_request: - paths: - - 'appinfo/**' - - 'lib/**' - - 'tests/**' push: branches: - master @@ -15,6 +11,43 @@ env: APP_NAME: text jobs: + php: + runs-on: ubuntu-latest + + strategy: + # do not stop on another job's failure + fail-fast: false + matrix: + php-versions: ['7.4', '8.0'] + databases: ['sqlite'] + server-versions: ['master'] + + name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }} + + steps: + - name: Checkout server + uses: actions/checkout@v2 + with: + repository: nextcloud/server + ref: ${{ matrix.server-versions }} + submodules: true + + - name: Checkout app + uses: actions/checkout@v2 + with: + path: apps/${{ env.APP_NAME }} + + - name: Set up php ${{ matrix.php-versions }} + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + tools: phpunit + extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, gd, zip + + - name: Set up PHPUnit + working-directory: apps/${{ env.APP_NAME }} + run: composer i + oci: runs-on: ubuntu-latest @@ -22,7 +55,7 @@ jobs: # do not stop on another job's failure fail-fast: false matrix: - php-versions: ['7.4'] + php-versions: ['7.4', '8.0'] databases: ['oci'] server-versions: ['master'] @@ -40,13 +73,7 @@ jobs: with: repository: nextcloud/server ref: ${{ matrix.server-versions }} - - - name: Checkout submodules - shell: bash - run: | - auth_header="$(git config --local --get http.https://github.com/.extraheader)" - git submodule sync --recursive - git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1 + submodules: true - name: Checkout app uses: actions/checkout@v2 @@ -54,11 +81,11 @@ jobs: path: apps/${{ env.APP_NAME }} - name: Set up php ${{ matrix.php-versions }} - uses: "shivammathur/setup-php@v2" + uses: shivammathur/setup-php@v2 with: - php-version: "${{ matrix.php-versions }}" + php-version: ${{ matrix.php-versions }} + tools: phpunit extensions: mbstring, iconv, fileinfo, intl, oci8 - tools: phpunit:8.5.2 coverage: none - name: Set up PHPUnit @@ -69,10 +96,8 @@ jobs: run: | mkdir data ./occ maintenance:install --verbose --database=oci --database-name=XE --database-host=127.0.0.1 --database-port=1521 --database-user=autotest --database-pass=owncloud --admin-user admin --admin-pass admin - php -f index.php ./occ app:enable --force ${{ env.APP_NAME }} - name: PHPUnit - working-directory: apps/${{ env.APP_NAME }}/tests - run: phpunit -c phpunit.xml - + working-directory: apps/${{ env.APP_NAME }} + run: phpunit -c tests/phpunit.xml @@ -1,6 +1,6 @@ # Nextcloud Text -[![Drone (self-hosted) with branch](https://img.shields.io/drone/build/nextcloud/text/master?server=https%3A%2F%2Fdrone.nextcloud.com)](https://drone.nextcloud.com/nextcloud/text) +![GitHub Workflow Status](https://img.shields.io/github/workflow/status/nextcloud/text/Node) [![Start contributing](https://img.shields.io/github/issues/nextcloud/text/good%20first%20issue?color=7057ff&label=Contribute)](https://github.com/nextcloud/text/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22good+first+issue%22) diff --git a/tests/drone-server-install.sh b/tests/drone-server-install.sh deleted file mode 100644 index 65559056f..000000000 --- a/tests/drone-server-install.sh +++ /dev/null @@ -1,138 +0,0 @@ -#!/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 deleted file mode 100644 index 8d754c65b..000000000 --- a/tests/drone-server-setup.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/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 |