Commit graph

686 commits

Author SHA1 Message Date
Aryeh Gregor
6d80b6c082 Split some Language methods to LanguageNameUtils
These are static methods that have to do with processing language names
and codes. I didn't include fallback behavior, because that would mean a
circular dependency with LocalisationCache.

In the new class, I renamed AS_AUTONYMS to AUTONYMS, and added a class
constant DEFINED for 'mw' to match the existing SUPPORTED and ALL. I
also renamed fetchLanguageName(s) to getLanguageName(s).

There is 100% test coverage for the code in the new class.

This was previously committed as 2e52f48c2e and reverted because it
depended on e4468a1d6b, which had to be reverted for performance
issues. There should be no changes other than rebasing.

Bug: T201405
Change-Id: Ifa346c8a92bf1eb57dc5e79458b32b7b26f1ee8a
2019-10-07 15:20:52 -07:00
jenkins-bot
59a0942376 Merge "Kill the remaining usages of PHPUnit4And6Compat methods" 2019-10-06 10:47:37 +00:00
Daimona Eaytoy
8545ce131a Kill the remaining usages of PHPUnit4And6Compat methods
Bug: T192167
Change-Id: I1ea19e9b53683b7d32ff9836990ee73ab3e11104
2019-10-06 10:12:54 +00:00
Max Semenik
fb06e4cd85 Update tests to use PHPUnit 6 class names
Bug: T192167
Change-Id: I42b0c8908b4968b95b08f861a40af18dc79fa0a1
2019-10-06 01:01:28 -07:00
jenkins-bot
be07355873 Merge "Replace setExpectedException with two args" 2019-10-05 23:40:59 +00:00
jenkins-bot
31b87650c7 Merge "Drop strings for wgExternalDiffEngine, deprecated in 1.27 and 1.32" 2019-10-05 22:14:16 +00:00
Daimona Eaytoy
ef5ab69629 Replace setExpectedException with two args
Find: ^(\t*)(\$this->)setExpectedException\(\s+(\\?[a-z\\]+::class),\s+('(?:[^'\\]|\\')+'|"(?:[^"\\]|\\")+")\s+\);

Replace: $1$2expectException( $3 );\n$1\$this->expectExceptionMessage( $4 );

+broke long lines manually.

Bug: T192167
Change-Id: I5557b4372625def55a53ac637c2f980f51f12933
2019-10-05 16:14:05 +00:00
jenkins-bot
0b31b60e08 Merge "tests: Add type hints to ApiFormatBaseTest" 2019-10-05 00:30:09 +00:00
James D. Forrester
5b3bbd5ade Drop strings for wgExternalDiffEngine, deprecated in 1.27 and 1.32
Also move the 'unit' test into integration, given it tests code
using globals.

Change-Id: Ie039cae9b5d2870c18a6deefec9a73de522dd847
2019-10-03 22:09:38 +00:00
jenkins-bot
fb04cc5a7e Merge "tests: Fix broken assertion in ApiQueryAllPagesTest" 2019-10-01 13:31:19 +00:00
Thiemo Kreuz
d2227f415a tests: Fix broken assertion in ApiQueryAllPagesTest
The description had two errors:

* It talked about the presence of a specific value, but all it did
was checking a count.

* It was talking about the value *not* being there.

I just removed it. The possible error message from PHPUnit should be
good enough.

Change-Id: I7ea85dd37db8969bdd120f9600eeb6145e42eb1e
2019-09-30 16:22:54 +02:00
Thiemo Kreuz
cff596804a 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
2019-09-30 16:20:34 +02:00
jenkins-bot
a046c25c9d Merge "Speed up ApiQuerySiteinfoTest:testContinuation" 2019-09-27 13:42:20 +00:00
Antoine Musso
6d78b45e1b 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
2019-09-27 10:42:56 +02:00
Brad Jorsch
995aad376a API: Use ConvertibleTimestamp::setFakeTime for testing curtimestamp
Mainly to avoid spurious test failures when CI is being extremely slow.

Bug: T233752
Change-Id: Ie2cdd84dc076a852fbdce52f661ef893f9a2d45b
2019-09-26 12:35:00 -04:00
Thiemo Kreuz
400a3d5e22 tests: Add type hints to ApiFormatBaseTest
These help making the code much more readable and explorable. IDEs
now allow to ctrl+click most of the methods to jump to their source.

Change-Id: If1e55fa549de27be2549f245eca6938ecd5cfd82
2019-09-26 14:14:47 +02:00
jenkins-bot
095c50ade1 Merge "tests: Prefer assertSame() when comparing the integer 0" 2019-09-20 15:33:02 +00:00
Thiemo Kreuz
32a429e8c4 tests: Prefer assertSame() when comparing the integer 0
assertSame() is guaranteed to not do any type conversion. This can be
critical when acciden tially comparing, for example, 0 to 0.0.

Change-Id: Iffcc9bda69573623ba14af655dcd697d0fcce525
2019-09-19 15:35:23 +00:00
Brad Jorsch
02d6dc2e4f API: Use ApiBlockInfoTrait in ApiQueryUsers and AllUsers
For efficient bulk querying, this means that
ApiQueryBase::showHiddenUsersAddBlockInfo() needs to return everything
needed by DatabaseBlock::newFromRow().

Since we're rewriting it anyway, we may as well also move
ApiQueryBase::showHiddenUsersAddBlockInfo() out into a trait of its own.

Bug: T232021
Change-Id: I9c5b17a232ecbfbffefc7e40608cf5684ce8a644
2019-09-18 19:44:01 +00:00
DannyS712
3a2c7d1b5d Deprecate $wgSysopEmailBans
Bug: T232169
Change-Id: Iba2493eb2f49d32c5aa1b4da53c9c221847fb125
2019-09-17 08:23:04 +00:00
jenkins-bot
cfd56e52d9 Merge "Add namespace restrictions to meta=siteinfo&siprop=namespaces API result" 2019-09-16 22:47:52 +00:00
DannyS712
c711cb207f Add namespace restrictions to meta=siteinfo&siprop=namespaces API result
Bug: T73952
Change-Id: I6b4484fa9170ce39953a37eae2ffb859118fd1e5
2019-09-12 16:40:12 +00:00
jenkins-bot
1e2cce13ea Merge "Allow users who are partially blocked to delete revisions." 2019-09-11 08:24:11 +00:00
David Barratt
6b43064e5c Allow users who are partially blocked to delete revisions.
Currently, users who are partially blocked are prevented from deleting
revisions. The system should check to see if the user can edit the page.

Bug: T228486
Change-Id: Id08dfab9b0ebe9721d3552564ee9f9d1e1a4805a
2019-09-11 08:14:48 +01:00
jenkins-bot
6b89d180d9 Merge "Move callers away from Title::GAID_FOR_UPDATE" 2019-09-10 03:32:37 +00:00
jenkins-bot
7f1b20d832 Merge "Mark passing non ObjectFactory spec to ApiModuleManager as deprecated" 2019-09-09 20:25:30 +00:00
jenkins-bot
5a451fd01b Merge "Fix use of GenderCache in ApiPageSet::processTitlesArray" 2019-09-09 20:20:13 +00:00
Aaron Schulz
a5c7fd0db2 Move callers away from Title::GAID_FOR_UPDATE
These callers just need to load some data from DB_MASTER.
Subsequent code needing that latest title data should also use the
required flags, rather than relying on flakey global cache state.

Change-Id: I53248ea4b5bf1cd953f956c41b8244831ec5ef04
2019-09-09 13:19:08 -07:00
mainframe98
7b2fb55711 Mark passing non ObjectFactory spec to ApiModuleManager as deprecated
With Iee04afc27283547dd68d6db93f44ac2e0ebf1258, passing both the $class
and $factory parameter is deprecated in favor of just passing an
ObjectFactory spec as the third parameter.

Change-Id: I7b04d82c9daba52f5dc5e6c528739336279c7550
2019-09-09 21:59:03 +02:00
Umherirrender
91fd689add Fix use of GenderCache in ApiPageSet::processTitlesArray
Title::getPrefixedText was called before the GenderCache was set up,
which lazy loads the cache for each title,
resulting in one query per user title

Splitted the foreach to fill the cache at a better location

Added a test for ApiPageSet to test that the gender cache is filled

Bug: T200238
Change-Id: I7972dd1bf3731a92328caab20e70d7b9b82c1f7c
2019-09-09 19:54:07 +00:00
mainframe98
eb8823743c Use ObjectFactory to create API modules
This will allow constructing API modules that need services.

This overhauls some of the internals of the ApiModuleManager,
but the public interface remains unchanged.
The $class parameter of addModule, (now called $spec)
also allows passing an array with the spec of the module.
Note that this spec requires the attribute 'class' to be present,
even when 'factory' is specified. This is the same as before,
where $class was always required.

In a perfect DI world ObjectFactory would be injected into
ApiMain::__construct and ApiMain would pass that to its instance
of ApiModuleManager, but that is currently not possible, so for now
it is injected in ApiModuleManager by having ApiMain::__construct
call the service locator.

Bug: T222388
Change-Id: Iee04afc27283547dd68d6db93f44ac2e0ebf1258
2019-09-09 18:50:16 +00:00
Brad Jorsch
c29909e59f Mostly drop old pre-actor user schemas
This removes most of the pre-actor user and user_text columns, and the
$wgActorTableSchemaMigrationStage setting that used to determine
whether the columns were used.

rev_user and rev_user_text remain in the code, as on Wikimedia wikis the
revision table is too large to alter at this time. A future change will
combine that with the removal of rev_comment, rev_content_model, and
rev_content_format (and the addition of rev_comment_id and rev_actor).

ActorMigration's constructor continues to take a $stage parameter, and
continues to have the logic for handling it, for the benefit of
extensions that might need their own migration process. Code using
ActorMigration for accessing the core fields should be updated to use
the new actor fields directly. That will be done for in a followup.

Bug: T188327
Change-Id: Id35544b879af1cd708f3efd303fce8d9a1b9eb02
2019-09-09 11:38:36 -04:00
jenkins-bot
d4e0dbcf96 Merge "ApiBase: Always validate that 'limit' is numeric" 2019-09-04 15:15:43 +00:00
Bartosz Dziewoński
a9199bf854 ApiBase: Always validate that 'limit' is numeric
Bug: T231582
Change-Id: I956d4d623bfeace1b542039283e04a970fd40121
2019-09-04 00:27:12 +02:00
jenkins-bot
35ea4313e5 Merge "Rework ApiUploadTest" 2019-09-02 16:54:56 +00:00
Derick Alangi
52a21ace03 Fix method/function names case mismatch in core files
PHP doesn't care much but I think we humans do because we should
call methods by the name we give them. Method fixed are;

- isOk() -> isOK()
- setOk() -> setOK()
- teardown() -> tearDown()

Change-Id: I6b3f0cf3902887058efa426968da380803869e0b
2019-08-31 23:17:51 +00:00
Petr Pchelko
4129c7551e Rework ApiUploadTest
Bug: T28169
Change-Id: I923bf82d07db0efce1d0d14cf04e15bb58472f59
2019-08-30 13:50:50 -07:00
Aryeh Gregor
7fb4a95563 Remove unneeded overrideMwServices/resetServices
Change-Id: If6cbdec05b8f310ef3a0b4649aaa16d9fb80a047
2019-08-29 14:26:18 +03:00
Aryeh Gregor
47464abb4f Call resetServices() when setting globals in tests
Now that resetServices() will preserve (but reset) customized services,
it should be reasonably safe to call it every time globals are changed,
and much more effective than relying on tests to call it every time
themselves.

