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.
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
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)
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+deb10u1Issue
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:444Steps to reproduce
Create
composer.local.jsonwith 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+deb10u1Issue
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:444Steps to reproduce
Create
composer.local.jsonwith 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 255Or 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 255Or 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:
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:
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.
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.
Most helpful comment
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.distfrom an extension then you cannotexpect 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.distis futile and that cannot be changed, the extensionfollows PHPUnit best practice by providing a
phpunit.xml.distandboostrap mechanism.
PS: You can run
composer phpunit -- --colors=always --testsuite=core:unitfrom your MW directory without extensions to beloaded 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: