From 015cc6c493c15442bee162cc7d1024bab512fed0 Mon Sep 17 00:00:00 2001 From: Markus Podar Date: Thu, 2 Jan 2020 14:39:34 +0100 Subject: [PATCH] Drop support for PHP < 7.2 and improve test matrix (#868) * travis: use explicit test matrix and drop PHP < 7.2 * composer: use more liberal version requirements for orchestra This is to easier satisfy when we want to use older Laravel versions on travis * tests: add shim for assertStringContainsString for older Laravel/phpunit versions Specifically, Laravel 5.5 works with an older phpunit version, which does not feature assertStringContainsString * composer: bump minimum PHP version to 7.2 * travis: explicitly install Mockery for testing older Laravel versions * composer: make mockery a root requirement and remove the one from travis * travis: further improve based on suggestions from https://github.com/fruitcake/laravel-cors/blob/master/.travis.yml * tests: skip test if mixin markers are already present in model We're also testing Laravel 5.5 which contains them (they were removed later) --- .travis.yml | 62 +++++++++++++++++++-------- composer.json | 5 ++- tests/Console/EloquentCommandTest.php | 9 ++-- 3 files changed, 51 insertions(+), 25 deletions(-) diff --git a/.travis.yml b/.travis.yml index 08b2081..82c4bd6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,33 +7,59 @@ cache: env: global: - - RUN_PHPUNIT=1 - RUN_PHPCS=0 matrix: include: - - php: 7.0 - env: RUN_PHPUNIT=0 - - php: 7.0 - env: RUN_PHPUNIT=0 COMPOSER_FLAGS="--prefer-stable --prefer-lowest" - - php: 7.1 - env: RUN_PHPUNIT=0 - - php: 7.2 - - php: 7.3 - - php: 7.4 - env: RUN_PHPCS=1 + - php: '7.2' + env: LARAVEL='5.5.*' COMPOSER_FLAGS='--prefer-lowest' + - php: '7.2' + env: LARAVEL='5.5.*' COMPOSER_FLAGS='--prefer-stable' + - php: '7.2' + env: LARAVEL='5.8.*' COMPOSER_FLAGS='--prefer-lowest' + - php: '7.2' + env: LARAVEL='5.8.*' COMPOSER_FLAGS='--prefer-stable' + - php: '7.2' + env: LARAVEL='^6.0' COMPOSER_FLAGS='--prefer-lowest' + - php: '7.2' + env: LARAVEL='^6.0' COMPOSER_FLAGS='--prefer-stable' + - php: '7.3' + env: LARAVEL='5.5.*' COMPOSER_FLAGS='--prefer-lowest' + - php: '7.3' + env: LARAVEL='5.5.*' COMPOSER_FLAGS='--prefer-stable' + - php: '7.3' + env: LARAVEL='5.8.*' COMPOSER_FLAGS='--prefer-lowest' + - php: '7.3' + env: LARAVEL='5.8.*' COMPOSER_FLAGS='--prefer-stable' + - php: '7.3' + env: LARAVEL='^6.0' COMPOSER_FLAGS='--prefer-lowest' + - php: '7.3' + env: LARAVEL='^6.0' COMPOSER_FLAGS='--prefer-stable' + - php: '7.4' + env: LARAVEL='5.5.*' COMPOSER_FLAGS='--prefer-lowest' + - php: '7.4' + env: LARAVEL='5.5.*' COMPOSER_FLAGS='--prefer-stable' + - php: '7.4' + env: LARAVEL='5.8.*' COMPOSER_FLAGS='--prefer-lowest' + - php: '7.4' + env: LARAVEL='5.8.*' COMPOSER_FLAGS='--prefer-stable' + - php: '7.4' + env: LARAVEL='^6.0' COMPOSER_FLAGS='--prefer-lowest' + - php: '7.4' + env: LARAVEL='^6.0' COMPOSER_FLAGS='--prefer-stable' RUN_PHPCS=1 before_script: - phpenv config-rm xdebug.ini || true install: - - | - if [[ $RUN_PHPUNIT = 0 ]]; then - # We assume the older PHP/Laravel versions and thus restore a working dependency system for them - composer remove --dev orchestra/testbench --no-interaction --no-update - fi - - travis_wait 20 travis_retry composer update ${COMPOSER_FLAGS} --no-interaction --prefer-dist + - travis_retry composer remove phpro/grumphp --no-interaction --no-update --dev + - composer require "illuminate/support:${LARAVEL}" --no-interaction --no-update + - composer require "illuminate/console:${LARAVEL}" --no-interaction --no-update + - composer require "illuminate/filesystem:${LARAVEL}" --no-interaction --no-update + - composer require --dev "illuminate/config:${LARAVEL}" --no-interaction --no-update + - composer require --dev "illuminate/view:${LARAVEL}" --no-interaction --no-update + - travis_retry composer update ${COMPOSER_FLAGS} --no-interaction --prefer-dist --no-suggest script: + - vendor/bin/phpunit - if [[ $RUN_PHPCS = 1 ]]; then vendor/bin/phpcs --standard=psr2 src/; fi - - if [[ $RUN_PHPUNIT = 1 ]]; then vendor/bin/phpunit; fi diff --git a/composer.json b/composer.json index 59dc964..2b4cc26 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,7 @@ } ], "require": { - "php": ">=7", + "php": ">=7.2", "illuminate/support": "^5.5|^6", "illuminate/console": "^5.5|^6", "illuminate/filesystem": "^5.5|^6", @@ -23,7 +23,8 @@ "illuminate/view": "^5.5|^6", "phpro/grumphp": "^0.14", "squizlabs/php_codesniffer": "^3", - "orchestra/testbench": "^4.4" + "orchestra/testbench": "^3|^4", + "mockery/mockery": "^1.3" }, "autoload": { "psr-4": { diff --git a/tests/Console/EloquentCommandTest.php b/tests/Console/EloquentCommandTest.php index 1ca3ef6..7baa5a9 100644 --- a/tests/Console/EloquentCommandTest.php +++ b/tests/Console/EloquentCommandTest.php @@ -14,12 +14,11 @@ class EloquentCommandTest extends TestCase public function testCommand() { $modelFilename = $this->getVendorModelFilename(); - - // Ensure the mixins are not present $modelSource = file_get_contents($modelFilename); - $this->assertStringNotContainsString('* @mixin \\Eloquent', $modelSource); - $this->assertStringNotContainsString('* @mixin \\Illuminate\\Database\\Eloquent\\Builder', $modelSource); - $this->assertStringNotContainsString('* @mixin \\Illuminate\\Database\\Query\\Builder', $modelSource); + if (false !== strpos($modelSource, '* @mixin')) { + $msg = sprintf('Class %s already contains the @mixin markers', Model::class); + $this->markTestSkipped($msg); + } $actualContent = null; $mockFilesystem = Mockery::mock(Filesystem::class);