Commit graph

6731 commits

Author SHA1 Message Date
jenkins-bot
4be41fe615 Merge "jquery.tablesorter: Improve detection and handling of isoDate" 2017-08-13 18:02:50 +00:00
madd
3fc8c9a8d5 jquery.tablesorter: Improve detection and handling of isoDate
* Detect years 0...99 correct.
* Short forms possible: JJJJ, JJJJ-MM, JJJJMM, JJJJMMTT
  QUnit Test sorts now with parser 'isoDate' (because of 2009 former test sorts with parser 'text')
* Prefix and postfix allowed.
* Between date and time a 'T' or 'any white space' is allowed (Bug: T126886)

Bug: T126886
Change-Id: I664b4cc9d5fb472ea0bc0e36a3c209f04048e769
2017-08-13 13:40:41 -04:00
Matthias Mullie
d6bc1b2589 Remove test code that depends on extension
And allow extensions to add their own media handlers.

I'm not too happy with the introduction of another global,
but didn't like the alternatives either:
* Add some hook to MockMediaHandlerFactory that would allow
  extensions to add their own stuff in.
* Use another hook (like ParserTestTables or ParserTestGlobals)
  and then override the service with a new instance - seemed
  too hacky
The good thing about this is that it lets us kill off a class.
I'm other to other suggestions in case I missed something.

Bug: T169258
Depends-On: I5875621c58597426ad5242bf3d07714555c439b5
Change-Id: I1c2e903fb235395a8de8e0f7bf65ce07739d2930
2017-08-13 12:04:37 -04:00
Geoffrey Mon
700e49dddd Unwatch link for pages in Special:Watchlist
When the 'watchlistunwatchlinks' preference option is enabled, this
adds a '×' link to each entry of the watchlist that unwatches the page
of that entry. When clicked, it changes into a '+' which can be used to
re-watch the page (effectively undoing the earlier unwatch).
When a page is unwatched, its entries and the entries of its associated
talk page (or vice versa) become translucent and are struck through.

Without JS, '×'/'+' link to action=(un)watch for the relevant page.

In addition, ChangesList classes have been modified to allow a prefixer
that adds a prefix to each line (used in this case to put the unwatch
link) and to add HTML data attributes to reliably determine the target
page of each entry. Unit tests have been updated accordingly.

Bug: T2424
Change-Id: I450b2901413d7e75c11de2a446829fdbb22d31e1
2017-08-12 19:36:29 -04:00
jenkins-bot
84b6d5c2e5 Merge "Add missing type to @param documentation" 2017-08-11 21:31:51 +00:00
WMDE-Fisch
6df9ed1ad6 update mediawiki-codesniffer to 0.11.0 and fix issues
- mostly auto fixes
- some too long lines fixed
- ignore amp space in one case  passing by reference

Change-Id: I6472f83bc3cbf4bd629d83050cc3319b19ec465c
2017-08-11 22:27:51 +02:00
Umherirrender
5544cef16b Add missing type to @param documentation
Change-Id: I6b2c9c7af9a281fe457099cc3a336a60a25e74aa
2017-08-11 20:37:35 +02:00
Umherirrender
ace44e2064 Use correct variable name in @param documentation
For some varargs a variable name is added with suffix ,... as seen for
many other varargs

Some @param are swapped, because there are in the wrong order

Enable Sniff MediaWiki.Commenting.FunctionComment.ParamNameNoMatch

Change-Id: I60fec6025bce824d5c67563ab7b65ad6cd628ad8
2017-08-11 19:27:19 +02:00
Umherirrender
43e8cd0579 Make phpcs pass
Reenable MediaWiki.WhiteSpace.SpaceBeforeClassBrace.NoSpaceBeforeBrace,
because the mentioned bug is fixed

Bug: T172933
Change-Id: I1593bdba2295ebed401b921f2beabed69dba7638
2017-08-11 16:22:42 +02:00
Fomafix
55ecf3e215 Add new static function LanguageCode::replaceDeprecatedCodes
Refactor the deprecatedLanguageCodeMapping to a private variable.

