diff --git a/.github/workflows/test-application.yaml b/.github/workflows/test-application.yaml new file mode 100644 index 0000000..4dda9b8 --- /dev/null +++ b/.github/workflows/test-application.yaml @@ -0,0 +1,43 @@ +name: Test application + +on: + pull_request: + push: + branches: + - 'master' + +jobs: + test: + name: 'PHP ${{ matrix.php-version }} ${{ matrix.dependencies }}' + runs-on: ubuntu-20.04 + env: + SYMFONY_DEPRECATIONS_HELPER: weak + + strategy: + fail-fast: false + matrix: + include: + - php-version: '7.2' + dependencies: 'lowest' + - php-version: '7.3' + - php-version: '7.4' + - php-version: '8.0' + + steps: + - name: Checkout project + uses: actions/checkout@v2 + + - name: Install and configure PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + tools: 'composer:v2' + + - name: Install dependencies with Composer + uses: ramsey/composer-install@v1 + with: + dependency-versions: ${{ matrix.dependencies }} + composer-options: --prefer-dist + + - name: Execute test cases + run: vendor/bin/phpunit diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 5399df8..0000000 --- a/.travis.yml +++ /dev/null @@ -1,29 +0,0 @@ -language: php - -php: - - 5.6 - - 7.1 - - 7.2 - - 7.3 - -env: - - PACKAGE_VERSION=high - -sudo: false - -matrix: - include: - - php: 5.6 - env: PACKAGE_VERSION=low - - php: 7.4 - env: - - MINIMUM_STABILITY=dev - - PACKAGE_VERSION=high - -before_script: - - composer selfupdate - - if [[ "$MINIMUM_STABILITY" ]]; then composer config minimum-stability $MINIMUM_STABILITY ; fi - - if [[ "$PACKAGE_VERSION" == "high" ]]; then composer update --prefer-dist; fi - - if [[ "$PACKAGE_VERSION" == "low" ]]; then composer update --prefer-lowest --prefer-dist; fi - -script: vendor/bin/simple-phpunit diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..7d2e9c9 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,7 @@ +Changelog +========= + +1.3.0 +----- + +* Support PHP 8. diff --git a/composer.json b/composer.json index d8e5018..136cce2 100644 --- a/composer.json +++ b/composer.json @@ -9,14 +9,15 @@ } ], "require": { + "php": "^7.2|^8.0", "phpcr/phpcr": "^2.1", - "symfony/finder": "^2.8 || ^3.4 || ^4.0 || ^5.0", - "symfony/console": "^2.8 || ^3.4 || ^4.0 || ^5.0" + "symfony/finder": "^4.4 || ^5.0", + "symfony/console": "^4.4 || ^5.0" }, "require-dev": { - "symfony/phpunit-bridge": "^5.0.4", "jackalope/jackalope-fs": "0.0.*", - "handcraftedinthealps/zendsearch": "^2.0" + "handcraftedinthealps/zendsearch": "^2.0", + "phpunit/phpunit": "^8.5 || ^9.4" }, "autoload": { "psr-4": { @@ -25,7 +26,7 @@ }, "autoload-dev": { "psr-4": { - "PHPCR\\Migrations\\": "tests" + "PHPCR\\Migrations\\Tests\\": "tests" } }, "extra": { diff --git a/lib/Migrator.php b/lib/Migrator.php index eac6d09..3452585 100644 --- a/lib/Migrator.php +++ b/lib/Migrator.php @@ -57,12 +57,12 @@ public function initialize() * If $to is 0 then all migrations will be reverted. * If $to is null then all migrations will be executed. * - * @param string $to Version to run until + * @param string|null $to Version to run until * @param OutputInterface $output * * @return VersionInterface[] Executed migrations */ - public function migrate($to = null, OutputInterface $output) + public function migrate($to, OutputInterface $output) { if (false === $to) { return array(); @@ -79,7 +79,6 @@ public function migrate($to = null, OutputInterface $output) return array(); } - $start = microtime(true); $position = 0; $output->writeln(sprintf('%s %d version(s):', ($direction == 'up' ? 'Upgrading' : 'Reverting'), count($versionsToExecute))); foreach ($versionsToExecute as $timestamp => $version) { diff --git a/lib/MigratorUtil.php b/lib/MigratorUtil.php index ced0ce4..8e5abae 100644 --- a/lib/MigratorUtil.php +++ b/lib/MigratorUtil.php @@ -47,7 +47,7 @@ public static function getClassNameFromFile($file) for (;$i < count($tokens);$i++) { if ($tokens[$i][0] === T_NAMESPACE) { for ($j = $i + 1;$j < count($tokens); $j++) { - if ($tokens[$j][0] === T_STRING) { + if (\defined('T_NAME_QUALIFIED') && $tokens[$j][0] === T_NAME_QUALIFIED || $tokens[$j][0] === T_STRING) { $namespace .= '\\' . $tokens[$j][1]; } elseif ($tokens[$j] === '{' || $tokens[$j] === ';') { break; diff --git a/lib/VersionFinder.php b/lib/VersionFinder.php index 7a364d0..c0dd048 100644 --- a/lib/VersionFinder.php +++ b/lib/VersionFinder.php @@ -11,6 +11,7 @@ namespace PHPCR\Migrations; +use PHPCR\Migrations\Exception\MigratorException; use Symfony\Component\Finder\Finder; class VersionFinder diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 462c2b2..f9e77c3 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -18,6 +18,7 @@ + . diff --git a/tests/BaseTestCase.php b/tests/BaseTestCase.php index 97aee90..aa8b91d 100644 --- a/tests/BaseTestCase.php +++ b/tests/BaseTestCase.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace PHPCR\Migrations; +namespace PHPCR\Migrations\Tests; use Jackalope\RepositoryFactoryFilesystem; use PHPCR\SimpleCredentials; diff --git a/tests/Functional/MigrationTest.php b/tests/Functional/MigrationTest.php index afa9eda..7fdcdcb 100644 --- a/tests/Functional/MigrationTest.php +++ b/tests/Functional/MigrationTest.php @@ -9,11 +9,11 @@ * file that was distributed with this source code. */ -namespace PHPCR\Migrations\tests\Functional; +namespace PHPCR\Migrations\Tests\Functional; -use PHPCR\Migrations\BaseTestCase; use PHPCR\Migrations\Exception\MigratorException; use PHPCR\Migrations\Migrator; +use PHPCR\Migrations\Tests\BaseTestCase; use PHPCR\Migrations\VersionFinder; use PHPCR\Migrations\VersionStorage; use Symfony\Component\Console\Output\BufferedOutput; @@ -27,10 +27,11 @@ class MigrationTest extends BaseTestCase private $output; private $filesystem; + private $migrationDistDir; private $migrationDir; private $storage; - public function setUp() + public function setUp(): void { $this->initPhpcr(); $this->migrationDir = __DIR__ . '/../migrations'; @@ -63,9 +64,9 @@ public function testMigration() $nodes = $this->session->getNode('/phpcrmig:versions')->getNodes(); $names = array_keys((array) $nodes); - $this->assertContains('201501011200', $names); - $this->assertContains('201501011212', $names); - $this->assertContains('201501011215', $names); + $this->assertContains(201501011200, $names); + $this->assertContains(201501011212, $names); + $this->assertContains(201501011215, $names); } /** @@ -201,6 +202,7 @@ public function testMigratePrevious() $this->addVersion(self::VERSION2); $this->addVersion(self::VERSION3); $migratedVersions = $this->getMigrator()->migrate(null, $this->output); + $this->assertCount(3, $migratedVersions); $this->assertEquals(self::VERSION3, $this->storage->getCurrentVersion()); $migratedVersions = $this->getMigrator()->migrate('down', $this->output); @@ -256,8 +258,7 @@ private function getMigrator() $this->storage = new VersionStorage($this->session); $finder = new VersionFinder(array($this->migrationDir)); $versions = $finder->getCollection(); - $migrator = new Migrator($this->session, $versions, $this->storage); - return $migrator; + return new Migrator($this->session, $versions, $this->storage); } } diff --git a/tests/Unit/MigratorFactoryTest.php b/tests/Unit/MigratorFactoryTest.php index 8f4b1f7..1c8c38f 100644 --- a/tests/Unit/MigratorFactoryTest.php +++ b/tests/Unit/MigratorFactoryTest.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace PHPCR\Migrations\tests\Unit; +namespace PHPCR\Migrations\Tests\Unit; use PHPCR\Migrations\Migrator; use PHPCR\Migrations\MigratorFactory; diff --git a/tests/Unit/MigratorUtilTest.php b/tests/Unit/MigratorUtilTest.php index 826271e..d7e5b90 100644 --- a/tests/Unit/MigratorUtilTest.php +++ b/tests/Unit/MigratorUtilTest.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace PHPCR\Migrations\tests\Unit; +namespace PHPCR\Migrations\Tests\Unit; use PHPCR\Migrations\MigratorUtil; use PHPUnit\Framework\TestCase; diff --git a/tests/Unit/VersionCollectionTest.php b/tests/Unit/VersionCollectionTest.php index d772267..8fb0bf7 100644 --- a/tests/Unit/VersionCollectionTest.php +++ b/tests/Unit/VersionCollectionTest.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace PHPCR\Migrations\tests\Unit; +namespace PHPCR\Migrations\Tests\Unit; use PHPCR\Migrations\VersionCollection; use PHPCR\Migrations\VersionInterface; @@ -21,7 +21,7 @@ class VersionCollectionTest extends TestCase const VERSION2 = '201501020000'; const VERSION3 = '201501030000'; - public function setUp() + public function setUp(): void { $this->version1 = $this->prophesize('PHPCR\Migrations\VersionInterface'); $this->version2 = $this->prophesize('PHPCR\Migrations\VersionInterface'); diff --git a/tests/Unit/VersionFinderTest.php b/tests/Unit/VersionFinderTest.php index 9ca611a..b526d42 100644 --- a/tests/Unit/VersionFinderTest.php +++ b/tests/Unit/VersionFinderTest.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace PHPCR\Migrations\tests\Unit; +namespace PHPCR\Migrations\Tests\Unit; use PHPCR\Migrations\VersionCollection; use PHPCR\Migrations\VersionFinder; @@ -17,7 +17,12 @@ class VersionFinderTest extends TestCase { - public function setUp() + /** + * @var VersionFinder + */ + private $finder; + + public function setUp(): void { $this->finder = new VersionFinder(array( __DIR__ . '/../migrations',