Semanticmediawiki: PHP Fatal error: Interface 'DeferrableUpdate' not found

Created on 6 Apr 2020  路  10Comments  路  Source: SemanticMediaWiki/SemanticMediaWiki

Setup and configuration

  • SMW version: 3.1.5
  • MW version: 7c74e448aac5f7c4fb52e552d535f8e3b82ec51d
  • PHP version: 7.3.11-1~deb10u1
  • DB system (MySQL, Blazegraph, etc.) and version: mardiadb 1:10.3.22-0+deb10u1

Issue

My IDE (PhpStorm) and commands that use (only?) composer autoloader are failing with the following error. This makes it hard to develop for MediaWiki installation with SMW installed. I cannot for example run unit tests properly.

Stack trace

PHP Fatal error:  Interface 'DeferrableUpdate' not found in /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/MediaWiki/Deferred/CallableUpdate.php on line 17
PHP Stack trace:
PHP   1. {main}() /home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:0
PHP   2. require() /home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:59
PHP   3. ComposerAutoloaderInit2d34ebaf53f68c6453d178092400e6ac::getLoader() /home/developer/mediawiki/workdir/vendor/autoload.php:7
PHP   4. composerRequire2d34ebaf53f68c6453d178092400e6ac() /home/developer/mediawiki/workdir/vendor/composer/autoload_real.php:60
PHP   5. require() /home/developer/mediawiki/workdir/vendor/composer/autoload_real.php:70
PHP   6. SemanticMediaWiki::load() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/SemanticMediaWiki.php:16
PHP   7. include_once() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/SemanticMediaWiki.php:45
PHP   8. class_alias() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP   9. spl_autoload_call() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  10. Composer\Autoload\ClassLoader->loadClass() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  11. Composer\Autoload\includeFile() /home/developer/mediawiki/workdir/vendor/composer/ClassLoader.php:322
PHP  12. include() /home/developer/mediawiki/workdir/vendor/composer/ClassLoader.php:444

Steps to reproduce

Create composer.local.json with the following contents:

{
        "require": {
                "mediawiki/semantic-media-wiki": "^3.1"
        }
}

Run composer update.

Run php vendor/bin/phpunit

(Note: I did not verify these steps from scratch)

infrastructure

Most helpful comment

  • Running unit tests for SMW does not work (including running all discovered
    unit tests):

PHP Fatal error: Trait 'SMW\Tests\PHPUnitCompat' not found in
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/tests/phpunit/Unit/CacheFactoryTest.php

As I mentioned earlier, running a simple autodiscovery [0] won't work
with SMW as the extension expects that its own phpunit.xml.dist [1]
is honored as part of the test setup and failing to do so will cause an
expected "... not found ...".

Running SMW tests has to be done as documented [2], and if MW is
unable to load phpunit.xml.dist from an extension then you cannot
expect it work.

If the proposed change is working then I suggest merging it but any
discussion of running SMW tests from the MW root without loading SMW's
phpunit.xml.dist is futile and that cannot be changed, the extension
follows PHPUnit best practice by providing a phpunit.xml.dist and
boostrap mechanism.

PS: You can run composer phpunit -- --colors=always --testsuite=core:unit from your MW directory without extensions to be
loaded as testsuite.

[0] https://github.com/wikimedia/mediawiki/blob/master/phpunit.xml.dist#L23-L26
[1] https://github.com/SemanticMediaWiki/SemanticMediaWiki/blob/master/phpunit.xml.dist
[2] https://github.com/SemanticMediaWiki/SemanticMediaWiki/blob/master/tests/README.md#running-tests

On 4/7/20, Niklas Laxstr枚m notifications@github.com wrote:

I have applied the patch locally. Observations so far:

  • Wiki seems to work normally
  • I can run composer commands and unit tests for my extension
  • Running unit tests for SMW does not work (including running all discovered
    unit tests):