Change-Id: I5f8e601e53de183e6268c9ef601eef8390b725cd
2017-08-10 15:21:59 -04:00
Margaret Epps
90108854ac Composer fix changes
Bug: T172933
Change-Id: I6e4688dcf08c4a98ebc71b2940772dfc20a5c139
2017-08-09 14:51:33 -04:00
jenkins-bot
3639515010 Merge "MimeAnalyzer: Add testcases for mp3 detection" 2017-08-09 16:36:23 +00:00
jenkins-bot
1d744e2899 Merge "resourceloader: Add support for modules sending preload headers" 2017-08-07 16:33:02 +00:00
Bartosz Dziewoński
8785e4a5b3 Replace remaining uses of deprecated DB_SLAVE with DB_REPLICA
Change 950cf6016c took care of the most,
but a few remain, either outside of includes/ and maintenance/
directories (which that change was limited to), or in code introduced
afterwards.

Change-Id: I9c363d0219ea7e71cde520faba39406949a36d27
2017-08-05 10:10:26 +00:00
Timo Tijhof
3d342d4deb resourceloader: Add support for modules sending preload headers
ResourceLoaderModule objects gain a new method getPreloadLinks() which
returns an array with the meta data required to build a Link rel=preload
header according to the current draft for W3C Preload.
<https://w3c.github.io/preload/>

Another implementation of this is already in use in OutputPage for
preloading the logo image.

This array is formatted by the ResourceLoaderModule::getHeaders method,
which is implemented as "final" at this time, thus restricting use to
the Link rel=preload header.

Headers are exposed and process-cached, like all other content
(scripts, styles, etc.), through ResourceLoaderModule::getModuleContent,
and aggregated by ResoureLoader::makeModuleResponse.

I had hoped for the getPreloadLinks to be stateless (not vary on $context).
Whether something should be preloaded and what, should not vary on the
skin or language. However, while that conceptually holds true, the exact
url for any given resource may still vary. Even the main use case for this
feature (T164299, preloading base modules request) require $context to pass
down skin and lang to the load.php url.

Add full test coverage and example documentation.

Bug: T164299
Change-Id: I2bfe0796ceaa0c82579c501f5b10e931f2175681
2017-08-03 03:57:00 +00:00
Max Semenik
fd6e9ef2d4 Human-readable section ID support
It adds the ability to replace the current section ID escaping
schema (.C0.DE) with a HTML5-compliant escaping schema that is
displayed as Unicode in many modern browsers.

See the linked bug for discussion of various options that were
considered before the implementation. A few remarks:
* Because Sanitizer::escapeId() is used in a bunch of places without
  escaping, I'm deprecating it without altering its behavior.
* The bug described in comments for Parser::guessLegacySectionNameFromWikiText()
  is still there in some Edge versions that display mojibake.

Bug: T152540
Change-Id: Id304010a0342efbb7ef2d56c5b8b244f2e4fb2c5
2017-08-01 20:32:20 -07:00
daniel
f284dffc21 Introduce Title::getTalkPageIfDefined.
This is part of the effort to remove the assumption that every page
can have a talk page. Before we can merge Icee208dc4 which makes
Title::getTalkPage() throw an exception of no corresponding talk
namespace is defined, all extensions that call getTalkPage() must
be changed to either check canHaveTalkPage() first, or to use
the conveniance function getTalkPageIfDefined() instead.

Bug: T165149
Bug: T172146
Change-Id: I6d2613d8f7105048022f8093186dc57f1f8173ab
2017-08-01 19:09:13 +02:00
jenkins-bot
8804850f44 Merge "Allow blacklisting certain namespaces in Special:ShortPages" 2017-08-01 14:20:30 +00:00
jdlrobson
115fe784b5 Allow blacklisting certain namespaces in Special:ShortPages
This new config variable ($wgShortPagesNamespaceBlacklist)
allows wikis to specify namespaces which should be excluded from
Special:ShortPages.

