]> git.mxchange.org Git - friendica.git/commitdiff
Revert "remove GitHub Action for PHP tests"
authorArt4 <art4@wlabs.de>
Wed, 6 Nov 2024 21:57:23 +0000 (21:57 +0000)
committerArt4 <art4@wlabs.de>
Wed, 6 Nov 2024 21:57:23 +0000 (21:57 +0000)
This reverts commit f1e268ee0a10cfd801b3ad0cef3aa8b98caf39f5.

.github/workflows/php.yml [new file with mode: 0644]
bin/dev/setup-phpunit.sh [new file with mode: 0755]

diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml
new file mode 100644 (file)
index 0000000..1f3c518
--- /dev/null
@@ -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 (executable)
index 0000000..b3884d3
--- /dev/null
@@ -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)"