summaryrefslogtreecommitdiffstats
path: root/.github/workflows/phpunit-mysql.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/phpunit-mysql.yml')
-rw-r--r--.github/workflows/phpunit-mysql.yml60
1 files changed, 34 insertions, 26 deletions
diff --git a/.github/workflows/phpunit-mysql.yml b/.github/workflows/phpunit-mysql.yml
index 40d2fff5..762865ab 100644
--- a/.github/workflows/phpunit-mysql.yml
+++ b/.github/workflows/phpunit-mysql.yml
@@ -32,19 +32,17 @@ concurrency:
group: phpunit-mysql-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
-env:
- # Location of the phpunit.xml and phpunit.integration.xml files
- PHPUNIT_CONFIG: ./tests/phpunit.xml
- PHPUNIT_INTEGRATION_CONFIG: ./tests/phpunit.integration.xml
-
jobs:
phpunit-mysql:
runs-on: ubuntu-latest
strategy:
matrix:
- php-versions: ['7.4', '8.0', '8.1']
- server-versions: ['master', 'stable25']
+ php-versions: ['8.0', '8.1']
+ server-versions: ['master']
+ include:
+ - php-versions: '7.4'
+ server-versions: 'stable25'
services:
mysql:
@@ -67,32 +65,33 @@ jobs:
echo "SELECT @@sql_mode;" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword
- name: Checkout server
- uses: actions/checkout@v3
+ uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
with:
submodules: true
repository: nextcloud/server
ref: ${{ matrix.server-versions }}
- name: Checkout app
- uses: actions/checkout@v3
+ uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
with:
path: apps/${{ env.APP_NAME }}
- name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@v2
+ uses: shivammathur/setup-php@1a18b2267f80291a81ca1d33e7c851fe09e7dfc4 # v2
with:
php-version: ${{ matrix.php-versions }}
- tools: phpunit
extensions: mbstring, iconv, fileinfo, intl, mysql, pdo_mysql
coverage: none
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Check composer file existence
id: check_composer
- uses: andstor/file-existence-action@v2
+ uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2
with:
files: apps/${{ env.APP_NAME }}/composer.json
- - name: Set up PHPUnit
+ - 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 }}
@@ -106,34 +105,43 @@ jobs:
./occ maintenance:install --verbose --database=mysql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
./occ app:enable --force ${{ env.APP_NAME }}
- - name: Check PHPUnit config file existence
+ - name: Check PHPUnit script is defined
id: check_phpunit
- uses: andstor/file-existence-action@v2
- with:
- files: apps/${{ env.APP_NAME }}/${{ env.PHPUNIT_CONFIG }}
+ 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.outputs.files_exists == 'true'
+ if: steps.check_phpunit.outcome == 'success'
working-directory: apps/${{ env.APP_NAME }}
- run: ./vendor/phpunit/phpunit/phpunit -c ${{ env.PHPUNIT_CONFIG }}
+ run: composer run test:unit
- - name: Check PHPUnit integration config file existence
+ - name: Check PHPUnit integration script is defined
id: check_integration
- uses: andstor/file-existence-action@v2
- with:
- files: apps/${{ env.APP_NAME }}/${{ env.PHPUNIT_INTEGRATION_CONFIG }}
+ 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.outputs.files_exists == 'true'
+ 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.outputs.files_exists == 'true'
+ if: steps.check_integration.outcome == 'success'
working-directory: apps/${{ env.APP_NAME }}
- run: ./vendor/phpunit/phpunit/phpunit -c ${{ env.PHPUNIT_INTEGRATION_CONFIG }}
+ run: composer run test:integration
+
+ - 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: