Commit graph

4804 commits

Author SHA1 Message Date
Huji Lee
edabe5516e Assert that blocks were inserted successfully in UserTest
Bug: T176103
Change-Id: Ia8afc37605a844590abe49eaad1e806bd2c7f6f8
2017-09-28 15:04:49 +00:00
Huji Lee
f05821e87c Do not run CollationFaTest if 'intl' is not loaded
Bug: T176040
Change-Id: I6b19bf1123d4dca5a1c8e002c0de65bab2138180
2017-09-16 16:30:18 -04:00
jenkins-bot
6559312106 Merge "Improve flaky SiteStatsTest" 2017-09-14 02:35:10 +00:00
jenkins-bot
afbf5e7899 Merge "Do not double decode HTML entities for IDs" 2017-09-13 17:50:37 +00:00
jenkins-bot
9f1169147d Merge "Remove @covers from private Sanitizer method" 2017-09-12 23:43:51 +00:00
jenkins-bot
616913584d Merge "Enable recursive partials in TemplateParser" 2017-09-12 20:08:47 +00:00
Bartosz Dziewoński
a5c3d029c5 Reduce code duplication for parsing messages into dropdown menus
The same behavior was implemented by Xml::listDropDown(),
Article::confirmDelete() and HTMLFormField::getOptions().
A new function Xml::listDropDownOptions() is added and
all three are changed to use it.

Additionally:
* Xml::listDropDown() now uses XmlSelect internally to generate the
  dropdown HTML.
* Xml::listDropDownOptionsOoui() is introduced to handle converting
  the existing format to the OOUI format, which was previously
  duplicated in Article::confirmDelete() and HTMLFormField::getOptionsOOUI().
* This change allows HTMLForm 'select' fields (HTMLSelectField) to
  support nested options (optgroups) in OOUI mode. This is a
  prerequisite for T117781.

Bug: T117781
Change-Id: I0a088f61eb32ec59677113583c7ecdcbc3fd2af0
2017-09-12 20:49:20 +02:00
Reedy
e1a849cfd4 Remove @covers from private Sanitizer method
Breaks mediawiki-core-code-coverage

https://integration.wikimedia.org/ci/job/mediawiki-core-code-coverage/3003/console

Change-Id: I3204289c1d45e5ea0bee5c4bb6869434152e6017
2017-09-12 16:40:34 +00:00
Brad Jorsch
d0b093d4bd Improve flaky SiteStatsTest
SiteStatsTest::testJobsCountGetCached() is somewhat flaky in that if it
runs after a test that adds a page (thereby producing htmlCacheUpdate
and recentChangesUpdate jobs) but doesn't have the CI framework reset
the `page` tables (which has the side effect of clearing all such jobs),
it will fail.

This change manually clears those jobs so it doesn't depend on test
ordering.

Change-Id: I1277e633c81b29bda7564fa12d23f13ded7298c7
2017-09-12 11:48:41 -04:00
Fomafix
b6c895ddc5 Do not double decode HTML entities for IDs
* in links (T103714)
* in indicators (T104196)

This change removes the automatic Sanitizer::decodeCharReferences from
Sanitizer::escapeId and Sanitizer::escapeIdInternal. Where decoding of
HTML entities are wanted an explicit call to
Sanitizer::decodeCharReferences is added.

Explicit decode HTML entities in non local autocomments. (T104311)

Bug: T103714
Bug: T104196
Bug: T104311
Change-Id: I88e8e2077e6f5eec2b232391f7818370894a62dc
2017-09-12 15:42:17 +02:00
Max Semenik
7ad5282938 Don't percent-encode HTML5 IDs
During the TechCom meeting, it was decided this is the better way.

Bug: T152540

Change-Id: I6c3ec1c407225b4e925b7373bf52208e2f6b6c4a
2017-09-11 18:22:04 -07:00
jenkins-bot
2b28851462 Merge "build: Updating mediawiki/mediawiki-codesniffer to 0.12.0" 2017-09-10 23:06:47 +00:00
jenkins-bot
45a6ddfcd0 Merge "Improve some parameter docs" 2017-09-10 22:57:48 +00:00
Umherirrender
86463f3df6 build: Updating mediawiki/mediawiki-codesniffer to 0.12.0
Change-Id: Iefaae5043fa77d5d556c31079549dab8f61bd3ef
2017-09-10 21:11:37 +02:00
Umherirrender
f739a8f368 Improve some parameter docs
Add missing @return and @param to function docs and fixed some @param

