Why:
- When tests are run in parallel, they are organized by groups--it is
useful to be able to see logs organized by each test group.
What:
- Set an environment variable in ComposerLaunchParallel,
`MW_PHPUNIT_SPLIT_GROUP_ID`
- If the environment variable is set, modify the file names used for
logs in DevelopmentSettings to use `split-group-{group ID}` in the
file name
- CI script for checking if any errors have been logged was updated
in I4283478a89d2a8d3a0502f836459b3fb21d99113
Bug: T375852
Change-Id: If5e08558a6efbb0139c320fda6f53ec73597ba60
The discovery endpoint provides basic information about accessing the
wiki's APIs, as well as a directory of available modules.
Bug: T365753
Change-Id: I161aa68566da91867b650e13c8aadc87cd0c428c
We introduced the content.v1 module as an alternative way to access
endpoints currently under v1/page and and v1/revision. This patch
disables the module per default, and enables it in development mode.
Change-Id: I044527601cbc19dfeb1282e9cd025265394c1cb8
Why:
- Enabling by default in DevelopmentSettings.php means that more
developers will interact with the feature and we'll have more input
into ways that the feature works with (or doesn't work with) various
extension and configuration setups in local development environments
What:
- Enable temp user account autocreation by default in
DevelopmentSettings.php
Bug: T359043
Change-Id: Ie88043a7dd7f504092ddd9a6cae1320ab2dbd208
Why:
- Temporary accounts will become the default anonymous editing
paradigm on Wikimedia wikis (and maybe for MediaWiki via T355880),
so we want this to be the default that we test against in CI
What:
- Enable AutoCreateTempUser in DevelopmentSettings.php when
MW_QUIBBLE_CI is set. That means it will be enabled for CI, but not
by default, in local development setups that include
DevelopmentSettings.php
Notes:
- PHPUnit tests that need to run in an anonymous IP editing context
should use TempUserTestTrait::disableAutoCreateTempUser()
- Selenium and API-testing tests that specifically check anonymous
IP editing context should use a custom LocalSettings.php override
to disable temp accounts feature for the duration of the test
Bug: T359043
Depends-On: I375cf7dfec1667396136402a85cbbb68efd43069
Depends-On: If48a33794132b46fb51d864bce103aa8285443c3
Depends-On: I604c521f00d5cc64b8102c93f9a013bcac557001
Depends-On: Id6ec4b9e438dd277a51f781377a93756fa4c3996
Depends-On: Ib0a176fe335cf45e5b2cdd351c95d5da162a1eb2
Change-Id: I8c4395ac1bdbc0c55aa45038cbbd589025b4aeef
Why:
- For local development/testing, default rate limits are too
restrictive
What:
- Disable rate limiting for temp account creation and temp account name
acquisition
Bug: T357777
Bug: T343101
Change-Id: Ie5a94d8b674010d33f49c8d141969f200be735ab
INSERT IGNORE when inserting NULL into a non-nullable field will succeed
with a warning on MySQL but fail on PostgreSQL. In any case, it's
probably harmful and unintended. But to check the error code of MySQL
warnings, you need to query the server with SHOW WARNINGS, so there is a
performance cost.
So, add a configuration variable which, when enabled, checks warnings
after INSERT to see if there were any null type constraint errors. Set
it to true in DevelopmentSettings.php and TestSetup.php.
Change-Id: I5e47e2d3cc7e0f804036e11b512b1e3b76804432
Why:
- New users will appreciate having easy access to MediaWiki logs; in
order to make that easier, we need to have a directory to write to and
set an environment variable to use that directory
What:
- Set MW_LOG_DIR for the `serve` command
- Add a `logs` directory at the root of MW, and gitignore it
- Create the `logs` directory via DevelopmentSettings, if MW_LOG_DIR is
defined but does not exist
I considered the `cache` directory for the log location as it
already exists, but it seemed preferable to not conflate cache and
logs.
Bug: T347347
Change-Id: Ic3ddb0203df07a0c93df9f431b25a2a5d9ecc407
This code should only be executed in development environments, never
in production, so it should be safe to mess with it.
Bug: T313841
Change-Id: I8cab7704b244db1432f4266b2e06e03452ffc98f
Reduce impact of deprecation warnings by not breaking non-HTML
responses such as load.php and api.php with invalid syntax, which
results in confusing silent failures in the frontend.
Change-Id: I1e7f60290fd2498216180f263a1a418c28ad956e
Having pig-latin enabled per default in dev environments is convenient
for manual testing. More importantly, it will allow us to write
end-to-end tests for variant conversion.
Depends-On: I9dc2f743ac487b0f7cfb667150c0f6950d5e7fce
Depends-On: I85b66c85be3959d48a048733af17197bc4cf70af
Change-Id: Ia80ad33cbf5e311fa8b84bd765a8df8d156f4c38
The tests for size limits did not catch an issue introduced by
If09afc4b933e, which caused resource limits to trigger early, since they
were now being compared to the size in bytes, rather than characters.
The reason the tests didn't protect us is threefold:
- They only check the error returned when the resource sizes is one over the limit.
They don't check that the error is NOT returned when the size is one under the limit.
- They did not test with a multi-byte character.
- They were disabled, because the limits are quite high, and the e2e test can not change them.
This patch is an attempt to fix all three issues.
Depends-On: I40901a1204b3c698895a836bf3b605239878d1fe
Change-Id: I2aead24cb7f47eb1267fdd2954a7c7e45dd4ed51
The benefit of this setting was largely lost due to wfDebug() having
been replaced with calls to Logger->debug() for much of our code.
This is motivated by making ResourcLoader debug=2 able to make
its concurrent load.php requests more quickly during local dev.
This effectively reverts T49960. I was wrong there, thinking that
this variable has no reason for being. The vast majority of the time,
these aren't of interest on subresource requests. It's trivial
to enable when wanted, and any non-debug level messages still come
through either way, including PHP runtime errors, exceptions,
warnings, etc.
This seems to make load.php about 50% faster for local development
when using mediawiki-docker.
I used `ab` to perform a load.php request 300 times. The mean was
320-360ms before this patch (with and without DebugRawPage=false),
and around 120-140ms with patch (with DebugRawPage=false, default).
Bug: T85805
Bug: T225730
Change-Id: I061419adebf43e83cd0103bdb9b7a3296a2a1122
This reverts commit 17bab86e7a.
Extension failures (ref T304625) have since been fixed.
Bug: T225730
Change-Id: Ia452e076bdce45f1151f970c16837b80813ee08a
Make phan stricter about scalar types by setting scalar_implicit_cast to
false (the default in mediawiki-phan-config)
Bug: T242536
Bug: T301991
Change-Id: Ia2fe30b17804186571722e728578121c8b75d455
Enabling this setting will cause post-send deferred updates to be run
before a response is sent to the client, so the client can observe all
effects of their last request immediately.
This resolves a problem with some end-to-end tests that were failing
because the updates caused by one request had not landed in the database
by the time the subsequent request was made.
This patch re-enabled some e2e tests that were disabled because of this
problem. If $wgForceDeferredUpdatesPreSend works as intended, the tests
should again pass reliably.
Bug: T230211
Bug: T301100
Change-Id: I0e30fdb6acba85cec4bb1499f7063ba6bfb0ffb2
This was intended as a setting override to faciliate testing, not as
something that is experimental and may later become default.
Follows-Up: Ief9e724c84755248a6fccfd04abdd4b03e331a8e
Bug: T298735
Change-Id: I56e98926c7d857c0c221d3ffd9b3be0b4267b6ae
Seems to be needed to be able to run api-testing (and possibly also some
browser tests) in parallel in CI / locally.
Bug: T298735
Change-Id: Ief9e724c84755248a6fccfd04abdd4b03e331a8e
Switching rate limits completely off make tests bypass
an important code path. Instead, set all limits to almost
infinity - the code will still be executed, but with no
real chance that a test will exceed the limits.
Bug: T284804
Change-Id: Ic1d011f251159990fd54cb706608793d1b0a5acf
Any change to the extension's defaults would disrupt tests, so we
repeat the default here.
Bug: T270240
Change-Id: I84791ecf8c35f60b7d2cc337d67572bb422f0ea5
This allows browser tests to access the "new wikitext" mode, but
should not affect any tests which don't explicitly enable the
associated beta preference.
Bug: T270240
Change-Id: I2ba889e1a5dd03549d8d7cb00678a30882ff03fe
- Uses new stretch-php72-jobrunner from dev-images
- Removes TimedMediaHandler-specific resource limits from general
DevelopmentSettings.php, as we're putting these in the container
PlatformSettings.php from docker entrypoints.
Bug: T246935
Bug: T246942
Depends-On: I505366b287f75581a5dd8016abbedfe61f53cb13
Change-Id: I4b4061d9cd877af34606c914942cfe0be028fff8
New configuration variable $wgRestAPIAdditionalRouteFiles
allows specifying additional Core REST API route files to
include. The initial use is to include development routes
from new file coreDevelopmentRoutes.json only on testing
wikis, but not on production wikis.
Bug: T247997
Change-Id: Iff8a9b7f4cafb29162e9b10f3d32e2a85f6f58df
Otherwise, require DevelopmentSettings.php in LocalSettings.php leads to an
error because LCStoreStaticArray attemps to write to the root directory.
Bug: T246547
Change-Id: I4b466cea2c830aed85e9df9f4ddd01b6997e1c45
These used to be in the 'exception' channel but were separated out
to better categorise them in Logstash, but this meant we regressed
in terms of CI enforcement because they weren't enabled (they only
went to the debug file), and thus Jenkins didn't fail the build
if they were non-empty.
To avoid having to keep this in sync with the Jenkins job config,
standardise on a single file (mw-error.log), which the job already
asserts as having to be empty/non-existent.
Change-Id: I432682c082f77d9a6ec2ea07539c2a3e41ea1340