Depends-On: Iab8ea3a61bbc6803805d855ef23c071067646f71
Depends-On: I00e35ecea6a27468674b2a6e7d9d9eb6518e3bd5
Change-Id: Ie7a89f6ed7d52a0bc01672019ff92e7ee105a1f3
2019-08-29 14:26:13 +03:00
David Causse
bf9a7cad61 Hard deprecate new SearchResult() and introduce RevisionSearchResult
Transitional step for the transformation of SearchResult into an
abstract base class:
- RevisionSearchResult is introduced to behave like SearchResult
- methods are currently shared between  RevisionSearchResult and
  SearchResult in the RevisionSearchResultTrait

Bug: T228626
Change-Id: I13d132de50f6c66086b7f9055d036f2e76667b27
2019-08-27 08:27:28 -07:00
Amir Sarabadani
308e6427ae Revert "Make LocalisationCache a service"
This reverts commits:
 - 76a940350d
 - b78b8804d0
 - 2e52f48c2e
 - e4468a1d6b

Bug: T231200
Bug: T231198
Change-Id: I1a7e46a979ae5c9c8130dd3927f6663a216ba753
2019-08-26 18:28:26 +02:00
jenkins-bot
8d27bc18ec Merge "Split some Language methods to LanguageNameUtils" 2019-08-23 11:16:28 +00:00
Aryeh Gregor
2e52f48c2e Split some Language methods to LanguageNameUtils
These are static methods that have to do with processing language names
and codes. I didn't include fallback behavior, because that would mean a
circular dependency with LocalisationCache.

In the new class, I renamed AS_AUTONYMS to AUTONYMS, and added a class
constant DEFINED for 'mw' to match the existing SUPPORTED and ALL. I
also renamed fetchLanguageName(s) to getLanguageName(s).

There is 100% test coverage for the code in the new class.

Change-Id: I245ae94bfc1f62b6af75ea57525139adf2539fe6
2019-08-23 12:52:35 +03:00
Petr Pchelko
fd130247c2 Deprecate and replace usages of User:isAllowed{All,Any}
Bug: T220191
Change-Id: I197b8fadaa93e7b320fc19c10e3e09387fe09ad2
2019-08-21 18:36:16 -07:00
Petr Pchelko
5bebae7f96 Remove usages of deprecated User::getRights.
Bug: T220191
Change-Id: Ia7472cf61765fe5fee9ae72cfa9b7060565dbe87
2019-08-20 19:43:54 -07:00
Petr Pchelko
07f5046ede ApiFeedContributions: Throw if the username is invalid
Bug: T230239
Change-Id: I4141047c8f1ff73665b79a27a7c5eb995c52ea88
2019-08-13 10:35:49 -07:00
Umherirrender
2664eeb632 Clean up spacing of doc comments
Align the doc stars and normalize start and end tokens

Change-Id: Ib0d92e128e7b882bb5b838bd00c74fc16ef14303
2019-08-05 22:29:50 +00:00
Dayllan Maza
fd70b59dc5 Fix SpecialBlock validation for ipb_allow_usertalk
ipb_allow_usertalk should be saved as false only when:
    A block is sitewide
    A block is partial and there is a restriction on the User_talk namespace

Bug: T224468
Change-Id: Ic85368991b5905af1bab99b0cb5fcba0e993405e
2019-07-30 15:34:14 -04:00
David Causse
6af636fb03 Add ISearchResultSet
Bug: T228626
Change-Id: I3306bf6107c97dd58adf578fd965bd11a422627d
2019-07-22 18:27:39 +00:00
Timo Tijhof
6b3b05558f API: Fix 'user_id' field of ApiCSPReport
Was accidentally turned into an always-true boolean in 5f343617,
due to confusion with JavaScript's default '||' operator.

Change-Id: I24071e22f8bb7a296ae138303f63acdb8ea4950a
2019-07-19 22:58:39 +01:00