From 50cf3bf4f74f06bb7bac669b09b478dbeb43a3a0 Mon Sep 17 00:00:00 2001 From: Art4 Date: Wed, 6 Nov 2024 21:57:23 +0000 Subject: [PATCH] Revert "remove GitHub Action for PHP tests" This reverts commit f1e268ee0a10cfd801b3ad0cef3aa8b98caf39f5. --- .github/workflows/php.yml | 101 ++++++++++++++++++++++++++++++++++++++ bin/dev/setup-phpunit.sh | 13 +++++ 2 files changed, 114 insertions(+) create mode 100644 .github/workflows/php.yml create mode 100755 bin/dev/setup-phpunit.sh diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml new file mode 100644 index 0000000000..1f3c518128 --- /dev/null +++ b/.github/workflows/php.yml @@ -0,0 +1,101 @@ +name: Testing Friendica +on: [push, pull_request] + +jobs: + friendica: + name: Friendica (PHP ${{ matrix.php-versions }}) + runs-on: ubuntu-latest + services: + mariadb: + image: mariadb:latest + env: + MYSQL_ALLOW_EMPTY_PASSWORD: true + MYSQL_DATABASE: test + MYSQL_PASSWORD: test + MYSQL_USER: test + ports: + - 3306/tcp + options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 + redis: + image: redis + ports: + - 6379/tcp + options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3 + memcached: + image: memcached + ports: + - 11211/tcp + strategy: + fail-fast: false + matrix: + php-versions: ['7.3', '7.4', '8.0'] + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup PHP, with composer and extensions + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + tools: pecl, composer:v1 + extensions: pdo_mysql, gd, zip, opcache, ctype, pcntl, ldap, apcu, memcached, redis, imagick, memcache + coverage: xdebug + ini-values: apc.enabled=1, apc.enable_cli=1 + + - name: Start mysql service + run: sudo /etc/init.d/mysql start + + - name: Validate composer.json and composer.lock + run: composer validate + + - name: Get composer cache directory + id: composercache + run: echo "::set-output name=dir::$(composer config cache-files-dir)" + + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composercache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: ${{ runner.os }}-composer- + + - name: Install dependencies + run: composer install --prefer-dist + + - name: Setup PHPUnit 8 + run: bin/dev/setup-phpunit.sh + + - name: Copy default Friendica config + run: cp config/local-sample.config.php config/local.config.php + + - name: Verify MariaDB connection + env: + PORT: ${{ job.services.mariadb.ports[3306] }} + run: | + while ! mysqladmin ping -h"127.0.0.1" -P"$PORT" --silent; do + sleep 1 + done + + - name: Setup MYSQL database + env: + PORT: ${{ job.services.mariadb.ports[3306] }} + run: | + mysql -h"127.0.0.1" -P"$PORT" -utest -ptest test < database.sql + + - name: Test with phpunit + run: $(git rev-parse --show-toplevel)/bin/phpunit --configuration tests/phpunit.xml --coverage-clover clover.xml + env: + MYSQL_HOST: 127.0.0.1 + MYSQL_PORT: ${{ job.services.mariadb.ports[3306] }} + MYSQL_DATABASE: test + MYSQL_PASSWORD: test + MYSQL_USER: test + REDIS_PORT: ${{ job.services.redis.ports[6379] }} + REDIS_HOST: 127.0.0.1 + MEMCACHED_PORT: ${{ job.services.memcached.ports[11211] }} + MEMCACHE_PORT: ${{ job.services.memcached.ports[11211] }} + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v1 + with: + file: clover.xml diff --git a/bin/dev/setup-phpunit.sh b/bin/dev/setup-phpunit.sh new file mode 100755 index 0000000000..b3884d3b7b --- /dev/null +++ b/bin/dev/setup-phpunit.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +PHPUNIT="$(git rev-parse --show-toplevel)/bin/phpunit" + +if ! [ -x "$PHPUNIT" ]; then + echo "Install PHPUnit 8" + cd /tmp/ + curl -s -O -L https://phar.phpunit.de/phpunit-8.phar + chmod +x phpunit-8.phar + mv phpunit-8.phar $PHPUNIT +fi + +echo "Using $PHPUNIT $($PHPUNIT --version)"