Change-Id: I810727961057cfdcc274428b239af5975c57468d
2017-09-10 20:32:31 +02:00
jenkins-bot
58b05b9854 Merge "Replace wfShellExec() with a class" 2017-09-10 11:37:53 +00:00
Gergő Tisza
49350108bf Enable recursive partials in TemplateParser
Recursive partials are the only way to handle tree-like structures
such as nested lists. Allow setting FLAG_RUNTIMEPARTIAL in LightnCandy
so they can be used.

Since this has a slight performance impact (makes partial invocations
evaluation-time functions calls instead of compilation-time transclusions)
make it optional.

Change-Id: Ie37105a9f1ff92e1a79bfcd9f8578965e3d347f0
2017-09-10 05:51:07 +00:00
Umherirrender
e754f6803f Fix return in ParserTestTopLevelSuite::debug
wfDebugLog does not return anything

Change-Id: I85274a85342036b76a72ba82bb7de1d05382cf14
2017-09-09 22:50:23 +02:00
Max Semenik
77ce3b98a0 Replace wfShellExec() with a class
This function has gotten so unwieldy that a helper was
introduced. Instead, here's this class that makes
shelling out easier and more readable.

Example usage:
  $result = Shell::command( 'shell command' )
       ->environment( [ 'ENVIRONMENT_VARIABLE' => 'VALUE' ] )
       ->limits( [ 'time' => 300 ] )
       ->execute();

  $exitCode = $result->getExitCode();
  $output = $result->getStdout();

This is a minimal change, so lots of stuff remains
unrefactored - I'd rather limit the scope of this commit.
A future improvement could be an ability to get stderr
separately from stdout.

Caveat: execution errors (proc_open is disabled/returned error) now
throw errors instead of returning a status code. wfShellExec() still
emulates this behavior though.

Competing commit: I7dccb2b67a4173a8a89b035e444fbda9102e4d0f
<legoktm> MaxSem: so you should continue working on your patch and I'll
          probably refactor on top of it later after its merged :P

Change-Id: I8ac9858b80d7908cf7e7981d7e19d0fc9c2265c0
2017-09-08 21:49:49 -07:00
daniel
fdf83070cd Add Title::isValid method
Make the notion of Title objects representing invalid titles explicit.

Bug: T165149
Change-Id: I89aaabdff9614fe63bd1244784a1d677dbc26f9e
2017-09-08 22:56:42 +00:00
jenkins-bot
ca01c9ff7f Merge "Title: Make getOtherPage() check canHaveTalkPage()" 2017-09-07 09:38:24 +00:00
Kunal Mehta
1f53b6ee6a Title: Make getOtherPage() check canHaveTalkPage()
Practically this doesn't make any difference, but once it's possible for
namespaces to not have talk pages, this function would have returned an
invalid Title.

Bug: T165149
Change-Id: I940433c22193d406d8b4a6cab0e6ad37e88e62c6
2017-09-06 19:52:34 -07:00
MusikAnimal
d09554b6ef Add basic IP range support to Special:Contributions
This works by using the new table introduced with T156318.

The only thing that differs from normal Special:Contribs is we are
showing the IP address next to each entry. This is it how it is
displayed if you request to see newbie contributions:
https://en.wikipedia.org/wiki/Special:Contributions?contribs=newbie

For the time being, Special:DeletedContributions does not support
IP ranges. Various other irrelevant links such as Uploads and Logs
are also hidden.

Refer to P4725 for a way to automate creation of edits by random
IPs in your dev environment.

IP::isValidBlock() has been deprecated with this dependent change:
https://gerrit.wikimedia.org/r/#/c/373165/

Bug: T163562
Change-Id: Ice1bdae3d16cf365da14c6df0e8d91d2b914e064
2017-09-05 16:15:33 -04:00
jenkins-bot
a17d459d4b Merge "Handle comment truncation in CommentStore" 2017-09-05 18:39:21 +00:00
Reedy
a8c17bbb99 Fix you -> your in 'pagedata-text' message
Bug: T174961
Change-Id: I7cfcfca4decac3e2afc09e58959a001ac13d3d49
2017-09-04 16:33:38 +00:00
Matěj Suchánek
c2720d5686 Drop compatibility with PHP 5.3
Since 5.4, $this works inside closures.

Change-Id: I6987f76a1e33d6d7ab020a57186e5477186bbf2e
2017-09-02 20:39:13 +02:00
Brad Jorsch
6ec1a31502 Handle comment truncation in CommentStore
Since the caller doesn't (and shouldn't) know whether CommentStore is
using the old or the new schema, it should leave truncation of comments
to CommentStore.

