This overrides the version string stored in the database with --record.
When using git-svn, you can do
php maintenance/parserTests.php --quick --quiet --record \
--setversion=`git rev-parse HEAD`
to have comprehensible version info stored for the purposes of later
bisection. Previously just "1.16alpha" would be stored, which is
useless for tracking down the old revision -- you'd have to try guessing
based on date.
It might be useful for SpecialVersion::getVersion() to support git-svn,
but that's a more complicated and intrusive change for an admittedly
small minority, so I avoided it for now.
Now the following commands can track down parser test regressions (if
you're using git svn, of course):
git bisect start bad-rev good-rev
git bisect run maintenance/parserTests.php --regex 'Test name'
Just type those in (replacing "bad-rev" and "good-rev" with revision
ids, and 'Test name' with a regex that uniquely matches the regressing
test's name), and git will magically find the first bad revision for you
in a couple of minutes. (Then run git bisect reset to get back to
normal.)
All I changed to make this possible was changing the error return code
from 255 (-1) to 1. git bisect treats 1-124 and 126-127 as error codes,
but for some reason doesn't like 128-255.
* Merged replaceFreeExternalLinks() with doMagicLinks(). Makes a lot of sense, very similar operations, doesn't break any parser tests. Stops free links from interacting with other parser stages, the same way ISBN links don't.
* The pass order change fixes Brion's complaint in r39980. Early link expansion, triggered by having more than 1000 links in the page, was outputting URLs which were destroyed by RFEL. Added parser test.
* Fixed an unrelated bug in LinkHolderArray::replace(): if a link to a redirect appears in two separate RLH calls, the second and subsequent calls do not add the mw-redirect class. Caused by an unmigrated LinkCache fetch.
* Added a parser test for a pass interaction bug that the pass order change fixes.
* The fuzzer told me to tell you that free external links in non-caption image parameters, which are and have always been invisible, are now not registered either.
* Miscellaneous supporting updates to the test infrastructure.
Causes weird regressions on http://meta.wikimedia.org/wiki/Talk:Spam_blacklist
Couldn't isolate to a parser test in a few minutes; some kind of template interaction perhaps.
Sample bad HTML like:
The associated page is used by the Mediawiki <a href="<a href=" class="external free" title="http://www.mediawiki.org/wiki/Extension:SpamBlacklist" rel="nofollow">http://www.mediawiki.org/wiki/Extension:SpamBlacklist</a>" class="extiw" title="mw:Extension:SpamBlacklist">Spam Blacklist extension, and lists strings of text that may not be used in URLs in any page in Wikimedia Foundation projects (as well as many external wikis). Any meta <a href="/wiki/Administrator" title="Administrator">administrator</a> can edit the spam blacklist. There is also a more aggressive way to block spamming through direct use of <a href="/wiki/Anti-spam_features#.24wgSpamRegex" title="Anti-spam features">$wgSpamRegex</a>. Only <a href="/wiki/Developers" title="Developers" class="mw-redirect">developers</a> can make changes to $wgSpamRegex, and its use is to be avoided whenever possible.
* Fixed image link whitespace handling (Brion's complaint, r39662)
* Added fuzz test capability to parserTests.php
* Added __destruct() functions to Parser and Language, and called them explicitly from parserTests.inc, to avoid unconstrained memory usage during fuzz testing.
* Added unified diff to output of Parser_DiffTest
* Fixed whitespace change in Parser::doTableStuff() (found by fuzzing)
* Added feature to RELEASE-NOTES which I'd committed last time but forgotten to note: <gallery> will accept image names with no "Image:" prefix (rediscovered by fuzzing)
* Limit memory usage in Title::getInterwikiLink()
* Fixed chronic fail of all interwiki link parser tests (hid Siebrand's complaint, r39464)
* Fixed chronic fail of one of the LanguageConverter parser tests. Was actually an ignored bug.
Doxygen documentation update:
* Changed alls @addtogroup to @ingroup. @addtogroup adds the comment to the group description, but doesn't add the file, class, function, ... to the group like @ingroup does. See for example http://svn.wikimedia.org/doc/group__SpecialPage.html where it's impossible to see related files, classes, ... that should belong to that group.
* Added @file to file description, it seems that it should be explicitely decalred for file descriptions, otherwise doxygen will think that the comment document the first class, variabled, function, ... that is in that file.
* Removed some empty comments
* Removed some ?>
Added following groups:
* ExternalStorage
* JobQueue
* MaintenanceLanguage
One more thing: there are still a lot of warnings when generating the doc.
* cleaner line breaks at start and end
* 'ALL TESTS PASSED!' and 'some tests failed!' so people stop whinging about the giant 'FAILED!'
and remove some redundant includes
$wgParserTestFiles. This can now be appended to by extensions or local
configuration files so that extension or custom tests can be automatically
run along with the main batch.
* Cite.php now adds its parser tests to the default set when enabled
more or less work for now.
* user_groups ur_group is now a short string key ('sysop' etc)
* groups table is gone
* user_rights table is gone
* Permissions for groups are for now set in $wgGroupPermissions.
An in-database management system could be re-added in the future
if it's really needed, but for now it's mostly just been screwing
things up.
* Group.php and Special:Groups are deprecated; will probably die.
* User group memberships are set explicitly through addGroup and
removeGroup methods instead of being re-saved on every change to
the user record.
Group keys are migrated from user_rights at upgrade time for older wikis.
The fields in prior 1.5alpha tables were too screwed up and will need to
manually have sysops re-assigned.
The Makesysop extension will need some minor tweaks.
before trying /tmp; new wfTempDir() function to centralize this
* Fix parser test database usage; runs on a single connection again by not
creating new LoadBalancer instances all the time
* Did a similar trick for the handling of image options, in order to fix a bug reported by the parser unit test.
* Updated parser tests to match current output where appropriate.