developer@dev:~/mediawiki/workdir (master)$ composer phpunit:unit
> phpunit --colors=always --testsuite=core:unit,extensions:unit,skins:unit
PHP Fatal error:  Trait 'SMW\Tests\PHPUnitCompat' not found in
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/tests/phpunit/Unit/CacheFactoryTest.php
on line 20
PHP Stack trace:
PHP   1. {main}()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:0
PHP   2. PHPUnit\TextUI\Command::main()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:61
PHP   3. PHPUnit\TextUI\Command->run()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/TextUI/Command.php:159
PHP   4. PHPUnit\TextUI\Command->handleArguments()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/TextUI/Command.php:167
PHP   5. PHPUnit\Util\Configuration->getTestSuiteConfiguration()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/TextUI/Command.php:925
PHP   6. PHPUnit\Util\Configuration->getTestSuite()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/Util/Configuration.php:881
PHP   7. PHPUnit\Framework\TestSuite->addTestFiles()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/Util/Configuration.php:1005
PHP   8. PHPUnit\Framework\TestSuite->addTestFile()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/Framework/TestSuite.php:452
PHP   9. PHPUnit\Util\FileLoader::checkAndLoad()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/Framework/TestSuite.php:354
PHP  10. PHPUnit\Util\FileLoader::load()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/Util/FileLoader.php:47
PHP  11. include_once()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/Util/FileLoader.php:59

--
You are receiving this because you commented.
Reply to this email directly or view it on GitHub:
https://github.com/SemanticMediaWiki/SemanticMediaWiki/issues/4699#issuecomment-610236402

All 10 comments

PHP Fatal error: Interface 'DeferrableUpdate' not found in
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/MediaWiki/Deferred/CallableUpdate.php

I don't know PhpStorm or your setup but MediaWiki is required and
DeferrableUpdate is an official interface provided by MW [0].

[0]https://github.com/wikimedia/mediawiki/blob/master/includes/deferred/DeferrableUpdate.php

On 4/6/20, Niklas Laxstr枚m notifications@github.com wrote:

Setup and configuration

  • SMW version: 3.1.5
  • MW version: 7c74e448aac5f7c4fb52e552d535f8e3b82ec51d
  • PHP version: 7.3.11-1~deb10u1
  • DB system (MySQL, Blazegraph, etc.) and version: mardiadb
    1:10.3.22-0+deb10u1

Issue

My IDE (PhpStorm) and commands that use (only?) composer autoloader are
failing with the following error. This makes it hard to develop for
MediaWiki installation with SMW installed. I cannot for example run unit
tests properly.

Stack trace

PHP Fatal error:  Interface 'DeferrableUpdate' not found in
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/MediaWiki/Deferred/CallableUpdate.php
on line 17
PHP Stack trace:
PHP   1. {main}()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:0
PHP   2. require()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:59
PHP   3. ComposerAutoloaderInit2d34ebaf53f68c6453d178092400e6ac::getLoader()
/home/developer/mediawiki/workdir/vendor/autoload.php:7
PHP   4. composerRequire2d34ebaf53f68c6453d178092400e6ac()
/home/developer/mediawiki/workdir/vendor/composer/autoload_real.php:60
PHP   5. require()
/home/developer/mediawiki/workdir/vendor/composer/autoload_real.php:70
PHP   6. SemanticMediaWiki::load()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/SemanticMediaWiki.php:16
PHP   7. include_once()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/SemanticMediaWiki.php:45
PHP   8. class_alias()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP   9. spl_autoload_call()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  10. Composer\Autoload\ClassLoader->loadClass()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  11. Composer\Autoload\includeFile()
/home/developer/mediawiki/workdir/vendor/composer/ClassLoader.php:322
PHP  12. include()
/home/developer/mediawiki/workdir/vendor/composer/ClassLoader.php:444

Steps to reproduce

Create composer.local.json with the following contents:

{
        "require": {
                "mediawiki/semantic-media-wiki": "^3.1"
        }
}

Run composer install.

Run php vendor/bin/phpunit

(Note: I did not verify these steps from scratch)

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/SemanticMediaWiki/SemanticMediaWiki/issues/4699

Run php vendor/bin/phpunit

Running "plain" phpunit without loading MW? Of course, this won't work
because you are at least expected to do something like php ../../tests/phpunit/phpunit.php -c phpunit.xml.dist [0] or rely on
the short cut composer phpunit executed from the extension root
directory (as outlined in the docs).

[0] https://travis-ci.org/github/SemanticMediaWiki/SemanticMediaWiki/jobs/670188007

On 4/6/20, Niklas Laxstr枚m notifications@github.com wrote:

Setup and configuration

  • SMW version: 3.1.5
  • MW version: 7c74e448aac5f7c4fb52e552d535f8e3b82ec51d
  • PHP version: 7.3.11-1~deb10u1
  • DB system (MySQL, Blazegraph, etc.) and version: mardiadb
    1:10.3.22-0+deb10u1

Issue

