diff --git a/.github/workflows/coding-style.yml b/.github/workflows/coding-style.yml new file mode 100644 index 00000000..00abb989 --- /dev/null +++ b/.github/workflows/coding-style.yml @@ -0,0 +1,31 @@ +name: Coding Style + +on: [push, pull_request] + +jobs: + nette_cc: + name: Nette Code Checker + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: shivammathur/setup-php@v2 + with: + php-version: 8.0 + coverage: none + + - run: composer create-project nette/code-checker temp/code-checker ^3 --no-progress + - run: php temp/code-checker/code-checker --strict-types --no-progress --ignore "tests/*/fixtures" + + + nette_cs: + name: Nette Coding Standard + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: shivammathur/setup-php@v2 + with: + php-version: 8.0 + coverage: none + + - run: composer create-project nette/coding-standard temp/coding-standard ^3 --no-progress --ignore-platform-reqs + - run: php temp/coding-standard/ecs check diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml new file mode 100644 index 00000000..f985b052 --- /dev/null +++ b/.github/workflows/static-analysis.yml @@ -0,0 +1,21 @@ +name: Static Analysis (only informative) + +on: + push: + branches: + - master + +jobs: + phpstan: + name: PHPStan + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: shivammathur/setup-php@v2 + with: + php-version: 8.0 + coverage: none + + - run: composer install --no-progress --prefer-dist + - run: composer phpstan -- --no-progress + continue-on-error: true # is only informative diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 00000000..b81c281d --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,121 @@ +name: Tests + +on: [push, pull_request] + +env: + php-extensions: mbstring, intl, mysqli, pgsql, sqlsrv-5.9.0preview1, pdo_sqlsrv-5.9.0preview1 + php-tools: "composer:v2, pecl" + +jobs: + tests: + runs-on: ubuntu-latest + strategy: + matrix: + php: ['7.2', '7.3', '7.4', '8.0'] + + fail-fast: false + + name: PHP ${{ matrix.php }} tests + + services: + mysql57: + image: mysql:5.7 + env: + MYSQL_DATABASE: dibi_test + MYSQL_ROOT_PASSWORD: root + ports: + - 3306:3306 + options: >- + --health-cmd "mysqladmin ping -ppass" + --health-interval 10s + --health-start-period 10s + --health-timeout 5s + --health-retries 10 + + mysql80: + image: mysql:8.0 + ports: + - 3307:3306 + options: >- + --health-cmd="mysqladmin ping -ppass" + --health-interval=10s + --health-timeout=5s + --health-retries=5 + -e MYSQL_ROOT_PASSWORD=root + -e MYSQL_DATABASE=dibi_test + --entrypoint sh mysql:8 -c "exec docker-entrypoint.sh mysqld --default-authentication-plugin=mysql_native_password" + + postgres96: + image: postgres:9.6 + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: dibi_test + ports: + - 5432:5432 + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + + postgres13: + image: postgres:13 + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: dibi_test + ports: + - 5433:5432 + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + + mssql: + image: mcr.microsoft.com/mssql/server:latest + env: + ACCEPT_EULA: Y + SA_PASSWORD: YourStrong!Passw0rd + MSSQL_PID: Developer + ports: + - 1433:1433 + options: >- + --name=mssql + --health-cmd "/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'YourStrong!Passw0rd' -Q 'SELECT 1'" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + + steps: + - uses: actions/checkout@v2 + - uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + extensions: ${{ env.php-extensions }} + tools: ${{ env.php-tools }} + coverage: none + + - name: Create databases.ini + run: cp ./tests/databases.github.ini ./tests/databases.ini + + - name: Create MS SQL Database + run: docker exec -i mssql /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'YourStrong!Passw0rd' -Q 'CREATE DATABASE dibi_test' + + - run: composer install --no-progress --prefer-dist + - run: vendor/bin/tester -p phpdbg tests -s -C --coverage ./coverage.xml --coverage-src ./src + - if: failure() + uses: actions/upload-artifact@v2 + with: + name: output + path: tests/**/output + + + - name: Save Code Coverage + if: ${{ matrix.php == '8.0' }} + env: + COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + wget https://github.com/php-coveralls/php-coveralls/releases/download/v2.4.3/php-coveralls.phar + php php-coveralls.phar --verbose --config tests/.coveralls.yml diff --git a/readme.md b/readme.md index 997b3c41..a9ddde92 100644 --- a/readme.md +++ b/readme.md @@ -2,7 +2,7 @@ ========================================================= [![Downloads this Month](https://img.shields.io/packagist/dm/dibi/dibi.svg)](https://packagist.org/packages/dibi/dibi) -[![Build Status](https://travis-ci.org/dg/dibi.svg?branch=master)](https://travis-ci.org/dg/dibi) +[![Tests](https://github.com/dg/dibi/workflows/Tests/badge.svg?branch=master)](https://github.com/dg/dibi/actions) [![Build Status Windows](https://ci.appveyor.com/api/projects/status/github/dg/dibi?branch=master&svg=true)](https://ci.appveyor.com/project/dg/dibi/branch/master) [![Latest Stable Version](https://poser.pugx.org/dibi/dibi/v/stable)](https://github.com/dg/dibi/releases) [![License](https://img.shields.io/badge/license-New%20BSD-blue.svg)](https://github.com/dg/dibi/blob/master/license.md) diff --git a/tests/.coveralls.yml b/tests/.coveralls.yml index 82764a3f..84503825 100644 --- a/tests/.coveralls.yml +++ b/tests/.coveralls.yml @@ -1,4 +1,4 @@ # for php-coveralls -service_name: travis-ci +service_name: github-actions coverage_clover: coverage.xml json_path: coverage.json diff --git a/tests/databases.github.ini b/tests/databases.github.ini new file mode 100644 index 00000000..40aeb464 --- /dev/null +++ b/tests/databases.github.ini @@ -0,0 +1,89 @@ +[sqlite] ; default +driver = sqlite +database = :memory: +system = sqlite + +[sqlite pdo] +driver = pdo +dsn = "sqlite::memory:" +system = sqlite + +[mysql 5.7] +driver = mysqli +host = "127.0.0.1" +database = dibi_test +username = root +password = root +port = 3306 +system = mysql + +[mysql 5.7pdo] +driver = pdo +dsn = "mysql:host=127.0.0.1;port=3306;dbname=dibi_test" +user = root +password = root +system = mysql + +[mysql 8.0] +driver = mysqli +host = "127.0.0.1" +database = dibi_test +username = root +password = root +port = 3307 +system = mysql + +[mysql 8.0pdo] +driver = pdo +dsn = "mysql:host=127.0.0.1;port=3307;dbname=dibi_test" +user = root +password = root +system = mysql + +[postgre 9.6] +driver = postgre +host = "127.0.0.1" +database = dibi_test +username = postgres +password = postgres +port = 5432 +system = postgre + +[postgre 9.6pdo] +driver = pdo +dsn = "pgsql:host=127.0.0.1;port=5432;dbname=dibi_test" +user = postgres +password = postgres +system = postgre + +[postgre 13] +driver = postgre +host = "127.0.0.1" +database = dibi_test +username = postgres +password = postgres +port = 5433 +system = postgre + +[postgre 13pdo] +driver = pdo +dsn = "pgsql:host=127.0.0.1;port=5433;dbname=dibi_test" +user = postgres +password = postgres +system = postgre + +[sqlsrv] +driver = sqlsrv +host = "localhost" +username = SA +password = "YourStrong!Passw0rd" +database = dibi_test +port = 1433 +system = sqlsrv + +;[sqlsrv pdo] +;driver = pdo +;dsn = "sqlsrv:Server=localhost,1433;Database=dibi_test" +;user = SA +;password = "YourStrong!Passw0rd" +;system = sqlsrv