X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2FPageProps.php;h=5579ba52714b65c852580e6931fc6151e7f94b0e;hb=0c9f05bff8529a9a4f5e12140bee959edafa38c9;hp=bc3e3f15297aeacf5024da2811904fe02e562989;hpb=8eac2feedb7ee093d2c48504e1eb2b8a9dbc8452;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/PageProps.php b/includes/PageProps.php index bc3e3f1529..5579ba5271 100644 --- a/includes/PageProps.php +++ b/includes/PageProps.php @@ -33,6 +33,33 @@ class PageProps { */ private static $instance; + /** + * Overrides the default instance of this class + * This is intended for use while testing and will fail if MW_PHPUNIT_TEST is not defined. + * + * If this method is used it MUST also be called with null after a test to ensure a new + * default instance is created next time getInstance is called. + * + * @since 1.27 + * + * @param PageProps|null $store + * + * @return ScopedCallback to reset the overridden value + * @throws MWException + */ + public static function overrideInstance( PageProps $store = null ) { + if ( !defined( 'MW_PHPUNIT_TEST' ) ) { + throw new MWException( + 'Cannot override ' . __CLASS__ . 'default instance in operation.' + ); + } + $previousValue = self::$instance; + self::$instance = $store; + return new ScopedCallback( function() use ( $previousValue ) { + self::$instance = $previousValue; + } ); + } + /** * @return PageProps */ @@ -57,6 +84,16 @@ class PageProps { $this->cache = new ProcessCacheLRU( self::CACHE_SIZE ); } + /** + * Ensure that cache has at least this size + * @param int $size + */ + public function ensureCacheSize( $size ) { + if ( $this->cache->getSize() < $size ) { + $this->cache->resize( $size ); + } + } + /** * Given one or more Titles and one or more names of properties, * returns an associative array mapping page ID to property value. @@ -65,7 +102,7 @@ class PageProps { * single Title is provided, it does not need to be passed in an array, * but an array will always be returned. If a single property name is * provided, it does not need to be passed in an array. In that case, - * an associtive array mapping page ID to property value will be + * an associative array mapping page ID to property value will be * returned; otherwise, an associative array mapping page ID to * an associative array mapping property name to property value will be * returned. An empty array will be returned if no matching properties