From 750ac4dd89608013bb77a52e4e52bd9e42ac02ab Mon Sep 17 00:00:00 2001 From: Umherirrender Date: Sun, 17 Sep 2017 10:54:49 +0200 Subject: [PATCH] Fix findHooks.php Add the test entry point, because it contains documented hooks. Filter out empty args, coming from trailing commas Removed empty lines from hooks.txt, because a hook must be one block without newlines between. Change-Id: I71e0625da96cad03f5e38a000fa61d1d2bdac8ef --- docs/hooks.txt | 7 ------- maintenance/findHooks.php | 9 +++++++++ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/hooks.txt b/docs/hooks.txt index b7fe8c1f35..a19e9fc0e2 100644 --- a/docs/hooks.txt +++ b/docs/hooks.txt @@ -996,13 +996,10 @@ $special: ChangesListSpecialPage instance 'ChangesListSpecialPageQuery': Called when building SQL query on pages inheriting from ChangesListSpecialPage (in core: RecentChanges, RecentChangesLinked and Watchlist). - Do not use this to implement individual filters if they are compatible with the ChangesListFilter and ChangesListFilterGroup structure. - Instead, use sub-classes of those classes, in conjunction with the ChangesListSpecialPageStructuredFilters hook. - This hook can be used to implement filters that do not implement that structure, or custom behavior that is not an individual filter. $name: name of the special page, e.g. 'Watchlist' @@ -1017,20 +1014,16 @@ $opts: FormOptions for this request filters for pages inheriting from ChangesListSpecialPage (in core: RecentChanges, RecentChangesLinked, and Watchlist). Generally, you will want to construct new ChangesListBooleanFilter or ChangesListStringOptionsFilter objects. - When constructing them, you specify which group they belong to. You can reuse existing groups (accessed through $special->getFilterGroup), or create your own (ChangesListBooleanFilterGroup or ChangesListStringOptionsFilterGroup). If you create new groups, you must register them with $special->registerFilterGroup. - Note that this is called regardless of whether the user is currently using the new (structured) or old (unstructured) filter UI. If you want your boolean filter to show on both the new and old UI, specify all the supported fields. These include showHide, label, and description. - See the constructor of each ChangesList* class for documentation of supported fields. - $special: ChangesListSpecialPage instance 'ChangeTagAfterDelete': Called after a change tag has been deleted (that is, diff --git a/maintenance/findHooks.php b/maintenance/findHooks.php index 81e18c993b..fd36db1dd2 100644 --- a/maintenance/findHooks.php +++ b/maintenance/findHooks.php @@ -79,6 +79,9 @@ class FindHooks extends Maintenance { $nonRecurseDirs = [ "$IP/", ]; + $extraFiles = [ + "$IP/tests/phpunit/MediaWikiTestCase.php", + ]; foreach ( $recurseDirs as $dir ) { $ret = $this->getHooksFromDir( $dir, self::FIND_RECURSIVE ); @@ -90,6 +93,10 @@ class FindHooks extends Maintenance { $potentialHooks = array_merge( $potentialHooks, $ret['good'] ); $badHooks = array_merge( $badHooks, $ret['bad'] ); } + foreach ( $extraFiles as $file ) { + $potentialHooks = array_merge( $potentialHooks, $this->getHooksFromFile( $file ) ); + $badHooks = array_merge( $badHooks, $this->getBadHooksFromFile( $file ) ); + } $documented = array_keys( $documentedHooks ); $potential = array_keys( $potentialHooks ); @@ -262,6 +269,8 @@ class FindHooks extends Maintenance { $n = []; if ( preg_match_all( '/((?:[^,\(\)]|\([^\(\)]*\))+)/', $match[4], $n ) ) { $args = array_map( 'trim', $n[1] ); + // remove empty entries from trailing spaces + $args = array_filter( $args ); } } elseif ( isset( $match[3] ) ) { // Found a parameter for Hooks::run, -- 2.20.1