Commit graph

3809 commits

Author SHA1 Message Date
jenkins-bot
d700b55d25 Merge "Revert, Follow-up: -1 recent contributors" 2017-04-27 01:59:36 +00:00
Eddie Greiner-Petter
b140b73b54 Revert, Follow-up: -1 recent contributors
This reverts commit b67f40e5b0.

There was an issue that the web installer, when inserting initial
values into the db table site_stats, would not insert any value for
ss_active_users. That lead to some places, most notably
Special:CreateAccount, to show off -1 recent contributors.

The commit to revert solved this by setting a default value of 1 for
the ss_active_users field in the database schema. However, while the
default schema has been changed, there hasn't been any schema update
procedure implemented. Also, the default of 1 is inconsistent with
other defaults in that table.

Revert that schema change completely. Instead, make the web installer
insert 0 to the field ss_active_users (just like it does with all other
fields in that table).

Bug: T56888
Change-Id: I4298754c2238f6e5447a5df77a4ada722ba302b2
2017-04-27 01:51:21 +00:00
Timo Tijhof
0548f1902c Interwiki: Don't override interwiki map order
The ksort() here was causing the order to be enforced as
alphabetical instead of preserving the original order.

The order usually doesn't matter, except with regards to handling
of duplicates. Due to Parsoid normalising external links to interwiki
links, it has to do a reverse lookup. In doing so it has to decide
which one to prefer. It currently picks the first match from the
API request for meta=siteinfo&siprop=interwikimap, which didn't
match the defined order in the actual Interwiki map due to ksort()
being called in getAllPrefixes().

Sort in this function was originally introduced in 2010 with
commit 844e7c83e4 (2011; r92528; T21838), which is otherwise unrelated
and left no rationale.

The existing unit tests needed to be adjusted slightly as they
assumed alphabetical order. While it appeared they were also defined
in alphabetical order, this was merely the order of the variable
creation. The effective order is preserved within locals and globals,
but overall globals come before locals.

Also removed the duplicate test for Hash and CDB in InterwikiTest
that belongs in ClassicInterwikiLookupTest instead.

Bug: T145337
Change-Id: I7348748801cbdf16c6ceea5b0654fc174b79707e
2017-04-25 15:38:32 -07:00
jenkins-bot
eb72adcb4e Merge "New maintenance script to clean up rows with invalid DB keys" 2017-04-24 15:19:30 +00:00
jenkins-bot
fa32e55a7c Merge "Set default to 1 recent contributor instead of -1" 2017-04-21 18:15:59 +00:00
jenkins-bot
331f5d7b27 Merge "Switch to librarized version of TestingAccessWrapper" 2017-04-20 17:28:09 +00:00
Gergő Tisza
525bfbc8df Switch to librarized version of TestingAccessWrapper
Replaces \TestingAccessWrapper (defined in core) with
\Wikimedia\TestingAccessWrapper (defined in the composer package
wikimedia/testing-access-wrapper).

See https://gerrit.wikimedia.org/r/#/q/topic:librarize-testing-access-wrapper
for downstream patches.

The core version of the class is kept around for a while to avoid
circular dependency problems.

Bug: T163434
Change-Id: I52cc257e593da3d6c3b01a909e554a950225aec8
2017-04-20 14:15:57 +00:00
jenkins-bot
c611380da2 Merge "A service for read-only mode" 2017-04-19 22:23:28 +00:00
Tim Starling
820f46964f A service for read-only mode
Introduce a service to represent wfReadOnly() and friends.

It's necessary to have two service instances, one for wfReadOnly() and
one for wfConfiguredReadOnlyReason(), to avoid a circular dependency,
since LoadBalancer needs the configured reason during construction, but
wfReadOnly() needs to query the currently active load balancer.

Not having a cache of the configuration makes it possible to dynamically
change the configuration. Ideally things would not change the
configuration, and I removed such instances in core, but to support
extensions, I added a test ensuring that the configuration can be changed.

