Commit graph

96 commits

Author SHA1 Message Date
Kunal Mehta ffd5b0bd4a Simplify creating JSON pages in the Module namespace
Pages ending with a ".json" suffix in the Module namespace will use the
built-in JSON content model by default. Previously editors had to use
Special:ChangeContentModel to get a JSON page, which requires the
"editcontentmodel" userright that is not granted to a wide set of users
by default.

Bug: T144475
Change-Id: I1546fcad823a55a8c5a93177df8715844de1e87c
(cherry picked from commit 4ccebcdf4b)
2022-11-08 10:05:34 +00:00
Kunal Mehta a839ba855d Add mw.loadJsonData()
Backporting this so the LTS release has forwards compatibility with
Wikipedia templates.

mw.loadData() allows for optimizing the loading Lua tables by requiring
only one parse and lookup. However it's often easier for people to
write/maintain bulk data in JSON rather than Lua tables.

mw.loadJsonData() has roughly the same characteristics as mw.loadData()
and it can be used on JSON content model pages in any namespace.

As noted on the linked bug report, it's possible to already implement
this by writing a wrapper Lua module that loads and parses the JSON
content. But that requires a dummy module for each JSON page, which is
just annoying and inconvenient.

Test cases are copied from the mw.loadData() ones, with a few omissions
for syntax not supported in JSON (e.g. NaN, infinity, etc.).

Bug: T217500
Change-Id: I1b35ad27a37b94064707bb8c9b7108c7078ed4d1
(cherry picked from commit 1000d322e5)
2022-11-07 07:34:42 +00:00
Kunal Mehta d51ae237ad Add strict.lua to replace "Module:No globals"
This is being backported because many users copy lua modules from
Wikipedia, and thus benefit from forwards-compatibility.

For the most part, it is a good idea to avoid global variables and use
`local` variables instead. Quoting from the ScopeTutorial[1], "The
general rule is to always use local variables, unless it's necessary for
every part of your program to be able to access the variable (which is
very rare)."

Wikimedia module authors have written "Module:No globals", which errors
on the use of any global variable. On the English Wikipedia, this is
used on 32% of pages (18 million). Wikidata[2] indicates that it's been
copied to 334 other wikis.

Lua itself distributes an extra named "strict.lua"[3], which is what
this is based off of. Similar to bit32.lua, this is a pure-Lua library
that can be imported/enabled with `require( "strict" )` at the top of a
module.

The two changes I made from Lua's strict is to exempt the `arg` key,
which is used internally by Scribunto, and remove `what()`, since we
don't enable access to `debug.getinfo()` for security reasons.

[1] https://lua-users.org/wiki/ScopeTutorial
[2] https://www.wikidata.org/wiki/Q16748603
[3] http://www.lua.org/extras/5.1/strict.lua

(Cherry-picked from 829c53ef05)

Bug: T209310
Change-Id: I46ee6f630ac6b26c68c31becd1f3b9d961bcab29
2022-11-06 21:58:19 -08:00
Subramanya Sastry 7170021941 Update failing language tests
* Ia3cc8f95833cd0e9ae985528f8e72396111c4504 in core changed
  localizations for kaa language

Followup-To: Ia3cc8f95833cd0e9ae985528f8e72396111c4504
Change-Id: Ie1b686b65f008c0cd5f4017102699e51f6960b39
2022-08-29 16:20:59 -05:00
Subramanya Sastry 8adcc1668f Update failing language tests
* Core changed these kaa localizations in
  Ie0ce427238412d3badb247d2e2fae9bc9f57fbeb

Followup-To: Ie0ce427238412d3badb247d2e2fae9bc9f57fbeb
Change-Id: I7fc0334bf78222f2d7c1b636a70b3c60f899363c
2022-08-12 17:57:21 +00:00
Lucas Werkmeister (WMDE) 18d122b60d Revert "Namespace LuaCommon"
This reverts commit 62e1fb0b5f.

Reason for revert: caused several errors:
* unnamespaced HooksTest collides with core’s class of the same name
* Scribunto_LuaError renamed without class alias despite being used in Wikibase

