wiki.techinc.nl/tests/phpunit/bootstrap.php
Timo Tijhof f28d5f772f phpunit: Call 'teardownTestDB' from shutdown instead of destruct.
This will be called right before the shutdown procedure begins,
so that all variables and classes still exist, and the hooks
can actually work.

See task for details.

Bug: T219673
Change-Id: Id6b2b4b7958b78822a0868720f7b0ba46d7b4951
2019-03-29 19:52:00 +00:00

34 lines
1.3 KiB
PHP

<?php
/**
* Bootstrapping for MediaWiki PHPUnit tests
* This file is included by phpunit and is NOT in the global scope.
*
* @file
*/
if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
echo <<<EOF
You are running these tests directly from phpunit. You may not have all globals correctly set.
Running phpunit.php instead is recommended.
EOF;
require_once __DIR__ . "/phpunit.php";
}
// The PHPUnit_TextUI_TestRunner class will run each test suite and may call
// exit() with an exit status code. As such, we cannot run code "after the last test"
// by adding statements to PHPUnitMaintClass::execute or MediaWikiPHPUnitCommand::run.
// Instead, we work around it by registering a shutdown callback from the bootstrap
// file, which runs before PHPUnit starts.
// @todo Once we use PHPUnit 8 or higher, use the 'AfterLastTestHook' feature.
// https://phpunit.readthedocs.io/en/8.0/extending-phpunit.html#available-hook-interfaces
register_shutdown_function( function () {
// This will:
// - clear the temporary job queue.
// - allow extensions to delete any temporary tables they created.
// - restore ability to connect to the real database,
// (for logging profiling data).
MediaWikiTestCase::teardownTestDB();
// Log profiling data, e.g. in the database or UDP
wfLogProfilingData();
} );