diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..72502e1 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,139 @@ +name: CI + +on: + push: + pull_request: + schedule: + - cron: '0 0 * * 0' # weekly + +jobs: + testsuite: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + php-version: ['7.2', '7.3', '7.4', '8.0'] + prefer-lowest: [''] + include: + - php-version: '7.2' + prefer-lowest: 'prefer-lowest' + - php-version: '7.3' + prefer-lowest: 'prefer-lowest' + - php-version: '7.4' + prefer-lowest: 'prefer-lowest' + - php-version: '8.0' + prefer-lowest: 'prefer-lowest' + + steps: + - uses: actions/checkout@v2 + + - name: Validate composer.json and composer.lock + run: composer validate --strict + + - name: Cache Composer packages + id: composer-cache + uses: actions/cache@v2 + with: + path: vendor + key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-php- + + - name: Composer install + run: | + if ${{ matrix.prefer-lowest == 'prefer-lowest' }}; then + composer update --prefer-lowest --prefer-stable + else + composer update + fi + + - name: Composer show + run: composer show + + - name: Run PHPUnit + run: | + if [[ ${{ matrix.php-version }} == '8.0' ]]; then + export CODECOVERAGE=1 && vendor/bin/phpunit --verbose --coverage-clover=coverage.xml + else + vendor/bin/phpunit + fi + + - name: Submit code coverage + if: matrix.php-version == '8.0' + uses: codecov/codecov-action@v1 + + cs-stan: + name: Coding Standard & Static Analysis + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + coverage: none + tools: cs2pr + + - name: Cache Composer packages + id: composer-cache + uses: actions/cache@v2 + with: + path: vendor + key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-php- + + - name: Composer install + run: composer stan-setup + + - name: Run PHP CodeSniffer + continue-on-error: true + run: vendor/bin/phpcs --report-full --report-checkstyle=./phpcs-report.xml + + - name: Show PHPCS results in PR + run: cs2pr ./phpcs-report.xml + + - name: Run psalm + if: success() || failure() + run: vendor/bin/psalm.phar --output-format=github + + - name: Run phpstan + if: success() || failure() + run: vendor/bin/phpstan.phar analyse --error-format=github + + + testsuite-windows: + runs-on: windows-2019 + name: Windows - PHP 7.4 + + env: + EXTENSIONS: mbstring, intl, gd + PHP_VERSION: '7.4' + + steps: + - uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ env.PHP_VERSION }} + extensions: ${{ env.EXTENSIONS }} + ini-values: apc.enable_cli = 1, extension = php_fileinfo.dll + coverage: none + + - name: Cache Composer packages + id: composer-cache + uses: actions/cache@v2 + with: + path: vendor + key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-php- + + - name: Composer install + run: composer update + + - name: Run PHPUnit + run: vendor/bin/phpunit --verbose \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 2d720b8..0000000 --- a/.travis.yml +++ /dev/null @@ -1,42 +0,0 @@ -language: php - -php: - - 7.2 - - 7.3 - - 7.4 - - 8.0 - -matrix: - fast_finish: true - - include: - - php: 7.2 - env: dependencies=lowest - - php: 7.3 - env: dependencies=lowest - - php: 7.4 - env: dependencies=lowest - - php: 8.0 - env: dependencies=lowest - - php: 7.2 - env: PHPCS=1 - - php: 7.2 - env: COVERAGE=1 - -install: - - composer self-update -q - - composer install --prefer-dist --no-interaction - - if [ "$dependencies" = "lowest" ]; then composer update --prefer-lowest -n; fi; - - composer show -i - -script: - - rm tests/examples/responses/* - - if [[ $PHPCS != '1' && $COVERAGE != '1' ]]; then vendor/bin/phpunit; fi - - if [[ $PHPCS = 1 ]]; then vendor/bin/phpcs --standard=phpcs.xml.dist; fi - - if [[ $COVERAGE = 1 ]]; then vendor/bin/phpunit --coverage-clover=clover.xml; fi - -after_success: - - if [[ $COVERAGE = 1 ]]; then bash <(curl -s https://codecov.io/bash); fi - -notifications: - email: false diff --git a/CHANGELOG.md b/CHANGELOG.md index 9176157..088c3ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # 1.x branch ## 1.1 branch +### 1.1.8 +* fixed little bug for `LinkScanner::import()`, in catching exception messages; +* migration to github actions. + ### 1.1.7 * fixed bug for `ScanEntity` when calling non-existent magic methods; * extensive improvement of function descriptions and tags. diff --git a/README.md b/README.md index aa8f86c..be045f5 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ # LinkScanner plugin [![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.txt) -[![Build Status](https://api.travis-ci.org/mirko-pagliai/cakephp-link-scanner.svg?branch=master)](https://travis-ci.org/mirko-pagliai/cakephp-link-scanner) -[![Build status](https://ci.appveyor.com/api/projects/status/hqk7fxtad6r75wk3?svg=true)](https://ci.appveyor.com/project/mirko-pagliai/cakephp-link-scanner) +[![CI](https://github.com/mirko-pagliai/cakephp-link-scanner/actions/workflows/ci.yml/badge.svg)](https://github.com/mirko-pagliai/cakephp-link-scanner/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/mirko-pagliai/cakephp-link-scanner/branch/master/graph/badge.svg)](https://codecov.io/gh/mirko-pagliai/cakephp-link-scanner) +[![Codacy Badge](https://app.codacy.com/project/badge/Grade/519cd9567f2848b68ed3df0f58f6cfc5)](https://www.codacy.com/gh/mirko-pagliai/cakephp-link-scanner/dashboard?utm_source=github.com&utm_medium=referral&utm_content=mirko-pagliai/cakephp-link-scanner&utm_campaign=Badge_Grade) [![CodeFactor](https://www.codefactor.io/repository/github/mirko-pagliai/cakephp-link-scanner/badge)](https://www.codefactor.io/repository/github/mirko-pagliai/cakephp-link-scanner) *LinkScanner* is a CakePHP plugin for recursively scanning links: starting from diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 3319752..0000000 --- a/appveyor.yml +++ /dev/null @@ -1,35 +0,0 @@ -build: false -clone_folder: C:\projects\cakephp-link-scanner -platform: x86 - -environment: - global: - PHP: "C:/PHP" - -init: - - SET PATH=C:\php\;%PATH% - -install: - - cd c:\ - - curl -fsS -o php.zip https://windows.php.net/downloads/releases/latest/php-7.3-nts-Win32-VC15-x86-latest.zip - - 7z x php.zip -oc:\php > nul - - cd c:\php - - copy php.ini-production php.ini - - echo date.timezone="UTC" >> php.ini - - echo extension_dir=ext >> php.ini - - echo extension=php_curl.dll >> php.ini - - echo extension=php_intl.dll >> php.ini - - echo extension=php_mbstring.dll >> php.ini - - echo extension=php_fileinfo.dll >> php.ini - - echo extension=php_gd2.dll >> php.ini - - echo extension=php_openssl.dll >> php.ini - - echo extension=php_pdo_mysql.dll >> php.ini - - echo extension=php_pdo_pgsql.dll >> php.ini - - echo extension=php_pdo_sqlite.dll >> php.ini - - cd C:\projects\cakephp-link-scanner - - appveyor DownloadFile https://getcomposer.org/composer.phar - - php composer.phar install --prefer-dist --no-interaction --ansi --no-progress - -test_script: - - cd C:\projects\cakephp-link-scanner - - vendor\bin\phpunit.bat diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 1902e3f..ad110af 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -5,11 +5,6 @@ parameters: count: 1 path: src/Command/LinkScannerCommand.php - - - message: "#^Call to an undefined static method Tools\\\\Exceptionist\\:\\:isUrl\\(\\)\\.$#" - count: 1 - path: src/Utility/LinkScanner.php - - message: "#^Access to protected property LinkScanner\\\\Utility\\\\LinkScanner\\:\\:\\$hostname\\.$#" count: 1 diff --git a/src/Utility/LinkScanner.php b/src/Utility/LinkScanner.php index b361fb1..a420e64 100644 --- a/src/Utility/LinkScanner.php +++ b/src/Utility/LinkScanner.php @@ -434,7 +434,7 @@ public function import(string $filename) try { $instance = unserialize(file_get_contents($filename) ?: ''); } catch (Exception $e) { - $message = preg_replace('/^file_get_contents\([\/\w\d:\-\\\\]+\): /', '', $e->getMessage()) ?: ''; + $message = preg_replace('/file_get_contents\([^)]+\):\s+/', '', $e->getMessage()) ?: ''; throw new RuntimeException(__d( 'link-scanner', 'Failed to import results from file `{0}` with message `{1}`', diff --git a/version b/version index 2bf1ca5..18efdb9 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.7 +1.1.8