diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 63a0d33..b3f576e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,18 +13,6 @@ jobs: fail-fast: false matrix: include: - - mw: 'REL1_39' - php: 8.1 - experimental: false - - mw: 'REL1_40' - php: 8.1 - experimental: false - - mw: 'REL1_41' - php: 8.2 - experimental: false - - mw: 'REL1_42' - php: 8.2 - experimental: false - mw: 'REL1_43' php: 8.3 experimental: false @@ -83,16 +71,18 @@ jobs: - name: Run update.php run: php maintenance/update.php --quick - - name: Run PHPUnit + - name: Run PHPUnit (MW < master) + if: matrix.mw != 'master' run: php tests/phpunit/phpunit.php -c extensions/ExternalContent/ - - name: Run PHPUnit with code coverage - run: php tests/phpunit/phpunit.php -c extensions/ExternalContent/ --coverage-clover coverage.xml - if: matrix.mw == 'master' - - - name: Upload code coverage - run: bash <(curl -s https://codecov.io/bash) + - name: Run PHPUnit (MW master) if: matrix.mw == 'master' + run: | + # phpunit.xml.template is export-ignored from the GitHub tarball, fetch it separately + if [ ! -f phpunit.xml.template ]; then + wget -q -O phpunit.xml.template "https://raw.githubusercontent.com/wikimedia/mediawiki/${{ matrix.mw }}/phpunit.xml.template" + fi + composer phpunit -- extensions/ExternalContent/tests/ - name: Run parser tests run: php tests/parser/parserTests.php --file=extensions/ExternalContent/tests/parser/parserTests.txt diff --git a/extension.json b/extension.json index 082b975..c328cb2 100644 --- a/extension.json +++ b/extension.json @@ -13,7 +13,7 @@ "descriptionmsg": "external-content-desc", "requires": { - "MediaWiki": ">= 1.39.0", + "MediaWiki": ">= 1.43.0", "platform": { "php": ">= 8.0" } diff --git a/src/Adapters/EmbedPresenter/CategoryUsageTracker.php b/src/Adapters/EmbedPresenter/CategoryUsageTracker.php index 5f20a2b..4b3805c 100644 --- a/src/Adapters/EmbedPresenter/CategoryUsageTracker.php +++ b/src/Adapters/EmbedPresenter/CategoryUsageTracker.php @@ -4,7 +4,7 @@ namespace ProfessionalWiki\ExternalContent\Adapters\EmbedPresenter; -use Parser; +use MediaWiki\Parser\Parser; class CategoryUsageTracker implements UsageTracker { diff --git a/src/Adapters/EmbedPresenter/ParserFunctionEmbedPresenter.php b/src/Adapters/EmbedPresenter/ParserFunctionEmbedPresenter.php index f538943..288daf2 100644 --- a/src/Adapters/EmbedPresenter/ParserFunctionEmbedPresenter.php +++ b/src/Adapters/EmbedPresenter/ParserFunctionEmbedPresenter.php @@ -4,7 +4,7 @@ namespace ProfessionalWiki\ExternalContent\Adapters\EmbedPresenter; -use Html; +use MediaWiki\Html\Html; use MessageLocalizer; use ProfessionalWiki\ExternalContent\UseCases\Embed\EmbedPresenter; diff --git a/src/Adapters/EmbedResourceLoader/ParserFunctionEmbedResourceLoader.php b/src/Adapters/EmbedResourceLoader/ParserFunctionEmbedResourceLoader.php index cf38e9c..c9a9819 100644 --- a/src/Adapters/EmbedResourceLoader/ParserFunctionEmbedResourceLoader.php +++ b/src/Adapters/EmbedResourceLoader/ParserFunctionEmbedResourceLoader.php @@ -4,7 +4,7 @@ namespace ProfessionalWiki\ExternalContent\Adapters\EmbedResourceLoader; -use ParserOutput; +use MediaWiki\Parser\ParserOutput; use ProfessionalWiki\ExternalContent\Domain\ContentRenderer; use ProfessionalWiki\ExternalContent\Domain\ContentRenderer\CodeRenderer; use ProfessionalWiki\ExternalContent\UseCases\Embed\EmbedResourceLoader; diff --git a/src/Domain/ContentRenderer/CodeRenderer.php b/src/Domain/ContentRenderer/CodeRenderer.php index 84a466e..5b3e8ef 100644 --- a/src/Domain/ContentRenderer/CodeRenderer.php +++ b/src/Domain/ContentRenderer/CodeRenderer.php @@ -4,7 +4,7 @@ namespace ProfessionalWiki\ExternalContent\Domain\ContentRenderer; -use Html; +use MediaWiki\Html\Html; use ProfessionalWiki\ExternalContent\Domain\ContentRenderer; class CodeRenderer implements ContentRenderer { diff --git a/src/EmbedExtensionFactory.php b/src/EmbedExtensionFactory.php index 589ffe7..b64e2ff 100644 --- a/src/EmbedExtensionFactory.php +++ b/src/EmbedExtensionFactory.php @@ -6,7 +6,7 @@ use FileFetcher\FileFetcher; use MediaWiki\MediaWikiServices; -use Message; +use MediaWiki\Message\Message; use MessageLocalizer; use ProfessionalWiki\ExternalContent\Adapters\FileFetcher\DomainCredentials; use ProfessionalWiki\ExternalContent\Adapters\FileFetcher\MediaWikiFileFetcher; diff --git a/src/EntryPoints/BitbucketFunction.php b/src/EntryPoints/BitbucketFunction.php index 62c0b70..abc26d3 100644 --- a/src/EntryPoints/BitbucketFunction.php +++ b/src/EntryPoints/BitbucketFunction.php @@ -4,7 +4,7 @@ namespace ProfessionalWiki\ExternalContent\EntryPoints; -use Parser; +use MediaWiki\Parser\Parser; use ProfessionalWiki\ExternalContent\Adapters\EmbedPresenter\CategoryUsageTracker; use ProfessionalWiki\ExternalContent\Adapters\EmbedPresenter\ParserFunctionEmbedPresenter; use ProfessionalWiki\ExternalContent\Adapters\EmbedResourceLoader\ParserFunctionEmbedResourceLoader; diff --git a/src/EntryPoints/EmbedFunction.php b/src/EntryPoints/EmbedFunction.php index 644e81f..2e2ce43 100644 --- a/src/EntryPoints/EmbedFunction.php +++ b/src/EntryPoints/EmbedFunction.php @@ -4,7 +4,7 @@ namespace ProfessionalWiki\ExternalContent\EntryPoints; -use Parser; +use MediaWiki\Parser\Parser; use ProfessionalWiki\ExternalContent\Adapters\EmbedPresenter\CategoryUsageTracker; use ProfessionalWiki\ExternalContent\Adapters\EmbedPresenter\ParserFunctionEmbedPresenter; use ProfessionalWiki\ExternalContent\Adapters\EmbedResourceLoader\ParserFunctionEmbedResourceLoader; diff --git a/src/EntryPoints/MediaWikiHooks.php b/src/EntryPoints/MediaWikiHooks.php index 3daf24d..3822a9d 100644 --- a/src/EntryPoints/MediaWikiHooks.php +++ b/src/EntryPoints/MediaWikiHooks.php @@ -4,11 +4,11 @@ namespace ProfessionalWiki\ExternalContent\EntryPoints; -use ContentHandler; +use MediaWiki\Content\ContentHandler; use MediaWiki\MediaWikiServices; +use MediaWiki\Parser\Parser; +use MediaWiki\Parser\ParserOutput; use MediaWiki\Revision\RevisionRecord; -use Parser; -use ParserOutput; use ProfessionalWiki\ExternalContent\EmbedExtensionFactory; use SearchEngine; use WikiPage; diff --git a/tests/Integration/EmbedFunctionIntegrationTest.php b/tests/Integration/EmbedFunctionIntegrationTest.php index 11a7641..be34453 100644 --- a/tests/Integration/EmbedFunctionIntegrationTest.php +++ b/tests/Integration/EmbedFunctionIntegrationTest.php @@ -7,6 +7,9 @@ use FileFetcher\InMemoryFileFetcher; use FileFetcher\StubFileFetcher; use MediaWiki\MediaWikiServices; +use MediaWiki\Parser\ParserOptions; +use MediaWiki\Title\Title; +use MediaWiki\User\User; use ProfessionalWiki\ExternalContent\Tests\TestEnvironment; /** @@ -51,12 +54,13 @@ public function testUsageIsTracked(): void { $this->extensionFactory->setFileFetcher( new InMemoryFileFetcher( [] ) ); $parser = MediaWikiServices::getInstance()->getParser(); + $parserOptions = new ParserOptions( User::newSystemUser( 'TestUser' ) ); $parser->parse( '{{#embed:https://example.com/KITTENS.md}}', - \Title::newFromText( 'EmbedFunctionIntegrationTest' ), - new \ParserOptions( \User::newSystemUser( 'TestUser' ) ) - )->getText(); + Title::newFromText( 'EmbedFunctionIntegrationTest' ), + $parserOptions + )->runOutputPipeline( $parserOptions, [] )->getContentHolderText(); // Since the category name depends on the wiki language, we need to skip this test when it is not English. if ( MediaWikiServices::getInstance()->getContentLanguage()->getCode() === 'en' ) { diff --git a/tests/Integration/EmbedFunctionSystemTest.php b/tests/Integration/EmbedFunctionSystemTest.php index 4392f64..21635de 100644 --- a/tests/Integration/EmbedFunctionSystemTest.php +++ b/tests/Integration/EmbedFunctionSystemTest.php @@ -4,10 +4,12 @@ namespace ProfessionalWiki\ExternalContent\Tests\Integration; -use CommentStoreComment; use FileFetcher\StubFileFetcher; -use Title; -use User; +use MediaWiki\CommentStore\CommentStoreComment; +use MediaWiki\Content\Content; +use MediaWiki\Content\ContentHandler; +use MediaWiki\Title\Title; +use MediaWiki\User\User; use WikiPage; /** @@ -56,11 +58,11 @@ private function createPage( string $title, string $content ): WikiPage { return $this->createPageWithContent( $title, - \ContentHandler::makeContent( $content, $titleObject ) + ContentHandler::makeContent( $content, $titleObject ) ); } - private function createPageWithContent( string $title, \Content $content ): WikiPage { + private function createPageWithContent( string $title, Content $content ): WikiPage { $titleObject = Title::newFromText( $title ); $page = new WikiPage( $titleObject ); diff --git a/tests/TestEnvironment.php b/tests/TestEnvironment.php index 2f9c5dd..754f7b6 100644 --- a/tests/TestEnvironment.php +++ b/tests/TestEnvironment.php @@ -5,7 +5,9 @@ namespace ProfessionalWiki\ExternalContent\Tests; use MediaWiki\MediaWikiServices; -use Title; +use MediaWiki\Parser\ParserOptions; +use MediaWiki\Title\Title; +use MediaWiki\User\User; class TestEnvironment { @@ -22,12 +24,13 @@ public function wikiUrl( string $pageName ): ?string { } public function parse( string $textToParse, ?Title $contextPage = null ): string { + $parserOptions = new ParserOptions( User::newSystemUser( 'TestUser' ) ); return MediaWikiServices::getInstance()->getParser() ->parse( $textToParse, $contextPage ?? Title::newFromText( 'ContextPage' ), - new \ParserOptions( \User::newSystemUser( 'TestUser' ) ) - )->getText(); + $parserOptions + )->runOutputPipeline( $parserOptions, [] )->getContentHolderText(); } } diff --git a/tests/TestFactory.php b/tests/TestFactory.php index d50fa16..29f5d5b 100644 --- a/tests/TestFactory.php +++ b/tests/TestFactory.php @@ -6,7 +6,7 @@ use FileFetcher\FileFetcher; use FileFetcher\NullFileFetcher; -use Message; +use MediaWiki\Message\Message; use MessageLocalizer; use ProfessionalWiki\ExternalContent\EmbedExtensionFactory;