diff --git a/.editorconfig b/.editorconfig index f339d2d..942ec22 100644 --- a/.editorconfig +++ b/.editorconfig @@ -8,3 +8,6 @@ indent_style = space indent_size = 4 trim_trailing_whitespace = true insert_final_newline = true + +[.github/**.yml] +indent_size = 2 diff --git a/.gitattributes b/.gitattributes index 874ec51..f01cfcf 100644 --- a/.gitattributes +++ b/.gitattributes @@ -6,4 +6,5 @@ /.php_cs export-ignore /phpunit.xml.dist export-ignore /phpstan.neon export-ignore +/.github export-ignore /tests export-ignore diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml new file mode 100644 index 0000000..e7449bc --- /dev/null +++ b/.github/workflows/coding-standards.yml @@ -0,0 +1,53 @@ +name: "CS" + +on: + pull_request: + branches: + - master + push: + branches: + - master + +env: + SYMFONY_PHPUNIT_VERSION: 7.5 + +jobs: + coding-standards: + name: "CS Fixer & PHPStan" + runs-on: "ubuntu-18.04" + + strategy: + matrix: + php: + - "7.3" + + steps: + - name: "Checkout" + uses: "actions/checkout@v2" + + - name: "Install PHP" + uses: "shivammathur/setup-php@v2" + with: + coverage: "none" + php-version: "${{ matrix.php }}" + tools: cs2pr, composer:v1 + ini-values: "date.timezone=Europe/Paris" + env: + COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: "Add PHPStan" + run: "composer require phpstan/phpstan phpstan/phpstan-phpunit --dev --no-progress --no-suggest" + + - name: "Install dependencies with Composer" + uses: "ramsey/composer-install@v1" + with: + composer-options: "--optimize-autoloader --prefer-dist" + + - name: "Run PHP CS Fixer" + run: "php vendor/bin/php-cs-fixer fix --verbose --dry-run --format=checkstyle | cs2pr" + + - name: "Install PHPUnit for PHPStan" + run: "php vendor/bin/simple-phpunit install" + + - name: "Run PHPStan" + run: "php vendor/bin/phpstan analyse --error-format=checkstyle | cs2pr" diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml new file mode 100644 index 0000000..42b2d41 --- /dev/null +++ b/.github/workflows/continuous-integration.yml @@ -0,0 +1,202 @@ +name: "CI" + +on: + pull_request: + branches: + - "master" + push: + branches: + - "master" + +env: + fail-fast: true + +jobs: + phpunit: + name: "PHPUnit (PHP ${{ matrix.php }})" + runs-on: "ubuntu-18.04" + + strategy: + matrix: + php: + - "5.6" + - "7.0" + - "7.1" + - "7.2" + - "7.3" + - "7.4" + + steps: + - name: "Checkout" + uses: "actions/checkout@v2" + with: + fetch-depth: 2 + + - name: "Install PHP" + uses: "shivammathur/setup-php@v2" + with: + php-version: "${{ matrix.php }}" + coverage: "none" + tools: composer:v1 + extensions: tidy + ini-values: "date.timezone=Europe/Paris" + env: + COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: "Force PHPUnit version" + if: matrix.php >= '7.2' + run: "echo $SYMFONY_PHPUNIT_VERSION" + env: + SYMFONY_PHPUNIT_VERSION: 7.5 + + - name: "Remove useless deps" + run: "composer remove friendsofphp/php-cs-fixer --dev --no-progress --no-update" + + - name: "Install dependencies with Composer" + uses: "ramsey/composer-install@v1" + with: + composer-options: "--optimize-autoloader --prefer-dist" + + - name: "Setup logs" + run: "mkdir -p build/logs" + + - name: "Run PHPUnit" + run: "php vendor/bin/simple-phpunit -v" + + phpunit-coverage: + name: "PHPUnit coverage (PHP ${{ matrix.php }})" + runs-on: "ubuntu-18.04" + + strategy: + matrix: + php: + - "7.4" + + steps: + - name: "Checkout" + uses: "actions/checkout@v2" + with: + fetch-depth: 2 + + - name: "Install PHP with Xdebug" + uses: "shivammathur/setup-php@v2" + with: + php-version: "${{ matrix.php }}" + coverage: "xdebug" + tools: composer:v1 + extensions: tidy + ini-values: "date.timezone=Europe/Paris" + env: + COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: "Remove useless deps" + run: "composer remove friendsofphp/php-cs-fixer --dev --no-progress --no-update" + + - name: "Install dependencies with Composer" + uses: "ramsey/composer-install@v1" + with: + composer-options: "--optimize-autoloader --prefer-dist" + + - name: "Setup logs" + run: "mkdir -p build/logs" + + - name: "Run PHPUnit (with coverage)" + run: "php vendor/bin/simple-phpunit -v --coverage-clover build/logs/clover.xml" + env: + SYMFONY_PHPUNIT_VERSION: 7.5 + + - name: "Retrieve Coveralls phar" + run: "wget https://github.com/php-coveralls/php-coveralls/releases/download/v2.4.2/php-coveralls.phar" + + - name: "Enable Coveralls phar" + run: "chmod +x php-coveralls.phar" + + - name: "Upload to Coveralls" + run: "php php-coveralls.phar -v -x build/logs/clover.xml" + env: + COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + phpunit-lowest: + name: "PHPUnit lowest deps (PHP ${{ matrix.php }})" + runs-on: "ubuntu-18.04" + + strategy: + matrix: + php: + - "7.2" + + steps: + - name: "Checkout" + uses: "actions/checkout@v2" + with: + fetch-depth: 2 + + - name: "Install PHP" + uses: "shivammathur/setup-php@v2" + with: + php-version: "${{ matrix.php }}" + coverage: "none" + tools: composer:v1 + extensions: tidy + ini-values: "date.timezone=Europe/Paris" + env: + COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: "Remove useless deps" + run: "composer remove friendsofphp/php-cs-fixer --dev --no-progress --no-update" + + - name: "Install dependencies with Composer" + uses: "ramsey/composer-install@v1" + with: + composer-options: "--optimize-autoloader --prefer-dist" + dependency-versions: "lowest" + + - name: "Setup logs" + run: "mkdir -p build/logs" + + - name: "Run PHPUnit" + run: "php vendor/bin/simple-phpunit -v" + env: + SYMFONY_PHPUNIT_VERSION: 7.5 + + phpunit-composerv2: + name: "PHPUnit with Composer v2 (PHP ${{ matrix.php }})" + runs-on: "ubuntu-18.04" + + strategy: + matrix: + php: + - "7.4" + + steps: + - name: "Checkout" + uses: "actions/checkout@v2" + with: + fetch-depth: 2 + + - name: "Install PHP" + uses: "shivammathur/setup-php@v2" + with: + php-version: "${{ matrix.php }}" + coverage: "none" + tools: composer:v2 + extensions: tidy + ini-values: "date.timezone=Europe/Paris" + env: + COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: "Remove useless deps" + run: "composer remove friendsofphp/php-cs-fixer --dev --no-progress --no-update" + + - name: "Install dependencies with Composer" + uses: "ramsey/composer-install@v1" + with: + composer-options: "--optimize-autoloader --prefer-dist" + + - name: "Setup logs" + run: "mkdir -p build/logs" + + - name: "Run PHPUnit" + run: "php vendor/bin/simple-phpunit -v" + env: + SYMFONY_PHPUNIT_VERSION: 7.5 diff --git a/.travis.yml b/.travis.yml index 2d4eb38..da28dd6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,26 +2,18 @@ dist: xenial os: linux language: php -php: - - 5.6 - - 7.0 - - 7.1 +# avoid double Travis build when the PR is created on upstream +if: | + type = pull_request OR \ + branch = master jobs: include: - - php: 7.2 - env: SYMFONY_PHPUNIT_VERSION=7.5 - - php: 7.2 - env: SYMFONY_PHPUNIT_VERSION=7.5 COMPOSER_FLAGS="--prefer-lowest" - - php: 7.3 - env: SYMFONY_PHPUNIT_VERSION=7.5 CS_FIXER=run COVERAGE=run - - php: 7.4 - env: SYMFONY_PHPUNIT_VERSION=7.5 - - php: nightly + - php: 8.0 env: SYMFONY_PHPUNIT_VERSION=7.5 fast_finish: true allow_failures: - - php: nightly + - php: 8.0 cache: directories: @@ -31,24 +23,12 @@ before_install: - if [ -n "$GH_TOKEN" ]; then composer config github-oauth.github.com ${GH_TOKEN}; fi; install: - - if [ "$CS_FIXER" = "run" ]; then composer require phpstan/phpstan phpstan/phpstan-phpunit --dev --no-progress --no-suggest ; fi; - if [ "$CS_FIXER" != "run" ]; then composer remove friendsofphp/php-cs-fixer --dev --no-progress --no-update ; fi; - - composer update --prefer-dist --no-progress --no-suggest -o $COMPOSER_FLAGS + - composer update --prefer-dist --no-progress --no-suggest -o $ - php vendor/bin/simple-phpunit install before_script: - mkdir -p build/logs - - if [ "$COVERAGE" = "run" ]; then PHPUNIT_FLAGS="--coverage-clover build/logs/clover.xml"; fi; script: - - php vendor/bin/simple-phpunit -v $PHPUNIT_FLAGS - - if [ "$CS_FIXER" = "run" ]; then php vendor/bin/php-cs-fixer fix --verbose --dry-run ; fi; - - if [ "$CS_FIXER" = "run" ]; then php vendor/bin/phpstan analyse src tests --no-progress --level 1 ; fi; - -after_success: - - | - if [ "$COVERAGE" = "run" ]; then - wget https://github.com/php-coveralls/php-coveralls/releases/download/v2.2.0/php-coveralls.phar - chmod +x php-coveralls.phar - php php-coveralls.phar -v -x build/logs/clover.xml - fi + - php vendor/bin/simple-phpunit -v diff --git a/README.md b/README.md index e5cb089..a1eebee 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # Readability +![CI](https://github.com/j0k3r/php-readability/workflows/CI/badge.svg) [![Build Status](https://travis-ci.org/j0k3r/php-readability.svg?branch=master)](https://travis-ci.org/j0k3r/php-readability) [![Coverage Status](https://coveralls.io/repos/j0k3r/php-readability/badge.svg?branch=master&service=github)](https://coveralls.io/github/j0k3r/php-readability/?branch=master) [![Total Downloads](https://poser.pugx.org/j0k3r/php-readability/downloads)](https://packagist.org/packages/j0k3r/php-readability) diff --git a/phpstan.neon b/phpstan.neon index 5cc2547..7c1f51c 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,8 +1,13 @@ -includes: - - vendor/phpstan/phpstan-phpunit/extension.neon - - vendor/phpstan/phpstan-phpunit/rules.neon - parameters: + level: 1 + paths: + - src + - tests + # https://github.com/phpstan/phpstan/issues/694#issuecomment-350724288 - autoload_files: + bootstrapFiles: - vendor/bin/.phpunit/phpunit-7.5-0/vendor/autoload.php + +includes: + - vendor/phpstan/phpstan-phpunit/extension.neon + - vendor/phpstan/phpstan-phpunit/rules.neon