My IDE (PhpStorm) and commands that use (only?) composer autoloader are
failing with the following error. This makes it hard to develop for
MediaWiki installation with SMW installed. I cannot for example run unit
tests properly.

Stack trace

PHP Fatal error:  Interface 'DeferrableUpdate' not found in
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/MediaWiki/Deferred/CallableUpdate.php
on line 17
PHP Stack trace:
PHP   1. {main}()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:0
PHP   2. require()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:59
PHP   3. ComposerAutoloaderInit2d34ebaf53f68c6453d178092400e6ac::getLoader()
/home/developer/mediawiki/workdir/vendor/autoload.php:7
PHP   4. composerRequire2d34ebaf53f68c6453d178092400e6ac()
/home/developer/mediawiki/workdir/vendor/composer/autoload_real.php:60
PHP   5. require()
/home/developer/mediawiki/workdir/vendor/composer/autoload_real.php:70
PHP   6. SemanticMediaWiki::load()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/SemanticMediaWiki.php:16
PHP   7. include_once()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/SemanticMediaWiki.php:45
PHP   8. class_alias()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP   9. spl_autoload_call()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  10. Composer\Autoload\ClassLoader->loadClass()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  11. Composer\Autoload\includeFile()
/home/developer/mediawiki/workdir/vendor/composer/ClassLoader.php:322
PHP  12. include()
/home/developer/mediawiki/workdir/vendor/composer/ClassLoader.php:444

Steps to reproduce

Create composer.local.json with the following contents:

{
        "require": {
                "mediawiki/semantic-media-wiki": "^3.1"
        }
}

Run composer install.

Run php vendor/bin/phpunit

(Note: I did not verify these steps from scratch)

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/SemanticMediaWiki/SemanticMediaWiki/issues/4699

Happens even for core. With SemanticMediaWiki installed, I cannot run unit tests:

composer phpunit:unit
> phpunit --colors=always --testsuite=core:unit,extensions:unit,skins:unit
PHP Fatal error:  Interface 'DeferrableUpdate' not found in /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/MediaWiki/Deferred/CallableUpdate.php on line 17
PHP Stack trace:
PHP   1. {main}() /home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:0
PHP   2. require() /home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:59
PHP   3. ComposerAutoloaderInit2d34ebaf53f68c6453d178092400e6ac::getLoader() /home/developer/mediawiki/workdir/vendor/autoload.php:7
PHP   4. composerRequire2d34ebaf53f68c6453d178092400e6ac() /home/developer/mediawiki/workdir/vendor/composer/autoload_real.php:60
PHP   5. require() /home/developer/mediawiki/workdir/vendor/composer/autoload_real.php:70
PHP   6. SemanticMediaWiki::load() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/SemanticMediaWiki.php:16
PHP   7. include_once() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/SemanticMediaWiki.php:45
PHP   8. class_alias() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP   9. spl_autoload_call() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  10. Composer\Autoload\ClassLoader->loadClass() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  11. Composer\Autoload\includeFile() /home/developer/mediawiki/workdir/vendor/composer/ClassLoader.php:322
PHP  12. include() /home/developer/mediawiki/workdir/vendor/composer/ClassLoader.php:444
Script phpunit --colors=always --testsuite=core:unit,extensions:unit,skins:unit handling the phpunit:unit event returned with error code 255

Or any tests:

composer phpunit
> phpunit
PHP Fatal error:  Interface 'DeferrableUpdate' not found in /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/MediaWiki/Deferred/CallableUpdate.php on line 17
PHP Stack trace:
PHP   1. {main}() /home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:0
PHP   2. require() /home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:59
PHP   3. ComposerAutoloaderInit2d34ebaf53f68c6453d178092400e6ac::getLoader() /home/developer/mediawiki/workdir/vendor/autoload.php:7
PHP   4. composerRequire2d34ebaf53f68c6453d178092400e6ac() /home/developer/mediawiki/workdir/vendor/composer/autoload_real.php:60
PHP   5. require() /home/developer/mediawiki/workdir/vendor/composer/autoload_real.php:70
PHP   6. SemanticMediaWiki::load() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/SemanticMediaWiki.php:16
PHP   7. include_once() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/SemanticMediaWiki.php:45
PHP   8. class_alias() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP   9. spl_autoload_call() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  10. Composer\Autoload\ClassLoader->loadClass() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  11. Composer\Autoload\includeFile() /home/developer/mediawiki/workdir/vendor/composer/ClassLoader.php:322
PHP  12. include() /home/developer/mediawiki/workdir/vendor/composer/ClassLoader.php:444
Script phpunit handling the phpunit event returned with error code 255