Change-Id: I92954c922514271d774518d6a6c28a01f33c88c2
2017-09-01 15:03:45 -04:00
Brad Jorsch
01a10dba5a Remove reference to deprecated IDatabase->nextSequenceValue()
The method was deprecated and made unnecessary in Ib308190c.

Change-Id: I1729ac0b3a88270a4c2f064187a2472112aaeb1e
2017-09-01 12:28:39 -04:00
Tim Starling
95bf0043ef EtcdConfig: allow slashes in config key names
Allowing slashes in config key names allows us to trivially support the
proposed hierarchical structure with a single EtcdConfig object, by
fetching values with the relevant prefixes on startup.

Bug: T156924
Change-Id: Ica0914e61baba9c0462481925be15d79b66dc342
2017-09-01 13:42:28 +10:00
Brad Jorsch
91b86399b1 Fix various PostgreSQL failures
* Fix schema for image_comment_temp.
* Provide values in CommentStoreTest::provideInsertRoundTrip() for
  columns where the PG schema doesn't have a default value but the MySQL
  schema does.
* Call nextSequenceValue() from CommentStoreTest::testInsertRoundTrip().
* Correctly handle $options being the string 'FOR UPDATE' in
  DatabasePostgres::selectSQLText()
* Correctly handle the initial table in DatabasePostgres::selectSQLText() FOR
  UPDATE mangling.
* Correctly handle aliases in DatabasePostgres::selectSQLText() FOR
  UPDATE mangling.

Tests in PG are still going to be broken thanks to the fact that
nextSequenceValue() and insertId() can't be separated by another
nextSequenceValue()/insertId() pair. That should be taken care of by
T164898/T164900.

Change-Id: Ia770a003ca9170ab8bcc1436d8afe30700e00ada
2017-08-30 17:18:29 -04:00
Kunal Mehta
6eba88f24c parserTests: Improve class name guessing for PHPUnit
Since we know the extension name, actually use it instead of trying to
guess it based on the directory name.

The new directory layout for autodiscovery encourages "tests/parser" so
the directory one level up is unlikely to be the extension name.

Change-Id: I352944a84197acba6fe425b6044b17c520e263d7
2017-08-30 05:53:28 +00:00
Brad Jorsch
11cf01dd9a Add comment table and code to start using it
A subsequent patch will remove the old columns.

Bug: T166732
Change-Id: Ic3a434c061ed6e443ea072bc62dda09acbeeed7f
2017-08-30 15:05:00 +10:00
MusikAnimal
a23183010e Rename IP::isValidBlock to isValidRange, deprecating the former
This is to remove confusion with the MediaWiki Block class.

All instances of isValidBlock within MediaWiki core have been updated.

Usage of this function will be more widespread with this patch:
https://gerrit.wikimedia.org/r/#/c/349457/

Change-Id: Ice1bdae3d16cf365da14c6df0e8d91d2b914e067
2017-08-29 18:26:12 +00:00
jenkins-bot
be80e2614c Merge "Consistent behavior of read-only reason" 2017-08-28 16:36:24 +00:00
Florian Schmidt
38fce189c4 Consistent behavior of read-only reason
Before this commit, the reason set in the global $wgReadOnly was differently handled
on different special pages. While on most of them, like Special:Upload, the reason
is allowed to have HTML, which can be used in Wikitext, too, Special:CreateAccount
always outputted an escaped version of this reason.

Most special pages uses the ReadOnlyError exception to print a read-only error,
however, AuthManager uses Status objects to communicate between the backend and the
frontend. Therefore the same message and parameters were wrapped in a Status object
and, in the frontend, directly passed to the constructor of ErrorPageError. Unfortunately,
Status::getMessage() escapes the parameters of a message, which is the reason, why the
wiki is read-only. To bypass this restriction, AuthManager now creates a Message object
directly, does not escape the reason, and uses the resulting object to create a Status
object from.

Now the reason is not escaped on Special:CreateAccount anymore, like on most other
special pages.

The read-only message on the protection form is, also before this commit, not escaped and
already displayed correctly, as the read-only is checked in the constructor of the
protection form already and, if the Wiki is read only, handled as a permission error and
already displayed correctly. This commit fixes the behavior of WikiPage in case of it's used
somewhere else, subclassed or if the check in the frontend will be removed and the Status of
WikiPage will be used.

