name: PHP Tests on: pull_request jobs: unit-tests: runs-on: ubuntu-latest strategy: matrix: php-versions: [ '8.1', '8.2', '8.3' ] nextcloud-versions: [ 'stable29', 'stable28'] include: - php-versions: '8.0' nextcloud-versions: 'stable26' - php-versions: '8.1' nextcloud-versions: 'stable27' 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@a870b0a9be03fabbba4c6dbf1af1260c0e4d4893 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 Nextcloud run: git clone https://github.com/nextcloud/server.git --recursive --depth 1 -b ${{ matrix.nextcloud-versions }} nextcloud - name: Patch version check for nightly PHP if: ${{ matrix.php-versions == '8.2' }} run: echo " nextcloud/lib/versioncheck.php - 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: Checkout the app uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 with: path: nextcloud/apps/calendar - name: Install dependencies working-directory: nextcloud/apps/calendar run: composer install - name: Run tests working-directory: nextcloud/apps/calendar run: composer run test - name: Upload coverage to Codecov if: ${{ matrix.nextcloud-versions == 'master' }} uses: codecov/codecov-action@ab904c41d6ece82784817410c45d8b8c02684457 # v3 with: token: ${{ secrets.CODECOV_TOKEN }} file: nextcloud/apps/calendar/clover.unit.xml flags: php fail_ci_if_error: true verbose: true integration-tests: runs-on: ubuntu-latest strategy: matrix: php-versions: [ '8.1', '8.2', '8.3' ] nextcloud-versions: [ 'stable29', 'stable28'] include: - php-versions: '8.0' nextcloud-versions: 'stable26' - php-versions: '8.1' nextcloud-versions: 'stable27' name: php${{ matrix.php-versions }} on ${{ matrix.nextcloud-versions }} integration tests env: CI: true XDEBUG_MODE: coverage steps: - name: Set up php${{ matrix.php-versions }} uses: shivammathur/setup-php@a870b0a9be03fabbba4c6dbf1af1260c0e4d4893 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 Nextcloud run: git clone https://github.com/nextcloud/server.git --recursive --depth 1 -b ${{ matrix.nextcloud-versions }} nextcloud - name: Patch version check for nightly PHP if: ${{ matrix.php-versions == '8.2' }} run: echo " nextcloud/lib/versioncheck.php - 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: Checkout the app uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 with: path: nextcloud/apps/calendar - name: Install dependencies working-directory: nextcloud/apps/calendar run: composer install - name: Install Calendar run: php -f nextcloud/occ app:enable calendar - name: Run tests working-directory: nextcloud/apps/calendar run: composer run test:integration summary: runs-on: ubuntu-latest needs: - unit-tests - integration-tests if: always() name: php-test-summary steps: - name: Unit test status run: if ${{ needs.unit-tests.result != 'success' && needs.unit-tests.result != 'skipped' }}; then exit 1; fi - name: Integration test status run: if ${{ needs.integration-tests.result != 'success' && needs.integration-tests.result != 'skipped' }}; then exit 1; fi