Or any other composer command:

composer test
> composer lint
> parallel-lint --exclude vendor
PHP Fatal error:  Interface 'DeferrableUpdate' not found in /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/MediaWiki/Deferred/CallableUpdate.php on line 17
PHP Stack trace:
PHP   1. {main}() /home/developer/mediawiki/workdir/vendor/jakub-onderka/php-parallel-lint/parallel-lint:0
PHP   2. require() /home/developer/mediawiki/workdir/vendor/jakub-onderka/php-parallel-lint/parallel-lint:4
PHP   3. require() /home/developer/mediawiki/workdir/vendor/jakub-onderka/php-parallel-lint/parallel-lint.php:59
PHP   4. ComposerAutoloaderInit2d34ebaf53f68c6453d178092400e6ac::getLoader() /home/developer/mediawiki/workdir/vendor/autoload.php:7
PHP   5. composerRequire2d34ebaf53f68c6453d178092400e6ac() /home/developer/mediawiki/workdir/vendor/composer/autoload_real.php:60
PHP   6. require() /home/developer/mediawiki/workdir/vendor/composer/autoload_real.php:70
PHP   7. SemanticMediaWiki::load() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/SemanticMediaWiki.php:16
PHP   8. include_once() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/SemanticMediaWiki.php:45
PHP   9. class_alias() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  10. spl_autoload_call() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  11. Composer\Autoload\ClassLoader->loadClass() /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  12. Composer\Autoload\includeFile() /home/developer/mediawiki/workdir/vendor/composer/ClassLoader.php:322
PHP  13. include() /home/developer/mediawiki/workdir/vendor/composer/ClassLoader.php:444
Script parallel-lint --exclude vendor handling the lint event returned with error code 255
Script composer lint handling the test event returned with error code 255

You could have luck adding the following lines but I have no idea how
this will impact SMW in general.