This will be used by Commons, for which NS_FILE is a content namespace
(accessible via Special:Random and Special:Nearby) but is not useful
to list on Special:ShortPages.

If the blacklist cancels out all namespace in wgContentNamespaces then
all namespaces will show up on the page.

Bug: T170687
Change-Id: I10b4849a5d7f3f8af75ccc6cfba230d03725c898
2017-08-01 00:21:12 +02:00
Stephane Bisson
e2bea6350c RCFilters: show new changes
When "live update" is off and new changes are detected,
show a link to load and prepend the changes to the list.

Also adding a line between old and new changes
when grouping by pages is off.

Bug: T163426
Change-Id: I6a111d23956bdc04caa4c71e9deede056779aafa
2017-07-31 08:50:09 -04:00
Timo Tijhof
3b9d758274 phpunit: Fix failing DeprecatedGlobalTest on HHVM at Travis CI
Follows-up 1d77070f19. On Travis CI, this test fails on HHVM:

> There was 1 failure:
> 1) DeprecatedGlobalTest::testWarning
> Failed asserting that exception of type "PHPUnit_Framework_Error" is thrown.

I've been unable to reproduce this locally, but within Travis CI
it happens on both Trusty containers and Trusty VMs, no matter the
version of HHVM. After some trial and error, I narrowed it down
to the error_reporting setting, which presumably has a different default
in the HHVM package Travis CI uses.

Change-Id: I588218103d6c72df5ad4fb6289df688b3740233e
2017-07-28 18:30:32 -07:00
jenkins-bot
b6e891e054 Merge "Follow-up 0b3ea6e1ab: use more flexible regex for timestamp in ChangesListSpecialPageTest" 2017-07-29 01:14:17 +00:00
Roan Kattouw
ed4210a567 Follow-up 0b3ea6e1ab: use more flexible regex for timestamp in ChangesListSpecialPageTest
Postgres uses timestamps like "2017-07-28 17:37:03" that aren't all numbers.

Bug: T75174
Change-Id: I1b65578c955ccdce1060783b06c2ca577796e68f
2017-07-28 17:36:25 -07:00
Moriel Schottlender
155d1f91d1 RCFilters: Create a sticky preference for days/limit groups
- Add sticky preference for groups and the operation behind
  it.
- Allow normalization from the UriProcessor
- Backwards-compatibility for saved queries
- Allow saved queries to load regardless of sticky params
  and to be compared correctly without the sticky params.
- Add days/limit preferences and update those on change
- Update the preference even if we received a new value
  from the URL.

Bug: T171514
Bug: T171368
Change-Id: I5232f3372f0e5c981332d152faf0ab47cc470b56
2017-07-28 16:06:30 -07:00
jenkins-bot
225c233192 Merge "rdbms: Complete coverage for Database::selectSQLText()" 2017-07-28 21:02:54 +00:00
jenkins-bot
c1c91ac590 Merge "resourceloader: Fix @covers for CSSMin tests" 2017-07-28 14:08:43 +00:00
Timo Tijhof
da6235ce3a resourceloader: Fix @covers for CSSMin tests
Change-Id: Idb451d244fbdfbb218a56c2953298b7fe29ed3d4
2017-07-27 21:40:21 -07:00
Timo Tijhof
9491b74d00 rdbms: Complete coverage for Database::selectSQLText()
Only missing cases where 'USE INDEX' and 'IGNORE INDEX'.
The test doesn't do much since the underlying methods are no-ops
by default, but at least it ensures there are no PHP errors from
these branches.

We can later re-use some of these test cases in tests specific
to one backend.

Change-Id: Id004a2ae41efaa7a367f964013e25d98ecc591ff
2017-07-27 21:30:07 -07:00
Timo Tijhof
4927378874 phpunit: Exclude /languages/messages from coverage report
Indexing these files takes about 5-10% of the run time when generating
code coverage reports for core. It has no coverage at the moment and
probably won't any time soon given it's just variable declarations.

