lhc/web/wiklou.git
4 years agoSelenium: Hide VE welcome and beta dialogs
Kosta Harlan [Mon, 30 Sep 2019 19:07:57 +0000 (21:07 +0200)]
Selenium: Hide VE welcome and beta dialogs

Remove uses of setLocalStorage (incompatible with chromedriver >= 75)
and also requires slightly fewer requests since BlankPage.open()
doesn't need to be invoked.

Bug: T234002
Change-Id: I4cfb4fe17a3c99bfcb7ff39ac6db60f5c5e8a687

4 years agoMerge "selenium: Fix inefficient use of MWBot in specs/page.js"
jenkins-bot [Mon, 30 Sep 2019 18:57:01 +0000 (18:57 +0000)]
Merge "selenium: Fix inefficient use of MWBot in specs/page.js"

4 years agoMerge "selenium: Use async-await for wdio-mediawiki/Api internals"
jenkins-bot [Mon, 30 Sep 2019 18:56:52 +0000 (18:56 +0000)]
Merge "selenium: Use async-await for wdio-mediawiki/Api internals"

4 years agoMerge "selenium: Remove "RunJobs" wait from specialrecentchanges test"
jenkins-bot [Mon, 30 Sep 2019 18:34:21 +0000 (18:34 +0000)]
Merge "selenium: Remove "RunJobs" wait from specialrecentchanges test"

4 years agoMerge "selenium: Remove deprecated legacy methods"
jenkins-bot [Mon, 30 Sep 2019 18:11:33 +0000 (18:11 +0000)]
Merge "selenium: Remove deprecated legacy methods"

4 years agoMerge "selenium: Upgrade from webdriver v4 to v5"
jenkins-bot [Mon, 30 Sep 2019 18:09:50 +0000 (18:09 +0000)]
Merge "selenium: Upgrade from webdriver v4 to v5"

4 years agoMerge "RevisionStore: Introduce getContentBlobsForBatch"
jenkins-bot [Mon, 30 Sep 2019 17:46:08 +0000 (17:46 +0000)]
Merge "RevisionStore: Introduce getContentBlobsForBatch"

4 years agoMerge "tests: Replace assertions on count() == 0 with strict === []"
jenkins-bot [Mon, 30 Sep 2019 17:43:35 +0000 (17:43 +0000)]
Merge "tests: Replace assertions on count() == 0 with strict === []"

4 years agoMerge "Split down patch-actor-table.sql"
jenkins-bot [Mon, 30 Sep 2019 17:40:25 +0000 (17:40 +0000)]
Merge "Split down patch-actor-table.sql"

4 years agoSplit down patch-actor-table.sql
Reedy [Sat, 28 Sep 2019 14:48:19 +0000 (15:48 +0100)]
Split down patch-actor-table.sql

Bug: T227662
Change-Id: I024ff1d6f4c2726242138ba7e7f19480d9d2b948

4 years agoMerge "maintenance: Enable gzip in router.php for static files"
jenkins-bot [Mon, 30 Sep 2019 14:38:53 +0000 (14:38 +0000)]
Merge "maintenance: Enable gzip in router.php for static files"

4 years agotests: Replace assertions on count() == 0 with strict === []
Thiemo Kreuz [Mon, 30 Sep 2019 14:20:34 +0000 (16:20 +0200)]
tests: Replace assertions on count() == 0 with strict === []

The benefit of using count() is that the test would still succeed if
the return vfalue is not an array, but an iterable object. It seems
this is not needed.

Change-Id: I23529f6990aebe0cce86e236a21820fe74993204

4 years agoMerge "selenium: Restore sauce user/key configuration for wdio"
jenkins-bot [Mon, 30 Sep 2019 14:11:52 +0000 (14:11 +0000)]
Merge "selenium: Restore sauce user/key configuration for wdio"

4 years agoselenium: Fix inefficient use of MWBot in specs/page.js
Timo Tijhof [Sun, 29 Sep 2019 03:24:47 +0000 (04:24 +0100)]
selenium: Fix inefficient use of MWBot in specs/page.js

This test previously took 4 minutes to run locally and ended up
running the MWBot.login process 9 times.

After this, the specs/page tests only log-in once.

Bug: T234002
Change-Id: I374620a01f49d4da559070d0982bdbe4c1269e2e

4 years agoselenium: Use async-await for wdio-mediawiki/Api internals
Timo Tijhof [Sun, 29 Sep 2019 02:37:09 +0000 (03:37 +0100)]
selenium: Use async-await for wdio-mediawiki/Api internals

Bug: T234002
Change-Id: Ie4ad5248f832dd57f35710e0e9a91250e061b0bb

4 years agomaintenance: Enable gzip in router.php for static files
Timo Tijhof [Thu, 26 Sep 2019 21:57:50 +0000 (22:57 +0100)]
maintenance: Enable gzip in router.php for static files

Bug: T233992
Change-Id: Ie401180ac968210c9f923ad920bf15955c8551d7

4 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Mon, 30 Sep 2019 06:31:33 +0000 (08:31 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I2ff71393f57b3c397dae4e63d9607dcd1807343e

4 years agoMerge "resourceloader: Hard deprecate ResourceLoader::getLessVars"
jenkins-bot [Mon, 30 Sep 2019 00:34:28 +0000 (00:34 +0000)]
Merge "resourceloader: Hard deprecate ResourceLoader::getLessVars"

4 years agoresourceloader: Hard deprecate ResourceLoader::getLessVars
Fomafix [Sun, 29 Sep 2019 09:02:32 +0000 (11:02 +0200)]
resourceloader: Hard deprecate ResourceLoader::getLessVars

ResourceLoader::getLessVars is already deprecated since MW 1.32.

Change-Id: If2fbe7828d8cde73575c0306486835fa1ea06b84

4 years agoMerge "Added option to specify "Various authors" as author in extension credits using...
jenkins-bot [Sun, 29 Sep 2019 21:16:23 +0000 (21:16 +0000)]
Merge "Added option to specify "Various authors" as author in extension credits using "..." as the _only_ author name"

4 years agoExpand testDoQuickOperations() tests for FileBackend
Aaron Schulz [Wed, 18 Sep 2019 09:52:38 +0000 (02:52 -0700)]
Expand testDoQuickOperations() tests for FileBackend

Change-Id: I0633f13f07b5a3234b9bbae4840b064972f68fd9

4 years agoAdded option to specify "Various authors" as author in extension credits using "...
Jack Phoenix [Sun, 15 Sep 2019 20:34:27 +0000 (23:34 +0300)]
Added option to specify "Various authors" as author in extension credits using "..." as the _only_ author name

If the "author" array contains more than one entry and "..." is one of the entries in the array, "..." will be parsed as "others" (version-poweredby-others i18n message) like previously.

Change-Id: Ibebd3c38a674abd9f066b38e92c7f712f7b3ba8d

4 years agoselenium: Remove "RunJobs" wait from specialrecentchanges test
Timo Tijhof [Sun, 29 Sep 2019 01:32:47 +0000 (02:32 +0100)]
selenium: Remove "RunJobs" wait from specialrecentchanges test

This test was consistently reaching the RunJobs timeout of
10 tries and then giving up. This happens in CI, where it wasted
about ~ 5 seconds, and locally where it takes about 30s for mw.

Like so:
> RunJobs through requests to the main page (run 1).
> RunJobs detected 12 more queued job(s).
> RunJobs through requests to the main page (run 2).
> RunJobs detected 12 more queued job(s).

Etc, until it reaches run 10 and gives up. This also suggests
the whole thing isn't wokring, but that's a separate matter.

First and foremost, RecentChange objects are saved from a PRESEND
deferred update, which means it does not require a job queue wait
in order to appear on Special:RecentChanges.

This was added in e908d347ef2 (T199446) "to keep the number of
unrun jobs low". The idea being that this test makes an edit via
the API, which means it creates jobs without running them. On
the other hand, there's also lots of test steps that view pages
but don't create jobs, which would make this optimisation premature.
If and when we do encounter a test failing due to a job backlog,
I'm confident we can find a better solution at that time.

Bug: T234002
Bug: T225730
Bug: T199446
Change-Id: I9ef8c5b65d4b636572569912f04f48ed40aa0564

4 years agoselenium: Remove deprecated legacy methods
Timo Tijhof [Sun, 29 Sep 2019 01:59:56 +0000 (02:59 +0100)]
selenium: Remove deprecated legacy methods

These are from 2018, prior to introducing wdio-mediawiki in
commit 16a4d9da7bb81. Some extensions referenced these pageobjects
files through escalating "../../" references.

None of these are seen in Codesearch anymore, as well as no
references to these deprecated methods by other means.

Change-Id: Idbc373f13f9767cecd6404922b5c9773d796dda5

4 years agoselenium: Upgrade from webdriver v4 to v5
Timo Tijhof [Fri, 27 Sep 2019 03:08:00 +0000 (04:08 +0100)]
selenium: Upgrade from webdriver v4 to v5

* Options no longer needed or no longer exist in wdio v5:
  - coloredLogs: Now always on. The underlying 'chalk' library can still
    be influenced via the FORCE_COLOR environment variable.
  - screenshotPath: Removed. Was already disabled in our config.
  - deprecationWarnings: Meh.
  - 'sync: true' – On by default when `@wdio/sync` is installed.
    The wdio v5 config generator doesn't recommend setting manually.

* The selenium.sh script was removed. It existed to start and stop
  chromedriver for local use by developers. This is now done by
  the wdio-chromedriver-service. In WMF CI, Quibble starts its own
  chromedriver (as optimisation, reused across gated repos),
  which is why the 'selenium-test' entry points remains and skips
  this.

* The wdio-mediawiki package now requires wdio v5 and Node 10.
  This doesn't affect extension repos because versions are pinned.
  Upgrade may happen at the earliest convenience.

* Several WDIO methods changed names or signature. Full list at:
  <https://github.com/webdriverio/webdriverio/blob/v5.13.2/CHANGELOG.md#v500-2018-12-20>
  Highlights:
  - browser.element() is now browser.findElement() with "$()" as alias.
  - browser.localStorage replaced by browser.setLocalStorage.
  - browser.deleteCookie() requires `name` param. To delete all at once,
    there is a new method browser.deleteAllCookies().
  - Commands that return data no longer wrapped in `{ value: … }`.
    Values are now returned directly.
  - Custom config keys are now under browser.config instead of browser.options.
    Renamed our username/password keys to be mw-prefixed, to avoid clashes
    and reduce confusion with similar config keys.
  - browser.click(selector) and browser.getText(selector) no longer exist.
    Use $(selector).click() or .getText() instead.

* Fix "no such alert" warning from specs/page.js by removing the apparently
  redundant code.

Bug: T234002
Bug: T213268
Change-Id: I908997569ca8457997af30cb29e98ac41fae3b64

4 years agoselenium: Restore sauce user/key configuration for wdio
Timo Tijhof [Fri, 27 Sep 2019 22:09:59 +0000 (23:09 +0100)]
selenium: Restore sauce user/key configuration for wdio

I removed these in e78484109ae7 because they seemed redundant
given that the library used by wdio-sauce-service already reads
these when present. However, our current version of this package
clobbers this unconditionally with config.user/config.key, thus
not letting it reach that default.

Also add sauceConnect:true which means developers can run
localhost tests against sauce labs if they so choose.

Change-Id: I8d31a23374b2b9b6cd6f1405c7a2f1001da08f1a

4 years agoMerge "resourceloader: Add version to ResourceLoaderImage urls for long-cache"
jenkins-bot [Sat, 28 Sep 2019 20:20:32 +0000 (20:20 +0000)]
Merge "resourceloader: Add version to ResourceLoaderImage urls for long-cache"

4 years agoMerge "resourceloader: Simplify makeLoaderStateScript and makeLoaderSourcesScript"
jenkins-bot [Sat, 28 Sep 2019 20:02:18 +0000 (20:02 +0000)]
Merge "resourceloader: Simplify makeLoaderStateScript and makeLoaderSourcesScript"

4 years agoMerge "resourceloader: Remove support for $context === null in getContentObj"
jenkins-bot [Sat, 28 Sep 2019 20:00:24 +0000 (20:00 +0000)]
Merge "resourceloader: Remove support for $context === null in getContentObj"

4 years agoStringUtils: Clarify that isValidRegex is for PCRE regexps
Daimona Eaytoy [Thu, 19 Sep 2019 09:55:19 +0000 (11:55 +0200)]
StringUtils: Clarify that isValidRegex is for PCRE regexps

As suggested in c14571ba26e (I257a096319f1e).

Change-Id: Ia91d037f2f4bf8a1bad4eac65fecb1d3e2679d2d

4 years agoresourceloader: Simplify makeLoaderStateScript and makeLoaderSourcesScript
Fomafix [Sat, 28 Sep 2019 11:32:29 +0000 (13:32 +0200)]
resourceloader: Simplify makeLoaderStateScript and makeLoaderSourcesScript

The signatures without array are not used anymore.

Change-Id: Ice6a09ff6cba0c605ed1c89a25fd8e02af041b05

4 years agoMerge "docs: Fix typo on Doxygen main page"
jenkins-bot [Sat, 28 Sep 2019 12:24:40 +0000 (12:24 +0000)]
Merge "docs: Fix typo on Doxygen main page"

4 years agoFix double dot in filename
Reedy [Fri, 27 Sep 2019 16:22:11 +0000 (17:22 +0100)]
Fix double dot in filename

Follows-Up: I7617616df57f7468d06e9b52426b6851bfef0e7d
Change-Id: Ia8be2fd6a13d095e27a6489b0126763573dd6194

4 years agoMerge "resourceloader: Add $modules parameter to makeVersionQuery()"
jenkins-bot [Sat, 28 Sep 2019 01:26:59 +0000 (01:26 +0000)]
Merge "resourceloader: Add $modules parameter to makeVersionQuery()"

4 years agoresourceloader: Add version to ResourceLoaderImage urls for long-cache
Timo Tijhof [Thu, 26 Sep 2019 16:26:52 +0000 (17:26 +0100)]
resourceloader: Add version to ResourceLoaderImage urls for long-cache

The code previously here did not work well as it merely forwarded the
hash from the current web request. This had numerous issues:

1. It was often null because requests for stylesheets do not cary
   a version hash.
2. When requested by JavaScript, the version hash would be a
   combination-hash of many unrelated modules, thus when requested as
   part of different batches, it would produce different urls which
   is not ideal.

The impact of this is minimal currently because we basically never use
these urls, as SVGs are almost always embedded instead of ref'ed by url.
PNG urls are only generated for non-JS modules and then only used in older
browsers not supporting SVG. And, even after all that, for the edge case
of an SVG being ref'ed by url, they would be stored in LocalStorage by
mw.loader with the name+version of the module the image belonged to, not
the version hash of the batch request it came with.

Which means that, yes, localstorage key for "somemodule+someversion" would
have different values for different users, based on which batch the value
came with, because the image urls were using the version hash of the batch
request from ResourceLoaderContext. This is weird, but didn't cause bugs
or inefficiencies because the user would never be exposed to the other
possible urls for that image because we always check LocalStorage first.
It did cause fragmentation server-side in Varnish, though.

This is all fixed now by always including a version, and setting it to
the version of the module. This means there is no more Varnish fragmentation
for these. And it means that browsers are now allowed to cache the images
served from these urls for 30+ days (immutable) instead of only 5min,
which is what happened when they didn't have a version parameter (or set to
null).

Bug: T233343
Change-Id: I4af7fda03698ed4c288d154e7787fb2f3cbbe6c5

4 years agoMerge "Mark mediawiki.page.watch.ajax as targetable to mobile"
Jdlrobson [Fri, 27 Sep 2019 23:03:21 +0000 (23:03 +0000)]
Merge "Mark mediawiki.page.watch.ajax as targetable to mobile"

4 years agoMerge "tests: Replace PHPUnit's loose assertEquals(null) with assertNull()"
jenkins-bot [Fri, 27 Sep 2019 22:43:09 +0000 (22:43 +0000)]
Merge "tests: Replace PHPUnit's loose assertEquals(null) with assertNull()"

4 years agoMerge "build: Lower default Karma logLevel during local development"
jenkins-bot [Fri, 27 Sep 2019 22:23:51 +0000 (22:23 +0000)]
Merge "build: Lower default Karma logLevel during local development"

4 years agoMark mediawiki.page.watch.ajax as targetable to mobile
jdlrobson [Thu, 26 Sep 2019 15:56:58 +0000 (08:56 -0700)]
Mark mediawiki.page.watch.ajax as targetable to mobile

This is explicitly disabled by Minerva so this should have
no impact other than allow the loading of this module on
mobile.

Change-Id: Ib73fb995f5ccb16d99b505abad2466187c3dc5a5

4 years agoMerge "Remove tests that were skipped for MCR-enabled schema"
jenkins-bot [Fri, 27 Sep 2019 21:34:39 +0000 (21:34 +0000)]
Merge "Remove tests that were skipped for MCR-enabled schema"

4 years agoMerge ".pipeline/config.yaml: rename dev stage to publish"
jenkins-bot [Fri, 27 Sep 2019 20:58:32 +0000 (20:58 +0000)]
Merge ".pipeline/config.yaml: rename dev stage to publish"

4 years agoMerge "resourceloader: Add $context to static functions in ResourceLoader"
jenkins-bot [Fri, 27 Sep 2019 20:48:15 +0000 (20:48 +0000)]
Merge "resourceloader: Add $context to static functions in ResourceLoader"

4 years agoMerge "resourceloader: Add type hints for type ResourceLoaderContext"
jenkins-bot [Fri, 27 Sep 2019 20:22:10 +0000 (20:22 +0000)]
Merge "resourceloader: Add type hints for type ResourceLoaderContext"

4 years agoRemove tests that were skipped for MCR-enabled schema
Petr Pchelko [Fri, 27 Sep 2019 19:05:42 +0000 (12:05 -0700)]
Remove tests that were skipped for MCR-enabled schema

Pre-MCR schema is no longer supported, thus we don't need
the tests that are skipped for MCR-enabled schema.

Bug: T214308
Change-Id: I2d78ec668fde1e49710c54be8ab72c474f30f6b8

4 years agotests: Replace PHPUnit's loose assertEquals(null) with assertNull()
Thiemo Kreuz [Tue, 17 Sep 2019 14:03:28 +0000 (16:03 +0200)]
tests: Replace PHPUnit's loose assertEquals(null) with assertNull()

assertEquals( null, … ) still succeeds when the actual value is 0, false,
an empty string, even an empty array. All these should be reported as a
failure, I would argue.

Note this patch previously also touched assertSame( null ). I reverted
these. The only benefit would have been consistency within this codebase,
but there is no strict reason to prefer one over the other. assertNull()
and assertSame( null ) are functionally identical.

Change-Id: I92102e833a8bc6af90b9516826abf111e2b79aac

4 years agoMerge "Fix permission check on protection log"
jenkins-bot [Fri, 27 Sep 2019 18:38:16 +0000 (18:38 +0000)]
Merge "Fix permission check on protection log"

4 years agoMerge "Remove Revision::getRevisionText and gated pre-MCR schema access"
jenkins-bot [Fri, 27 Sep 2019 18:38:09 +0000 (18:38 +0000)]
Merge "Remove Revision::getRevisionText and gated pre-MCR schema access"

4 years agoMerge "rdbms: Remove obsolete comment in LoadBalancerSingle"
jenkins-bot [Fri, 27 Sep 2019 18:35:44 +0000 (18:35 +0000)]
Merge "rdbms: Remove obsolete comment in LoadBalancerSingle"

4 years agoRevisionStore: Introduce getContentBlobsForBatch
daniel [Thu, 26 Sep 2019 12:23:40 +0000 (14:23 +0200)]
RevisionStore: Introduce getContentBlobsForBatch

getContentBlobsForBatch provides a more low level interface than
newRevisionsFromBatch, allowing bulk access to serialized content
without the need to instantiate Title, RevisionRecord, RevisionSlots,
SlotRecord, and Content objects.

Bug: T228675
Bug: T234034
Change-Id: I8481ad211e2d9f11bc10ea10c16e78b74538d95b

4 years agoMerge "Force usage of MCR aware database schema"
jenkins-bot [Fri, 27 Sep 2019 17:52:33 +0000 (17:52 +0000)]
Merge "Force usage of MCR aware database schema"

4 years ago.pipeline/config.yaml: rename dev stage to publish
Brennen Bearnes [Fri, 27 Sep 2019 17:43:52 +0000 (11:43 -0600)]
.pipeline/config.yaml: rename dev stage to publish

This should align with the "publish" pipeline defined in
integration/config.

Bug: T218360
Change-Id: Iba27755416843dd547ac1889d932a3b5ea9d1fd2

4 years agoFix permission check on protection log
Ammar [Fri, 27 Sep 2019 13:39:15 +0000 (14:39 +0100)]
Fix permission check on protection log

*I2341e6f inverted the permission check, such that now the link is only shown to unprivileged users

Bug: T234017
Change-Id: I0977f1ab1a72840303aeca2367a30546d83117d4

4 years agordbms: Remove obsolete comment in LoadBalancerSingle
Lucas Werkmeister [Thu, 26 Sep 2019 15:49:48 +0000 (17:49 +0200)]
rdbms: Remove obsolete comment in LoadBalancerSingle

This comment was added in commit 0b583944e4, but
later rendered obsolete by commit 143333b172.

Change-Id: I1a64ab75a9883a88d5767722e27724520f8a0dcc

4 years agoRemove Revision::getRevisionText and gated pre-MCR schema access
Petr Pchelko [Fri, 20 Sep 2019 18:11:35 +0000 (11:11 -0700)]
Remove Revision::getRevisionText and gated pre-MCR schema access

- fixT22757.php appears to have been written for T22757 which has been
resolved, I assume it can be removed.

- compressOld.php - rev_text_id access is gated on MCRSchemaMigrationStage
READ_OLD. IT's safe to use the old_text and old_flags directly as we
select for them. Also the query ensures external blobs are not selected,
so we can use decompressData instead of Revision::getRevisionText.
Tested locally.

- recompressTracked.php uses a temporary table for tracking the blobs.
Table is populated by trackBlobs which explicitly queries for old_id,
so using it directly in recompressTracked is ok.
Tested locally.

- checkStorage.php the affected code attempts to fix broken revisions
from a dump, however, it looks like it doesn't work - the code expects
revision IDs as input, however it receives an array of text table old_id
values. Untested.

Bug: T198343
Change-Id: I753019565c15d270c831c995c07c7f1aad887cb6

4 years agoresourceloader: Add $context to static functions in ResourceLoader
Fomafix [Mon, 9 Sep 2019 15:50:13 +0000 (17:50 +0200)]
resourceloader: Add $context to static functions in ResourceLoader

This change allows to use the context in the functions.

The following internal static functions from ResourceLoader get now a
reference to the ResourceLoaderContext object:
* makeLoaderImplementScript
* makeLoaderStateScript
* makeLoaderRegisterScript
* makeLoaderSourcesScript

ResouceLoader::encodeJsonForScript is duplicated to
ResourceLoaderContext::encodeJson loading the debug mode from context.

ResourceLoader::encodeJsonForScript is kept for other usages without
context.

The debug mode is loaded from $context->getDebug() instead of from
ResourceLoader::inDebugMode(). This does not support to enable the debug
mode by setting the cookie 'resourceLoaderDebug' or the configuration
variable wgResourceLoaderDebug. Only the URL parameter debug=true
enables the debug mode. This should be sufficient for the subsequent
ResourceLoader requests. The tests don't need the global variable
wgResourceLoaderDebug anymore. The initial ResourceLoader context in
OutputPage still uses ResourceLoader::inDebugMode() with cookie and
global configuration variable.

This change adds the parameter $context with a ResourceLoaderContext
object to ResourceLoaderModule::getDeprecationInformation and deprecates
omitting the parameter. Ifa1a3bb56b731b83864022a358916c6aca5d7c10
updates this in extension ExtJSBase.

Bug: T229311
Change-Id: I5341f18625209446a6d006f60244990f65530319

4 years agoMerge "Split down patch-comment-table.sql"
jenkins-bot [Fri, 27 Sep 2019 15:18:11 +0000 (15:18 +0000)]
Merge "Split down patch-comment-table.sql"

4 years agoMerge "MWTestCase: include table prefix in domain for temp table only mode."
jenkins-bot [Fri, 27 Sep 2019 14:47:09 +0000 (14:47 +0000)]
Merge "MWTestCase: include table prefix in domain for temp table only mode."

4 years agodocs: Fix typo on Doxygen main page
apaskulin [Fri, 27 Sep 2019 14:45:59 +0000 (07:45 -0700)]
docs: Fix typo on Doxygen main page

This PR fixes a typo and removes a few extra words
from the Doxygen landing page.

Change-Id: Ieb09c0e72129f4c6b0ccd574daf2f9316f580259

4 years agoMerge "Speed up ApiQuerySiteinfoTest:testContinuation"
jenkins-bot [Fri, 27 Sep 2019 13:42:20 +0000 (13:42 +0000)]
Merge "Speed up ApiQuerySiteinfoTest:testContinuation"

4 years agoMerge "API: Use ConvertibleTimestamp::setFakeTime for testing curtimestamp"
jenkins-bot [Fri, 27 Sep 2019 12:01:55 +0000 (12:01 +0000)]
Merge "API: Use ConvertibleTimestamp::setFakeTime for testing curtimestamp"

4 years agoForce usage of MCR aware database schema
Clara Andrew-Wani [Tue, 24 Sep 2019 22:07:36 +0000 (18:07 -0400)]
Force usage of MCR aware database schema

Bug: T214308
Change-Id: I2ae4e82a12f730617563eb6f911fc406b9195391

4 years agoMWTestCase: include table prefix in domain for temp table only mode.
daniel [Fri, 27 Sep 2019 11:10:22 +0000 (13:10 +0200)]
MWTestCase: include table prefix in domain for temp table only mode.

This patch allows PageUpdaterTest and DerivedPageDataUpdaterTest to
function properly. Without this patch, the fail when run by themselves.