Change-Id: I9bbee946c10742526d3423208efd68cb3cc5a7ee
2017-04-19 12:27:06 -07:00
Stephane Bisson
93cbb2450c RC Filters: Detect filters conflicts to by-pass db query
Filters are in conflict when their combination is guaranteed
to return no results. For instance: minor and log entries
is a conflict because major/minor does not apply to
log entries and the field is set to major by default.

Letting conflicts go through result in some very slow
database queries.

Bug: T160220
Change-Id: Ia6b0125c675c4a3cc4e4be4f83d1bd10d23059ba
2017-04-18 22:49:58 -04:00
MZMcBride
b67f40e5b0 Set default to 1 recent contributor instead of -1
Bug: T56888
Change-Id: I06bd0e5959d1ff561d71163bd5ce26f28f73981c
2017-04-18 13:55:53 +02:00
Timo Tijhof
8596a01658 phpunit: Make LogFormatterTest less slow
Right now it's quite slow because it reloads LocalisationCache
for every test case.

Change the reload to only happen once for the entire class.

Also use RequestContext instead of wgLang to match logic in
the parent class (MediaWikiLangTestCase).

$ phpunit includes/logging/LogFormatterTest.php
Before
- run 1) Time: 23.56 seconds, Memory: 48.00MB
- run 2) Time: 22.41 seconds, Memory: 48.75MB
After
- run 1) Time: 14.27 seconds, Memory: 47.50MB
- run 2) Time: 13.45 seconds, Memory: 47.25MB

Change-Id: Ia791563ca9094c36782acfe9826def45f2a1d621
2017-04-14 23:44:23 +00:00
jenkins-bot
1ffbcb0b8f Merge "Ensure logo preload transforms urls if needed" 2017-04-12 21:50:07 +00:00
Timo Tijhof
45d8cd2926 Ensure logo preload transforms urls if needed
Follows-up 5f55e9c9c2.

If the logo url is from within /w, then ResourceLoaderSkinModule
will (as it should) apply a file hash query to it.

The preloader didn't do that, so it specified the wrong url.

Refactored SkinModule to make this logic re-usable.

Bug: T100999
Change-Id: I1ba11f7c70d1a725ad72754fee4a3f33c2a4c1be
2017-04-12 21:34:31 +00:00
jenkins-bot
0697e41485 Merge "Move Database and subclasses to Rdbms namespace" 2017-04-12 18:07:43 +00:00
Aaron Schulz
d735dc562d Move Database and subclasses to Rdbms namespace
Change-Id: I52bef87512f9ddd155d1f4cc0052f6b7a0db5b42
2017-04-12 10:43:57 -07:00
jenkins-bot
85fcc8b254 Merge "Preload the logo using link rel="preload" http header" 2017-04-12 06:58:14 +00:00
Timo Tijhof
0977b6c1f6 phpunit: Avoid use of wmf-production host names
* Remove used of 'eqiad' and 'wmnet' in unit tests.

Change-Id: I5bf19b63876e4dc8deaca8cd9907dca0bfa15455
2017-04-12 02:53:33 +00:00
Gilles Dubuc
5f55e9c9c2 Preload the logo using link rel="preload" http header
This greatly increases the priority of loading
the logo on browsers that support rel="preload".

Bug: T100999
Change-Id: I0738fcc0a575153dab65016fa87faaa9b8b97a9d
2017-04-11 19:08:53 -07:00
jenkins-bot
72dee0e141 Merge "Remove "editusercssjs" user right" 2017-04-12 01:29:58 +00:00
jenkins-bot
8a4b15aaf9 Merge "objectcache: Complete coverage for newAnything()" 2017-04-11 23:13:33 +00:00
jenkins-bot
b170b4a14a Merge "resourceloader: Add unit tests for ResourceLoaderImage" 2017-04-11 22:25:33 +00:00
Bartosz Dziewoński
b6a238e6bf resourceloader: Add unit tests for ResourceLoaderImage
Follows-up I5b14d65a and I5a563c59.

Change-Id: Id42e1b868c9fe97cdb14b4bc7328947820a7fd94
2017-04-11 21:55:59 +00:00
zppix1
0a6f7f5796 Remove "editusercssjs" user right
Deprecated since MediaWiki1.16

Change-Id: Ic9851d53affe0f4ece7a79f541ec5cb39133b109
2017-04-11 14:54:43 +01:00
Timo Tijhof
b586d83422 objectcache: Complete coverage for newAnything()
* Fix typo that disabled testNewAnythingNoAccel().
  Follows-up c5a0fa5bed, accidentally committed a local hack
  to disable the test.

* Add missing case other types falling back and no DB.
* Add missing case of no other types and no DB.

Change-Id: If158f21053f0b3741f2625fe4455fdb31955a22f
2017-04-10 14:52:04 -07:00
Aaron Schulz
9b459d29e0 Add EtcdConfig class
Bug: T156924
Change-Id: I60914d31c21484bfb935fe3d8c3168b51a2d5d1b
2017-04-10 07:36:33 +00:00
jenkins-bot
4d609f015d Merge "ApiPageSet: Follow RedirectSpecialArticle redirects" 2017-04-08 09:36:21 +00:00
umherirrender
6971569512 Move count of revisions/files out of undelete log comment
The log comment on undelete contains a hint about the count of restored
files and/or revisions.
Move this text out of the comment to allow longer comments. Also makes
this information readable inside the api.

This is only for new log entries. Old entries will still show the hint
from the comment and no data in the api.

Change-Id: I9e30eb1271656bb81259a408210e9a282e949c57
2017-04-08 05:46:45 +00:00
Timo Tijhof
8e81621dcf objectcache: Complete code coverage for CachedBagOStuff
Change-Id: I8a228d68701f1ad4d37f60de53d105c32898dc8b
2017-04-07 23:31:41 +00:00
Timo Tijhof
a116bc58b5 objectcache: Fix CachedBagOStuff to use backend makeKey()
Follows-up 25dbd91513.

Change-Id: Ib727c57cb27f05c0462bfdfee89a185ef6603ddd
2017-04-07 23:31:25 +00:00
jenkins-bot
424251a2cb Merge "phpunit: Avoid use of deprecated getMock for PHPUnit 5 compat" 2017-04-06 23:30:01 +00:00
Brian Wolff
bc31c5bd57 SECURITY: Whitelist DTD declaration in SVG
Only allow ENTITY declarations inside the doctype internal
subset. Do not allow parameter entities, recursive entity
references are entity values longer than 255 bytes, or
external entity references. Filter external doctype subset
to only allow the standard svg doctypes.

Recursive entities that are simple aliases are allowed
because people appear to use them on commons. Declaring
xmlns:xlink to have a #FIXED value to the xlink namespace
is allowed because GraphViz apparently does that so its
somewhat common.

This prevents someone bypassing filter by using default
attribute values in internal dtd subset. No browser loads
the external dtd subset that I could find, but whitelist
just to be safe anyways.

Issue reported by Cassiogomes11.

Bug: T151735
Change-Id: I7cb4690f759ad97e70e06e560978b6207d84c446
2017-04-06 13:43:04 -07:00
Timo Tijhof
16adb3fe31 resourceloader: Improve code coverage
* Missing cases for StartupModule::getModuleRegistrations
  (now 100% covered)
  - Raw modules are omitted from the manifest.
    E.g. The base modules ('jquery', 'mediawiki') are raw modules
    that we don't register client side (they can't load themselves).
  - Exceptions from getVersionHash() are caught.
  - Oversized versions are re-hashed.

* Missing cases for ResourceLoader::makeLoaderRegisterScript.
  (now 100% covered)

* Missing cases for ResourceLoader::getModule.
  (now 100% covered)

Change-Id: If9717a48195fc6ae776da5d0e86f323d7f60426d
2017-04-05 18:19:48 -07:00
Timo Tijhof
447ce7e39a phpunit: Avoid use of deprecated getMock for PHPUnit 5 compat
The default will remain PHPUnit 4.x due to PHP 5.5 support.

But, we should allow developers to run tests with newer PHPUnit
versions which are noticably faster (especially for code coverage
reports).

* <https://github.com/sebastianbergmann/phpunit/wiki/Release-Announcement-for-PHPUnit-5.4.0>
  PHPUnit 5 deprecates the getMock() shortcut for getMockBuilder()->getMock().
  It instead introduces the shortcut createMock() which has better defaults
  than getMockBuilder(). For example, it sets 'disableArgumentCloning' and
  other things by default.

  Going forward, code should either use getMockBuilder directly and configure
  it using the setter methods (instead of the confusing variadic arguments
  of getMock) or simply use the new minimalistic createMock method. This patch
  backports the createMock method to MediaWikiTestCase so that we can start
  using it.

Change-Id: I091c0289b21d2b1c876adba89529dc3e72b99af2
2017-04-06 00:44:32 +00:00
jenkins-bot
eca93b7c40 Merge "Add class for service discovery using DNS SRV records" 2017-04-04 22:26:39 +00:00
Brad Jorsch
ca61e20e3d Fix ApiMainTest::testApiErrorFormatterCreation
API tests are all subclasses of MediaWikiLangTestCase, which overrides
the content language when the tests are actually running. So we need to
always use 'en' to match that.

Bug: T162007
Change-Id: Ie001576fb62ae88c9141e471fd8fcbc49592be32
2017-04-03 09:44:13 -04:00
jenkins-bot
4d11ecc013 Merge "ObjectFactory: Complete code coverage for ObjectFactoryTest" 2017-04-01 02:59:01 +00:00
jenkins-bot
bcbf750b8b Merge "objectcache: Complete code coverage for HashBagOStuff" 2017-04-01 02:57:18 +00:00
jenkins-bot
b3d524f7d2 Merge "resourceloader: Complete code coverage for MessageBlobStore" 2017-04-01 02:56:46 +00:00
jenkins-bot
09ad975d96 Merge "changes: Remove assertTag from RCCacheEntryFactoryTest" 2017-04-01 02:48:40 +00:00
jenkins-bot
32694c9bb2 Merge "resourceloader: Improve code coverage for WikiModuleTest" 2017-04-01 02:46:50 +00:00
jenkins-bot
b7c90b7dee Merge "FauxRequest: Complete code coverage for FauxRequestTest" 2017-04-01 02:43:37 +00:00
Timo Tijhof
c505293cfd resourceloader: Improve code coverage for WikiModuleTest
preloadTitleInfo:
* Add missing case for empty $moduleNames.
* Add missing case for invalid page names.

getContent:
* Add missing case for bad title
* Add missing case for dead redirect.
* Add missing case for no content found.

Change-Id: I44dde13cb0db19d91c4ff15a5abefd17353cad90
2017-03-31 18:53:00 -07:00
Timo Tijhof
efb373b2b0 FauxRequest: Complete code coverage for FauxRequestTest
Follows-up d18d030d57.

* Add missing case of session being a Session object.

Change-Id: I7da0c6d4a6483d53bcfd56751cd1cb669bd5023e
2017-04-01 01:25:02 +00:00
Timo Tijhof
2b29706b8f Html: Add a few @covers for HtmlTest
Change-Id: I0804e87ebc732d7adf082915af6d137f82f310b6
2017-03-31 18:13:24 -07:00
Timo Tijhof
8bada02a0f ObjectFactory: Complete code coverage for ObjectFactoryTest
Cover missing case of expandClosures() where the array contains
both a closure and a non-closure.

Change-Id: I30ea8cf3fb909a499a95bf9bd24792f4dd6b5c64
2017-03-31 18:07:59 -07:00
Timo Tijhof
751f2b9d25 objectcache: Complete code coverage for HashBagOStuff
Change-Id: I06cb9778df8239706bf82c0c39cccb419eade4b2
2017-03-31 18:03:38 -07:00
Timo Tijhof
1c200d7682 resourceloader: Complete code coverage for MessageBlobStore
Change-Id: I6269843ed51c67bf2d300eb58a613122ffdae740
2017-03-31 17:58:43 -07:00
jenkins-bot
0740af7ae0 Merge "objectcache: Never use CACHE_NONE for CACHE_ANYTHING" 2017-04-01 00:33:56 +00:00
jenkins-bot
a98ef5dd96 Merge "ResourceLoaderModuleTest: Exchange expected and actual parameter" 2017-04-01 00:31:46 +00:00