diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..f9c94af --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,43 @@ +name: PHP Tests + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + php-version: + - '8.0' + - '8.1' + - '8.2' + - '8.3' + + steps: + - uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + coverage: xdebug + + - name: Install dependencies + run: composer install --prefer-dist --no-progress + + - name: Install specific PHPUnit version + run: composer require "phpunit/phpunit:^9.6" --dev + + - name: Run tests + run: composer test + + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v3 + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 0fa480e..0000000 --- a/.travis.yml +++ /dev/null @@ -1,19 +0,0 @@ -language: php -php: - - '5.6' - - '7.0' - - '7.1' - - '7.2' - - '7.3' - - '7.4' -before_script: - - composer update -script: composer test -cache: - directories: - - vendor -branches: - only: - - master -after_success: - - bash <(curl -s https://codecov.io/bash) diff --git a/README.md b/README.md index f5370d2..4fb5f86 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # WordPress Core Installer -[![Build Status](https://travis-ci.com/roots/wordpress-core-installer.svg?branch=master)](https://travis-ci.com/roots/wordpress-core-installer) +[![Tests](https://github.com/roots/wordpress-core-installer/actions/workflows/tests.yml/badge.svg?branch=master)](https://github.com/roots/wordpress-core-installer/actions/workflows/tests.yml) [![License: GPL v2](https://img.shields.io/badge/License-GPL%20v2-blue.svg)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) [![Packagist](https://img.shields.io/packagist/dt/roots/wordpress-core-installer.svg)](https://packagist.org/packages/roots/wordpress-core-installer) ![GitHub tag](https://img.shields.io/github/tag/roots/wordpress-core-installer.svg) diff --git a/composer.json b/composer.json index 7f1b694..78dc20b 100644 --- a/composer.json +++ b/composer.json @@ -37,7 +37,7 @@ }, "require-dev": { "composer/composer": "^1.0 || ^2.0", - "phpunit/phpunit": ">=5.7.27" + "phpunit/phpunit": "^9.6" }, "conflict": { "composer/installers": "<1.0.6" diff --git a/tests/phpunit/WordPressCoreInstallerTest.php b/tests/phpunit/WordPressCoreInstallerTest.php index c20cb04..12a592c 100644 --- a/tests/phpunit/WordPressCoreInstallerTest.php +++ b/tests/phpunit/WordPressCoreInstallerTest.php @@ -33,7 +33,9 @@ class WordPressCoreInstallerTest extends TestCase { public function testSupports() { - $installer = new WordPressCoreInstaller(new NullIO(), $this->createComposer()); + $composer = $this->createComposer(); + $composer->setPackage(new RootPackage('root/package', '1.0.0', '1.0.0')); + $installer = new WordPressCoreInstaller(new NullIO(), $composer); $this->assertTrue($installer->supports('wordpress-core')); $this->assertFalse($installer->supports('not-wordpress-core')); @@ -41,7 +43,9 @@ public function testSupports() public function testDefaultInstallDir() { - $installer = new WordPressCoreInstaller(new NullIO(), $this->createComposer()); + $composer = $this->createComposer(); + $composer->setPackage(new RootPackage('root/package', '1.0.0', '1.0.0')); + $installer = new WordPressCoreInstaller(new NullIO(), $composer); $package = new Package('johnpbloch/test-package', '1.0.0.0', '1.0.0'); $this->assertEquals('wordpress', $installer->getInstallPath($package)); @@ -96,7 +100,9 @@ public function testArrayOfInstallDirs() public function testCorePackageCanDefineInstallDirectory() { - $installer = new WordPressCoreInstaller(new NullIO(), $this->createComposer()); + $composer = $this->createComposer(); + $composer->setPackage(new RootPackage('root/package', '1.0.0', '1.0.0')); + $installer = new WordPressCoreInstaller(new NullIO(), $composer); $package = new Package('test/has-default-install-dir', '0.1.0.0', '0.1'); $package->setExtra(array( 'wordpress-install-dir' => 'not-wordpress', @@ -128,6 +134,7 @@ public function testTwoPackagesCannotShareDirectory() 'Two packages (test/bazbat and test/foobar) cannot share the same directory!' ); $composer = $this->createComposer(); + $composer->setPackage(new RootPackage('root/package', '1.0.0', '1.0.0')); $installer = new WordPressCoreInstaller(new NullIO(), $composer); $package1 = new Package('test/foobar', '1.1.1.1', '1.1.1.1'); $package2 = new Package('test/bazbat', '1.1.1.1', '1.1.1.1'); @@ -139,6 +146,7 @@ public function testTwoPackagesCannotShareDirectory() public function testTwoPackagesCannotShareDirectoryUnlessWpCoreType() { $composer = $this->createComposer(); + $composer->setPackage(new RootPackage('root/package', '1.0.0', '1.0.0')); $installer = new WordPressCoreInstaller(new NullIO(), $composer); $package1 = new Package('johnpbloch/wordpress', '4.9.8', '4.9.8'); $package1->setType('wordpress-core'); @@ -162,6 +170,7 @@ public function testSensitiveInstallDirectoriesNotAllowed($directory) true ); $composer = $this->createComposer(); + $composer->setPackage(new RootPackage('root/package', '1.0.0', '1.0.0')); $installer = new WordPressCoreInstaller(new NullIO(), $composer); $package = new Package('test/package', '1.1.0.0', '1.1'); $package->setExtra(array( 'wordpress-install-dir' => $directory )); @@ -193,7 +202,16 @@ public static function resetInstallPaths() private function createComposer() { $composer = new Composer(); - $composer->setConfig(new Config()); + $config = new Config(); + $composer->setConfig($config); + + // Set up DownloadManager with proper Filesystem + $downloadManager = new \Composer\Downloader\DownloadManager( + new \Composer\IO\NullIO(), + false, + new \Composer\Util\Filesystem() + ); + $composer->setDownloadManager($downloadManager); return $composer; } diff --git a/tests/phpunit/WordPressCorePluginTest.php b/tests/phpunit/WordPressCorePluginTest.php index f0244d0..9a753da 100644 --- a/tests/phpunit/WordPressCorePluginTest.php +++ b/tests/phpunit/WordPressCorePluginTest.php @@ -26,6 +26,7 @@ use Composer\Installer\InstallationManager; use Composer\IO\IOInterface; use Composer\IO\NullIO; +use Composer\Package\RootPackage; use Composer\Plugin\PluginInterface; use Composer\Test\Mock\HttpDownloaderMock; use Composer\Util\HttpDownloader; @@ -38,11 +39,24 @@ class WordPressCorePluginTest extends TestCase public function testActivate() { $composer = new Composer(); - $composer->setConfig(new Config()); - $nullIO = new NullIO(); + $config = new Config(); + $composer->setConfig($config); + + // Set up root package + $rootPackage = new RootPackage('root/package', '1.0.0', '1.0.0'); + $composer->setPackage($rootPackage); + + // Set up DownloadManager + $downloadManager = new \Composer\Downloader\DownloadManager( + new NullIO(), + false, + new \Composer\Util\Filesystem() + ); + $composer->setDownloadManager($downloadManager); + + $nullIO = new NullIO(); $installationManager = $this->getInstallationManager($composer, $nullIO); $composer->setInstallationManager($installationManager); - $composer->setConfig(new Config()); $plugin = new WordPressCorePlugin(); $plugin->activate($composer, $nullIO);