See phab ticket for analysis.

Bug: T234031
Change-Id: I0804b503bc8b860343a5141c0bfb25fe6855c87d

4 years agoRemove MySQL index aliasing for user_newtalk indexes
Brad Jorsch [Wed, 18 Sep 2019 16:44:15 +0000 (12:44 -0400)]
Remove MySQL index aliasing for user_newtalk indexes

While these have not yet caused problems, we should probably deprecate
the whole confusing "index aliasing" feature. Cleaning this up needs to
be done first.

Method MWLBFactory::setSchemaAliases() is being considered private due
to the @internal notation, and so is being removed without deprecation.

Bug: T233240
Change-Id: Ib04b7bc4af53382fde01bd8550cc7e361124255f

4 years agoSpeed up ApiQuerySiteinfoTest:testContinuation
Antoine Musso [Fri, 27 Sep 2019 08:42:56 +0000 (10:42 +0200)]
Speed up ApiQuerySiteinfoTest:testContinuation

The test fills $wgUrlProtocols with 86000 entries, forging oversized
strings which ends up eventually truncated to 100 bytes.  The aim is to
overflow $wgAPIMaxResultSize to trigger an apiwarn-truncatedresult
warning.

The test takes 230 ms on my machine and when generating code coverage
almost a minute.

A faster approach is just to lower the $wgAPIMaxResultSize limit to
trigger the warning.

Test plan:

  $ php tests/phpunit/phpunit.php \
      tests/phpunit/includes/api/ApiQuerySiteinfoTest.php \
      --filter testContinuation

Bug: T234016
Change-Id: I3dc96d394d8b98dda8f151d14544b829c92f9b10

