aboutsummaryrefslogtreecommitdiffstats
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | | | | | | | rdbms: Fix disabled PostgreSQL testTim Starling2025-03-241-94/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | And clean up after version requirement was increased to PG 10. * In DatabasePostgres::indexInfo() iterate over all core schemas instead of just querying the current schema. I broke this after the test for it was disabled. * In ApiQueryAllPages, remove the PG 9 branches and simplify the comments. * In DatabasePostgresTest, fix the skip conditions for the introduction of DBConnRef. * Remove tests for "old insert ignore", and "old insert select", which no longer exist. * In testFieldAndIndexInfo(), create a prefixed table name since that's easier and safer than trying to switch domains just for this test. Bug: T259084 Change-Id: Ifab7c045c40d039e542e2df19037b342d4984472
* | | | | | | | | | | tests: Sort large arrays in QUnitTestResourcesTim Starling2025-03-241-68/+70
| |_|_|/ / / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Depends-On: Ia5b7ebab3dd16ffb463b0d55979e0c094aa6b5ab Change-Id: Ib34a15f9c8e2d1e6e4488fe3523a2babb7174b08
* | | | | | | | | | rdbms: Use real type hints for objects instead of doc blocksBartosz Dziewoński2025-03-2311-40/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Mostly used find-and-replace: Find: /\*[\*\s]+@var (I?[A-Z](\w+)(?:Interface)?)[\s\*]+/\s*(private|protected|public) (\$[a-z]\w+;\n)((?=\s*/\*[\*\s]+@var (I?[A-Z](\w+)(?:Interface)?))\n|) Replace with: \3 \1 \4 More could be done, but to keep this patch reasonably sized, I only changed the most obvious and unambiguously correct cases. I made some bonus corrections to the type hints too. Change-Id: Ic900d0a7c552ea3535276c1b47d87dcce66ec3d9
* | | | | | | | | | Merge "Special:Block [Codex]: Set the expiry infinity option in the form"jenkins-bot2025-03-221-0/+15
|\ \ \ \ \ \ \ \ \ \ | |_|_|_|/ / / / / / |/| | | | | | | | |
| * | | | | | | | | Special:Block [Codex]: Set the expiry infinity option in the formhmonroy2025-03-211-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The expiry 'Infinite' option might come from a custom message. Check the options and select the expiry `Infinite` option has been set. Bug: T388653 Change-Id: Ib22ef41deb121dc151a5ea8ca7d4ea5768041c66
* | | | | | | | | | Merge "mocha: Test Page media links endpoint"jenkins-bot2025-03-221-0/+48
|\ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | mocha: Test Page media links endpointAtieno2025-03-201-0/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug: T384942 Change-Id: I12c564245113226403298c472f93404dc6b28c2c
* | | | | | | | | | | Merge "mocha: Test Page language links endpoint"jenkins-bot2025-03-221-0/+48
|\ \ \ \ \ \ \ \ \ \ \ | |_|_|_|/ / / / / / / |/| | | | | | | | | |
| * | | | | | | | | | mocha: Test Page language links endpointAtieno2025-03-201-0/+48
| |/ / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug: T382458 Change-Id: Iedd4526a516e8c8e45576a15f3a747a429a2f317
* | | | | | | | | | Merge "exception: Remove 'exception-json' logging channel"jenkins-bot2025-03-212-38/+12
|\ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | exception: Remove 'exception-json' logging channelBartosz Dziewoński2025-03-212-38/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It provided structured exception data in a custom machine-readable format. Since MediaWiki 1.26, structured exception data conforming to the PSR-3 logging standard is also available on the 'exception' log channel, and nobody uses 'exception-json' anymore. But the fact that it exists and logs errors by default means that it has to be disabled, and clutters configs, for example: https://gerrit.wikimedia.org/g/operations/mediawiki-config/+/c0e5c7f71d70de5749f6770abcbbb7e57032bd29/wmf-config/InitialiseSettings.php#2225 https://gerrit.wikimedia.org/g/mediawiki/vagrant/+/c96e609b6ff6a73a412d3fd0a4291259eee026f6/puppet/modules/role/templates/psr3/settings.php.erb#57 Historical context: * Iacda90fb401f6a45ed1ac1a991e088: Add "exception-json" channel, 2013. * Ia7ba355d5925a6268ffa321ffc13cc: Add "error-json" channel, 2015. * I71499d895582bdea033a2516c902e2: Convert "exception" to PSR-3, 2015. * I782c96dac1181d12267fa610345e87: WMF disables "exception-json", 2017. * I7a6e6fa52a47a29ec04411a6c8b05e: Remove "error-json" channel, 2024. The custom data format has been reused for formatting exceptions in the REST API, so keep getStructuredExceptionData() and rescue the tests. Bug: T193472 Change-Id: If730618e5371a467cb76db239916b6bbe42512e3
* | | | | | | | | | | Merge "EditResult: only stash reverts"jenkins-bot2025-03-212-30/+38
|\ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | EditResult: only stash revertsdaniel2025-03-212-30/+38
| | |_|_|_|_|_|/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Why: - In I38cb5622238bc674 we started to write EditResults to the stash unconditionally. That's several orders of magnitude more than before and would flood the cache. We should only store the EditResult for reverts, and only if RC patrolling is enabled. - While this logic should really be in ChangeTrackingEventIngress, that currently doesn't work because some extensions need the cache to be updated before their hooks run, but the ingress is only triggered post-send. What: - Make DerivedPageDataUpdater skip writing to EditResultCache if the edit is not a revert or RC patrolling is not enabled. Bug: T388573 Bug: T386217 Change-Id: I4ac6efbdc1713c87153e66e0520c9f749a7a2a9d
* | | | | | | | | | | Merge "rdbms: Require SQLite 3.24+"jenkins-bot2025-03-212-16/+0
|\ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | rdbms: Require SQLite 3.24+Tim Starling2025-03-182-16/+0
| | |_|_|_|/ / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Require SQLite 3.24+, released June 2018. Minimum distro releases: Debian 10 (buster), Ubuntu 20.04, Fedora 29. Bug: T389028 Change-Id: I1f548ee162921fa8398740e4b0528703c84bcaa3
* | | | | | | | | | | Merge "qunit: Move 'testrunner' tests to its own file"jenkins-bot2025-03-213-51/+51
|\ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | qunit: Move 'testrunner' tests to its own fileTimo Tijhof2025-03-193-51/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The environment checks in QUnit.begin() are important to run always, even when e.g. running with component=EventLogging as filter. However, the "testrunner" tests are only useful when changing the assert methods themselves. There is no need to re-run those, just as there as no need to run any other MediaWiki core tests, when testing a non-core component. By moving these out to their own file, part of the 'test.MediaWiki' module, these still run by default and when selecting "MediaWiki core" component, but not when selecting another component. Previously, if you selected e.g. component "EventLogging" the output contained a visible "testrunner" result, which was not part of that component which seems surprising/confusing and certainly not needed. Bug: T250045 Change-Id: I350adf0f9a39796f7052fd5b900acc0ca1a4d4e8
* | | | | | | | | | | | Merge "qunit: Add "Component" menu to QUnit toolbar"jenkins-bot2025-03-211-0/+16
|\| | | | | | | | | | |
| * | | | | | | | | | | qunit: Add "Component" menu to QUnit toolbarTimo Tijhof2025-03-191-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug: T250045 Change-Id: I53ec35a9b61c5fb8d6bba2cba4dfa21078f8ca2d
* | | | | | | | | | | | Merge "qunit: Remove 'debug' checkbox from SpecialJavaScriptTest"jenkins-bot2025-03-211-8/+0
|\| | | | | | | | | | | | |_|_|_|_|/ / / / / / |/| | | | | | | | | |
| * | | | | | | | | | qunit: Remove 'debug' checkbox from SpecialJavaScriptTestTimo Tijhof2025-03-191-8/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug: T250045 Change-Id: Ic8372862cb64cb64919e7dee174558243f33324f
* | | | | | | | | | | Merge "enotif: Retrieve performer and title from RecentChange"jenkins-bot2025-03-211-4/+5
|\ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | enotif: Retrieve performer and title from RecentChangePiotr Miazga2025-03-211-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the second step to refactor EmailNotification notifyOnPageChange() method to use single RecentChange object instead multiple arguments. Previously we had to feed $editor, $title and some attributes. Instead we can just pass the entire RecentChange and let EmailNotification decide which properties to use. In the future, this will allow EmailNotification to listen to RecentChange domain events to trigger Notifications. Bug: T388665 Change-Id: I5882531e91cd84c4683522f06d829149fdfc534e
* | | | | | | | | | | | Merge "Pass the RecentChange to Notifications"jenkins-bot2025-03-211-4/+14
|\| | | | | | | | | | |
| * | | | | | | | | | | Pass the RecentChange to NotificationsPiotr Miazga2025-03-211-4/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To evolve Watchlist notifications and provide a unified approach system has to pass the RecentChange object to EmailNotification. Which later will pass to the RecentChange notification. This is required to fulfill Echo needs that requires more information from RecentChange. At current state, Echo requires properties like `rc_logid` which is not available in MediaWiki ENotif job. Furthermore this change will simplify the system, as * instead of passing multiple params (and adding more of them with time) we can just pass one RecentChange object that contains all required information. When passing RecentChange via Job we can use the `rc_id` to recreate the RecentChange when job gets processed. * later Notifications system will be able to listen on RecentChange domain event and trigger notifications via listener pattern which will simplify the system even more. Bug: T388665 Change-Id: I2d17bd3743e590e06298efaac387fc6d64e3609d
* | | | | | | | | | | | Merge "tests: Report all missing messages on failure in SkinsTest"jenkins-bot2025-03-211-3/+7
|\ \ \ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / / / |/| | | | | | | | | | |
| * | | | | | | | | | | tests: Report all missing messages on failure in SkinsTestUmherirrender2025-03-201-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The assert function stops on first missing message and does not report all missing messages in one go. Make the data provider named with the skin name for better output. This also speed up the tests by reducing assertions. Change-Id: I857f39e61096315b7344dff08ebf6ba6cdc15c19
* | | | | | | | | | | | Merge "notifications: Introduce Notification Middleware and ↵jenkins-bot2025-03-215-0/+413
|\ \ \ \ \ \ \ \ \ \ \ \ | |_|_|_|/ / / / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | NotificationEnvelope"
| * | | | | | | | | | | notifications: Introduce Notification Middleware and NotificationEnvelopePiotr Miazga2025-03-215-0/+413
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To allow ourselves esier processing/modifying Notifications lets introduce an idea of NotificationsEnvelope which represents a Notification being sent and list of recipients. The middleware approach will allow us to modify the Notification behaviour by letting extensions to inject/modify the Notifications. Each Middleware will retrieve a list of Envelopes MediaWiki wants to send. Middlewares should iterate over envelopes and decide if those want to add/remove/replace Notifications and/or Recipients. Bug: T387996 Change-Id: Ib3ee35c75b2f4dcfdc516b9259a852dc73c4a778
* | | | | | | | | | | | build: Fix and re-enable eslint rule unicorn/prefer-includesJames D. Forrester2025-03-211-1/+1
| |_|_|_|_|_|_|_|_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: I34bb289e941751ae4722c708511326a2a5431bfc
* | | | | | | | | | | Merge "BlockLog.vue: show non-relative expiry where applicable"jenkins-bot2025-03-202-21/+86
|\ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | BlockLog.vue: show non-relative expiry where applicableMusikAnimal2025-03-192-21/+86
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Log entries now correctly show the timestamp instead of a relavtive expiry if the date was entered as a timestamp. We aren't able to do the same for active blocks without a larger refactor, so for now it will continue to show computed relative expiries even for those entered as exact timestamps. Bug: T389275 Change-Id: Iae28dc9cfd6eb7193f7b5cfc7b34fd9537ae2079
* | | | | | | | | | | | Merge "Namespace all remaining files in includes/jobqueue"jenkins-bot2025-03-2024-34/+60
|\ \ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | | Namespace all remaining files in includes/jobqueueJames D. Forrester2025-03-2024-34/+60
| | |_|_|_|_|_|_|_|_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug: T353458 Change-Id: I95690a312e356c45dbeed607d32fb0e4626690cf
* | | | | | | | | | | | Merge "block: Don't modify an autoblock when the user specifies an IP"jenkins-bot2025-03-201-3/+20
|\ \ \ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / / / |/| | | | | | | | | | |
| * | | | | | | | | | | block: Don't modify an autoblock when the user specifies an IPTim Starling2025-03-201-3/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug: T389452 Change-Id: Id7a3f565821231647fe75a24e9ef7efeeb157c5d
* | | | | | | | | | | | Namespace all remaining files in includes/recentchangesJames D. Forrester2025-03-2018-51/+51
| |_|_|/ / / / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug: T353458 Change-Id: I2ae4577de79832b082adca282ff73cfabc8f9392
* | | | | | | | | | | Merge "extension.json: DomainEventIngresses instead of DomainEventSubscribers"jenkins-bot2025-03-202-10/+37
|\ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | extension.json: DomainEventIngresses instead of DomainEventSubscribersdaniel2025-03-202-10/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Why: - "ingress" is the more meaningful concept when implementing listeners What: - Add support for DomainEventSubscribers in extension.json Bug: T389033 Change-Id: I458bd7cd439a2e3213458d994cf87affa5da966b
* | | | | | | | | | | | Merge "PageUpdater: move revert tag update logic"jenkins-bot2025-03-202-19/+22
|\ \ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | | PageUpdater: move revert tag update logicdaniel2025-03-192-19/+22
| |/ / / / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Revert tag updates belong to change tracking, so move them out of the content component. Note: The behavior of updateRevertTagAfterPageUpdated() is covered by the existing RevertedTagUpdateIntegrationTest. Bug: T388573 Change-Id: I38cb5622238bc674ad97d6f47ecd4b8d09f45349
* | | | | | | | | | | | Merge "block: Add cleanupBlocks.php"jenkins-bot2025-03-201-0/+145
|\ \ \ \ \ \ \ \ \ \ \ \ | |_|_|_|_|_|_|_|/ / / / |/| | | | | | | | | | |
| * | | | | | | | | | | block: Add cleanupBlocks.phpTim Starling2025-03-191-0/+145
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a script to clean up referential integrity issues in the block and block_target table. Most notably, merge duplicate block_target rows and delete orphan block_target rows, issues which exist in production. Bug: T389301 Change-Id: I77e1bc308a107a3155d23fa43fe830a394f157ba
* | | | | | | | | | | | Merge "DomainEvents: remove "AfterCommit" suffix from event handlers"jenkins-bot2025-03-201-1/+1
|\ \ \ \ \ \ \ \ \ \ \ \ | |_|_|_|_|_|/ / / / / / |/| | | | | | | | | | |
| * | | | | | | | | | | DomainEvents: remove "AfterCommit" suffix from event handlersAaron Schulz2025-03-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: Id206c7c0ee14da988445d988f1bab2441860a65b
* | | | | | | | | | | | Merge "Special:Block [Codex]: Update block form per latest designs"HMonroy2025-03-191-3/+6
|\ \ \ \ \ \ \ \ \ \ \ \ | |_|_|_|/ / / / / / / / |/| | | | | | | | | | |
| * | | | | | | | | | | Special:Block [Codex]: Update block form per latest designshmonroy2025-03-191-3/+6
| | |_|_|/ / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add header to form. * Remove ":" from labels. * Update submit button label Bug: T387492 Change-Id: I1d10b8e0e4e82261f18e0ee2f3fc1379704709f1
* | | | | | | | | | | Merge "collation: Add new collation uppercase-ckb for Central Kurdish"jenkins-bot2025-03-191-4/+11
|\ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | collation: Add new collation uppercase-ckb for Central KurdishBrian Wolff2025-03-191-4/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously this used the uca-xx-ckb collation. However this gave incorrect results. That collation has been deprecated in this commit. This also adds support for groups of equal weight characters in CustomUppercaseCollation Bug: T310051 Change-Id: I1e122af6be94e3484f735f150ac639dfb99f681f
* | | | | | | | | | | | Merge "SpecialBlock [Codex]: validate block ID when passed in via URL parameter"jenkins-bot2025-03-195-9/+40
|\ \ \ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / / / |/| | | | | | | | | | |