Bug: T314464
Change-Id: I8b151327236bf86945e59823fba155497e4b3fc6
2022-08-03 10:03:12 +00:00
Reedy 62e1fb0b5f Namespace LuaCommon
Change-Id: Ib6e912e71fb797942aca4b4f22eb0ff9e005a662
2022-08-03 06:03:57 +00:00
Reedy c479ad6f86 Namespace LuaStandalone engine
Change-Id: I7d3f77a56c8b74e0481197224006f19ff4c9d108
2022-08-03 06:03:48 +00:00
Reedy 1628cfa367 Namespace LuaSandbox engine
Change-Id: I485401c202057ae0fea7226ab21e68ce1c7d40c8
2022-07-30 22:51:42 +01:00
Reedy 0eaa8edfb0 Fix MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment
Change-Id: Ia2148daf26cb167cbe71a0ab419473a31d97a506
2022-07-30 18:56:55 +00:00
Mark A. Hershberger 2c121b4543 Add type hints for iterator implementations
Bug: T289879
Change-Id: I0733655b8519099094551bb73b376d2676c255ea
2022-07-12 14:46:18 +00:00
Mark A. Hershberger 9803facc01 UstringLibraryNormalizationTestProvider: Fix 'destory' typo for 'destroy'
Change-Id: Ieb4a0c6c68f0641b45982f3349aa3e99fe7eb07d
2022-07-12 14:44:38 +00:00
Thiemo Kreuz 0860648680 Remove unused defaults from class properties
As well as:
* Remove redundant `=== null`. The `isset()` before does this already.
* Use convenient PHPUnit shortcuts.

Change-Id: Ibef571e53a48c443d7798fee8abbc2624fbad225
2022-05-21 18:45:52 +00:00
Tim Starling 2c6d18db9b In tests, replace wgHooks with setTemporaryHook
Change-Id: Ib3d65bcd209e1a9a518e70d43e367acb3a5d4fab
2022-05-16 12:46:47 +00:00
Reedy 8e73003fee Start namespacing extension
Change-Id: Ib632434861c2df03dfcddbd195f556c937812196
2022-05-12 01:33:11 +00:00
Reedy 6f411e3921 Minor cleanup
Change-Id: Ic81ab852c43e98370097d01c3b6d6cddee7a5850
2022-04-16 22:09:10 +01:00
Ammarpad c51b6efec1 Revert "Add test for pageLanguage property"
This reverts commit 9adf9ef66c.

Reason for revert: The feature it's testing has been reverted in Ic6c0e31c8247f7d89824d20f28fb0aa56d6ed749

Change-Id: I74b4273bf246560b31911f8953974b9653217ec9
2022-02-09 02:10:18 +00:00
Tim Starling 9adf9ef66c Add test for pageLanguage property
Bug: T161976
Change-Id: I7008b80e9724955cb8a716311438280029e05a52
2022-01-25 23:35:28 +00:00
Alexander Vorwerk a34a51fa47 Avoid using WikiPage::factory()
WikiPage::factory() is deprecated since 1.36 and should be replaced
with WikiPageFactory::newFromTitle().

Bug: T297688
Change-Id: Ie333c616c46a71430f8c18db85bdd64c13379ef0
2021-12-18 16:33:19 +00:00
C. Scott Ananian 1af638f8db Replace use of deprecated ParserOutput::addWarning()
Bug: T293515
Depends-On: I6a7c04c67ac586ab00d4edcbb3d09485a7794e23
Change-Id: Ib51c75e38b9bf490b4ded481ee92ede0949f272e
2021-10-16 01:17:20 +00:00
C. Scott Ananian c0963eced7 Replace use of deprecated ParserOutput::{get,set}Flag()
Depends-On: I39bc58d207836df6f328c54be9e3330719cebbeb
Change-Id: I906a5970088965c187bf653267ac4b369dac9b9b
2021-10-15 23:41:06 +00:00
daniel 1a24ade06c Use mock restriction store in tests
This fixes an incompatibility introduced by Ia73ea587586cb69eb5.

Depends-On: I1f24703b80566220ac6fe8ee500e838ed7fd29af
Change-Id: I31ca0a8987f9694bc3b312a48c2c111ceda6fa3e
2021-09-10 14:50:04 +00:00
libraryupgrader 29f4c03de1 build: Updating dependencies
composer:
* mediawiki/mediawiki-codesniffer: 36.0.0 → 37.0.0

npm:
* postcss: 7.0.35 → 7.0.36
  * https://npmjs.com/advisories/1693 (CVE-2021-23368)
* glob-parent: 5.1.0 → 5.1.2
  * https://npmjs.com/advisories/1751 (CVE-2020-28469)
* trim-newlines: 3.0.0 → 3.0.1
  * https://npmjs.com/advisories/1753 (CVE-2021-33623)

Change-Id: If0310d25d0380a6d4e936e666729e6a65a90a710
2021-07-23 21:34:32 +00:00
DannyS712 cd885e83cb Use WikiPage::doUserEditContent() instead of ::doEditContent()
::doUserEditContent() is available since 1.36 as a replacement
for ::doEditContent(), which has been deprecated. Bump the
required version of MediaWiki to 1.36 accordingly.

