* @file
*/
-/* Configuration */
-
-// Set a flag which can be used to detect when other scripts have been entered through this entry point or not
+// Set a flag which can be used to detect when other scripts have been entered
+// through this entry point or not.
define( 'MW_PHPUNIT_TEST', true );
// Start up MediaWiki in command-line mode
class PHPUnitMaintClass extends Maintenance {
- function __construct() {
+ public function __construct() {
parent::__construct();
- $this->addOption( 'with-phpunitdir',
- 'Directory to include PHPUnit from, for example when using a git fetchout from upstream. Path will be prepended to PHP `include_path`.',
+ $this->addOption(
+ 'with-phpunitdir',
+ 'Directory to include PHPUnit from, for example when using a git '
+ . 'fetchout from upstream. Path will be prepended to PHP `include_path`.',
false, # not required
true # need arg
);
}
# --with-phpunitdir let us override the default PHPUnit version
- if ( $phpunitDir = $this->getOption( 'with-phpunitdir' ) ) {
+ if ( $this->hasOption( 'with-phpunitdir' ) ) {
+ $phpunitDir = $this->getOption( 'with-phpunitdir' );
# Sanity checks
if ( !is_dir( $phpunitDir ) ) {
$this->error( "--with-phpunitdir should be set to an existing directory", 1 );
# Now prepends provided PHPUnit directory
$this->output( "Will attempt loading PHPUnit from `$phpunitDir`\n" );
- set_include_path( $phpunitDir
- . PATH_SEPARATOR . get_include_path() );
+ set_include_path( $phpunitDir . PATH_SEPARATOR . get_include_path() );
# Cleanup $args array so the option and its value do not
# pollute PHPUnit
if ( !class_exists( 'PHPUnit_TextUI_Command' ) ) {
require_once 'PHPUnit/Autoload.php';
}
+
+// Prevent segfault when we have lots of unit tests (bug 62623)
+if ( version_compare( PHP_VERSION, '5.4.0', '<' )
+ && version_compare( PHP_VERSION, '5.3.0', '>=' )
+) {
+ register_shutdown_function( function() {
+ gc_collect_cycles();
+ gc_disable();
+ } );
+}
+
MediaWikiPHPUnitCommand::main();