At least for now, exclude it to significantly speed up generating of
coverage reports.

Change-Id: I0357e004e96d4f4b19036474c8353ddb778e31f3
2017-07-27 21:03:18 -07:00
Timo Tijhof
3f10aa34e6 resourceloader: Include lessVars in FileModule definition summary
This already worked as expected for any module that uses the new
enableModuleContentVersion model, but for the majority of file modules
this is not yet the case for performance reasons. As such, make
sure lessVars are included in our manual tracking.

Include it conditionally to avoid changing the array for other modules,
which would needlessly invalidate their cache.

Bug: T171809
Change-Id: Ib250068e0ecfc29a09ca33c23bef901ee0482bf2
2017-07-27 03:02:09 +00:00
Aaron Schulz
f4e0c720a8 rdbms: Ensure onTransactionPreCommitOrIdle() callbacks don't lead transactions
If no writes started a transaction yet, the callback would run
but not commit (by design, joining the request round). Later
writes will then pile on top of it.

The point of this method is to avoid such cases, so this edge
case has been fixed.

Change-Id: I9b44b19261d679de4aff6e44a9cfeb4f684ce02e
2017-07-26 14:28:48 -07:00
Timo Tijhof
5656c571ee jquery.tablesorter: Make tests QUnit 2 compatible (remove testCount)
Follows-up 6418c54c4, 5e602c6132. Missed these because they didn't
match my search pattern previously (I didn't account for the test
name being a variable instead of a string literal.)

Change-Id: Ieae82acc80719041712c8c18b8ddffe387ebe8cf
2017-07-25 19:02:16 -07:00
jenkins-bot
fd98d9df75 Merge "Add unit tests for ChangeTags::modifyDisplayQuery()" 2017-07-26 00:14:51 +00:00
jenkins-bot
3aa1cd89d5 Merge "parserTests: Use "fallback" skin unless otherwise specified" 2017-07-25 23:47:48 +00:00
Timo Tijhof
2454f51b27 Upgrade QUnit from v1.23.1 to v2.4.0
Source
 https://code.jquery.com/qunit/qunit-2.4.0.js
 https://code.jquery.com/qunit/qunit-2.4.0.css

Changelog
 https://github.com/qunitjs/qunit/blob/2.4.0/History.md

This release makes 'moduleStack' private, which means we can no
longer use it to detect nested modules. Change the method of
detection to be a local 'nested' variable that we toggle in
a wrapped version of any 'executeNow' callback, in which nesting
happens.

Bug: T170515
Change-Id: Ib4ed386990125a6c713cb4351408c8f7ae7c070f
2017-07-25 22:14:09 +00:00
Fomafix
6499795f86 Add tests for Sanitizer::escapeId
The tests are transfered from mediawiki.util.test.js.

Change-Id: I3fccfab3a2cdf5ad115fc426b3d45ce905e2e609
2017-07-25 22:12:54 +02:00
Fomafix
9e02e9f66d Add parser tests for decoding of entities in indicator names
This change adds parser tests that test the current behavior of decoding
HTML entities in indicator names when generating the indicator IDs as
described in T104196.

The parser tests currently does not compare the generated HTML with
the ID.

With I88e8e2077e the tests get changed to the new behavior.

Change-Id: Id561c4a00ece09b4db381edfe0d5f98120cacf5e
2017-07-25 22:12:54 +02:00
Kunal Mehta
7916919c81 parserTests: Use "fallback" skin unless otherwise specified
ParserOutput::getText() depends on the current skin to format edit
section links, which some (e.g. MinervaNeue) have customized. This
causes parser tests to fail when they expect the default edit section
link format.

Default to always using the built-in fallback skin when parsing, but
allow it to be overridden with a "skin=..." option.

We also have to override $wgOut in addition to the main RequestContext
since that's what ParserOutput uses.