Bug: T157036
Change-Id: Idbfe556fcb90f8bda8fae9d728ca9dee5ea02f67
2017-08-28 17:51:17 +02:00
jenkins-bot
a8ec960e9d Merge "Produce RDF dump of all categories and subcategories in a wiki." 2017-08-28 11:01:58 +00:00
Stanislav Malyshev
d9bb673b72 Produce RDF dump of all categories and subcategories in a wiki.
Example:
http://en.wiki.local.wmftest.net:8080/wiki/Category:Ducks> a mediawiki:Category ;
        rdfs:label "Ducks" ;
        mediawiki:isInCategory <http://en.wiki.local.wmftest.net:8080/wiki/Category:Birds> .

Bug: T157676
Change-Id: I59b9603581b37af59d17dd6c38247c85aee44911
2017-08-28 00:30:35 -07:00
jenkins-bot
0a176a1e01 Merge "Avoid preemptive DB replication waits for farm cross-wiki redirects" 2017-08-25 23:13:52 +00:00
Gergő Tisza
5e76403387 Make API multivalue limits configurable
Adds two new parameter settings, ApiBase::PARAM_ISMULTI_LIMIT1
and PARAM_ISMULTI_LIMIT2 for configuring the maximum number of values
that can be contained in a multivalue field (for unprivileged and
apihighlimits users, respectively). When present, these replace the
default 50/500.

Change-Id: Ic1b1bcc7ff556b7762c8d2375d910cc4fcb43087
2017-08-24 02:08:50 +00:00
jenkins-bot
b95ca29602 Merge "Unit tests for CollationFa (0bfcbd724)" 2017-08-23 22:46:40 +00:00
Aaron Schulz
15cb57b3b5 Avoid preemptive DB replication waits for farm cross-wiki redirects
This previously only worked if $wgLocalVirtualHosts was set, which
was too specific to check and not used by WMF. Use the more generic
WikiMap class.

Two methods have been added there to do the work of enumerating
canonical wiki farm URLs and checking them against a given URL.

Bug: T172357
Change-Id: Id2415bab5d7f5a08b9f536858c32d329138384a2
2017-08-23 15:37:35 -07:00
jenkins-bot
19a84db108 Merge "Revert "registration: Only allow one extension to set a specific config setting"" 2017-08-22 20:52:30 +00:00
Thcipriani
236456777b Revert "registration: Only allow one extension to set a specific config setting"
Breaks mergeMessageFileList which means scap can't run in beta.

This reverts commit 50d7546057.

Change-Id: Idb65f1098abce28d49ebbcc8254c0976b6861c59
2017-08-22 20:40:15 +00:00
jenkins-bot
d5618d1e0f Merge "registration: Only allow one extension to set a specific config setting" 2017-08-22 19:35:26 +00:00
Florian Schmidt
50d7546057 registration: Only allow one extension to set a specific config setting
ExtensionProcessor would previously just blindly overwrite duplicate
config settings, which ends up depending upon load order.

It's relatively hard to debug since it is silently overwritten. This now
throws exceptions in case of duplicate config settings.

This will also have some side-effects of catching people putting things
like "ResourceModules" in their "config" section when it should be a
top-level item.

Bug: T152929
Change-Id: Iaef32efab397e82ff70ddca8ac79c545c5b7d2bb
2017-08-22 02:45:24 -07:00
Umherirrender
3f1a52805e Use short type bool/int in param documentation
Enable the phpcs sniffs for this and used phpcbf

Change-Id: Iaa36687154ddd2bf663b9dd519f5c99409d37925
2017-08-20 13:20:59 +02:00
Aaron Schulz
99c80a8fc7 rdbms: Support secondary autocommit connections in LoadBalancer
This is useful for things like SqlBagOStuff and JobQueueDB
being able to write in auto-commit mode while the main
transaction round still goes on.

SqlBagOStuff already had this sort of logic.

JobQueueDB now also takes this approach so it does not have to
defer insertion except for sqlite. This makes callers more likely
to know when insertion failed or not.

Make sure LoadBalancer sets "master"/"replica" LB info itself;
this fixes a bug found in the new tests.

Bug: T140338
Bug: T42451
Change-Id: I4199a9598d7afbf976a6efa8ed84b85b56da02bd
2017-08-18 01:28:34 +00:00
Umherirrender
9b8b314992 Fix spacing for @param and indent of function comments
In phpcs.xml rename renamed sniffs and add the failing sniffs,
because now the whole sniff is no longer excluded.

Change-Id: If5b0bd16028761abc2c47ace9e97d37ad14bb36f
2017-08-15 14:33:29 +00: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