wiki.techinc.nl/tests/phpunit/structure/DumpableObjectsTest.php
Tim Starling 94e20db64b Add some helpers to filter properties out of var_dump()
Dumping many kinds of object with var_dump() leads to dumping the whole
address space, because a chain of references leads to MediaWikiServices.

So, introduce a trait which replaces the problematic properties with a
placeholder, if their doc comment contains @noVarDump.

Bug: T277618
Change-Id: Ifa685c26fbc5317d0359544289ec3f433ec4fedf
2022-10-12 12:42:23 -04:00

44 lines
1 KiB
PHP

<?php
/**
* Integration test for T277618.
*
* Add @noVarDump annotations to large properties if these tests fail.
*
* @coversNothing
*/
class DumpableObjectsTest extends MediaWikiIntegrationTestCase {
private function dumpSize( $object ) {
$n = 0;
ob_start(
static function ( $buffer ) use ( &$n ) {
$n += strlen( $buffer );
},
4096
);
var_dump( $object );
ob_end_flush();
return $n;
}
public function testUser() {
$u = $this->getTestUser()->getUser();
$u->isAllowed( 'read' );
$this->assertLessThan( 100000, $this->dumpSize( $u ) );
}
public function testTitle() {
$object = Title::newFromText( 'Test' );
$this->assertLessThan( 100000, $this->dumpSize( $object ) );
}
public function testLanguage() {
$object = \MediaWiki\MediaWikiServices::getInstance()->getLanguageFactory()->getLanguage( 'en' );
$this->assertLessThan( 100000, $this->dumpSize( $object ) );
}
public function testMessage() {
$object = wfMessage( 'jan' );
$this->assertLessThan( 100000, $this->dumpSize( $object ) );
}
}