diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml index 8574833..b484807 100644 --- a/.github/workflows/php.yml +++ b/.github/workflows/php.yml @@ -1,76 +1,136 @@ name: PHP tests on: [push, pull_request] jobs: - # Check there is no syntax errors in the project php-linter: - name: PHP Syntax check 5.4 => 8.1 + name: PHP Syntax check runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v5 - - - name: PHP syntax checker 5.4 - uses: prestashop/github-action-php-lint/5.6@master - - - name: PHP syntax checker 5.5 - uses: prestashop/github-action-php-lint/5.6@master - - - name: PHP syntax checker 5.6 - uses: prestashop/github-action-php-lint/5.6@master + uses: actions/checkout@v6 - name: PHP syntax checker 7.2 uses: prestashop/github-action-php-lint/7.2@master - - name: PHP syntax checker 7.3 - uses: prestashop/github-action-php-lint/7.3@master - - name: PHP syntax checker 7.4 uses: prestashop/github-action-php-lint/7.4@master - name: PHP syntax checker 8.0 uses: prestashop/github-action-php-lint/8.0@master - - name: PHP syntax checker 8.1 - uses: prestashop/github-action-php-lint/8.1@master + - name: PHP syntax checker 8.5 + uses: prestashop/github-action-php-lint/8.5@master # Check the PHP code follow the coding standards php-cs-fixer: name: PHP-CS-Fixer runs-on: ubuntu-latest steps: - - name: Setup PHP - uses: shivammathur/setup-php@v2 + - name: Run PHP-CS-Fixer + uses: PrestaShop/.github/.github/actions/php-ci/php-cs@master with: php-version: '7.4' - - name: Checkout - uses: actions/checkout@v5 - - - name: Install dependencies - run: composer install - - - name: Run PHP-CS-Fixer - run: ./vendor/bin/php-cs-fixer fix --dry-run --diff --using-cache=no --diff-format udiff - - # Run PHPStan against the module and a PrestaShop release - phpstan: - name: PHPStan + # Run PHPStan against the module (PHP 7.4 – 8.1) + phpstan-74: + name: PHPStan (PHP 7.4 - 8.1) runs-on: ubuntu-latest strategy: + matrix: + presta_version: ['8.1.7', '8.2.x'] + php_version: ['7.4', '8.1'] fail-fast: false + env: + PHPRC: ${{ github.workspace }}/${{ github.event.repository.name }}/.phpstan-php-ini + steps: + - name: Checkout repository + uses: actions/checkout@v6 + with: + path: ${{ github.event.repository.name }} + + - name: Prepare PHP env for PrestaShop 8 (define constants before any bootstrap) + run: | + mkdir -p ${{ github.event.repository.name }}/.phpstan-php-ini + { + echo "auto_prepend_file=$GITHUB_WORKSPACE/${{ github.event.repository.name }}/tests/php/phpstan/prepend-constants.php" + echo "memory_limit=512M" + } > ${{ github.event.repository.name }}/.phpstan-php-ini/php.ini + + - name: Run PHPStan + uses: PrestaShop/.github/.github/actions/php-ci/phpstan@master + with: + php-version: ${{ matrix.php_version }} + presta-version: ${{ matrix.presta_version }} + module-name: ${{ github.event.repository.name }} + phpstan-level: '5' + phpstan-config: tests/php/phpstan/phpstan-${{ matrix.presta_version }}.neon + phpstan-version: '^0.12' + composer-version: '2.2.18' + + # Run PHPStan against the module (PHP 8.1 – 8.4) + phpstan-80-84: + name: PHPStan (PHP 8.1 - 8.4) + runs-on: ubuntu-latest + strategy: matrix: - presta-versions: ['1.7.2.5', '1.7.3.4', '1.7.4.4', '1.7.5.1', '1.7.6', '1.7.7', '1.7.8', 'latest'] + presta_version: ['9.0.x'] + php_version: ['8.1', '8.4'] + fail-fast: false + env: + PHPRC: ${{ github.workspace }}/${{ github.event.repository.name }}/.phpstan-php-ini steps: - - name: Setup PHP - uses: shivammathur/setup-php@v2 + - name: Checkout repository + uses: actions/checkout@v6 with: - php-version: '7.4' - - - name: Checkout - uses: actions/checkout@v5 + path: ${{ github.event.repository.name }} + + - name: Prepare PHP env for PrestaShop 9.0.x (define constants before any bootstrap) + run: | + mkdir -p ${{ github.event.repository.name }}/.phpstan-php-ini + { + echo "auto_prepend_file=$GITHUB_WORKSPACE/${{ github.event.repository.name }}/tests/php/phpstan/prepend-constants.php" + echo "memory_limit=512M" + } > ${{ github.event.repository.name }}/.phpstan-php-ini/php.ini + + - name: Run PHPStan + uses: PrestaShop/.github/.github/actions/php-ci/phpstan@master + with: + php-version: ${{ matrix.php_version }} + presta-version: ${{ matrix.presta_version }} + module-name: ${{ github.event.repository.name }} + phpstan-level: '5' + phpstan-config: tests/php/phpstan/phpstan-${{ matrix.presta_version }}.neon - - run: composer install + # Run PHPStan against the module (PHP 8.1 – 8.5) + phpstan: + name: PHPStan (PHP 8.1 - 8.5) + runs-on: ubuntu-latest + strategy: + matrix: + presta_version: ['9.1.x', 'develop'] + php_version: ['8.1', '8.5'] + fail-fast: false + env: + PHPRC: ${{ github.workspace }}/${{ github.event.repository.name }}/.phpstan-php-ini + steps: + - name: Checkout repository + uses: actions/checkout@v6 + with: + path: ${{ github.event.repository.name }} + + - name: Prepare PHP env for PrestaShop 9.1.x and later (define constants before any bootstrap) + run: | + mkdir -p ${{ github.event.repository.name }}/.phpstan-php-ini + { + echo "auto_prepend_file=$GITHUB_WORKSPACE/${{ github.event.repository.name }}/tests/php/phpstan/prepend-constants.php" + echo "memory_limit=512M" + } > ${{ github.event.repository.name }}/.phpstan-php-ini/php.ini + + - name: Run PHPStan + uses: PrestaShop/.github/.github/actions/php-ci/phpstan@master + with: + php-version: ${{ matrix.php_version }} + presta-version: ${{ matrix.presta_version }} + module-name: ${{ github.event.repository.name }} + phpstan-level: '5' + phpstan-config: tests/php/phpstan/phpstan-${{ matrix.presta_version }}.neon - # Docker images prestashop/prestashop may be used, even if the shop remains uninstalled - - name: Execute PHPStan on PrestaShop (Tag ${{ matrix.presta-versions }}) - run: ./tests/phpstan.sh ${{ matrix.presta-versions }} diff --git a/README.md b/README.md index d101197..02f8e0b 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Help your customers get in touch when they need, add a contact form on your stor ## Compatibility -PrestaShop: `1.7.2.0` or later +PrestaShop: `8.1.0` or later ## How to test diff --git a/contactform.php b/contactform.php index 739975a..6f0e969 100644 --- a/contactform.php +++ b/contactform.php @@ -66,7 +66,7 @@ public function __construct() 'Modules.Contactform.Admin' ); $this->ps_versions_compliancy = [ - 'min' => '1.7.2.0', + 'min' => '8.1.0', 'max' => _PS_VERSION_, ]; } diff --git a/tests/phpstan/index.php b/tests/php/phpstan/index.php similarity index 100% rename from tests/phpstan/index.php rename to tests/php/phpstan/index.php diff --git a/tests/php/phpstan/phpstan-8.1.7.neon b/tests/php/phpstan/phpstan-8.1.7.neon new file mode 100644 index 0000000..0d3f527 --- /dev/null +++ b/tests/php/phpstan/phpstan-8.1.7.neon @@ -0,0 +1,6 @@ +includes: + - %currentWorkingDirectory%/tests/php/phpstan/phpstan.neon + +parameters: + ignoreErrors: + - '#Access to an undefined property Cookie\:\:\$contactFormToken.#' \ No newline at end of file diff --git a/tests/php/phpstan/phpstan-8.2.x.neon b/tests/php/phpstan/phpstan-8.2.x.neon new file mode 100644 index 0000000..b0db9cf --- /dev/null +++ b/tests/php/phpstan/phpstan-8.2.x.neon @@ -0,0 +1,6 @@ +includes: + - %currentWorkingDirectory%/tests/php/phpstan/phpstan.neon + +parameters: + ignoreErrors: + - '#Access to an undefined property Cookie\:\:\$contactFormToken.#' diff --git a/tests/php/phpstan/phpstan-9.0.x.neon b/tests/php/phpstan/phpstan-9.0.x.neon new file mode 100644 index 0000000..a72bdeb --- /dev/null +++ b/tests/php/phpstan/phpstan-9.0.x.neon @@ -0,0 +1,7 @@ +includes: + - %currentWorkingDirectory%/tests/php/phpstan/phpstan.neon + +parameters: + ignoreErrors: + - '#Access to an undefined property Cookie\:\:\$contactFormToken.#' + - '#Call to an undefined static method Tools\:\:stripslashes\(\).#' \ No newline at end of file diff --git a/tests/php/phpstan/phpstan-9.1.x.neon b/tests/php/phpstan/phpstan-9.1.x.neon new file mode 100644 index 0000000..a97b152 --- /dev/null +++ b/tests/php/phpstan/phpstan-9.1.x.neon @@ -0,0 +1,7 @@ +includes: + - %currentWorkingDirectory%/tests/php/phpstan/phpstan.neon + +parameters: + ignoreErrors: + - '#Access to an undefined property Cookie\:\:\$contactFormToken.#' + - '#Call to an undefined static method Tools\:\:stripslashes\(\).#' diff --git a/tests/php/phpstan/phpstan-develop.neon b/tests/php/phpstan/phpstan-develop.neon new file mode 100644 index 0000000..a72bdeb --- /dev/null +++ b/tests/php/phpstan/phpstan-develop.neon @@ -0,0 +1,7 @@ +includes: + - %currentWorkingDirectory%/tests/php/phpstan/phpstan.neon + +parameters: + ignoreErrors: + - '#Access to an undefined property Cookie\:\:\$contactFormToken.#' + - '#Call to an undefined static method Tools\:\:stripslashes\(\).#' \ No newline at end of file diff --git a/tests/php/phpstan/phpstan.neon b/tests/php/phpstan/phpstan.neon new file mode 100644 index 0000000..be11823 --- /dev/null +++ b/tests/php/phpstan/phpstan.neon @@ -0,0 +1,2 @@ + # Base PHPStan configuration for the moduleExpand commentComment on line R2ResolvedCode has comments. Press enter to view. + # This file is included by version-specific configs \ No newline at end of file diff --git a/tests/php/phpstan/prepend-constants.php b/tests/php/phpstan/prepend-constants.php new file mode 100644 index 0000000..733689a --- /dev/null +++ b/tests/php/phpstan/prepend-constants.php @@ -0,0 +1,11 @@ + given.#' - - '#Parameter \#1 \$hook_name of method ModuleCore\:\:registerHook\(\) expects string, array given.#' diff --git a/tests/phpstan/phpstan-1.7.3.4.neon b/tests/phpstan/phpstan-1.7.3.4.neon deleted file mode 100644 index f4b4198..0000000 --- a/tests/phpstan/phpstan-1.7.3.4.neon +++ /dev/null @@ -1,10 +0,0 @@ -includes: - - %currentWorkingDirectory%/tests/phpstan/phpstan.neon - -parameters: - ignoreErrors: - - '#Access to an undefined property Cookie\:\:\$contactFormToken.#' - - '#Access to an undefined property Cookie\:\:\$contactFormTokenTTL.#' - - '#Call to method assign\(\) on an unknown class Smarty_Data.#' - - '#Parameter \#4 \$templateVars of static method MailCore\:\:send\(\) expects string, array given.#' - - '#Parameter \#1 \$hook_name of method ModuleCore\:\:registerHook\(\) expects string, array given.#' diff --git a/tests/phpstan/phpstan-1.7.4.4.neon b/tests/phpstan/phpstan-1.7.4.4.neon deleted file mode 100644 index 4bb3d01..0000000 --- a/tests/phpstan/phpstan-1.7.4.4.neon +++ /dev/null @@ -1,9 +0,0 @@ -includes: - - %currentWorkingDirectory%/tests/phpstan/phpstan.neon - -parameters: - ignoreErrors: - - '#Access to an undefined property Cookie\:\:\$contactFormToken.#' - - '#Access to an undefined property Cookie\:\:\$contactFormTokenTTL.#' - - '#Parameter \#4 \$templateVars of static method MailCore\:\:send\(\) expects string, array given.#' - - '#Parameter \#1 \$hook_name of method ModuleCore\:\:registerHook\(\) expects string, array given.#' diff --git a/tests/phpstan/phpstan-1.7.5.1.neon b/tests/phpstan/phpstan-1.7.5.1.neon deleted file mode 100644 index 4bb3d01..0000000 --- a/tests/phpstan/phpstan-1.7.5.1.neon +++ /dev/null @@ -1,9 +0,0 @@ -includes: - - %currentWorkingDirectory%/tests/phpstan/phpstan.neon - -parameters: - ignoreErrors: - - '#Access to an undefined property Cookie\:\:\$contactFormToken.#' - - '#Access to an undefined property Cookie\:\:\$contactFormTokenTTL.#' - - '#Parameter \#4 \$templateVars of static method MailCore\:\:send\(\) expects string, array given.#' - - '#Parameter \#1 \$hook_name of method ModuleCore\:\:registerHook\(\) expects string, array given.#' diff --git a/tests/phpstan/phpstan-1.7.6.neon b/tests/phpstan/phpstan-1.7.6.neon deleted file mode 100644 index 4bb3d01..0000000 --- a/tests/phpstan/phpstan-1.7.6.neon +++ /dev/null @@ -1,9 +0,0 @@ -includes: - - %currentWorkingDirectory%/tests/phpstan/phpstan.neon - -parameters: - ignoreErrors: - - '#Access to an undefined property Cookie\:\:\$contactFormToken.#' - - '#Access to an undefined property Cookie\:\:\$contactFormTokenTTL.#' - - '#Parameter \#4 \$templateVars of static method MailCore\:\:send\(\) expects string, array given.#' - - '#Parameter \#1 \$hook_name of method ModuleCore\:\:registerHook\(\) expects string, array given.#' diff --git a/tests/phpstan/phpstan-1.7.7.neon b/tests/phpstan/phpstan-1.7.7.neon deleted file mode 100644 index 8b75660..0000000 --- a/tests/phpstan/phpstan-1.7.7.neon +++ /dev/null @@ -1,7 +0,0 @@ -includes: - - %currentWorkingDirectory%/tests/phpstan/phpstan.neon - -parameters: - ignoreErrors: - - '#Access to an undefined property Cookie\:\:\$contactFormToken.#' - - '#Access to an undefined property Cookie\:\:\$contactFormTokenTTL.#' diff --git a/tests/phpstan/phpstan-1.7.8.neon b/tests/phpstan/phpstan-1.7.8.neon deleted file mode 100644 index 8b75660..0000000 --- a/tests/phpstan/phpstan-1.7.8.neon +++ /dev/null @@ -1,7 +0,0 @@ -includes: - - %currentWorkingDirectory%/tests/phpstan/phpstan.neon - -parameters: - ignoreErrors: - - '#Access to an undefined property Cookie\:\:\$contactFormToken.#' - - '#Access to an undefined property Cookie\:\:\$contactFormTokenTTL.#' diff --git a/tests/phpstan/phpstan-latest.neon b/tests/phpstan/phpstan-latest.neon deleted file mode 100644 index 8b75660..0000000 --- a/tests/phpstan/phpstan-latest.neon +++ /dev/null @@ -1,7 +0,0 @@ -includes: - - %currentWorkingDirectory%/tests/phpstan/phpstan.neon - -parameters: - ignoreErrors: - - '#Access to an undefined property Cookie\:\:\$contactFormToken.#' - - '#Access to an undefined property Cookie\:\:\$contactFormTokenTTL.#' diff --git a/tests/phpstan/phpstan.neon b/tests/phpstan/phpstan.neon deleted file mode 100644 index 0c6cd2a..0000000 --- a/tests/phpstan/phpstan.neon +++ /dev/null @@ -1,11 +0,0 @@ -includes: - - %currentWorkingDirectory%/vendor/prestashop/php-dev-tools/phpstan/ps-module-extension.neon - -parameters: - paths: - # From PHPStan 0.12, paths to check are relative to the neon file - - ../../contactform.php - - ../../upgrade/ - ignoreErrors: - reportUnmatchedIgnoredErrors: false - level: 5