Bug: T170880
Change-Id: Ib7f0bd15dd0a9255e1e5140907e800478b658b92
2017-07-25 18:54:03 +00:00
jenkins-bot
313dde5d06 Merge "Add WAN Cache to SiteStats::jobs" 2017-07-25 18:30:58 +00:00
jenkins-bot
54afdcb897 Merge "Add parser tests for decoding of entities in IDs and fragments" 2017-07-25 18:29:52 +00:00
Antoine Musso
29aaac5c63 Add WAN Cache to SiteStats::jobs
The method hits the jobrunner backend to find out how many jobs are
enqueued in each of the JobQueue.  It is publicly available via the
MediaWiki API request:
    /w/api.php?action=query&meta=siteinfo&siprop=statistics

That is often used by bots when querying recent changes among other and
with fast bot cause useless queries toward the jobrunner backend.

Wrap SiteStats::jobs() with a WAN cache under key SiteStats:jobscount.
Drop SiteStats::$jobs private variable that was used for in process
cache. The WAN Cache does it for us via 'pcTTL'.

That is similar to SiteStats::numberingroup().
Set TTL to one minute, which should still give fresh enough results for
public uses.

Cover that behavior with a test.

When writing tests I noticed MediaWikiTestCase generates a few jobs due
to the creation of the UTPage page:

* HTMLCacheUpdateJob to refresh backlinks (eg: history)
* RecentChangesUpdateJob which happens randomly

Pass EDIT_SUPPRESS_RC to doEditContent to prevent the first and blindly
delete entries in the recentChangesUpdate jobqueue for the second.

Change-Id: I95a272d0691d779bfee9e7a671cbab66a113dfa1
2017-07-25 18:17:34 +00:00
jenkins-bot
3dce41fd3a Merge "SpecialRecentchanges: Handle ?days= parameter more sanely" 2017-07-25 13:22:40 +00:00
jenkins-bot
07917cd2dd Merge "rdbms: Increase coverage for Database::selectSQLText()" 2017-07-25 10:20:35 +00:00
jenkins-bot
8f75b093da Merge "rdbms: Add more @covers to DatabaseSQLTest" 2017-07-25 10:20:32 +00:00
Fomafix
86fbcd6792 Add parser tests for decoding of entities in IDs and fragments
This change adds parser tests that test the current behavior of decoding
HTML entities in headings and links for IDs and fragments of links as
described in T103714.

With I88e8e2077e the tests get changed to the new behavior.

Change-Id: Ia79af95e53114c1154dd52769f2ad1ab673fdd9e
2017-07-25 09:14:21 +02:00
Krinkle
b4627f73ea Merge "MultiWriteBagOStuff: Fix async writes of mutable objects" 2017-07-25 02:51:29 +00:00
Timo Tijhof
f357c5194c rdbms: Increase coverage for Database::selectSQLText()
* Add case for `$tables[0] == ' '`.
* Add case for `$tables == ''`.
* Add case for 'DISTINCT' option.
* Add case for 'FOR UPDATE' option.
* Add case for 'LOCK IN SHARE MODE' option.
* Add case for 'EXPLAIN' option.

Change-Id: I4a5f4754bc30d31ec35a085f39321fd358b6aa49
2017-07-24 19:49:17 -07:00
jenkins-bot
d2d70c1724 Merge "config: Add more EtcdConfig::fetchAllFromEtcdServer tests" 2017-07-25 02:46:39 +00:00
Timo Tijhof
b70a3bb821 rdbms: Add more @covers to DatabaseSQLTest
Many of the main methods here have, over the years, been split up
into several protected/private methods.

Change-Id: I1b8489b1c61c0294288442a0a0cd28c9fa77f82e
2017-07-24 19:44:06 -07:00
jenkins-bot
9b38a467d3 Merge "config: Fix invalid EtcdConfig return value after JSON parse error" 2017-07-25 02:18:05 +00:00