@@ -38,10 +38,14 @@ class SemanticMediaWiki {
     * to ensure that settings and global functions are available by the time
     * the extension is activated.
     */
    public static function load() {

+       if ( !defined( 'MEDIAWIKI' ) ) {
+           return;
+       }

Furthermore, I doubt that this will solve the issue of running your
core tests because MW runs an autodiscovery on /tests/phpunit
directories without recognizing extension specific phpunit.xml.dist
that contains required bootstrap work.

On 4/6/20, Niklas Laxstr枚m notifications@github.com wrote:

Happens even for core. With SemanticMediaWiki installed, I cannot run unit
tests:

composer phpunit:unit
> phpunit --colors=always --testsuite=core:unit,extensions:unit,skins:unit
PHP Fatal error:  Interface 'DeferrableUpdate' not found in
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/MediaWiki/Deferred/CallableUpdate.php
on line 17
PHP Stack trace:
PHP   1. {main}()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:0
PHP   2. require()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:59
PHP   3. ComposerAutoloaderInit2d34ebaf53f68c6453d178092400e6ac::getLoader()
/home/developer/mediawiki/workdir/vendor/autoload.php:7
PHP   4. composerRequire2d34ebaf53f68c6453d178092400e6ac()
/home/developer/mediawiki/workdir/vendor/composer/autoload_real.php:60
PHP   5. require()
/home/developer/mediawiki/workdir/vendor/composer/autoload_real.php:70
PHP   6. SemanticMediaWiki::load()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/SemanticMediaWiki.php:16
PHP   7. include_once()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/SemanticMediaWiki.php:45
PHP   8. class_alias()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP   9. spl_autoload_call()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  10. Composer\Autoload\ClassLoader->loadClass()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  11. Composer\Autoload\includeFile()
/home/developer/mediawiki/workdir/vendor/composer/ClassLoader.php:322
PHP  12. include()
/home/developer/mediawiki/workdir/vendor/composer/ClassLoader.php:444
Script phpunit --colors=always
--testsuite=core:unit,extensions:unit,skins:unit handling the phpunit:unit
event returned with error code 255

Or any tests:

composer phpunit
> phpunit
PHP Fatal error:  Interface 'DeferrableUpdate' not found in
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/MediaWiki/Deferred/CallableUpdate.php
on line 17
PHP Stack trace:
PHP   1. {main}()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:0
PHP   2. require()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:59
PHP   3. ComposerAutoloaderInit2d34ebaf53f68c6453d178092400e6ac::getLoader()
/home/developer/mediawiki/workdir/vendor/autoload.php:7
PHP   4. composerRequire2d34ebaf53f68c6453d178092400e6ac()
/home/developer/mediawiki/workdir/vendor/composer/autoload_real.php:60
PHP   5. require()
/home/developer/mediawiki/workdir/vendor/composer/autoload_real.php:70
PHP   6. SemanticMediaWiki::load()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/SemanticMediaWiki.php:16
PHP   7. include_once()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/SemanticMediaWiki.php:45
PHP   8. class_alias()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP   9. spl_autoload_call()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  10. Composer\Autoload\ClassLoader->loadClass()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  11. Composer\Autoload\includeFile()
/home/developer/mediawiki/workdir/vendor/composer/ClassLoader.php:322
PHP  12. include()
/home/developer/mediawiki/workdir/vendor/composer/ClassLoader.php:444
Script phpunit handling the phpunit event returned with error code 255

Or any other composer command:

composer test
> composer lint
> parallel-lint --exclude vendor
PHP Fatal error:  Interface 'DeferrableUpdate' not found in
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/MediaWiki/Deferred/CallableUpdate.php
on line 17
PHP Stack trace:
PHP   1. {main}()
/home/developer/mediawiki/workdir/vendor/jakub-onderka/php-parallel-lint/parallel-lint:0
PHP   2. require()
/home/developer/mediawiki/workdir/vendor/jakub-onderka/php-parallel-lint/parallel-lint:4
PHP   3. require()
/home/developer/mediawiki/workdir/vendor/jakub-onderka/php-parallel-lint/parallel-lint.php:59
PHP   4. ComposerAutoloaderInit2d34ebaf53f68c6453d178092400e6ac::getLoader()
/home/developer/mediawiki/workdir/vendor/autoload.php:7
PHP   5. composerRequire2d34ebaf53f68c6453d178092400e6ac()
/home/developer/mediawiki/workdir/vendor/composer/autoload_real.php:60
PHP   6. require()
/home/developer/mediawiki/workdir/vendor/composer/autoload_real.php:70
PHP   7. SemanticMediaWiki::load()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/SemanticMediaWiki.php:16
PHP   8. include_once()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/SemanticMediaWiki.php:45
PHP   9. class_alias()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  10. spl_autoload_call()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  11. Composer\Autoload\ClassLoader->loadClass()
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/src/Aliases.php:21
PHP  12. Composer\Autoload\includeFile()
/home/developer/mediawiki/workdir/vendor/composer/ClassLoader.php:322
PHP  13. include()
/home/developer/mediawiki/workdir/vendor/composer/ClassLoader.php:444
Script parallel-lint --exclude vendor handling the lint event returned with
error code 255
Script composer lint handling the test event returned with error code 255

--
You are receiving this because you commented.
Reply to this email directly or view it on GitHub:
https://github.com/SemanticMediaWiki/SemanticMediaWiki/issues/4699#issuecomment-609778298

I created a pull. Whether it is useful or not is up to you to decide.

I have applied the patch locally. Observations so far:

  • Wiki seems to work normally
  • I can run composer commands and unit tests for my extension
  • Running unit tests for SMW does not work (including running all discovered unit tests):
developer@dev:~/mediawiki/workdir (master)$ composer phpunit:unit
> phpunit --colors=always --testsuite=core:unit,extensions:unit,skins:unit
PHP Fatal error:  Trait 'SMW\Tests\PHPUnitCompat' not found in /home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/tests/phpunit/Unit/CacheFactoryTest.php on line 20
PHP Stack trace:
PHP   1. {main}() /home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:0
PHP   2. PHPUnit\TextUI\Command::main() /home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:61
PHP   3. PHPUnit\TextUI\Command->run() /home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/TextUI/Command.php:159
PHP   4. PHPUnit\TextUI\Command->handleArguments() /home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/TextUI/Command.php:167
PHP   5. PHPUnit\Util\Configuration->getTestSuiteConfiguration() /home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/TextUI/Command.php:925
PHP   6. PHPUnit\Util\Configuration->getTestSuite() /home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/Util/Configuration.php:881
PHP   7. PHPUnit\Framework\TestSuite->addTestFiles() /home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/Util/Configuration.php:1005
PHP   8. PHPUnit\Framework\TestSuite->addTestFile() /home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/Framework/TestSuite.php:452
PHP   9. PHPUnit\Util\FileLoader::checkAndLoad() /home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/Framework/TestSuite.php:354
PHP  10. PHPUnit\Util\FileLoader::load() /home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/Util/FileLoader.php:47
PHP  11. include_once() /home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/Util/FileLoader.php:59
  • Running unit tests for SMW does not work (including running all discovered
    unit tests):

PHP Fatal error: Trait 'SMW\Tests\PHPUnitCompat' not found in
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/tests/phpunit/Unit/CacheFactoryTest.php

As I mentioned earlier, running a simple autodiscovery [0] won't work
with SMW as the extension expects that its own phpunit.xml.dist [1]
is honored as part of the test setup and failing to do so will cause an
expected "... not found ...".

Running SMW tests has to be done as documented [2], and if MW is
unable to load phpunit.xml.dist from an extension then you cannot
expect it work.

If the proposed change is working then I suggest merging it but any
discussion of running SMW tests from the MW root without loading SMW's
phpunit.xml.dist is futile and that cannot be changed, the extension
follows PHPUnit best practice by providing a phpunit.xml.dist and
boostrap mechanism.

PS: You can run composer phpunit -- --colors=always --testsuite=core:unit from your MW directory without extensions to be
loaded as testsuite.

[0] https://github.com/wikimedia/mediawiki/blob/master/phpunit.xml.dist#L23-L26
[1] https://github.com/SemanticMediaWiki/SemanticMediaWiki/blob/master/phpunit.xml.dist
[2] https://github.com/SemanticMediaWiki/SemanticMediaWiki/blob/master/tests/README.md#running-tests

On 4/7/20, Niklas Laxstr枚m notifications@github.com wrote:

I have applied the patch locally. Observations so far:

  • Wiki seems to work normally
  • I can run composer commands and unit tests for my extension
  • Running unit tests for SMW does not work (including running all discovered
    unit tests):
developer@dev:~/mediawiki/workdir (master)$ composer phpunit:unit
> phpunit --colors=always --testsuite=core:unit,extensions:unit,skins:unit
PHP Fatal error:  Trait 'SMW\Tests\PHPUnitCompat' not found in
/home/developer/mediawiki/workdir/extensions/SemanticMediaWiki/tests/phpunit/Unit/CacheFactoryTest.php
on line 20
PHP Stack trace:
PHP   1. {main}()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:0
PHP   2. PHPUnit\TextUI\Command::main()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/phpunit:61
PHP   3. PHPUnit\TextUI\Command->run()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/TextUI/Command.php:159
PHP   4. PHPUnit\TextUI\Command->handleArguments()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/TextUI/Command.php:167
PHP   5. PHPUnit\Util\Configuration->getTestSuiteConfiguration()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/TextUI/Command.php:925
PHP   6. PHPUnit\Util\Configuration->getTestSuite()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/Util/Configuration.php:881
PHP   7. PHPUnit\Framework\TestSuite->addTestFiles()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/Util/Configuration.php:1005
PHP   8. PHPUnit\Framework\TestSuite->addTestFile()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/Framework/TestSuite.php:452
PHP   9. PHPUnit\Util\FileLoader::checkAndLoad()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/Framework/TestSuite.php:354
PHP  10. PHPUnit\Util\FileLoader::load()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/Util/FileLoader.php:47
PHP  11. include_once()
/home/developer/mediawiki/workdir/vendor/phpunit/phpunit/src/Util/FileLoader.php:59

--
You are receiving this because you commented.
Reply to this email directly or view it on GitHub:
https://github.com/SemanticMediaWiki/SemanticMediaWiki/issues/4699#issuecomment-610236402

@mwjames

It appears to me that everything the SMW can do here was done:

  1. Since the last comment also contains a tip I am wondering if this should be labelled and preserved as a developer docu in the respective project here.

  2. I think the related commit could be back-ported?

Since the last comment also contains a tip I am wondering if this should be labelled and preserved as a developer docu in the respective project here.

Why not, and again trying to run SMW tests without loading its own phpunit.xml.dist isn't going to work and that setup has been documented way before WMF changed its testsuite management and indiscriminately [0] included extensions in their run.

I think the related commit could be back-ported?

If it works, go ahead.

[0] https://github.com/wikimedia/mediawiki/commit/fb3d83362cf25f664ecc96a61ea048901dd087f9

Why not

Done

If it works, go ahead.

Yeah, see above. Now back-ported.

Was this page helpful?
0 / 5 - 0 ratings