Results in passing a user where previously the fallback
to $wgUser was being used.

Bug: T255507
Change-Id: I11e4a305e66935ea1d1b4692561fb5d49871a729
2021-06-24 05:58:13 +00:00
libraryupgrader 31335d4602 build: Updating dependencies
composer:
* mediawiki/mediawiki-codesniffer: 35.0.0 → 36.0.0
* php-parallel-lint/php-parallel-lint: 1.2.0 → 1.3.0

npm:
* grunt: 1.3.0 → 1.4.0
* lodash: 4.17.19 → 4.17.21
  * https://npmjs.com/advisories/1673 (CVE-2021-23337)
* hosted-git-info: 3.0.7 → 3.0.8
  * https://npmjs.com/advisories/1677 (CVE-2021-23362)
* postcss: 7.0.35 → 8.2.15
  * https://npmjs.com/advisories/1693 (CVE-2021-23368)

Change-Id: If78d89f465be14d63824f2701daca5a257edba30
2021-05-13 08:26:27 +00:00
C. Scott Ananian 96da9fe0e9 Replace use of Parser::$mStripState, deprecated in 1.35
The replacement, Parser::getStripState(), was added to MediaWiki in
1.34.

The extension.json for this extension already requires MW >= 1.35.

Bug: T275160
Change-Id: I062ac8b69756a7ad35d8cc744b4735fd2e70f13e
2021-02-25 03:03:29 +00:00
Umherirrender f129988d82 Improve function and property documentation in tests
Change-Id: I81e957035175f9fe0dad9494c92ab342283df983
2021-01-29 08:06:12 +00:00
C. Scott Ananian 93662aabf1 TitleLibraryTest: Don't use deprecated InterwikiLoadPrefix hook
Use $wgInterwikiCache to setup interwiki prefixes for testing instead
of the deprecated InterwikiLoadPrefix hook.  This simplifies the test
setup quite a bit as well.

Bug: T270444
Change-Id: Icb772fcee07103a06548011ddd653487477ebfcc
2020-12-22 20:41:24 +00:00
Umherirrender cb39fead91 Add missing @var and improve documentation
Change-Id: Idb7ff848ba702eac2cde31c6198a70311e3bdb69
2020-12-22 01:15:00 +00:00
Derk-Jan Hartman d65c61e49b Error message for formatNum should not refer to formatDate
These new error messages were referring to formatDate instead of
formatNum.

Change-Id: Ic20a5a5515ee55d46087449627138cc779909ec3
Follow-up: Ib7706ad40f7ee2da6ab7c6b2dab6ae8d129dab52
Bug: T268758
2020-11-26 14:12:15 +01:00
DannyS712 d3e3124652 Fix a typo: emtpy -> empty
Bug: T201491
Change-Id: I447b318a7d898a083fc4f9129efbf4cac5517972
2020-11-22 14:22:33 +00:00
libraryupgrader 14046a6414 build: Updating mediawiki/mediawiki-phan-config to 0.10.4
Additionally, unbreak master build after core change T10327.

Change-Id: I8fb240c9b8291d907b857f17d6f4960a24de2ef7
2020-11-20 17:01:25 +00:00
C. Scott Ananian 078253bd06 library: Lua formatNum should check that the value is not infinity or NaN
The core formatNum method only works on strings which pass `is_numeric`,
not NaN and +/- infinity.

Bug: T267587
Change-Id: Ib7706ad40f7ee2da6ab7c6b2dab6ae8d129dab52
2020-11-16 17:44:17 +00:00
Reedy 664c866980 Use tab indenting consistently
Change-Id: I7387882d8ece9bb7f2eac8891c010a2fcb0a57b0
2020-10-23 16:39:12 +01:00
C. Scott Ananian 6a999fb6aa Fix a lua test which uses a deprecated Message formatter feature
Message formatters which expect numeric arguments should not be passed
non-numeric arguments; they will emit a deprecation message if they are
given such (core commit 448a51ae083abc1ca9fccb51a5a533e0fe9f8b71).

Change-Id: I431538873083e14dbd85cb1c8889c3a8350aa75a
2020-10-23 11:10:16 -04:00
Umherirrender 99ab75226b phpcs: Fix SuperfluousVariadicArgComment
Change-Id: Ib14f2aa18e43ef7ae621b6281fecd47e8bd3899c
2020-06-27 13:45:24 +02:00
libraryupgrader d10519de40 build: Updating mediawiki/mediawiki-codesniffer to 31.0.0
The following sniffs are failing and were disabled:
* MediaWiki.Commenting.VariadicArgument.SuperfluousVariadicArgComment