4 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Fri, 27 Sep 2019 06:24:47 +0000 (08:24 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: Ic52edc08609d9b9d03b7173ae43810f0dad140c1

4 years agoresourceloader: Add type hints for type ResourceLoaderContext
Fomafix [Fri, 27 Sep 2019 04:43:44 +0000 (06:43 +0200)]
resourceloader: Add type hints for type ResourceLoaderContext

Change-Id: I10fc4b9277f94fc495149fe0d0077b054090387b

4 years agoIn recompressTracked.php, fix the names of things related to child processes
Tim Starling [Fri, 27 Sep 2019 00:58:21 +0000 (10:58 +1000)]
In recompressTracked.php, fix the names of things related to child processes

The forbidden word was used in two senses, confusing the search and
replace done in 3d5016569da984050e.

Change-Id: I220a58fd536c828ab5e03a779e45f222d0298f9a

4 years agoMerge "objectcache: fully respect "pcTTL" in WANObjectCache instead of using INF...
jenkins-bot [Fri, 27 Sep 2019 00:13:37 +0000 (00:13 +0000)]
Merge "objectcache: fully respect "pcTTL" in WANObjectCache instead of using INF when >= 0"

4 years agoMerge "filebackend: avoid use of wfWikiId() in FileBackendGroup"
jenkins-bot [Fri, 27 Sep 2019 00:13:30 +0000 (00:13 +0000)]
Merge "filebackend: avoid use of wfWikiId() in FileBackendGroup"

4 years agoMerge "Add .pipeline/ with dev image variant"
jenkins-bot [Thu, 26 Sep 2019 23:20:56 +0000 (23:20 +0000)]
Merge "Add .pipeline/ with dev image variant"

4 years agoMerge "Add a run mode to $wgDisableQueryPageUpdate"
jenkins-bot [Thu, 26 Sep 2019 23:17:16 +0000 (23:17 +0000)]
Merge "Add a run mode to $wgDisableQueryPageUpdate"

4 years agofilerepo: make FileRepo::store/storeBatch() accept FSFile as similar methods already do
Aaron Schulz [Sun, 15 Sep 2019 19:32:08 +0000 (12:32 -0700)]
filerepo: make FileRepo::store/storeBatch() accept FSFile as similar methods already do

Change-Id: I92ce979a71fabd9e2095e7db43fa6fc8c2e0ef75

4 years agoAdd a run mode to $wgDisableQueryPageUpdate
Umherirrender [Mon, 19 Aug 2019 14:49:43 +0000 (16:49 +0200)]
Add a run mode to $wgDisableQueryPageUpdate

The run mode is used to show a different message on the special page,
instead of the current one "Updates for this page are currently
disabled. Data here will not presently be refreshed." even the data gets
updated with a different cron job.

Bug: T78711
Change-Id: Ib63d16bfea477dec43323b39671cc068530e2f0b

4 years agoresourceloader: Add $modules parameter to makeVersionQuery()
Timo Tijhof [Thu, 26 Sep 2019 17:34:17 +0000 (18:34 +0100)]
resourceloader: Add $modules parameter to makeVersionQuery()

The 'version' and 'modules' parameters are a somewhat problematic
part of the ResourceLoaderContext object as we often pass around
the context but may be dealing with only a subset of the modules
in the outer request, or even entirely different ones (e.g.
for OutputPage's fake context 'modules' and 'version' are both
null).

This is already visible in ClientHtml where we create a derivative
context just to call setModules() and have makeVersionQuery()
work. This is now fixed.

This change is in preparation for use in ResourceLoaderImage
(to fix T233343) where we'll need to compute a version for only
1 module of a larger set, and ideally without needing to create
another context.

Bug: T233343
Change-Id: Icc1a4fd1f58c4e49e58eee43ca4ba2de6cfffc76

4 years agoMerge "installer: Deprecate WebInstaller::getInfoBox, getWarningBox and getErrorBox"
jenkins-bot [Thu, 26 Sep 2019 20:16:01 +0000 (20:16 +0000)]
Merge "installer: Deprecate WebInstaller::getInfoBox, getWarningBox and getErrorBox"

4 years agoMerge "Clean up ar_usertext_timestamp index mess"
jenkins-bot [Thu, 26 Sep 2019 19:41:56 +0000 (19:41 +0000)]
Merge "Clean up ar_usertext_timestamp index mess"

4 years agoMerge "You are reviewing an old revision should be a warningbox"
jenkins-bot [Thu, 26 Sep 2019 19:41:48 +0000 (19:41 +0000)]
Merge "You are reviewing an old revision should be a warningbox"

4 years agoMerge "newRevisionsFromBatch: don't throw on duplicate row."
jenkins-bot [Thu, 26 Sep 2019 19:39:58 +0000 (19:39 +0000)]
Merge "newRevisionsFromBatch: don't throw on duplicate row."

4 years agoinstaller: Deprecate WebInstaller::getInfoBox, getWarningBox and getErrorBox
Volker E [Tue, 17 Sep 2019 01:53:29 +0000 (18:53 -0700)]
installer: Deprecate WebInstaller::getInfoBox, getWarningBox and getErrorBox

Since MW 1.31 there are messageBox, warningBox, errorBox and successBox
available which should be used instead.

These are simple wrappers around Html::messageBox and related methods
which should be used directly instead. Internal usage has been migrated
as of a9252abb1cf0, but these public methods remain for now. Once
removed we can also removed the internal Html::infoBox() method.

Bug: T232903
Change-Id: I2756c88987754c4e3f84d98c531d8396098cd7fe

4 years agoMerge "Fill GenderCache for used pages in action=query&prop=fileusage"
jenkins-bot [Thu, 26 Sep 2019 17:03:04 +0000 (17:03 +0000)]
Merge "Fill GenderCache for used pages in action=query&prop=fileusage"

4 years agoAPI: Use ConvertibleTimestamp::setFakeTime for testing curtimestamp
Brad Jorsch [Thu, 26 Sep 2019 16:29:29 +0000 (12:29 -0400)]
API: Use ConvertibleTimestamp::setFakeTime for testing curtimestamp

Mainly to avoid spurious test failures when CI is being extremely slow.

Bug: T233752
Change-Id: Ie2cdd84dc076a852fbdce52f661ef893f9a2d45b

4 years agoMerge "Parser: Use 'Special:Badtitle/Parser' instead of 'NO TITLE'"
jenkins-bot [Thu, 26 Sep 2019 14:15:53 +0000 (14:15 +0000)]
Merge "Parser: Use 'Special:Badtitle/Parser' instead of 'NO TITLE'"

4 years agoCommentStore: Accept SCHEMA_COMPAT_* constants
Brad Jorsch [Fri, 20 Sep 2019 18:35:39 +0000 (14:35 -0400)]
CommentStore: Accept SCHEMA_COMPAT_* constants

Extensions doing an actor and comment migration at the same time will
likely want to use the same constants for each, and that will most
likely be using write-both/read-old and write-both/read-new for the
middle stages rather than write-both/read-both and write-new/read-both
as implemented by the MIGRATION_* constants. See Ie29fd05 for example.

This patch changes CommentStore's internal logic to work correctly when
passed write-both/read-old or write-both/read-new.

Bug: T233449
Change-Id: Iebec80f969ad1c4f9f51a4f25656319cca32b0dd

4 years agoexception: Let MediaWiki.php control final output for ErrorPageError
Timo Tijhof [Wed, 18 Sep 2019 18:05:42 +0000 (19:05 +0100)]
exception: Let MediaWiki.php control final output for ErrorPageError

The same way it does already for non-error output. This makes
it so that doPreOutputCommit() consistently happens between
the staging of output and the actual sending of output.

It is still allowed for code to bypass this, such as for fatal
errors and for handlers that disable OutputPage (like Special:Export).

But for cases where we do want to perform doPreOutputCommit(), it
should be run consistently between staging and sending so that it
can make appropiate decisions based on the current state of
OutputPage.

Previously, the state of OutputPage seen by doPreOutputCommit()
would be the broken/incomplete output of a seemingly succesful
(possibly cacheable) user action, which would then, after
doPreOutputCommit() runs, be completely replaced by $e->report()/
$out->showErrorPage().

This is a prerequisite for being able to reliably send cookie-block
cookies on error pages (next patch).

Bug: T233594
Change-Id: Iaeaf5e55a5868e6be534ddda73f3b56b9d6ef8f0

4 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Thu, 26 Sep 2019 06:23:52 +0000 (08:23 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I49be2a7100bff079264a48b07e14b0edf30472be

4 years agoYou are reviewing an old revision should be a warningbox
jdlrobson [Mon, 9 Sep 2019 22:07:12 +0000 (15:07 -0700)]
You are reviewing an old revision should be a warningbox

It's warning you about the outdated nature of the content.

Given this message can be customised and thus styled, this will
have presentation issues on certain wikis (see screenshots).

If we go ahead with this change we'll probably want to give editors
a 2 weeks heads up via tech news.

https://phabricator.wikimedia.org/F30285062
https://phabricator.wikimedia.org/F30285074
https://phabricator.wikimedia.org/F30285084

Bug: T232415
Change-Id: I7dab00d5500937c03166398d92ea65a599bf3e22

4 years agoFill GenderCache for used pages in action=query&prop=fileusage
Umherirrender [Tue, 10 Sep 2019 17:42:58 +0000 (19:42 +0200)]
Fill GenderCache for used pages in action=query&prop=fileusage

Add an utility function
ApiQueryBase::executeGenderCacheFromResultWrapper

GenderCache stops working when there are more than 1000 cache missed
and returning the default value (T200238)
Fill the cache with all needed users avoids this behaviour
and it saves one query per user page.

Change-Id: I911dcb160a7b169091b9e8f66fb3908d0f2a1ba4

4 years agoMerge "Pass "services" through from coreRoutes.json to ObjectFactory"
jenkins-bot [Wed, 25 Sep 2019 15:48:02 +0000 (15:48 +0000)]
Merge "Pass "services" through from coreRoutes.json to ObjectFactory"

4 years agordbms: fix active GTID filtering in DatabaseMysqlBase
Aaron Schulz [Wed, 19 Jun 2019 08:10:15 +0000 (09:10 +0100)]
rdbms: fix active GTID filtering in DatabaseMysqlBase

In masterPosWait(), only $pos will have the known active domain/server set
since it usually comes from getMasterPos(). However, the reference position,
from getReplicaDB(), does not have the active domains set since querying
gtid_domain_id on the replica would be incorrect and getting a connection
to the master could be expensive.

Remove obsolete hacks for jobs that used to store master positions.

Also, use the regular Database::query() method for stylistic consistency.

Bug: T224422
Change-Id: I41bbb9f337e46451aa17788dbd446db4a213a5a7

4 years agoMerge "Updated wikimedia/avro from 1.8.0 to 1.9.0"
jenkins-bot [Wed, 25 Sep 2019 07:53:14 +0000 (07:53 +0000)]
Merge "Updated wikimedia/avro from 1.8.0 to 1.9.0"

4 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Wed, 25 Sep 2019 06:34:37 +0000 (08:34 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I27b08eefba6d5f7e8358fb0b2ea7f84552cb38c0

4 years agoMerge "resourceloader: Convert ImageModule test to stricter unit test"
jenkins-bot [Wed, 25 Sep 2019 06:10:12 +0000 (06:10 +0000)]
Merge "resourceloader: Convert ImageModule test to stricter unit test"

4 years agoMerge "Special:Contributions form collapsed when offset is defined"
jenkins-bot [Wed, 25 Sep 2019 02:29:14 +0000 (02:29 +0000)]
Merge "Special:Contributions form collapsed when offset is defined"

4 years agofilebackend: avoid use of wfWikiId() in FileBackendGroup
Aaron Schulz [Thu, 4 Jul 2019 08:13:29 +0000 (01:13 -0700)]
filebackend: avoid use of wfWikiId() in FileBackendGroup

Also warn when there is a risk of automatic backend domain collisions

Change-Id: Id488b5b947ef5fe8f4b0a8e96560bfd44fcc0327

4 years agoSpecial:Contributions form collapsed when offset is defined
jdlrobson [Thu, 28 Mar 2019 00:06:35 +0000 (17:06 -0700)]
Special:Contributions form collapsed when offset is defined

Form on Special:Contributions is collapsed while assuming
user is paging through results when target, start or end date
offset is defined.

Bug: T117736
Bug: T191868
Change-Id: I05030f1473b13bbe66bf56b9affc8d33f7210b81

4 years agoPass "services" through from coreRoutes.json to ObjectFactory
Tim Starling [Mon, 23 Sep 2019 05:30:46 +0000 (15:30 +1000)]
Pass "services" through from coreRoutes.json to ObjectFactory

Allows service injection into REST handlers.

Change-Id: I83d1780903febe0499c6a575a0e6725dc01e5b0c

4 years agoMerge "Replace infobox usages and extend successbox, warningbox and errorbox"
jenkins-bot [Wed, 25 Sep 2019 00:44:28 +0000 (00:44 +0000)]
Merge "Replace infobox usages and extend successbox, warningbox and errorbox"

4 years agoMerge "Make Special:Contributions use OOUI"
jenkins-bot [Wed, 25 Sep 2019 00:38:05 +0000 (00:38 +0000)]
Merge "Make Special:Contributions use OOUI"

4 years agoMerge "Avoid uses of wfWikiId() in maintenance/"
jenkins-bot [Tue, 24 Sep 2019 23:55:54 +0000 (23:55 +0000)]
Merge "Avoid uses of wfWikiId() in maintenance/"

4 years agoReplace infobox usages and extend successbox, warningbox and errorbox
Volker E [Tue, 17 Sep 2019 04:39:49 +0000 (21:39 -0700)]
Replace infobox usages and extend successbox, warningbox and errorbox

Adding optional $className parameter to provide additional
styling options.
Optional parameter $heading was introduced for MobileFrontend. Therefore
leaving inconsistent parameter order is necessary for the time being.

Bug: T232903
Change-Id: I5857b2c58a47a83156c32f086a73fe2bd48ab0c8