diff --git a/.cs.php b/.cs.php index e4ab7fc..2bba5e9 100644 --- a/.cs.php +++ b/.cs.php @@ -1,6 +1,8 @@ setUsingCache(false) ->setRiskyAllowed(true) ->setRules( @@ -19,6 +21,12 @@ 'concat_space' => ['spacing' => 'one'], 'compact_nullable_typehint' => true, 'declare_equal_normalize' => ['space' => 'single'], + 'general_phpdoc_annotation_remove' => [ + 'annotations' => [ + 'author', + 'package', + ], + ], 'increment_style' => ['style' => 'post'], 'list_syntax' => ['syntax' => 'short'], 'echo_tag_syntax' => ['format' => 'long'], @@ -32,9 +40,22 @@ 'method_argument_space' => ['on_multiline' => 'ensure_fully_multiline'], 'ordered_imports' => [ 'sort_algorithm' => 'alpha', - 'imports_order' => ['class', 'const', 'function'] + 'imports_order' => ['class', 'const', 'function'], ], 'single_line_throw' => false, + 'declare_strict_types' => false, + 'blank_line_between_import_groups' => true, + 'fully_qualified_strict_types' => true, + 'no_null_property_initialization' => false, + 'operator_linebreak' => [ + 'only_booleans' => true, + 'position' => 'beginning', + ], + 'global_namespace_import' => [ + 'import_classes' => true, + 'import_constants' => null, + 'import_functions' => null + ] ] ) ->setFinder( diff --git a/.gitattributes b/.gitattributes index 9a3a380..0e58fb3 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,25 +1,37 @@ # Set the default behavior, in case people don't have core.autocrlf set. -# Git will always convert line endings to LF on checkout. You should use -# this for files that must keep LF endings, even on Windows. +# Git will always convert line endings to LF on checkout. You should use +# this for files that must keep LF endings, even on Windows. * text eol=lf # ------------------------------------------------------------------------------ -# All the files and directories that can be excluded from dist, +# All the files and directories that can be excluded from dist, # we could have a more clean vendor/ # -# So when someone will install that package through with --prefer-dist option, -# all the files and directories listed in .gitattributes file will be excluded. -# This could have a big impact on big deployments and/or testing. +# So when someone will install that package through with --prefer-dist option, +# all the files and directories listed in .gitattributes file will be excluded. +# This could have a big impact on big deployments and/or testing. # ------------------------------------------------------------------------------ /tests export-ignore /build export-ignore /docs export-ignore -/.github export-ignore /build.xml export-ignore /phpunit.xml export-ignore /.gitattributes export-ignore /.gitignore export-ignore +/.travis.* export-ignore /.scrutinizer.* export-ignore /.editorconfig export-ignore /.coveralls.* export-ignore + +# Define binary file attributes. +# - Do not treat them as text. +# - Include binary diff in patches instead of "binary files differ." +*.pdf binary +*.mo binary +*.gif binary +*.ico binary +*.jpg binary +*.jpeg binary +*.png binary +*.zip binary diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2d15e9c..a4bf3d5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,48 +1,41 @@ name: build -on: [push, pull_request] +on: [ push, pull_request ] jobs: - run: - runs-on: ${{ matrix.operating-system }} - strategy: - matrix: - operating-system: [ubuntu-latest] - php-versions: ['7.3', '7.4', '8.0'] - name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }} - - steps: - - name: Checkout - uses: actions/checkout@v1 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-versions }} - extensions: mbstring, intl, zip - coverage: none - - - name: Check PHP Version - run: php -v - - - name: Check Composer Version - run: composer -V - - - name: Check PHP Extensions - run: php -m - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Install dependencies for PHP 7 - if: matrix.php-versions < '8.0' - run: composer update --prefer-dist --no-progress - - - name: Install dependencies for PHP 8 - if: matrix.php-versions >= '8.0' - run: composer update --prefer-dist --no-progress --ignore-platform-req=php - - - name: Run test suite - run: composer test:all - env: - PHP_CS_FIXER_IGNORE_ENV: 1 \ No newline at end of file + run: + runs-on: ${{ matrix.operating-system }} + strategy: + matrix: + operating-system: [ ubuntu-latest ] + php-versions: [ '8.1', '8.2' ] + name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }} + + steps: + - name: Checkout + uses: actions/checkout@v1 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + extensions: mbstring, intl, zip + coverage: none + + - name: Check PHP Version + run: php -v + + - name: Check Composer Version + run: composer -V + + - name: Check PHP Extensions + run: php -m + + - name: Validate composer.json and composer.lock + run: composer validate + + - name: Install dependencies + run: composer install --prefer-dist --no-progress --no-suggest + + - name: Run test suite + run: composer test:all diff --git a/.gitignore b/.gitignore index 4e2a367..a4689b6 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ composer.lock nbproject/ vendor/ build/ -.phpunit.result.cache +.phpunit.cache/ +.phpunit.result.cache \ No newline at end of file diff --git a/.scrutinizer.yml b/.scrutinizer.yml index fce7d02..3514e2e 100644 --- a/.scrutinizer.yml +++ b/.scrutinizer.yml @@ -1,6 +1,6 @@ filter: - paths: ["src/*"] - excluded_paths: ["vendor/*", "tests/*"] + paths: [ "src/*" ] + excluded_paths: [ "vendor/*", "tests/*" ] checks: php: @@ -12,7 +12,10 @@ tools: build: environment: - php: 7.4 + php: + version: 8.1.2 + ini: + xdebug.mode: coverage mysql: false node: false postgresql: false @@ -30,11 +33,9 @@ build: dependencies: before: - composer self-update - - composer update --no-interaction --prefer-dist --no-progress tests: before: - - - command: composer test:coverage + - command: composer test:coverage coverage: file: 'build/logs/clover.xml' format: 'clover' diff --git a/LICENSE b/LICENSE index fa19b85..bf7a9a3 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2021 odan +Copyright (c) 2023 odan Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 0f51139..6b2bff8 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ ## Requirements -* PHP 7.3+ or 8.0+ +* PHP 8.1+ ## Installation diff --git a/composer.json b/composer.json index 358591a..93eb653 100644 --- a/composer.json +++ b/composer.json @@ -1,20 +1,19 @@ { "name": "selective/luhn", - "type": "library", "description": "Luhn library, modulo 10", + "license": "MIT", + "type": "library", "keywords": [ "luhn" ], "homepage": "https://github.com/selective-php/luhn", - "license": "MIT", "require": { - "php": "^7.3 || ^8.0" + "php": "^8.1" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3", - "overtrue/phplint": "^3", "phpstan/phpstan": "^1", - "phpunit/phpunit": "^9", + "phpunit/phpunit": "^10", "squizlabs/php_codesniffer": "^3" }, "autoload": { @@ -28,21 +27,23 @@ } }, "config": { - "sort-packages": true, - "process-timeout": 0 + "process-timeout": 0, + "sort-packages": true }, "scripts": { - "cs:check": "php-cs-fixer fix --dry-run --format=txt --verbose --diff --config=.cs.php --ansi", - "cs:fix": "php-cs-fixer fix --config=.cs.php --ansi", - "lint": "phplint ./ --exclude=vendor --no-interaction --no-cache --ansi", - "phoenix": "phoenix --ansi", - "stan": "phpstan analyse -c phpstan.neon --no-progress --ansi", - "schema:dump": "php bin/console.php schema-dump --ansi", + "cs:check": [ + "@putenv PHP_CS_FIXER_IGNORE_ENV=1", + "php-cs-fixer fix --dry-run --format=txt --verbose --diff --config=.cs.php --ansi" + ], + "cs:fix": [ + "@putenv PHP_CS_FIXER_IGNORE_ENV=1", + "php-cs-fixer fix --config=.cs.php --ansi --verbose" + ], "sniffer:check": "phpcs --standard=phpcs.xml", "sniffer:fix": "phpcbf --standard=phpcs.xml", + "stan": "phpstan analyse -c phpstan.neon --no-progress --ansi", "test": "phpunit --configuration phpunit.xml --do-not-cache-result --colors=always", "test:all": [ - "@lint", "@cs:check", "@sniffer:check", "@stan", diff --git a/phpcs.xml b/phpcs.xml index c825571..f2f42d9 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -9,27 +9,8 @@ ./src ./tests - - + - - - warning - */tests/ - - - warning - - - warning - */config/ - - - warning - - - warning - warning diff --git a/phpstan.neon b/phpstan.neon index fb99a34..0b6508e 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,7 +1,4 @@ parameters: - level: max - checkGenericClassInNonGenericObjectType: false - checkMissingIterableValueType: false + level: 8 paths: - - src - - tests + - src \ No newline at end of file diff --git a/phpunit.xml b/phpunit.xml index f2e36c3..2927473 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -3,9 +3,16 @@ bootstrap="vendor/autoload.php" colors="true" backupGlobals="false" - backupStaticAttributes="false" - xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"> - + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.3/phpunit.xsd" + cacheDirectory=".phpunit.cache" + backupStaticProperties="false"> + + + + tests + + + src @@ -13,10 +20,5 @@ vendor build - - - - tests - - + diff --git a/tests/LuhnTest.php b/tests/LuhnTest.php index b1d4441..7d98bda 100644 --- a/tests/LuhnTest.php +++ b/tests/LuhnTest.php @@ -9,14 +9,14 @@ /** * Test. */ -class LuhnTest extends TestCase +final class LuhnTest extends TestCase { /** * Data provider about validating valid number. * * @return array */ - public function providerValidateValidNumber(): array + public static function providerValidateValidNumber(): array { return [ ['1982'], @@ -45,7 +45,7 @@ public function testValidateValidNumber(string $validNumber): void * * @return array */ - public function providerValidateInvalidNumber(): array + public static function providerValidateInvalidNumber(): array { return [ ['19829'], @@ -82,7 +82,7 @@ public function testValidateInvalidNumber(string $invalidNumber): void * * @return array */ - public function providerCreateNumber(): array + public static function providerCreateNumber(): array { return [ ['1982', 8],