Additional changes:
* Replaced "jakub-onderka" packages with "php-parallel-lint".

Change-Id: I97d1101854d87f7d0d4c8f14b629bee75df6030d
2020-05-30 06:09:47 +00:00
Brad Jorsch 34fc672f6d Add tests and type checking for mw.addWarning()
Testing was overlooked when this was added in Ibdd2506f.

Change-Id: Ie17020e3082668180dfa1d6532946891ea7951ea
2020-05-08 17:05:11 +00:00
libraryupgrader 9facd741cc build: Updating dependencies
composer:
* mediawiki/mediawiki-codesniffer: 29.0.0 → 30.0.0

npm:
* eslint-config-wikimedia: 0.15.0 → 0.15.3
* grunt-stylelint: 0.14.0 → 0.15.0
* stylelint-config-wikimedia: 0.9.0 → 0.10.1

Change-Id: I684372efb0248862700184546a5172bfd6d81ae0
2020-04-22 19:07:11 +00:00
C. Scott Ananian a73ac7bd4e Don't invoke Parser::__construct directly
This has been deprecated since 1.34.  Modern code should use the Parser or
ParserFactory service.

Change-Id: I74efda708470efeb82f8f80346ec1ee7e9fd8f2b
2020-04-16 16:32:58 -04:00
James D. Forrester 4a9b2e61e7 tests: Mark non-LuaSandbox tests as @group Standalone
This means that these tests are only run for test runs on this repo,
and will not be run when this repo is included in CI as a dependency
of any other repos, or the Wikimedia-wide gate. Any changes to other
repos are implicitly assumed to be unable to break these tests.

Bug: T125050
Change-Id: I7b77c0627f3fbe9dfbbf3d63cbd57e943d328555
2020-04-09 12:59:56 -07:00
Umherirrender 92587641dc Use MediaWikiServices::getContentLanguage()
This required MediaWiki 1.32

Change-Id: Iff717eba8f4fad1e80229ebcf317ceec81667846
2020-03-16 17:58:26 +00:00
DannyS712 fb850e853c Don't fall back to global $wgUser when creating ParserOptions
Pass a user when relevant, or use ParserOptions::newFromAnon()

Bug: T246861
Change-Id: I44adb6d5c037de2fb05573cde3c7356cb73e8b42
2020-03-07 02:33:24 +00:00
Brad Jorsch 66f83331db Record vary-page-id when ID is accessed via mw.title
This triggers a needed reparse when a new page is created using a module
that accesses the page ID.

Bug: T237746
Change-Id: I5564c2e896dd2a025c5a886ca478c377fac83e74
2020-02-13 17:24:41 +00:00
Brad Jorsch 633ff1ff2d LuaStandaloneInterpreterTest: Use assertEqualsWithDelta
Using the $delta parameter to assertEquals was deprecated in PHPUnit 8.

Change-Id: Iab5ead5a075bf7481a972b3b9e94cc3e754f1cd3
2020-01-23 11:53:33 -05:00
Daimona Eaytoy 2e1306fa45 Kill hack for the PHPUnit migration
Bug: T192167
Change-Id: Ic86f6fc67555d2e678ce46f6ad34a25236b560af
2020-01-23 16:22:40 +00:00
Brad Jorsch 3a19bb8b0c Document a lot of methods
Clear up a bunch of phpcs ignores by documenting many methods.

Also remove Scribunto_LuaError::setLineMap(), which has apparently never
been used since it was added in Ia51f439e.

Change-Id: I763bcdbc7edbbb8e4600495a03acca3439fc0ec9
2020-01-17 23:03:03 +00:00
Max Semenik 0d6a4da3d5 Make tests pass on PHPUnit 8
Bug: T192167
Change-Id: Idf87f4c0f0d74848a0cc8f131a84c87e8eeb7809
2020-01-16 16:04:33 +03:00
libraryupgrader 6adb1c423b build: Updating mediawiki/mediawiki-codesniffer to 29.0.0
The following sniffs are failing and were disabled:
* MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate
* MediaWiki.Commenting.FunctionComment.MissingParamName
* MediaWiki.Commenting.FunctionComment.MissingParamTag
* MediaWiki.Commenting.FunctionComment.WrongStyle

Change-Id: Ifa2c7a7febc1e06c28318305cfef0b0103c6e8eb
2020-01-14 14:49:35 +00:00
Brad Jorsch 8a8e51d8c7 Set $wgFragmentMode for UriLibraryTest
It affects the behavior of mw.uri.anchorEncode()

Change-Id: I3a704507cda79a2a48ec58ce9b7500667ea0dda3
2020-01-02 14:51:11 -05:00