diff --git a/.coveralls.yml b/.coveralls.yml deleted file mode 100644 index d35445b..0000000 --- a/.coveralls.yml +++ /dev/null @@ -1,2 +0,0 @@ -coverage_clover: code-coverage/clover.xml -json_path: code-coverage/coveralls-upload.json diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml new file mode 100644 index 0000000..8a84205 --- /dev/null +++ b/.github/workflows/tests.yaml @@ -0,0 +1,79 @@ +name: Tests and linting + +on: + push: + pull_request: + schedule: + - cron: '0 3 * * *' + +jobs: + unit-tests: + runs-on: ubuntu-latest + + strategy: + matrix: + php-version: ['7.4'] + dependencies: [''] + include: + - { php-version: '7.4', dependencies: '--prefer-lowest --prefer-stable' } + + name: Unit tests - PHP ${{ matrix.php-version }} ${{ matrix.dependencies }} + + steps: + - uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + extensions: mbstring, intl, zip + coverage: xdebug + tools: composer:v2 + + - name: Install dependencies + run: composer update --no-interaction ${{ matrix.dependencies }} + + - name: Run tests + env: + COLUMNS: 120 + run: | + composer tests-ci + + - name: Submit coverage to Coveralls + env: + COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} + COVERALLS_PARALLEL: true + COVERALLS_FLAG_NAME: ${{ github.job }}-PHP-${{ matrix.php-version }} ${{ matrix.dependencies }} + run: | + composer global require php-coveralls/php-coveralls + ~/.composer/vendor/bin/php-coveralls --coverage_clover=./code-coverage/clover.xml --json_path=./code-coverage/coveralls-upload.json -v + + finish-tests: + name: Tests finished + needs: [unit-tests] + runs-on: ubuntu-latest + steps: + - name: Notify Coveralls + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + parallel-finished: true + + codestyle: + name: "Code style and static analysis" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + extensions: mbstring, intl + tools: composer:v2 + + - name: Install dependencies + run: composer update --no-progress + + - name: Run checks + run: composer analyze diff --git a/.gitignore b/.gitignore index 1b079f5..0297cd1 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ /code-coverage/ composer.lock +.phpunit.result.cache + # tools /tools/** !/tools/*/composer.json diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 57b7b33..0000000 --- a/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -language: php -php: - - '7.1' - - '7.2' - - '7.3' - -install: - - composer install - -before-script: - - mkdir -p code-coverage - -script: - - composer all - -after_success: - - travis_retry php vendor/bin/coveralls -v diff --git a/CHANGELOG.md b/CHANGELOG.md index 906e6c1..672b289 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +- [**BC**] Require php 7.4 and update dependencies +- [**BC**] Drop Symfony 4 support ## 1.1.0 - 2019-11-28 - Update dependencies diff --git a/README.md b/README.md index 86d1d64..7b772d8 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ CSV Exporter [![Latest Stable Version](https://img.shields.io/packagist/v/mf/csv-exporter.svg)](https://packagist.org/packages/mf/csv-exporter) [![Total Downloads](https://img.shields.io/packagist/dt/mf/csv-exporter.svg)](https://packagist.org/packages/mf/csv-exporter) [![License](https://img.shields.io/packagist/l/mf/csv-exporter.svg)](https://packagist.org/packages/mf/csv-exporter) -[![Build Status](https://travis-ci.org/MortalFlesh/csv-exporter.svg?branch=master)](https://travis-ci.org/MortalFlesh/csv-exporter) +[![Tests and linting](https://github.com/MortalFlesh/csv-exporter/actions/workflows/tests.yaml/badge.svg)](https://github.com/MortalFlesh/csv-exporter/actions/workflows/tests.yaml) [![Coverage Status](https://coveralls.io/repos/github/MortalFlesh/csv-exporter/badge.svg?branch=master)](https://coveralls.io/github/MortalFlesh/csv-exporter?branch=master) Csv exporter for [Symfony](https://github.com/symfony/symfony) @@ -21,11 +21,13 @@ or ``` ## Requirements -- `PHP 7.1` +- `PHP 7.4` - [league/csv](https://github.com/thephpleague/csv) ## Usage +> For detail explanation see [this issue](https://github.com/MortalFlesh/csv-exporter/issues/2#issuecomment-782130283) + ### In Symfony Controller action ```php return (new StreamedResponseFactory(/* ...dependencies */)) // from ->get('service') diff --git a/composer.json b/composer.json index c2c5235..974c3b4 100644 --- a/composer.json +++ b/composer.json @@ -19,18 +19,19 @@ } }, "require": { - "php": "^7.1", + "php": "^7.4", "league/csv": "^5.0", - "symfony/http-foundation": "^2.8 || ^3.3 || ^4.0 || ^5.0" + "symfony/http-foundation": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^6.0", - "phpstan/phpstan": "^0.11.0", - "mockery/mockery": "^1.0", - "satooshi/php-coveralls": "^1.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan-mockery": "^0.11.3" + "phpunit/phpunit": "^9.5", + "mockery/mockery": "^1.4", + "phpstan/phpstan": "^0.12.83", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-phpunit": "^0.12.18", + "phpstan/phpstan-mockery": "^0.12.13" }, + "scripts": { "post-install-cmd": [ "@installTools" @@ -43,16 +44,18 @@ ], "all": [ "@analyze", - "@test", + "@tests-ci" + ], + "analyze": [ + "@cs", "@phpstan" ], - "test": "vendor/bin/phpunit -c phpunit.xml.dist", - "phpstan": "vendor/bin/phpstan analyse -l 5 -c phpstan.neon src tests", + "cs": "vendor/bin/ecs check --ansi -- src/ tests/", + "phpstan": "vendor/bin/phpstan analyze src tests -c phpstan.neon --ansi --level 7", + "tests": "vendor/bin/phpunit", + "tests-ci": "php -dxdebug.coverage_enable=1 vendor/bin/phpunit -c phpunit.xml.dist", "fix": [ "vendor/bin/ecs check --ansi --clear-cache --fix -- src/ tests/" - ], - "analyze": [ - "vendor/bin/ecs check --ansi -- src/ tests/" ] } } diff --git a/easy-coding-standard.yaml b/easy-coding-standard.yaml deleted file mode 100644 index c07ebfd..0000000 --- a/easy-coding-standard.yaml +++ /dev/null @@ -1,6 +0,0 @@ -imports: - - { resource: '%vendor_dir%/lmc/coding-standard/easy-coding-standard.yaml' } - -parameters: - exclude_files: - skip: diff --git a/ecs.php b/ecs.php new file mode 100644 index 0000000..38aab10 --- /dev/null +++ b/ecs.php @@ -0,0 +1,9 @@ +import(__DIR__ . '/tools/coding-standards/vendor/lmc/coding-standard/ecs.php'); +}; diff --git a/phpstan.neon b/phpstan.neon index 096cae4..b611940 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,2 +1,5 @@ parameters: + checkMissingIterableValueType: false + checkGenericClassInNonGenericObjectType: false + ignoreErrors: diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 68355ad..69bb12e 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,44 +1,34 @@ - - + + + + + + src + + + + + + + + + + + - ./tests + tests - - - src - - src/Exception - - - - - - - - + - - - - - diff --git a/src/CsvStreamRenderer.php b/src/CsvStreamRenderer.php index 983697c..769b64c 100644 --- a/src/CsvStreamRenderer.php +++ b/src/CsvStreamRenderer.php @@ -6,8 +6,7 @@ class CsvStreamRenderer { - /** @var CsvWriterFactory */ - private $csvWriterFactory; + private CsvWriterFactory $csvWriterFactory; public function __construct(CsvWriterFactory $csvWriterFactory) { diff --git a/src/DataStreamGenerator.php b/src/DataStreamGenerator.php index 35162cf..37fbb86 100644 --- a/src/DataStreamGenerator.php +++ b/src/DataStreamGenerator.php @@ -4,10 +4,9 @@ class DataStreamGenerator { - const DEFAULT_BULK_SIZE = 1000; + public const DEFAULT_BULK_SIZE = 1000; - /** @var CsvStreamRenderer */ - private $csvStreamRenderer; + private CsvStreamRenderer $csvStreamRenderer; /** @var callable */ private $formatRowData; diff --git a/src/Factory/StreamedResponseFactory.php b/src/Factory/StreamedResponseFactory.php index 8faaaed..87ba5f9 100644 --- a/src/Factory/StreamedResponseFactory.php +++ b/src/Factory/StreamedResponseFactory.php @@ -7,8 +7,7 @@ class StreamedResponseFactory { - /** @var DataStreamGenerator */ - private $dataStreamGenerator; + private DataStreamGenerator $dataStreamGenerator; public function __construct(DataStreamGenerator $dataStreamGenerator) { diff --git a/tests/CsvStreamRendererTest.php b/tests/CsvStreamRendererTest.php index 3a46c50..107b3db 100644 --- a/tests/CsvStreamRendererTest.php +++ b/tests/CsvStreamRendererTest.php @@ -6,11 +6,8 @@ class CsvStreamRendererTest extends AbstractTestCase { - /** @var CsvStreamRenderer */ - private $csvStreamRenderer; - - /** @var CsvWriterFactory */ - private $csvWriterFactory; + private CsvStreamRenderer $csvStreamRenderer; + private CsvWriterFactory $csvWriterFactory; protected function setUp(): void { diff --git a/tests/DataStreamGeneratorTest.php b/tests/DataStreamGeneratorTest.php index 614807f..d2cdddc 100644 --- a/tests/DataStreamGeneratorTest.php +++ b/tests/DataStreamGeneratorTest.php @@ -6,11 +6,10 @@ class DataStreamGeneratorTest extends AbstractTestCase { - /** @var DataStreamGenerator */ - private $dataStreamGenerator; + private DataStreamGenerator $dataStreamGenerator; /** @var CsvStreamRenderer|m\MockInterface */ - private $csvStreamRenderer; + private CsvStreamRenderer $csvStreamRenderer; protected function setUp(): void { diff --git a/tests/Factory/StreamedResponseFactoryTest.php b/tests/Factory/StreamedResponseFactoryTest.php index f8cd76d..8f20933 100644 --- a/tests/Factory/StreamedResponseFactoryTest.php +++ b/tests/Factory/StreamedResponseFactoryTest.php @@ -9,10 +9,9 @@ class StreamedResponseFactoryTest extends AbstractTestCase { - /** @var StreamedResponseFactory */ - private $streamedResponseFactory; + private StreamedResponseFactory $streamedResponseFactory; - /** @var DataStreamGenerator|m\Mock */ + /** @var DataStreamGenerator|m\MockInterface */ private $dataStreamGenerator; protected function setUp(): void diff --git a/tools/coding-standards/composer.json b/tools/coding-standards/composer.json index 1552663..4697e3b 100644 --- a/tools/coding-standards/composer.json +++ b/tools/coding-standards/composer.json @@ -1,7 +1,7 @@ { "name": "tools/coding-standards", "require-dev": { - "lmc/coding-standard": "^1.0" + "lmc/coding-standard": "^3.0" }, "authors": [ { @@ -14,7 +14,7 @@ }, "config": { "platform": { - "php": "7.1.1" + "php": "7.4.16" }, "sort-packages": true }