Create .github/workflows/phpunit-sqlite.yml

Signed-off-by: Raimund Schlüßler <raimund.schluessler@mailbox.org>
This commit is contained in:
Raimund Schlüßler 2023-03-12 15:13:58 +01:00
parent 05e2b083f4
commit d865e2fc54
No known key found for this signature in database
GPG Key ID: 036FA7EB1A599178
3 changed files with 153 additions and 72 deletions

View File

@ -18,4 +18,4 @@ comment:
require_changes: no
fixes:
- "nextcloud/apps/tasks/::"
- "apps/tasks/::"

152
.github/workflows/phpunit-sqlite.yml vendored Normal file
View File

@ -0,0 +1,152 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: PHPUnit
on:
pull_request:
paths:
- '.github/workflows/**'
- 'appinfo/**'
- 'lib/**'
- 'templates/**'
- 'tests/**'
- 'vendor/**'
- 'vendor-bin/**'
- '.php-cs-fixer.dist.php'
- 'composer.json'
- 'composer.lock'
push:
branches:
- main
- master
- stable*
permissions:
contents: read
concurrency:
group: phpunit-sqlite-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
phpunit-sqlite:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: ['8.0', '8.1']
server-versions: ['stable25', 'master']
include:
- php-versions: '7.4'
server-versions: 'stable25'
steps:
- name: Set app env
run: |
# Split and keep last
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
- name: Checkout server
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
with:
submodules: true
repository: nextcloud/server
ref: ${{ matrix.server-versions }}
- name: Checkout app
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
with:
path: apps/${{ env.APP_NAME }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@1a18b2267f80291a81ca1d33e7c851fe09e7dfc4 # v2
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite
coverage: xdebug
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Check composer file existence
id: check_composer
uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2
with:
files: apps/${{ env.APP_NAME }}/composer.json
- name: Set up dependencies
# Only run if phpunit config file exists
if: steps.check_composer.outputs.files_exists == 'true'
working-directory: apps/${{ env.APP_NAME }}
run: composer i
- name: Set up Nextcloud
env:
DB_PORT: 4444
run: |
mkdir data
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
./occ app:enable --force ${{ env.APP_NAME }}
- name: Check PHPUnit script is defined
id: check_phpunit
continue-on-error: true
working-directory: apps/${{ env.APP_NAME }}
run: |
composer run --list | grep "^ test:unit " | wc -l | grep 1
- name: PHPUnit
# Only run if phpunit config file exists
if: steps.check_phpunit.outcome == 'success'
working-directory: apps/${{ env.APP_NAME }}
run: composer run test:unit
- name: Check PHPUnit integration script is defined
id: check_integration
continue-on-error: true
working-directory: apps/${{ env.APP_NAME }}
run: |
composer run --list | grep "^ test:integration " | wc -l | grep 1
- name: Run Nextcloud
# Only run if phpunit integration config file exists
if: steps.check_integration.outcome == 'success'
run: php -S localhost:8080 &
- name: PHPUnit integration
# Only run if phpunit integration config file exists
if: steps.check_integration.outcome == 'success'
working-directory: apps/${{ env.APP_NAME }}
run: composer run test:integration
- name: Upload coverage to Codecov
if: ${{ matrix.server-versions == 'master' }}
uses: codecov/codecov-action@v3
with:
file: apps/${{ env.APP_NAME }}/clover.unit.xml
flags: php
fail_ci_if_error: true
- name: Skipped
# Fail the action when neither unit nor integration tests ran
if: steps.check_phpunit.outcome == 'failure' && steps.check_integration.outcome == 'failure'
run: |
echo 'Neither PHPUnit nor PHPUnit integration tests are specified in composer.json scripts'
exit 1
summary:
permissions:
contents: none
runs-on: ubuntu-latest
needs: phpunit-sqlite
if: always()
name: phpunit-sqlite-summary
steps:
- name: Summary status
run: if ${{ needs.phpunit-sqlite.result != 'success' }}; then exit 1; fi

View File

@ -1,71 +0,0 @@
name: PHPUnit
on:
pull_request:
push:
branches:
- master
permissions:
contents: read
jobs:
unit-tests:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: ['8.0', '8.1']
nextcloud-versions: ['stable25', 'master']
include:
- php-versions: '7.4'
nextcloud-versions: 'stable25'
name: php${{ matrix.php-versions }} on ${{ matrix.nextcloud-versions }} unit tests
env:
CI: true
XDEBUG_MODE: coverage
steps:
- name: Set up php${{ matrix.php-versions }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
extensions: ctype, curl, dom, gd, gmp, iconv, intl, json, mbstring, openssl, pdo_sqlite, posix, sqlite, xml, zip
coverage: xdebug
- name: Checkout server
uses: actions/checkout@master
with:
repository: nextcloud/server
ref: ${{ matrix.nextcloud-versions }}
path: nextcloud
submodules: recursive
- name: Checkout the app
uses: actions/checkout@master
with:
path: nextcloud/apps/tasks
- name: Install Nextcloud
run: php -f nextcloud/occ maintenance:install --database-name oc_autotest --database-user oc_autotest --admin-user admin --admin-pass admin --database sqlite --database-pass=''
- name: Enable app
run: php -f nextcloud/occ app:enable tasks
- name: Install dependencies
working-directory: nextcloud/apps/tasks
run: composer install
- name: Run unit tests
working-directory: nextcloud/apps/tasks
run: composer run test:unit
- name: Run integration tests
working-directory: nextcloud/apps/tasks
run: composer run test:integration
- name: Upload coverage to Codecov
if: ${{ matrix.nextcloud-versions == 'master' }}
uses: codecov/codecov-action@v3
with:
file: nextcloud/apps/tasks/clover.unit.xml
flags: php
fail_ci_if_error: true