private function getResetter( &$rProp = null ) {
$reset = [];
- // Ignore "headers already sent" warnings during this test
- set_error_handler( function ( $errno, $errstr ) use ( &$warnings ) {
- if ( preg_match( '/headers already sent/', $errstr ) ) {
- return true;
- }
- return false;
- } );
- $reset[] = new \Wikimedia\ScopedCallback( 'restore_error_handler' );
-
$rProp = new \ReflectionProperty( PHPSessionHandler::class, 'instance' );
$rProp->setAccessible( true );
if ( $rProp->getValue() ) {
ini_set( 'session.use_trans_sid', 1 );
$store = new TestBagOStuff();
- $logger = new \TestLogger();
+ // Tolerate debug message, anything else is unexpected
+ $logger = new \TestLogger( false, function ( $m ) {
+ return preg_match( '/^SessionManager using store/', $m ) ? null : $m;
+ } );
$manager = new SessionManager( [
'store' => $store,
'logger' => $logger,
$wrap = TestingAccessWrapper::newFromObject( $rProp->getValue() );
$reset[] = new \Wikimedia\ScopedCallback(
[ $wrap, 'setEnableFlags' ],
- [ $wrap->enable ? $wrap->warn ? 'warn' : 'enable' : 'disable' ]
+ [ $wrap->enable ? ( $wrap->warn ? 'warn' : 'enable' ) : 'disable' ]
);
$wrap->setEnableFlags( 'warn' );
$expect = [ 'AuthenticationSessionTest' => $rand ];
session_write_close();
$this->assertSame( [
+ [ LogLevel::DEBUG, 'SessionManager using store MediaWiki\Session\TestBagOStuff' ],
[ LogLevel::WARNING, 'Something wrote to $_SESSION!' ],
], $logger->getBuffer() );