**Steps to replicate the issue** (include links if applicable):
* Run postgres experimental CI for checkuser
**What happens?**:
CI fails with the error:
```lines=10
board
quibble-vendor-postgres-php74-noselenium-docker
#103
Status
Changes
Console Output
View as plain text
View Build Information
Parameters
TimingsThere were 4 errors:
Open Blue Ocean
Embeddable Build Status
Previous Build
Console Sections
PHPUnit extensions suite (with database)
PostBuildScript
Timestamps
View as plain text
System clock time
Use browser timezone
Elapsed time
None
Console Output
Skipping 155 KB.. Full Log
31 01 2023 17:15:18.780:DEBUG [web-server]: serving: /workspace/src/node_modules/karma/static/client.html
17:15:18 31 01 2023 17:15:18.821:DEBUG [web-server]: serving: /workspace/src/node_modules/karma/static/karma.js
17:15:18 31 01 2023 17:15:18.936:DEBUG [karma-server]: A browser has connected on socket EgVfZxL9-u7kcBy8AAAB
17:15:18 31 01 2023 17:15:18.940:DEBUG [web-server]: upgrade /socket.io/?EIO=4&transport=websocket&sid=6OFJgnluyz7J5jB-AAAA
17:15:18 31 01 2023 17:15:18.940:DEBUG [proxy]: NOT upgrading proxyWebSocketRequest /socket.io/?EIO=4&transport=websocket&sid=6OFJgnluyz7J5jB-AAAA
17:15:18 31 01 2023 17:15:18.974:DEBUG [Chrome Headless 90.0.4430.212 (Linux x86_64)]: undefined -> CONNECTED
17:15:18 31 01 2023 17:15:18.975:INFO [Chrome Headless 90.0.4430.212 (Linux x86_64)]: Connected on socket EgVfZxL9-u7kcBy8AAAB with id 14295707
17:15:18 31 01 2023 17:15:18.978:DEBUG [launcher]: BEING_CAPTURED -> CAPTURED
17:15:18 31 01 2023 17:15:18.978:DEBUG [launcher]: ChromeHeadless (id 14295707) captured in 2.942 secs
17:15:18 31 01 2023 17:15:18.979:DEBUG [Chrome Headless 90.0.4430.212 (Linux x86_64)]: CONNECTED -> CONFIGURING
17:15:18 31 01 2023 17:15:19.010:DEBUG [middleware:karma]: custom files null null null
17:15:19 31 01 2023 17:15:19.011:DEBUG [middleware:karma]: Serving static request /context.html
17:15:19 31 01 2023 17:15:19.012:DEBUG [web-server]: serving: /workspace/src/node_modules/karma/static/context.html
17:15:19 31 01 2023 17:15:19.041:DEBUG [web-server]: serving: /workspace/src/node_modules/karma/static/context.js
17:15:19 31 01 2023 17:15:19.047:DEBUG [middleware:source-files]: Requesting /base/node_modules/qunit/qunit/qunit.css?1f1d57c3164df00687a6e0cbc8bc540e97c907fc
17:15:19 31 01 2023 17:15:19.047:DEBUG [middleware:source-files]: Fetching /workspace/src/node_modules/qunit/qunit/qunit.css
17:15:19 31 01 2023 17:15:19.048:DEBUG [web-server]: serving (cached): /workspace/src/node_modules/qunit/qunit/qunit.css
17:15:19 31 01 2023 17:15:19.050:DEBUG [middleware:source-files]: Requesting /base/node_modules/qunit/qunit/qunit.js?f13741423695109a0396d12443252117207fcd73
17:15:19 31 01 2023 17:15:19.050:DEBUG [middleware:source-files]: Fetching /workspace/src/node_modules/qunit/qunit/qunit.js
17:15:19 31 01 2023 17:15:19.051:DEBUG [web-server]: serving (cached): /workspace/src/node_modules/qunit/qunit/qunit.js
17:15:19 31 01 2023 17:15:19.054:DEBUG [middleware:source-files]: Requesting /base/node_modules/karma-qunit/lib/adapter.js?7660967a0e6aae9500b35a2d81a8eb6480e1e895
17:15:19 31 01 2023 17:15:19.055:DEBUG [middleware:source-files]: Fetching /workspace/src/node_modules/karma-qunit/lib/adapter.js
17:15:19 31 01 2023 17:15:19.055:DEBUG [web-server]: serving (cached): /workspace/src/node_modules/karma-qunit/lib/adapter.js
17:15:19 31 01 2023 17:15:20.197:DEBUG [middleware:source-files]: Requesting /load.php?modules=jquery%7Cmediawiki.base&version=125wg
17:15:20 31 01 2023 17:15:20.197:DEBUG [middleware:source-files]: Fetching /load.php
17:15:20 31 01 2023 17:15:20.198:DEBUG [proxy]: proxying request - /load.php?modules=jquery%7Cmediawiki.base&version=125wg to 127.0.0.1:9413
17:15:20 31 01 2023 17:15:20.210:DEBUG [middleware:source-files]: Requesting /load.php?modules=ext.visualEditor.articleTarget%2Cbase%2CcheckList%2CcommentAnnotation%2Ccore%2CdesktopArticleTarget%2CdesktopTarget%2Cdiffing%2Cexperimental%2Cicons%2Clanguage%2Cmediawiki%2Cmwalienextension%2Cmwcore%2Cmwextensions%2Cmwformatting%2Cmwgallery%2Cmwimage%2Cmwlanguage%2Cmwlink%2Cmwmeta%2Cmwsave%2Cmwtransclusion%2Cmwwikitext%2CprogressBarWidget%2Crebase%2Csanitize%2CsupportCheck%2Cswitching%2CtargetLoader%2CtempWikitextEditorWidget%2Ctrack%2Cve%2Cwelcome%7Cext.visualEditor.core.desktop%2Cutils%7Cext.visualEditor.core.utils.parsing%7Cext.visualEditor.desktopArticleTarget.init%7Cext.visualEditor.mwextensions.desktop%7Cext.visualEditor.mwimage.core&version=1s2g3
17:15:20 31 01 2023 17:15:20.210:DEBUG [middleware:source-files]: Fetching /load.php
17:15:20 31 01 2023 17:15:20.212:DEBUG [proxy]: proxying request - /load.php?modules=ext.visualEditor.articleTarget%2Cbase%2CcheckList%2CcommentAnnotation%2Ccore%2CdesktopArticleTarget%2CdesktopTarget%2Cdiffing%2Cexperimental%2Cicons%2Clanguage%2Cmediawiki%2Cmwalienextension%2Cmwcore%2Cmwextensions%2Cmwformatting%2Cmwgallery%2Cmwimage%2Cmwlanguage%2Cmwlink%2Cmwmeta%2Cmwsave%2Cmwtransclusion%2Cmwwikitext%2CprogressBarWidget%2Crebase%2Csanitize%2CsupportCheck%2Cswitching%2CtargetLoader%2CtempWikitextEditorWidget%2Ctrack%2Cve%2Cwelcome%7Cext.visualEditor.core.desktop%2Cutils%7Cext.visualEditor.core.utils.parsing%7Cext.visualEditor.desktopArticleTarget.init%7Cext.visualEditor.mwextensions.desktop%7Cext.visualEditor.mwimage.core&version=1s2g3 to 127.0.0.1:9413
17:15:20 31 01 2023 17:15:20.216:DEBUG [middleware:source-files]: Requesting /load.php?modules=color-picker%2CdiffMatchPatch%2Cdompurify%2Cmoment%2Coojs%2Coojs-ui%2Coojs-ui-core%2Coojs-ui-toolbars%2Coojs-ui-widgets%2Coojs-ui-windows%7Cext.centralauth.ForeignApi%7Cext.cite.style%2Cstyles%2CvisualEditor%7Cext.cite.visualEditor.core%7Cext.eventLogging%7Cext.eventLogging.debug%7Cext.guidedTour.lib%2Cstyles%7Cext.guidedTour.lib.internal%7Cext.templateDataGenerator.data%7Cext.visualEditor.data%2CmoduleIcons%2CmoduleIndicators%7Cjquery.client%2Ccolor%2Ccookie%2ChighlightText%2ClengthLimit%2CmakeCollapsible%2Cspinner%2Ctablesorter%2CtextSelection%7Cjquery.makeCollapsible.styles%7Cjquery.spinner.styles%7Cjquery.tablesorter.styles%7Cjquery.uls.data%7Cmediawiki.ForeignApi%2CForeignUpload%2CString%2CTitle%2CUpload%2CUri%2Capi%2Ccldr%2Ccookie%2Cdeflate%2Cdiff%2Cexperiments%2Cinspect%2CjqueryMsg%2Clanguage%2CmessagePoster%2Cpulsatingdot%2Cqunit-testrunner%2Cstorage%2Ctemplate%2Ctoc%2Cuser%2Cutil%2CvisibleTimeout%2Cwidgets%7Cmediawiki.ForeignApi.core%7Cmediawiki.ForeignStructuredUpload.BookletLayout%7Cmediawiki.Upload.BookletLayout%7Cmediawiki.action.view.redirectPage%7Cmediawiki.diff.styles%7Cmediawiki.editfont.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.language.months%2Cnames%2Ctestdata%7Cmediawiki.libs.guiders%2Cjpegmeta%2Cpluralruleparser%7Cmediawiki.page.gallery.styles%7Cmediawiki.page.ready%7Cmediawiki.rcfilters.filters.ui%7Cmediawiki.skinning.content.parsoid%7Cmediawiki.template.mustache%7Cmediawiki.ui.button%7Cmediawiki.widgets.AbandonEditDialog%2CCategoryMultiselectWidget%2CDateInputWidget%2CMediaSearch%2CTable%2CUserInputWidget%2Cstyles%7Cmediawiki.widgets.DateInputWidget.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui-toolbars.icons%7Coojs-ui-widgets.icons%7Coojs-ui-windows.icons%7Coojs-ui.styles.icons-accessibility%2Cicons-alerts%2Cicons-content%2Cicons-editing-advanced%2Cicons-editing-citation%2Cicons-editing-core%2Cicons-editing-list%2Cicons-editing-styling%2Cicons-interactions%2Cicons-layout%2Cicons-media&version=9mytv
17:15:20 31 01 2023 17:15:20.217:DEBUG [middleware:source-files]: Fetching /load.php
17:15:20 31 01 2023 17:15:20.217:DEBUG [proxy]: proxying request - /load.php?modules=color-picker%2CdiffMatchPatch%2Cdompurify%2Cmoment%2Coojs%2Coojs-ui%2Coojs-ui-core%2Coojs-ui-toolbars%2Coojs-ui-widgets%2Coojs-ui-windows%7Cext.centralauth.ForeignApi%7Cext.cite.style%2Cstyles%2CvisualEditor%7Cext.cite.visualEditor.core%7Cext.eventLogging%7Cext.eventLogging.debug%7Cext.guidedTour.lib%2Cstyles%7Cext.guidedTour.lib.internal%7Cext.templateDataGenerator.data%7Cext.visualEditor.data%2CmoduleIcons%2CmoduleIndicators%7Cjquery.client%2Ccolor%2Ccookie%2ChighlightText%2ClengthLimit%2CmakeCollapsible%2Cspinner%2Ctablesorter%2CtextSelection%7Cjquery.makeCollapsible.styles%7Cjquery.spinner.styles%7Cjquery.tablesorter.styles%7Cjquery.uls.data%7Cmediawiki.ForeignApi%2CForeignUpload%2CString%2CTitle%2CUpload%2CUri%2Capi%2Ccldr%2Ccookie%2Cdeflate%2Cdiff%2Cexperiments%2Cinspect%2CjqueryMsg%2Clanguage%2CmessagePoster%2Cpulsatingdot%2Cqunit-testrunner%2Cstorage%2Ctemplate%2Ctoc%2Cuser%2Cutil%2CvisibleTimeout%2Cwidgets%7Cmediawiki.ForeignApi.core%7Cmediawiki.ForeignStructuredUpload.BookletLayout%7Cmediawiki.Upload.BookletLayout%7Cmediawiki.action.view.redirectPage%7Cmediawiki.diff.styles%7Cmediawiki.editfont.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.language.months%2Cnames%2Ctestdata%7Cmediawiki.libs.guiders%2Cjpegmeta%2Cpluralruleparser%7Cmediawiki.page.gallery.styles%7Cmediawiki.page.ready%7Cmediawiki.rcfilters.filters.ui%7Cmediawiki.skinning.content.parsoid%7Cmediawiki.template.mustache%7Cmediawiki.ui.button%7Cmediawiki.widgets.AbandonEditDialog%2CCategoryMultiselectWidget%2CDateInputWidget%2CMediaSearch%2CTable%2CUserInputWidget%2Cstyles%7Cmediawiki.widgets.DateInputWidget.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui-toolbars.icons%7Coojs-ui-widgets.icons%7Coojs-ui-windows.icons%7Coojs-ui.styles.icons-accessibility%2Cicons-alerts%2Cicons-content%2Cicons-editing-advanced%2Cicons-editing-citation%2Cicons-editing-core%2Cicons-editing-list%2Cicons-editing-styling%2Cicons-interactions%2Cicons-layout%2Cicons-media&version=9mytv to 127.0.0.1:9413
17:15:20 31 01 2023 17:15:20.218:DEBUG [middleware:source-files]: Requesting /load.php?modules=oojs-ui.styles.icons-moderation%2Cicons-movement%2Cicons-user%2Cicons-wikimedia%2Cindicators%7Cpapaparse%2Crangefix%2Csinonjs%2Cspark-md5%2CtreeDiffer%2Cunicodejs%7Csocket.io%7Ctest.CentralAuth%2CCite%2CEventLogging%2CGuidedTour%2CMediaWiki%2CTemplateData%2CVisualEditor&version=uva90
17:15:20 31 01 2023 17:15:20.219:DEBUG [middleware:source-files]: Fetching /load.php
17:15:20 31 01 2023 17:15:20.219:DEBUG [proxy]: proxying request - /load.php?modules=oojs-ui.styles.icons-moderation%2Cicons-movement%2Cicons-user%2Cicons-wikimedia%2Cindicators%7Cpapaparse%2Crangefix%2Csinonjs%2Cspark-md5%2CtreeDiffer%2Cunicodejs%7Csocket.io%7Ctest.CentralAuth%2CCite%2CEventLogging%2CGuidedTour%2CMediaWiki%2CTemplateData%2CVisualEditor&version=uva90 to 127.0.0.1:9413
17:15:20 Chrome Headless 90.0.4430.212 (Linux x86_64) WARN: 'Invalid accesskey data? Failed to register alt+shift+(accesskey-save)'
17:15:22 Chrome Headless 90.0.4430.212 (Linux x86_64) WARN: 'Invalid accesskey data? Failed to register alt+shift+(accesskey-diff)'
17:15:22 Chrome Headless 90.0.4430.212 (Linux x86_64) WARN: 'Invalid accesskey data? Failed to register alt+shift+(accesskey-preview)'
17:15:22 Chrome Headless 90.0.4430.212 (Linux x86_64) WARN: 'Invalid accesskey data? Failed to register alt+shift+(accesskey-minoredit)'
17:15:22 Chrome Headless 90.0.4430.212 (Linux x86_64) WARN: 'Invalid accesskey data? Failed to register alt+shift+(accesskey-watch)'
17:15:22 31 01 2023 17:15:22.549:DEBUG [Chrome Headless 90.0.4430.212 (Linux x86_64)]: CONFIGURING -> EXECUTING
17:15:22 testrunner
17:15:22 ✔ beforeEach
17:15:22 ✔ afterEach
17:15:22 ✔ Loader status
17:15:22 ✔ assert.htmlEqual
17:15:22 testrunner > dangling operations
17:15:22 ✔ animation (skipped)
17:15:22 ✔ ajax (skipped)
17:15:22 testrunner > testrunner-nested-hooks
17:15:22 ✔ beforeEach
17:15:22 testrunner-next
17:15:22 ✔ afterEach
17:15:22 ext.centralauth.ForeignApi
17:15:22 ✔ Anonymous users do not get centralauthtoken
17:15:22 ✔ Logged in users get centralauthtoken if not logged in remotely
17:15:22 ✔ Logged in users do not get centralauthtoken if logged in remotely
17:15:22 ext.centralauth.ForeignRest
17:15:22 ✔ Anonymous users do not get centralauthtoken
17:15:22 ✔ Logged in users get centralauthtoken if not logged in remotely
17:15:22 ✔ Logged in users do not get centralauthtoken if logged in remotely
17:15:22 ext.eventLogging/BackgroundQueue
17:15:22 ✔ add()
17:15:22 ext.eventLogging/bucketing
17:15:22 ✔ getUserEditCountBucket() [0]
17:15:22 ✔ getUserEditCountBucket() [3]
17:15:22 ✔ getUserEditCountBucket() [99999]
17:15:22 ✔ getUserEditCountBucket() [anonymous]
17:15:22 ext.eventLogging/id
17:15:22 ✔ pageview
17:15:22 ✔ session
17:15:22 ext.eventLogging/log
17:15:22 ✔ logEvent()
17:15:22 ✔ logEvent() via submit()
17:15:22 ✔ checkUrlSize() [URL size is ok]
17:15:22 ✔ checkUrlSize() [URL size is not ok]
17:15:22 ✔ logEvent() - reject large event data
17:15:22 ext.eventLogging/stream
17:15:22 ✔ submit() - warn for event without schema
17:15:22 ✔ submit() - produce an event correctly
17:15:22 ext.eventLogging/utils
17:15:22 ✔ eventInSample()
17:15:22 ✔ sessionInSample()
17:15:22 ✔ randomTokenMatch()
17:15:22 ✔ makeLegacyStreamName()
17:15:22 ext.eventLogging.debug
17:15:22 ✔ validate()
17:15:22 ✔ isInstanceOf() [boolean]
17:15:22 ✔ isInstanceOf() [integer]
17:15:22 ✔ isInstanceOf() [number]
17:15:22 ✔ isInstanceOf() [string]
17:15:22 ✔ isInstanceOf() [timestamp]
17:15:22 ✔ isInstanceOf() [array]
17:15:22 ext.templateData
17:15:22 ✔ Validation tools
17:15:22 ✔ TemplateData model
17:15:22 ✔ TemplateData sourceHandler with maps
17:15:22 ✔ TemplateData sourceHandler failure
17:15:22 ✔ TemplateData sourceHandler adding default format
17:15:22 ✔ Duplicate parameter names
17:15:22 ✔ safesubst: hack with an unnamed parameter
17:15:22 ext.guidedTour.lib
17:15:22 ✔ makeTourId
17:15:22 ✔ parseTourId
17:15:22 ✔ isPage
17:15:22 ✔ hasQuery
17:15:22 ✔ getStepFromQuery
17:15:23 ✔ setTourCookie
17:15:23 ✔ shouldShow
17:15:23 ✔ defineTour
17:15:23 ✔ StepBuilder.constructor
17:15:23 ✔ StepBuilder.listenForMwHooks
17:15:23 ✔ StepBuilder.next
17:15:23 ✔ StepBuilder.transition
17:15:23 ✔ Step.constructor
17:15:23 ✔ Step.getButtons
17:15:23 ✔ Step.registerMwHookListener
17:15:23 ✔ Step.registerMwHooks
17:15:23 ✔ Step.handleOnShow
17:15:23 ✔ TourBuilder.constructor
17:15:23 ✔ TourBuilder.step
17:15:23 ✔ TourBuilder.firstStep
17:15:23 ✔ Tour.constructor
17:15:23 ✔ Tour.getShouldFlipHorizontally
17:15:23 ✔ Tour.initialize
17:15:23 ✔ Tour.getStep
17:15:23 ✔ Tour.showStep
17:15:23 ✔ Tour.start
17:15:23 startup
17:15:23 ✔ isCompatible( featureTestable )
17:15:23 ✔ isCompatible( bannedUserAgent )
17:15:23 mediawiki
17:15:23 ✔ Initial check
17:15:23 ✔ mw.format
17:15:23 ✔ mw.now
17:15:23 mw.Message
17:15:23 ✔ Construct
17:15:23 ✔ plain()
17:15:23 ✔ escaped()
17:15:23 ✔ parse()
17:15:23 ✔ exists()
17:15:23 ✔ toString() non-existing
17:15:23 ✔ jqueryMsg / Magic words
17:15:23 ✔ mw.msg()
17:15:23 mw.Map
17:15:23 ✔ Store simple string key
17:15:23 ✔ Store number-like key
17:15:23 ✔ get()
17:15:23 ✔ values
17:15:23 ✔ set()
17:15:23 ✔ exists()
17:15:23 ✔ Avoid prototype pollution
17:15:23 31 01 2023 17:15:23.078:DEBUG [middleware:source-files]: Requesting /tests/qunit/data/mwLoaderTestCallback.js
17:15:23 31 01 2023 17:15:23.078:DEBUG [middleware:source-files]: Fetching /tests/qunit/data/mwLoaderTestCallback.js
17:15:23 31 01 2023 17:15:23.079:DEBUG [proxy]: proxying request - /tests/qunit/data/mwLoaderTestCallback.js to 127.0.0.1:9413
17:15:23 mw.loader
17:15:23 ✔ .using( .., Function callback ) Promise
17:15:23 ✔ Prototype method as module name
17:15:23 ✔ .using() - Error: Circular dependency [StringSet default]
17:15:23 ✔ .using() - Error: Circular dependency [StringSet shim]
17:15:23 WARN: 'Skipped unavailable module test.load.circleC'
17:15:23 ✔ .load() - Error: Circular dependency
17:15:23 WARN: 'Skipped unavailable module test.load.circleDirect'
17:15:23 ✔ .load() - Error: Circular dependency (direct)
17:15:23 ✔ .using() - Error: Unregistered
17:15:23 ✔ .load() - Error: Unregistered
17:15:23 WARN: 'Skipped unavailable module test.load.missingdep'
17:15:23 ✔ .load() - Error: Missing dependency
17:15:23 ✔ .implement( styles={ "css": [text, ..] } )
17:15:23 31 01 2023 17:15:23.158:DEBUG [middleware:source-files]: Requesting /tests/qunit/data/styleTest.css.php?selector=.mw-test-implement-b1&prop=text-align&val=center
17:15:23 31 01 2023 17:15:23.158:DEBUG [middleware:source-files]: Fetching /tests/qunit/data/styleTest.css.php
17:15:23 31 01 2023 17:15:23.159:DEBUG [proxy]: proxying request - /tests/qunit/data/styleTest.css.php?selector=.mw-test-implement-b1&prop=text-align&val=center to 127.0.0.1:9413
17:15:23 31 01 2023 17:15:23.161:DEBUG [middleware:source-files]: Requesting /tests/qunit/data/styleTest.css.php?selector=.mw-test-implement-b2&prop=float&val=left
17:15:23 31 01 2023 17:15:23.161:DEBUG [middleware:source-files]: Fetching /tests/qunit/data/styleTest.css.php
17:15:23 31 01 2023 17:15:23.163:DEBUG [proxy]: proxying request - /tests/qunit/data/styleTest.css.php?selector=.mw-test-implement-b2&prop=float&val=left to 127.0.0.1:9413
17:15:23 31 01 2023 17:15:23.165:DEBUG [middleware:source-files]: Requesting /tests/qunit/data/styleTest.css.php?selector=.mw-test-implement-b3&prop=float&val=right
17:15:23 31 01 2023 17:15:23.165:DEBUG [middleware:source-files]: Fetching /tests/qunit/data/styleTest.css.php
17:15:23 31 01 2023 17:15:23.165:DEBUG [proxy]: proxying request - /tests/qunit/data/styleTest.css.php?selector=.mw-test-implement-b3&prop=float&val=right to 127.0.0.1:9413
17:15:23 ✔ .implement( styles={ "url": { <media>: [url, ..] } } )
17:15:23 ✔ .implement( messages before script )
17:15:23 31 01 2023 17:15:23.214:DEBUG [middleware:source-files]: Requesting /tests/qunit/data/styleTest.css.php?selector=.mw-test-implement-import&prop=float&val=right
17:15:23 31 01 2023 17:15:23.215:DEBUG [middleware:source-files]: Fetching /tests/qunit/data/styleTest.css.php
17:15:23 31 01 2023 17:15:23.215:DEBUG [proxy]: proxying request - /tests/qunit/data/styleTest.css.php?selector=.mw-test-implement-import&prop=float&val=right to 127.0.0.1:9413
17:15:23 ✔ .implement( styles with @import )
17:15:23 ✔ .implement( dependency with styles )
17:15:23 ✔ .implement( only scripts )
17:15:23 ✔ .implement( only messages )
17:15:23 ✔ .implement( empty )
17:15:23 ✔ .implement( package files )
17:15:23 ✔ .implement( name with @ )
17:15:23 ✔ .addSource()
17:15:23 ✔ .register() - ES6 support
17:15:23 31 01 2023 17:15:23.316:DEBUG [middleware:source-files]: Requesting /tests/qunit/data/load.mock.php?modules=testUrlInc&version=ghho6
17:15:23 31 01 2023 17:15:23.317:DEBUG [middleware:source-files]: Fetching /tests/qunit/data/load.mock.php
17:15:23 31 01 2023 17:15:23.317:DEBUG [proxy]: proxying request - /tests/qunit/data/load.mock.php?modules=testUrlInc&version=ghho6 to 127.0.0.1:9413
17:15:23 31 01 2023 17:15:23.319:DEBUG [middleware:source-files]: Requesting /tests/qunit/data/load.mock.php?modules=testUrlIncDump&version=13e9z
17:15:23 31 01 2023 17:15:23.321:DEBUG [middleware:source-files]: Fetching /tests/qunit/data/load.mock.php
17:15:23 31 01 2023 17:15:23.322:DEBUG [proxy]: proxying request - /tests/qunit/data/load.mock.php?modules=testUrlIncDump&version=13e9z to 127.0.0.1:9413
17:15:23 ✔ .batchRequest() - Module version combines for given batch
17:15:23 31 01 2023 17:15:23.340:DEBUG [middleware:source-files]: Requesting /tests/qunit/data/load.mock.php?modules=testUrlOrder%2CtestUrlOrderDump%7CtestUrlOrder.a%2Cb&version=1knqz
17:15:23 31 01 2023 17:15:23.340:DEBUG [middleware:source-files]: Fetching /tests/qunit/data/load.mock.php
17:15:23 31 01 2023 17:15:23.341:DEBUG [proxy]: proxying request - /tests/qunit/data/load.mock.php?modules=testUrlOrder%2CtestUrlOrderDump%7CtestUrlOrder.a%2Cb&version=1knqz to 127.0.0.1:9413
17:15:23 ✔ .batchRequest() - Module version combined based on sorted order
17:15:23 ✔ Broken indirect dependency
17:15:23 ✔ Out-of-order implementation
17:15:23 ✔ Missing dependency
17:15:23 31 01 2023 17:15:23.403:DEBUG [middleware:source-files]: Requesting /tests/qunit/data/load.mock.php?modules=testMissing%2CtestUsesMissing%2CtestUsesNestedMissing&version=wp15r
17:15:23 31 01 2023 17:15:23.403:DEBUG [middleware:source-files]: Fetching /tests/qunit/data/load.mock.php
17:15:23 31 01 2023 17:15:23.405:DEBUG [proxy]: proxying request - /tests/qunit/data/load.mock.php?modules=testMissing%2CtestUsesMissing%2CtestUsesNestedMissing&version=wp15r to 127.0.0.1:9413
17:15:23 ✔ Dependency handling
17:15:23 31 01 2023 17:15:23.426:DEBUG [middleware:source-files]: Requesting /tests/qunit/data/load.mock.php?modules=testNotSkipped%2CtestUsesSkippable&version=909pw
17:15:23 31 01 2023 17:15:23.426:DEBUG [middleware:source-files]: Fetching /tests/qunit/data/load.mock.php
17:15:23 31 01 2023 17:15:23.427:DEBUG [proxy]: proxying request - /tests/qunit/data/load.mock.php?modules=testNotSkipped%2CtestUsesSkippable&version=909pw to 127.0.0.1:9413
17:15:23 ✔ Skip-function handling
17:15:23 ✔ .load( "//protocol-relative" ) - T32825
17:15:23 ✔ .load( "/absolute-path" )
17:15:23 ✔ importScript()
17:15:23 ✔ importStylesheet()
17:15:23 ✔ Empty string module name - T28804
17:15:23 ✔ Executing race - T112232
17:15:23 ✔ Stale response caching - T117587
17:15:23 ✔ Stale response caching - backcompat
17:15:23 ✔ No storing of group=private responses
17:15:23 ✔ No storing of group=user responses
17:15:23 ✔ mw.loader.store.load - Disallowed localStorage
17:15:23 ✔ mw.loader.store.load - Invalid JSON
17:15:23 ✔ mw.loader.store.load - Unusable JSON
17:15:23 ✔ mw.loader.store.load - Expired JSON
17:15:23 ✔ mw.loader.store.load - Good JSON
17:15:23 ✔ require()
17:15:23 31 01 2023 17:15:23.546:DEBUG [middleware:source-files]: Requesting /tests/qunit/data/defineCallMwLoaderTestCallback.js
17:15:23 31 01 2023 17:15:23.546:DEBUG [middleware:source-files]: Fetching /tests/qunit/data/defineCallMwLoaderTestCallback.js
17:15:23 31 01 2023 17:15:23.546:DEBUG [proxy]: proxying request - /tests/qunit/data/defineCallMwLoaderTestCallback.js to 127.0.0.1:9413
17:15:23 31 01 2023 17:15:23.556:DEBUG [middleware:source-files]: Requesting /tests/qunit/data/requireCallMwLoaderTestCallback.js
17:15:23 31 01 2023 17:15:23.557:DEBUG [middleware:source-files]: Fetching /tests/qunit/data/requireCallMwLoaderTestCallback.js
17:15:23 31 01 2023 17:15:23.557:DEBUG [proxy]: proxying request - /tests/qunit/data/requireCallMwLoaderTestCallback.js to 127.0.0.1:9413
17:15:23 ✔ require() in debug mode
17:15:23 31 01 2023 17:15:23.571:DEBUG [middleware:source-files]: Requesting /load.php?modules=site.styles&version=131ff
17:15:23 31 01 2023 17:15:23.572:DEBUG [middleware:source-files]: Fetching /load.php
17:15:23 31 01 2023 17:15:23.572:DEBUG [proxy]: proxying request - /load.php?modules=site.styles&version=131ff to 127.0.0.1:9413
17:15:23 ✔ Implicit dependencies
17:15:23 31 01 2023 17:15:23.643:DEBUG [middleware:source-files]: Requesting /tests/qunit/data/mediawiki.loader.getScript.example.js
17:15:23 31 01 2023 17:15:23.644:DEBUG [middleware:source-files]: Fetching /tests/qunit/data/mediawiki.loader.getScript.example.js
17:15:23 31 01 2023 17:15:23.644:DEBUG [proxy]: proxying request - /tests/qunit/data/mediawiki.loader.getScript.example.js to 127.0.0.1:9413
17:15:23 ✔ .getScript() - success
17:15:23 31 01 2023 17:15:23.658:DEBUG [middleware:source-files]: Requesting /this-is-not-found
17:15:23 31 01 2023 17:15:23.659:DEBUG [middleware:source-files]: Fetching /this-is-not-found
17:15:23 31 01 2023 17:15:23.659:DEBUG [proxy]: proxying request - /this-is-not-found to 127.0.0.1:9413
17:15:23 ✔ .getScript() - failure
17:15:23 mw.requestIdleCallback
17:15:23 ✔ callback
17:15:23 ✔ nested
17:15:23 ✔ timeRemaining
17:15:23 ✔ native
17:15:23 mediawiki.jscompat
17:15:23 ✔ Variable with Unicode letter in name
17:15:23 ✔ Stripping of single initial newline from textarea's literal contents (T14130)
17:15:23 jquery.color
17:15:23 ✔ animate
17:15:23 jquery.colorUtil
17:15:23 ✔ getRGB
17:15:23 ✔ rgbToHsl
17:15:23 ✔ hslToRgb
17:15:23 ✔ getColorBrightness
17:15:23 jquery.highlightText
17:15:23 ✔ Check
17:15:23 jquery.lengthLimit
17:15:23 ✔ Plain text input
17:15:23 ✔ Plain text input. Calling byteLimit with no parameters and no maxlength attribute (T38310)
17:15:23 ✔ Limit using the maxlength attribute
17:15:23 ✔ Limit using a custom value
17:15:23 ✔ Limit using a custom value, overriding maxlength attribute
17:15:23 ✔ Limit using a custom value (multibyte)
17:15:23 ✔ Limit using a custom value (multibyte, outside BMP)
17:15:23 ✔ Limit using a custom value (multibyte) overlapping a byte
17:15:23 ✔ Pass the limit and a callback as input filter
17:15:23 ✔ Limit using the maxlength attribute and pass a callback as input filter
17:15:23 ✔ Pass the limit and a callback as input filter
17:15:23 ✔ Input filter that increases the length
17:15:23 ✔ Input filter of which the base exceeds the limit
17:15:23 ✔ Confirm properties and attributes set
17:15:23 ✔ Trim from insertion when limit exceeded
17:15:23 ✔ Do not cut up false matching substrings in emoji insertions
17:15:23 ✔ Unpaired surrogates do not crash
17:15:23 jquery.makeCollapsible
17:15:23 ✔ testing hooks/triggers
17:15:23 ✔ basic operation (<div>)
17:15:23 ✔ basic operation (<table>)
17:15:23 ✔ basic operation (<table> with caption)
17:15:23 ✔ basic operation (<table> with caption and <thead>)
17:15:23 ✔ basic operation (<ul>)
17:15:23 ✔ basic operation (<ol>)
17:15:23 ✔ basic operation when synchronous (options.instantHide)
17:15:23 ✔ mw-made-collapsible data added
17:15:23 ✔ mw-collapsible added when missing
17:15:23 ✔ mw-collapsed added when missing
17:15:23 ✔ initial collapse (mw-collapsed class)
17:15:23 ✔ initial collapse (options.collapsed)
17:15:23 ✔ clicks on links inside toggler pass through
17:15:23 ✔ click on non-link inside toggler counts as trigger
17:15:23 ✔ collapse/expand text (data-collapsetext, data-expandtext)
17:15:23 ✔ collapse/expand text (options.collapseText, options.expandText)
17:15:23 ✔ predefined toggle button and text (.mw-collapsible-toggle/.mw-collapsible-text)
17:15:23 ✔ cloned collapsibles can be made collapsible again
17:15:23 ✔ reveal hash fragment
17:15:23 ✔ T168689 - nested collapsible divs should keep independent state
17:15:23 jquery.tablesorter
17:15:23 ✔ Planets: initial sort ascending by name
17:15:23 ✔ Planets: initial sort descending by radius
17:15:23 ✔ Planets: ascending by name
17:15:23 ✔ Planets: ascending by name (again)
17:15:23 ✔ Planets: ascending by name (multiple clicks)
17:15:23 ✔ Planets: descending by name
17:15:23 ✔ Planets: return to initial sort
17:15:23 ✔ Planets: ascending radius
17:15:23 ✔ Planets: descending radius
17:15:23 ✔ Sorting multiple columns by passing sort list
17:15:23 ✔ Sorting multiple columns by programmatically triggering sort()
17:15:23 ✔ Reset to initial sorting by triggering sort() without any parameters
17:15:23 ✔ Sort via click event after having initialized the tablesorter with initial sorting
17:15:23 ✔ Multi-sort via click event after having initialized the tablesorter with initial sorting
17:15:23 ✔ Reset sorting making table appear unsorted
17:15:23 ✔ Sorting with colspanned headers: spanned column
17:15:23 ✔ Sorting with colspanned headers: sort spanned column twice
17:15:23 ✔ Sorting with colspanned headers: subsequent column
17:15:23 ✔ Sorting with colspanned headers: sort subsequent column twice
17:15:23 ✔ Basic planet table: one unsortable column
17:15:23 ✔ T30775: German-style (dmy) short numeric dates
17:15:23 ✔ T30775: American-style (mdy) short numeric dates
17:15:23 ✔ IPv4 address sorting (T19141)
17:15:23 ✔ IPv4 address reverse sorting (T19141)
17:15:23 ✔ Accented Characters with custom collation
17:15:23 ✔ Accented Characters Swedish locale
17:15:23 ✔ Digraphs with custom collation
17:15:23 ✔ Rowspan not exploded on init
17:15:23 ✔ Basic planet table: same value for multiple rows via rowspan
17:15:23 ✔ Basic planet table: same value for multiple rows via rowspan (sorting initially)
17:15:23 ✔ Basic planet table: Same value for multiple rows via rowspan II
17:15:23 ✔ Complex date parsing I
17:15:23 ✔ Currency parsing I
17:15:23 ✔ Handling of .sortbottom
17:15:23 ✔ Handling of .sorttop
17:15:23 WARN: '(sort-rowspan-error)'
17:15:23 ✔ Rowspan invalid value (T265503)
17:15:23 ✔ Test sort buttons not added to .sorttop row
17:15:23 ✔ Test detection routine
17:15:23 ✔ T34047 - caption must be before thead
17:15:23 ✔ data-sort-value attribute, when available, should override sorting position
17:15:23 ✔ T10115: sort numbers with commas (ascending)
17:15:23 ✔ T10115: sort numbers with commas (descending)
17:15:23 ✔ T34888 - Tables inside a tableheader cell
17:15:23 ✔ Correct date sorting I
17:15:23 ✔ Correct date sorting II
17:15:23 ✔ ISO date sorting
17:15:23 ✔ Sorting images using alt text
17:15:23 ✔ Sorting images using alt text (complex)
17:15:23 ✔ Sorting images using alt text (with format autodetection)
17:15:23 ✔ T40911 - The row with the largest amount of columns should receive the sort indicators
17:15:23 ✔ rowspans in table headers should prefer the last row when rows are equal in length
17:15:23 ✔ holes in the table headers should not throw JS errors
17:15:23 ✔ td cells in thead should not be taken into account for longest row calculation
17:15:23 ✔ Rowspan exploding with row headers
17:15:24 ✔ Rowspan exploding with row headers and colspans
17:15:24 ✔ Rowspan exploding with colspanned cells
17:15:24 ✔ Rowspan exploding with colspanned cells (2)
17:15:24 ✔ Rowspan exploding with rightmost rows spanning most
17:15:24 ✔ Rowspan exploding with rightmost rows spanning most (2)
17:15:24 ✔ Rowspan exploding with row-and-colspanned cells
17:15:24 ✔ Rowspan exploding with uneven rowspan layout
17:15:24 ✔ T105731 - incomplete rows in table body
17:15:24 ✔ bug T114721 - use of expand-child class
17:15:24 ✔ T29745 - References ignored in sortkey
17:15:24 ✔ T311145 - style tags ignored in sortkey
17:15:24 jquery.tablesorter > parsers
17:15:24 ✔ Textual keys
17:15:24 ✔ IPv4
17:15:24 ✔ MDY Dates using mdy content language
17:15:24 ✔ MDY Dates using dmy content language
17:15:24 ✔ Very old MDY dates
17:15:24 ✔ MDY Dates
17:15:24 ✔ DMY Dates
17:15:24 ✔ Clobbered Dates
17:15:24 ✔ MY Dates
17:15:24 ✔ Y Dates
17:15:24 ✔ Currency
17:15:24 ✔ Currency with european separators
17:15:24 jquery.textSelection
17:15:24 ✔ Adding sig to end of text
17:15:24 ✔ Adding bold to empty
17:15:24 ✔ Adding bold to existing text
17:15:24 ✔ ownline option: adding new h2
17:15:24 ✔ ownline option: turn a whole line into new h2
17:15:24 ✔ ownline option: turn a partial line into new h2
17:15:24 ✔ splitlines option: no selection, insert new list item
17:15:24 ✔ splitlines option: single partial line selection, insert new list item
17:15:24 ✔ splitlines option: multiple lines
17:15:24 ✔ set/getCaretPosition with forced empty selection
17:15:24 ✔ set/getCaretPosition with small selection
17:15:24 mediawiki.errorLogger
17:15:24 ✔ installGlobalHandler
17:15:24 ✔ logError
17:15:24 mediawiki.base
17:15:24 ✔ mw.hook - add() and fire()
17:15:24 ✔ mw.hook - "hasOwnProperty" as hook name
17:15:24 ✔ mw.hook - Number of arguments
17:15:24 ✔ mw.hook - Variadic firing data and array data type
17:15:24 ✔ mw.hook - Chainable
17:15:24 ✔ mw.hook - Memory from before
17:15:24 ✔ mw.hook - Multiple consumers with memory between fires
17:15:24 ✔ mw.hook - Memory is not wiped when consumed.
17:15:24 ✔ mw.hook - Unregistering handler.
17:15:24 ✔ mw.hook - Limit impact of consumer errors T223352
17:15:24 ✔ mw.hook - Variadic add and remove
17:15:24 ✔ mw.log.makeDeprecated()
17:15:24 ✔ mw.log.deprecate()
17:15:24 ✔ RLQ.push
17:15:24 mediawiki.html
17:15:24 ✔ escape
17:15:24 ✔ element()
17:15:24 ✔ element( tagName )
17:15:24 ✔ element( tagName, attrs )
17:15:24 ✔ element( tagName, attrs, content )
17:15:24 mediawiki.track
17:15:24 ✔ track
17:15:24 ✔ trackSubscribe
17:15:24 ✔ trackUnsubscribe
17:15:24 mediawiki.jqueryMsg
17:15:24 ✔ Replace
17:15:24 ✔ Plural
17:15:24 ✔ Gender
17:15:24 ✔ Case changing
17:15:24 ✔ Grammar
17:15:24 ✔ Variables
17:15:24 ✔ Bi-di
17:15:24 ✔ Match PHP parser
17:15:24 ✔ Links
17:15:24 ✔ Replacements in links
17:15:24 ✔ Curly brace transformation
17:15:24 ✔ Int
17:15:24 ✔ Ns
17:15:25 ✔ mw.Message.prototype.parser monkey-patch
17:15:25 ✔ mw.Message.prototype.parser monkey-patch HTML-escape
17:15:25 ✔ formatnum
17:15:25 ✔ HTML
17:15:25 ✔ Nowiki
17:15:25 ✔ Behavior in case of invalid wikitext
17:15:25 ✔ Non-string parameters to various functions
17:15:25 ✔ Do not allow javascript: urls
17:15:25 ✔ Do not allow arbitrary style
17:15:25 ✔ Integration
17:15:25 ✔ setParserDefaults
17:15:25 mediawiki.messagePoster
17:15:25 ✔ register
17:15:25 mediawiki.String.byteLength
17:15:25 ✔ Simple text
17:15:25 ✔ Special text
17:15:25 mediawiki.String.charAt
17:15:25 ✔ Simple text
17:15:25 ✔ UTF-16 text
17:15:25 mediawiki.String.lcFirst
17:15:25 ✔ lcFirst
17:15:25 mediawiki.String.ucFirst
17:15:25 ✔ ucFirst
17:15:25 mediawiki.String.trimByteLength
17:15:25 ✔ Limit using the maxlength attribute
17:15:25 ✔ Limit using a custom value (multibyte)
17:15:25 ✔ Limit using a custom value (multibyte, outside BMP)
17:15:25 ✔ Limit using a custom value (multibyte) overlapping a byte
17:15:25 ✔ Pass the limit and a callback as input filter
17:15:25 ✔ Pass the limit and a callback as input filter
17:15:25 ✔ Input filter that increases the length
17:15:25 ✔ Trim from insertion when limit exceeded
17:15:25 ✔ Trim from insertion when limit exceeded
17:15:25 ✔ Do not cut up false matching substrings in emoji insertions
17:15:25 ✔ Unpaired surrogates do not crash
17:15:25 mediawiki.storage
17:15:25 ✔ set/get(Object) with storage support
17:15:25 ✔ set/get(Object) with storage methods disabled
17:15:25 ✔ set/get(Object) with storage object disabled
17:15:25 mediawiki.template
17:15:25 ✔ add
17:15:25 ✔ compile
17:15:25 ✔ get
17:15:25 mediawiki.template.mustache
17:15:25 ✔ render
17:15:25 mediawiki.inspect
17:15:25 ✔ .getModuleSize() - scripts
17:15:25 ✔ .getModuleSize() - scripts, styles
17:15:25 ✔ .getModuleSize() - packageFiles, styles
17:15:25 ✔ .getModuleSize() - scripts, messages
17:15:25 ✔ .getModuleSize() - scripts, styles, messages, templates
17:15:25 mediawiki.Title
17:15:25 ✔ constructor
17:15:25 ✔ newFromText
17:15:25 ✔ makeTitle
17:15:25 ✔ Basic parsing
17:15:25 ✔ Transformation
17:15:25 ✔ Namespace detection and conversion
17:15:25 ✔ isTalkPage/getTalkPage/getSubjectPage
17:15:25 ✔ wantSignaturesNamespace
17:15:25 ✔ Throw error on invalid title
17:15:25 ✔ phpCharToUpper
17:15:25 ✔ Case-sensivity
17:15:25 ✔ toString / toText
17:15:25 ✔ getExtension
17:15:25 ✔ exists
17:15:25 ✔ getUrl
17:15:25 ✔ newFromImg
17:15:25 ✔ getRelativeText
17:15:25 ✔ normalizeExtension
17:15:25 ✔ newFromUserInput
17:15:25 ✔ newFromUserInput with invalid file name for upload
17:15:25 ✔ newFromUserInput with misplaced parameter
17:15:25 ✔ newFromUserInput with invalid file name, but not for upload
17:15:25 ✔ newFromFileName
17:15:25 ✔ makeTitle for non existent namespace
17:15:25 mediawiki.toc
17:15:25 ✔ Use toggle
17:15:25 ✔ Initially hidden
17:15:25 mediawiki.Uri
17:15:25 ✔ Basic construction and properties (strict mode)
17:15:25 ✔ Basic construction and properties (non-strict mode)
17:15:25 ✔ Constructor( String[, Object ] )
17:15:25 ✔ Constructor( Object )
17:15:25 ✔ Constructor( empty[, Object ] )
17:15:25 ✔ Properties
17:15:25 ✔ .getQueryString()
17:15:25 ✔ arrayParams
17:15:25 ✔ .clone()
17:15:25 ✔ .toString() after query manipulation
17:15:25 ✔ Variable defaultUri
17:15:25 ✔ Advanced URL
17:15:25 ✔ Parse a uri with an @ symbol in the path and query
17:15:25 ✔ Handle protocol-relative URLs
17:15:25 ✔ T37658
17:15:25 mediawiki.user
17:15:25 ✔ options
17:15:25 ✔ getters (anonymous)
17:15:25 ✔ getters (logged-in)
17:15:25 ✔ getGroups (callback)
17:15:25 ✔ getGroups (Promise)
17:15:25 ✔ getRights (callback)
17:15:26 ✔ getRights (Promise)
17:15:26 ✔ generateRandomSessionId
17:15:26 ✔ generateRandomSessionId (fallback)
17:15:26 ✔ getPageviewToken
17:15:26 ✔ sessionId
17:15:26 mediawiki.util
17:15:26 ✔ rawurlencode
17:15:26 ✔ escapeIdForAttribute
17:15:26 ✔ escapeIdForLink
17:15:26 ✔ percentDecodeFragment [0]
17:15:26 ✔ percentDecodeFragment [1]
17:15:26 ✔ percentDecodeFragment [2]
17:15:26 ✔ percentDecodeFragment [3]
17:15:26 ✔ percentDecodeFragment [4]
17:15:26 ✔ percentDecodeFragment [5]
17:15:26 ✔ percentDecodeFragment [6]
17:15:26 ✔ percentDecodeFragment [7]
17:15:26 ✔ percentDecodeFragment [8]
17:15:26 ✔ percentDecodeFragment [9]
17:15:26 ✔ percentDecodeFragment [10]
17:15:26 ✔ percentDecodeFragment [11]
17:15:26 ✔ percentDecodeFragment [12]
17:15:26 ✔ wikiUrlencode [0]
17:15:26 ✔ wikiUrlencode [1]
17:15:26 ✔ wikiUrlencode [2]
17:15:26 ✔ wikiUrlencode [3]
17:15:26 ✔ wikiUrlencode [4]
17:15:26 ✔ wikiUrlencode [5]
17:15:26 ✔ wikiUrlencode [6]
17:15:26 ✔ wikiUrlencode [7]
17:15:26 ✔ wikiUrlencode [8]
17:15:26 ✔ wikiUrlencode [9]
17:15:26 ✔ wikiUrlencode [10]
17:15:26 ✔ getUrl
17:15:26 ✔ wikiScript
17:15:26 ✔ addCSS
17:15:26 ✔ getParamValue
17:15:26 ✔ addPortletLink (Vector list)
17:15:26 ✔ addPortletLink (Minerva list)
17:15:26 ✔ addPortletLink (nextNode option)
17:15:26 ✔ addPortletLink (accesskey option)
17:15:26 ✔ addPortletLink (nested list)
17:15:26 ✔ validateEmail
17:15:26 ✔ isIPv6Address
17:15:26 ✔ isIPv4Address
17:15:26 ✔ isIPAddress
17:15:26 parseImageUrl
17:15:26 ✔ parseImageUrl: Hashed thumb with shortened path
17:15:26 ✔ parseImageUrl: Hashed thumb with sha1-ed path
17:15:26 ✔ parseImageUrl: Normal hashed directory thumbnail
17:15:26 ✔ parseImageUrl: Normal hashed directory thumbnail with complex thumbnail parameters
17:15:26 ✔ parseImageUrl: Width-like filename component
17:15:26 ✔ parseImageUrl: Width-like filename component in non-ASCII filename
17:15:26 ✔ parseImageUrl: Commons thumbnail
17:15:26 ✔ parseImageUrl: Full image
17:15:26 ✔ parseImageUrl: thumb.php-based thumbnail
17:15:26 ✔ parseImageUrl: thumb.php-based thumbnail with px width
17:15:26 ✔ parseImageUrl: thumb.php-based BC thumbnail
17:15:26 ✔ parseImageUrl: Commons unhashed thumbnail
17:15:26 ✔ parseImageUrl: Commons unhashed thumbnail with complex thumbnail parameters
17:15:26 ✔ parseImageUrl: Unhashed local file
17:15:26 ✔ parseImageUrl: Empty string
17:15:26 ✔ parseImageUrl: String with only alphabet characters
17:15:26 ✔ parseImageUrl: Not a file path
17:15:26 ✔ parseImageUrl: Space characters
17:15:26 ✔ parseImageUrl: Without dynamic thumbnail generation
17:15:26 ✔ escapeRegExp
17:15:26 ✔ debounce
17:15:26 ✔ debounce immediate
17:15:26 ✔ debounce (old signature)
17:15:26 ✔ init (.mw-body-primary)
17:15:26 ✔ init (first of multiple .mw-body)
17:15:26 ✔ init (#mw-content-text fallback)
17:15:26 ✔ init (body fallback)
17:15:26 ✔ sanitizeIP
17:15:26 ✔ prettifyIP
17:15:26 mediawiki.util: jquery.accessKeyLabel
17:15:26 ✔ getAccessKeyPrefix
17:15:26 ✔ updateTooltipAccessKeys - current browser
17:15:26 ✔ updateTooltipAccessKeys - no access key
17:15:26 ✔ updateTooltipAccessKeys - with access key
17:15:26 ✔ updateTooltipAccessKeys with label element
17:15:26 ✔ updateTooltipAccessKeys with label element as parent
17:15:26 mediawiki.api
17:15:26 ✔ get()
17:15:26 ✔ post()
17:15:26 ✔ API error errorformat=bc
17:15:26 ✔ API error errorformat!=bc
17:15:26 ✔ FormData support
17:15:26 ✔ Converting arrays to pipe-separated (string)
17:15:26 ✔ Converting arrays to pipe-separated (mw.Title)
17:15:26 ✔ Converting arrays to pipe-separated (misc primitives)
17:15:26 ✔ Omitting false booleans
17:15:26 ✔ getToken() - cached
17:15:26 ✔ getToken() - uncached
17:15:26 ✔ getToken() - error
17:15:26 ✔ getToken() - no query
17:15:26 WARN: 'Use of the "email" token is deprecated. Use "csrf" instead.'
17:15:26 ✔ getToken() - deprecated
17:15:26 ✔ badToken()
17:15:26 WARN: 'Use of the "options" token is deprecated. Use "csrf" instead.'
17:15:26 WARN: 'Use of the "options" token is deprecated. Use "csrf" instead.'
17:15:26 WARN: 'Use of the "options" token is deprecated. Use "csrf" instead.'
17:15:26 ✔ badToken( legacy )
17:15:26 ✔ postWithToken( tokenType, params )
17:15:26 ✔ postWithToken( tokenType, params with assert )
17:15:26 ✔ postWithToken( tokenType, params, ajaxOptions )
17:15:26 ✔ postWithToken() - badtoken
17:15:26 ✔ postWithToken() - badtoken-cached
17:15:26 mediawiki.api (2)
17:15:26 ✔ #abort
17:15:26 mediawiki.api.category
17:15:26 ✔ .getCategoriesByPrefix()
17:15:26 ✔ .isCategory("")
17:15:26 ✔ .isCategory("#")
17:15:26 ✔ .isCategory("mw:")
17:15:26 ✔ .isCategory("|")
17:15:26 ✔ .getCategories("")
17:15:26 ✔ .getCategories("#")
17:15:26 ✔ .getCategories("mw:")
17:15:27 ✔ .getCategories("|")
17:15:27 mediawiki.api.edit
17:15:27 ✔ edit( title, transform String )
17:15:27 ✔ edit( mw.Title, transform String )
17:15:27 ✔ edit( title, transform Promise )
17:15:27 ✔ edit( title, transform Object )
17:15:27 ✔ edit( invalid-title, transform String )
17:15:27 ✔ create( title, content )
17:15:27 mediawiki.api.messages
17:15:27 ✔ .getMessages()
17:15:27 ✔ .getMessages() with a long string
17:15:27 mediawiki.api.options
17:15:27 ✔ saveOption
17:15:27 WARN: 'Use of the "options" token is deprecated. Use "csrf" instead.'
17:15:27 WARN: 'Use of the "options" token is deprecated. Use "csrf" instead.'
17:15:27 ✔ saveOptions without Unit Separator
17:15:27 WARN: 'Use of the "options" token is deprecated. Use "csrf" instead.'
17:15:27 WARN: 'Use of the "options" token is deprecated. Use "csrf" instead.'
17:15:27 ✔ saveOptions with Unit Separator
17:15:27 ✔ saveOptions (anonymous)
17:15:27 mediawiki.api.parse
17:15:27 ✔ .parse( string )
17:15:27 ✔ .parse( Object.toString )
17:15:27 ✔ .parse( mw.Title )
17:15:27 mediawiki.api.upload
17:15:27 ✔ Basic functionality
17:15:27 mediawiki.api.watch
17:15:27 ✔ .watch( string )
17:15:27 ✔ .watch( Array ) - single
17:15:27 ✔ .watch( Array ) - multi
17:15:28 mediawiki.rest
17:15:28 ✔ get()
17:15:28 ✔ get() respects ajaxOptions url
17:15:28 ✔ post()
17:15:28 ✔ put()
17:15:28 ✔ delete()
17:15:28 ✔ http error
17:15:28 mediawiki.rest abort
17:15:28 ✔ #abort
17:15:28 mediawiki.ForeignApi
17:15:28 ✔ origin is included in GET requests
17:15:28 ✔ origin is included in POST requests
17:15:28 ✔ origin is not included in same-origin GET requests
17:15:28 ✔ origin is not included in same-origin POST requests
17:15:28 mediawiki.ForeignRest
17:15:28 ✔ get()
17:15:28 ✔ post()
17:15:28 ✔ http error
17:15:28 mediawiki.rcfilters - FiltersViewModel
17:15:28 ✔ Setting up filters
17:15:28 ✔ Default filters
17:15:28 ✔ Parameter minimal state
17:15:28 ✔ Parameter states
17:15:28 ✔ Cleaning up parameter states
17:15:28 ✔ Finding matching filters
17:15:28 ✔ getParametersFromFilters
17:15:28 ✔ getParametersFromFilters (custom object)
17:15:28 ✔ getFiltersFromParameters
17:15:28 ✔ sanitizeStringOptionGroup
17:15:28 ✔ Filter interaction: subsets
17:15:28 ✔ Filter interaction: full coverage
17:15:28 ✔ Filter interaction: conflicts
17:15:28 ✔ Filter highlights
17:15:28 ✔ emptyAllFilters
17:15:28 ✔ areVisibleFiltersEmpty
17:15:28 mediawiki.rcfilters - FilterItem
17:15:28 ✔ Initializing filter item
17:15:28 ✔ Emitting events
17:15:28 ✔ get/set boolean value
17:15:28 ✔ get/set any value
17:15:28 mediawiki.rcfilters - SavedQueryItemModel
17:15:28 ✔ Initializing and getters
17:15:28 ✔ Default
17:15:28 mediawiki.rcfilters - SavedQueriesModel
17:15:28 ✔ Initializing queries
17:15:28 ✔ Adding new queries
17:15:28 ✔ Manipulating queries
17:15:28 ✔ Testing invert property1) MediaWiki\CheckUser\Tests\Integration\Api\ApiQueryCheckUserLogTest::testReasonFilter with data set "IP target with matching reason and log reason migration set to read new" ('ipusers', 'ip', '127.0.0.1', 'testing', 0, '1653047635', 'testing', true, 768)
17:15:28 mediawiki.rcfilters - UriProcessorWikimedia\Rdbms\DBQueryError: Error 23502: ERROR: null value in column "cul_reason" violates not-null constraint
17:15:28 ✔ getVersion
17:15:28 ✔ getUpdatedUri
17:15:28 ✔ updateModelBasedOnQuery
17:15:28 ✔ isNewState
17:15:28 ✔ doesQueryContainRecognizedParams
17:15:28 ✔ _getNormalizedQueryParams
17:15:28 ✔ _normalizeTargetInUri
17:15:28 mediawiki.widgets.APIResultsQueue
17:15:28 ✔ Query providers
17:15:28 ✔ Abort providers
17:15:28 mediawiki.widgets.TableWidget
17:15:28 ✔ TableWidgetModel initialization
17:15:28 ✔ TableWidgetModel#getRowProperties
17:15:28 ✔ TableWidget#setValue
17:15:28 ✔ TableWidget#insertColumn/insertRow (skipped)
17:15:28 ✔ TableWidget#removeColumn (skipped)
17:15:28 ✔ TableWidget#removeRow by index (skipped)
17:15:28 ✔ TableWidget#removeRow by key (skipped)
17:15:28 ✔ TableWidget populate text inputs
17:15:28 mediawiki.language
17:15:28 ✔ mw.language getData and setData
17:15:28 WARN: 'Use of "mw.language.commafy" is deprecated. Use mw.language.convertNumber instead'
17:15:28 WARN: 'Use of "mw.language.commafy" is deprecated. Use mw.language.convertNumber instead'
17:15:28 WARN: 'Use of "mw.language.commafy" is deprecated. Use mw.language.convertNumber instead'
17:15:28 WARN: 'Use of "mw.language.commafy" is deprecated. Use mw.language.convertNumber instead'
17:15:28 WARN: 'Use of "mw.language.commafy" is deprecated. Use mw.language.convertNumber instead'
17:15:28 WARN: 'Use of "mw.language.commafy" is deprecated. Use mw.language.convertNumber instead'
17:15:28 WARN: 'Use of "mw.language.commafy" is deprecated. Use mw.language.convertNumber instead'
17:15:28 WARN: 'Use of "mw.language.commafy" is deprecated. Use mw.language.convertNumber instead'
17:15:28 WARN: 'Use of "mw.language.commafy" is deprecated. Use mw.language.convertNumber instead'
17:15:28 ✔ mw.language.commafy test
17:15:28 ✔ mw.language.convertNumber
17:15:28 ✔ mw.language.convertNumber - digitTransformTable
17:15:28 ✔ List to text test
17:15:28 ✔ mw.language.bcp47
17:15:28 mediawiki.cookie
17:15:28 ✔ set( key, value )
17:15:28 ✔ set( key, value, expires )
17:15:28 ✔ set( key, value, options )
17:15:28 ✔ set with sameSiteLegacy
17:15:28 ✔ get( key ) - no values
17:15:28 ✔ get( key ) - with value
17:15:28 ✔ get( key, prefix )
17:15:28 ✔ getCrossSite( key, prefix )
17:15:28 mediawiki.deflate
17:15:28 ✔ deflate [foobar]
17:15:28 ✔ deflate [Unicode]
17:15:28 ✔ deflate [Non BMP unicode]
17:15:28 ✔ deflate [5MB data]
17:15:29 mediawiki.experiments
17:15:29 ✔ getBucket( experiment, token )
17:15:29 mediawiki.visibleTimeout
17:15:29 ✔ visibleTimeoutId is always a positive integer
17:15:29 ✔ basic usage when visible
17:15:29 ✔ basic usage - fallback assumes visible
17:15:29 ✔ can cancel timeout
17:15:29 ✔ start hidden and become visible
17:15:29 ✔ timeout is cumulative
17:15:29 ve
17:15:29 ✔ compareClassLists
17:15:29 ✔ isInstanceOfAny
17:15:29 ✔ getDomAttributes
17:15:29 ✔ setDomAttributes
17:15:29 ✔ sparseSplice
17:15:29 ✔ batchSplice
17:15:29 ✔ batchPush
17:15:29 ✔ insertIntoArray
17:15:29 ✔ escapeHtml
17:15:29 ✔ addHeadTag
17:15:29 ✔ createDocumentFromHtml
17:15:29 ✔ resolveUrl
17:15:29 ✔ resolveAttributes
17:15:29 ✔ fixBase
17:15:29 ✔ isUriComponentValid
17:15:29 ✔ safeDecodeURIComponent
17:15:29 ✔ isBlockElement/isVoidElement
17:15:29 ✔ graphemeSafeSubstring
17:15:29 ✔ transformStyleAttributes
17:15:29 ✔ normalizeNode
17:15:29 ✔ getCommonAncestor
17:15:29 ✔ getCommonStartSequenceLength
17:15:29 ✔ adjacentDomPosition
17:15:29 ✔ deepFreeze
17:15:29 ✔ deepFreeze (on cyclic structure)
17:15:29 ✔ deepFreeze (recursive, aliased)
17:15:29 ve.utils.parsoid
17:15:29 ✔ reduplicateStyles/deduplicateStyles
17:15:29 ✔ getTargetDataFromHref
17:15:29 ve.DiffMatchPatch
17:15:29 ✔ indexOf/lastIndexOf
17:15:29 ve.EventSequencer
17:15:29 ✔ EventSequencer
17:15:29 ve.Scheduler
17:15:29 ✔ Call with no real async
17:15:29 ✔ Call with delay
17:15:29 ✔ Test that throws an exception
17:15:29 ✔ Test that never succeeds
17:15:29 ve.Range
17:15:29 ✔ Basic usage (isCollapsed, isBackwards, getLength, equals, equalsSelection, containsOffset, containsRange, touchesRange)
17:15:29 ✔ Modification (flip, truncate, expand, translate)
17:15:29 ✔ Factory methods & serialization (newCoveringRange, newFromJSON, toJSON)
17:15:29 ve.Document
17:15:29 ✔ getDocumentNode
17:15:29 ve.Node
17:15:29 ✔ getType
17:15:29 ✔ getParent
17:15:29 ✔ getRoot
17:15:29 ve.BranchNode
17:15:29 ✔ getChildren
17:15:29 ✔ indexOf
17:15:29 ✔ setDocument
17:15:29 ve.sanitize
17:15:29 ✔ ve.sanitizeHtml
17:15:29 ✔ ve.sanitizeHtmlToDocument
17:15:29 ✔ ve.setAttributeSafe
17:15:29 ve.dm.Annotation
17:15:29 ✔ getHashObject
17:15:29 ve.dm.AnnotationSet
17:15:29 ✔ Basic usage
17:15:29 ✔ Comparable
17:15:29 ve.dm.LinkAnnotation
17:15:29 ✔ getFragment
17:15:29 ve.dm.NodeFactory
17:15:29 ✔ getChildNodeTypes
17:15:29 ✔ getParentNodeTypes
17:15:29 ✔ canNodeHaveChildren
17:15:29 ✔ canNodeTakeAnnotation
17:15:29 ✔ canNodeHaveChildrenNotContent
17:15:29 ✔ initialization
17:15:29 ve.dm.Node
17:15:29 ✔ canHaveChildren
17:15:29 ✔ canHaveChildrenNotContent
17:15:29 ✔ getLength
17:15:29 ✔ getOuterLength
17:15:29 ✔ setLength
17:15:29 ✔ adjustLength
17:15:29 ✔ getAttribute
17:15:29 ✔ setRoot
17:15:29 ✔ attach
17:15:29 ✔ detach
17:15:29 ✔ canBeMergedWith
17:15:29 ✔ getClonedElement
17:15:29 ve.dm.Converter
17:15:29 ✔ getModelFromDom
17:15:29 ✔ getModelFromDom with store argument
17:15:29 ✔ getDomFromModel
17:15:30 ✔ getFullData
17:15:30 ✔ roundTripMetadata
17:15:30 ve.dm.SourceConverter
17:15:30 ✔ conversion
17:15:30 ve.dm.BranchNode
17:15:30 ✔ canHaveChildren
17:15:30 ✔ canHaveChildrenNotContent
17:15:30 ✔ setRoot
17:15:30 ✔ setDocument
17:15:30 ✔ push
17:15:30 ✔ pop
17:15:30 ✔ unshift
17:15:30 ✔ shift
17:15:30 ✔ splice
17:15:30 ve.dm.LeafNode
17:15:30 ✔ canHaveChildren
17:15:30 ✔ canHaveChildrenNotContent
17:15:30 ✔ getAnnotations
17:15:30 ve.dm.TextNode
17:15:30 ✔ getOuterLength
17:15:30 ve.dm.MWTransclusionNode
17:15:30 ✔ getWikitext
17:15:30 ve.dm.Document
17:15:30 ✔ constructor
17:15:30 ✔ newBlankDocument
17:15:30 ✔ getData
17:15:30 ✔ getFullData
17:15:30 ✔ cloneFromRange
17:15:30 ✔ getRelativeOffset
17:15:30 ✔ getRelativeRange
17:15:30 ✔ getBranchNodeFromOffset
17:15:30 ✔ hasSlugAtOffset
17:15:30 ✔ getDataFromNode
17:15:30 ✔ getOuterLength
17:15:30 ✔ selectNodes
17:15:30 ✔ rangeInsideOneLeafNode
17:15:30 ✔ shallowCloneFromRange
17:15:30 ✔ protection against double application of transactions
17:15:30 ✔ getNearestCursorOffset
17:15:30 ✔ Selection equality
17:15:30 ✔ findText (plain text)
17:15:30 ✔ findText (non-text content)
17:15:30 ✔ fixupInsertion
17:15:30 ✔ read-only and offset caching
17:15:30 ve.dm.Document (MW)
17:15:30 ✔ getRelativeRange (mwBlockImage / mwInlineImage)
17:15:30 ve.dm.HashValueStore
17:15:30 ✔ hash(es)
17:15:30 ✔ value(s)
17:15:30 ✔ slice
17:15:30 ve.dm.InternalList
17:15:30 ✔ getDocument
17:15:30 ✔ queueItemHtml/getItemHtmlQueue
17:15:30 ✔ convertToData
17:15:30 ✔ clone
17:15:30 ve.dm.LinearData
17:15:30 ✔ basic usage
17:15:30 ✔ slice(Object)/splice(Object)/batchSplice
17:15:30 ve.dm.Transaction
17:15:30 ✔ translateOffset
17:15:30 ✔ translateRange
17:15:30 ✔ getModifiedRange
17:15:30 ✔ Metadata transactions
17:15:30 ve.dm.TransactionBuilder
17:15:30 ✔ newFromInsertion
17:15:30 ✔ newFromRemoval
17:15:30 ✔ newFromReplacement
17:15:30 ✔ newFromDocumentInsertion
17:15:30 ✔ newFromAttributeChanges
17:15:30 ✔ newFromAnnotation
17:15:30 ✔ newFromContentBranchConversion
17:15:30 ✔ newFromWrap
17:15:30 ✔ pushRetain
17:15:30 ✔ pushReplacement
17:15:30 ✔ pushReplaceElementAttribute
17:15:30 ✔ isNoOp
17:15:30 ✔ operations/build from operations
17:15:30 ✔ newFromRemoval preserving metadata
17:15:30 ve.dm.Change
17:15:30 ✔ rebaseTransactions
17:15:30 ✔ Change operations
17:15:30 ✔ Rebase with conflicting annotations
17:15:30 ✔ toJSON/deserialize/unsafeDeserialize
17:15:30 ✔ Minified serialization
17:15:30 ✔ Same-offset typing
17:15:30 ve.dm.TreeModifier
17:15:30 ✔ treeDiff
17:15:30 ✔ modify
17:15:30 ✔ bare content
17:15:30 ✔ applyTreeOperation: ensureNotText
17:15:30 ✔ setupBlockSlugs
17:15:30 ✔ checkEqualData
17:15:30 ✔ TreeCursor#crossIgnoredNodes
17:15:30 ✔ TreeCursor#normalizeCursor
17:15:30 ve.dm.TransactionProcessor
17:15:30 ✔ commit
17:15:30 ✔ undo clear annotation
17:15:30 ve.dm.Surface
17:15:30 ✔ getDocument
17:15:30 ✔ getSelection
17:15:30 ✔ setSelection out of range
17:15:30 ✔ contextChange events
17:15:30 ✔ documentUpdate/select events
17:15:30 ✔ breakpoint/undo/redo
17:15:30 ✔ multi-user undo
17:15:30 ✔ change rollback
17:15:30 ✔ range translation
17:15:30 ✔ staging
17:15:30 ✔ getOffsetFromSourceOffset / getSourceOffsetFromOffset / getRangeFromSourceOffsets
17:15:30 ✔ autosave
17:15:30 ve.dm.SurfaceFragment
17:15:30 ✔ constructor
17:15:30 ✔ update
17:15:30 ✔ getSelectedModels
17:15:30 ✔ getAnnotations
17:15:30 ✔ hasAnnotations
17:15:30 ✔ adjustLinearSelection
17:15:30 ✔ truncateLinearSelection
17:15:30 ✔ collapseToStart/End
17:15:30 ✔ expandLinearSelection (annotation)
17:15:30 ✔ expandLinearSelection (closest)
17:15:30 ✔ expandLinearSelection (word)
17:15:30 ✔ removeContent
17:15:30 ✔ delete
17:15:30 ✔ insertContent/insertDocument
17:15:30 ✔ changeAttributes
17:15:30 ✔ wrapNodes/unwrapNodes
17:15:30 ✔ rewrapNodes
17:15:30 ✔ wrapAllNodes
17:15:30 ✔ rewrapAllNodes
17:15:30 ✔ isolateAndUnwrap
17:15:30 ve.dm.SurfaceFragment (MW)
17:15:30 ✔ isolateAndUnwrap (MWheading)
17:15:30 ✔ insertContent (MWheading)
17:15:30 ve.dm.SourceSurfaceFragment
17:15:30 ✔ insertContent/insertDocument
17:15:30 ve.dm.ModelRegistry
17:15:30 ✔ register/unregister/matchElement
17:15:30 ✔ isAnnotation
17:15:30 ve.dm.MetaList
17:15:30 ✔ constructor
17:15:30 ✔ onTransact
17:15:30 ve.dm.Scalable
17:15:30 ✔ construction/clone/getters/setters/toggleDefault/clearers
17:15:30 ✔ getBoundedDimensions/getCurrentScale/isCurrentDimensionsValid/isTooSmall/isTooLarge
17:15:30 ✔ isDefault/toggleDefault
17:15:30 ✔ isDimensionsObjectValid
17:15:30 ✔ getDimensionsFromValue
17:15:30 ve.dm.LinearSelection
17:15:30 ✔ Construction and getters (getRange(s))
17:15:30 ✔ Basic methods (collapse*, isCollased, equals, isNull)
17:15:30 ✔ Factory methods & serialization (newFromJSON, toJSON, getDescription)
17:15:30 ve.dm.NullSelection
17:15:30 ✔ Construction and getters (getDocument, getRanges)
17:15:30 ✔ Basic methods (collapse*, isCollased, equals, isNull)
17:15:30 ✔ Factory methods & serialization (newFromJSON, toJSON, getDescription)
17:15:30 ve.dm.TableSelection
17:15:30 ✔ Construction and getters (getDocument, getRanges, getOuterRanges, getTableNode)
17:15:30 ✔ Basic methods (expand, collapse*, getRange(s), isCollased, isSingleCell, equals, isNull, isFullRow/Col, getRow/ColCount)
17:15:30 ✔ Factory methods & serialization (newFromJSON, toJSON, getDescription)
17:15:30 ve.dm.FlatLinearData
17:15:30 ✔ getType/isOpenElementData/isCloseElementData
17:15:30 ✔ isElementData
17:15:30 ✔ containsElementData
17:15:30 ve.dm.ElementLinearData
17:15:30 ✔ getAnnotationsFromOffset
17:15:30 ✔ getAnnotationsFromRange
17:15:30 ✔ getInsertionAnnotationsFromRange
17:15:30 ✔ getAnnotatedRangeFromOffset
17:15:30 ✔ trimOuterSpaceFromRange
17:15:30 ✔ isContentOffset
17:15:30 ✔ isStructuralOffset
17:15:30 ✔ getCharacterData
17:15:30 ✔ isPlainText
17:15:30 ✔ getText
17:15:30 ✔ getSourceText
17:15:30 ✔ isContentData
17:15:30 ✔ getRelativeOffset
17:15:30 ✔ getRelativeContentOffset
17:15:30 ✔ getNearestContentOffset
17:15:30 ✔ getRelativeStructuralOffset
17:15:30 ✔ getNearestStructuralOffset
17:15:30 ✔ getWordRange
17:15:30 ✔ sanitize
17:15:30 ✔ countNonInternalElements
17:15:30 ✔ hasContent
17:15:30 ✔ getAnnotationHashesFromOffset
17:15:30 ✔ getUsedStoreValues
17:15:30 ✔ compareElements and compareElementsUnannotated
17:15:30 ve.dm.Converter (MW)
17:15:30 ✔ getModelFromDom
17:15:30 ✔ getDomFromModel
17:15:31 ve.dm.MWInternalLinkAnnotation
17:15:31 ✔ toDataElement
17:15:31 ✔ getFragment
17:15:31 ve.dm.MWImageModel
17:15:31 ✔ Create and manipulate image nodes
17:15:31 ve.dm.MWTemplateModel
17:15:31 ✔ getTitle: undefined
17:15:31 ✔ getTitle:
17:15:31 ✔ getTitle: no_prefix
17:15:31 ✔ getTitle: /unexpected_prefix
17:15:31 ✔ getTitle: ./Template:%C3%9Cnicode%5Fexample/subpage
17:15:31 ✔ getTitle: ./Template:Possibly_invalid%5B%5D
17:15:31 ✔ hasParameter
17:15:31 ✔ getOriginalParameterName
17:15:31 ✔ serialize input parameters
17:15:31 ✔ serialize changed input parameters
17:15:31 ✔ serialize after parameter was removed
17:15:31 ✔ serialize without empty parameter not present in original parameter set
17:15:31 ✔ serialize with explicit parameter order
17:15:31 ✔ serialize with no parameter order
17:15:31 ✔ serialize with aliases
17:15:31 ✔ serialize with unknown params
17:15:31 ✔ getOrderedParameterNames: no spec retrieved
17:15:31 ✔ getOrderedParameterNames: empty spec
17:15:31 ✔ getOrderedParameterNames: spec with explicit paramOrder and all known params
17:15:31 ✔ getOrderedParameterNames: spec with explicit paramOrder and some unknown params
17:15:31 ✔ getOrderedParameterNames: spec with explicit paramOrder but all unknown params
17:15:31 ✔ getOrderedParameterNames: spec with no paramOrder, all known params
17:15:31 ✔ getOrderedParameterNames: spec with no paramOrder and some unknown params
17:15:31 ✔ getAllParametersOrdered: no spec retrieved
17:15:31 ✔ getAllParametersOrdered: spec with explicit paramOrder and all known params
17:15:31 ✔ getAllParametersOrdered: spec with explicit paramOrder and some unknown params
17:15:31 ✔ getAllParametersOrdered: spec with explicit paramOrder but all unknown params
17:15:31 ✔ getAllParametersOrdered: spec with no paramOrder, all known params
17:15:31 ✔ getAllParametersOrdered: spec with no paramOrder and some unknown params
17:15:31 ✔ getAllParametersOrdered: spec with explicit paramOrder and aliases
17:15:31 ✔ same documented parameter used with different aliases
17:15:31 ✔ getTemplateDataQueryTitle: prefers .wt when it is a valid title
17:15:31 ✔ getTemplateDataQueryTitle: falls back to unmodified getTitle
17:15:31 ✔ getTemplateDataQueryTitle: strips subst:
17:15:31 ✔ getTemplateDataQueryTitle: strips safesubst:
17:15:31 ✔ getTemplateDataQueryTitle: ignores capitalization and whitespace
17:15:31 ✔ getTemplateDataQueryTitle: leaves bad whitespace untouched
17:15:31 ✔ getTemplateDataQueryTitle: leaves other prefixes untouched
17:15:31 ✔ containsValuableData: no parameters
17:15:31 ✔ containsValuableData: multiple parameters
17:15:31 ✔ containsValuableData: undefined
17:15:31 ✔ containsValuableData: null
17:15:31 ✔ containsValuableData: empty string
17:15:31 ✔ containsValuableData: space
17:15:31 ✔ containsValuableData: 0
17:15:31 ✔ containsValuableData: newline
17:15:31 ve.dm.MWTemplateSpecModel
17:15:31 ✔ Basic behavior on empty template
17:15:31 ✔ Basic behavior on non-empty template
17:15:31 ✔ Basic behavior with later fillFromTemplate()
17:15:31 ✔ getLabel: parses .wt if possible
17:15:31 ✔ getLabel: resolves subst:
17:15:31 ✔ getLabel: strips template namespace
17:15:31 ✔ getLabel: does not strip other namespaces
17:15:31 ✔ getLabel: title in main namespace must be prefixed
17:15:31 ✔ getLabel: falls back to unmodified href if invalid
17:15:31 ✔ Invalid TemplateData, e.g. empty or without params
17:15:31 ✔ Invalid TemplateData, e.g. empty or without params
17:15:31 ✔ Invalid TemplateData, e.g. empty or without params
17:15:31 ✔ Invalid TemplateData, e.g. empty or without params
17:15:31 ✔ Basic behavior with minimal setTemplateData()
17:15:31 ✔ Complex setTemplateData() with alias
17:15:31 ✔ Template uses aliases
17:15:31 ✔ Alias conflicts with another parameter
17:15:31 ✔ fillFromTemplate() must skip aliases
17:15:31 ✔ isDocumented(): documented
17:15:31 ✔ isDocumented(): documented but no params
17:15:31 ✔ isDocumented(): undocumented
17:15:31 ✔ isDocumented(): auto-detected params
17:15:31 ✔ isDocumented(): undefined
17:15:31 ✔ isDocumented(): null
17:15:31 ✔ isDocumented(): empty array
17:15:31 ✔ isDocumented(): unexpected false
17:15:31 ✔ isDocumented(): unsupported formatversion=1
17:15:31 ✔ getDocumentedParameterOrder() should not return a reference
17:15:31 ✔ Parameter deprecation with empty string
17:15:31 ve.dm.MWTransclusionContentModel
17:15:31 ✔ containsValuableData: undefined
17:15:31 ✔ containsValuableData: null
17:15:31 ✔ containsValuableData:
17:15:31 ✔ containsValuableData:
17:15:31 ✔ containsValuableData: 0
17:15:31 ✔ containsValuableData:
17:15:31 foo
17:15:31 ve.dm.MWTransclusionModel
17:15:31 ✔ nextUniquePartId
17:15:31 ✔ fetch template part data
17:15:31 ✔ fetch part data for parameterized template with no TemplateData
17:15:31 ✔ fetch part data for template with no TemplateData and no params
17:15:31 ve.ce
17:15:31 ✔ getDomHash/getDomText (with ve.dm.Converter)
17:15:31 ✔ getDomHash/getDomText (without ve.dm.Converter)
17:15:31 ✔ getOffset
17:15:31 ✔ isShortcutKey
17:15:31 ✔ nextCursorOffset
17:15:31 ✔ resolveTestOffset
17:15:31 ✔ fakeImes
17:15:32 ✔ isAfterAnnotationBoundary
17:15:32 ve.ce.Document
17:15:32 ✔ Converter tests
17:15:32 ✔ getNodeAndOffset
17:15:32 ✔ attachedRoot
17:15:32 ve.ce.Document (MW)
17:15:32 ✔ Converter tests
17:15:32 ve.ce.Surface
17:15:32 ✔ handleObservedChanges (content changes)
17:15:32 ✔ handleDataTransfer/handleDataTransferItems
17:15:32 ✔ getClipboardHash
17:15:32 ✔ onCopy
17:15:32 31 01 2023 17:15:34.126:DEBUG [middleware:source-files]: Requesting /null
17:15:34 31 01 2023 17:15:34.126:DEBUG [middleware:source-files]: Fetching /null
17:15:34 31 01 2023 17:15:34.127:DEBUG [proxy]: proxying request - /null to 127.0.0.1:9413
17:15:34 ✔ beforePaste/afterPaste
17:15:34 ✔ onDocumentDragStart/onDocumentDrop
17:15:34 ✔ getSelectionState
17:15:34 ✔ findBlockSlug
17:15:34 ✔ selectFirstSelectableContentOffset/selectLastSelectableContentOffset
17:15:34 ✔ getViewportRange
17:15:34 ve.ce.Surface (MW)
17:15:34 ✔ beforePaste/afterPaste
17:15:34 ve.ce.RangeState
17:15:34 ✔ Basic tests
17:15:34 ve.ce.TextState
17:15:34 ✔ getChangeTransaction
17:15:34 ve.ce.NodeFactory
17:15:34 ✔ splitNodeOnEnter/getDescription
17:15:34 ✔ initialization
17:15:34 ve.ce.AnnotationFactory
17:15:34 ✔ canAnnotationBeActive/getDescription
17:15:34 ✔ initialization
17:15:34 ve.ce.Node
17:15:34 ✔ getModel
17:15:34 ✔ getParent
17:15:34 ✔ attach
17:15:34 ✔ detach
17:15:34 ve.ce.BranchNode
17:15:34 ✔ splitOnEnter
17:15:34 ✔ canHaveChildren
17:15:34 ✔ canHaveChildrenNotContent
17:15:34 ✔ updateTagName
17:15:34 ✔ getDomPosition
17:15:34 ✔ onSplice
17:15:34 ve.ce.ContentBranchNode
17:15:35 ✔ getRenderedContents
17:15:35 ve.ce.ContentBranchNode (MW)
17:15:35 ✔ getRenderedContents
17:15:35 ve.ce.LeafNode
17:15:35 ✔ splitOnEnter
17:15:35 ✔ canHaveChildren
17:15:35 ✔ canHaveChildrenNotContent
17:15:35 ve.ce.Selection
17:15:35 ✔ Rects
17:15:35 ✔ getDirectionality
17:15:35 ✔ equals
17:15:35 ve.ce.LinearArrowKeyDownHandler
17:15:35 ✔ special key down: linear arrow keys
17:15:35 ve.ce.LinearDeleteKeyDownHandler
17:15:36 ✔ special key down: linear backspace/delete
17:15:36 ve.ce.LinearEnterKeyDownHandler
17:15:36 ✔ special key down: linear enter
17:15:36 ve.ce.LinearEscapeKeyDownHandler
17:15:36 ✔ special key down: linear escape
17:15:36 WARN: 'PopupWidget#toggle: Before calling this method, the popup must be attached to the DOM.'
17:15:36 ve.ce.TableArrowKeyDownHandler
17:15:36 ✔ special key down: table arrow keys (complex movements)
17:15:36 ✔ special key down: table arrow keys (simple movements)
17:15:36 ve.ce.TableDeleteKeyDownHandler
17:15:36 ✔ special key down: table backspace/delete
17:15:36 ve.ce.TableEnterKeyDownHandler
17:15:37 ✔ special key down: table enter
17:15:37 ve.ce.TableF2KeyDownHandler
17:15:37 ✔ special key down: table f2
17:15:37 ve.ce.ResizableNode
17:15:37 ✔ updateSizeLabel
17:15:37 ✔ resize events
17:15:37 ✔ notResizable
17:15:37 ve.ce.TextNode
17:15:37 ✔ getAnnotatedHtml
17:15:37 ve.ce.TableNode
17:15:37 ✔ getNearestCellNode
17:15:37 ✔ getFirstSectionNode
17:15:37 ✔ onTableMouseDown/onTableMouseMove/onTableMouseUp/onTableDblClick
17:15:37 ✔ onTableMouseDown
17:15:37 ve.ui.Trigger
17:15:37 ✔ constructor
17:15:37 ve.ui.Sequence
17:15:37 ✔ findAndExecuteSequences
17:15:37 ve.ui.DiffElement
17:15:37 ✔ Diffing
17:15:38 ✔ compareAttributes/describeChanges
17:15:38 ve.ui.PreviewElement
17:15:38 ✔ Basic tests
17:15:38 ve.ui.DiffElement (MW)
17:15:38 ✔ Diffing
17:15:38 ve.ui.AnnotationAction
17:15:38 ✔ toggle
17:15:38 ve.ui.BlockquoteAction
17:15:38 ✔ wrap/unwrap/toggle
17:15:38 ve.ui.ContentAction
17:15:38 ✔ insert/remove/select/selectAll
17:15:38 ve.ui.FormatAction
17:15:38 ✔ convert
17:15:38 ve.ui.FormatAction (MW)
17:15:38 ✔ convert (MW-specific types)
17:15:38 ve.ui.IndentationAction
17:15:38 ✔ increase/decrease
17:15:38 ve.ui.LinkAction
17:15:38 ✔ autolink
17:15:38 ve.ui.MWLinkAction
17:15:38 ✔ MW autolink
17:15:38 ve.ui.ListAction
17:15:38 ✔ (un)wrap
17:15:38 ve.ui.TableAction
17:15:38 ✔ create / insert / mergeCells / delete / changeCellStyle / moveRelative
17:15:38 ve.ui.WindowAction
17:15:38 ✔ Basic open/close
17:15:38 ve.ui.DataTransferHandlerFactory
17:15:38 ✔ getHandlerNameForItem
17:15:38 ve.ui.DSVFileTransferHandler
17:15:38 ✔ getInsertableData
17:15:38 ve.ui.UrlStringTransferHandler
17:15:38 ✔ paste
17:15:38 ve.ui.MWWikitextStringTransferHandler
17:15:38 ✔ convert
17:15:38 ve.ui.UrlStringTransferHandler (MW)
17:15:38 ✔ paste
17:15:38 ve.ui.MWTransclusionDialog
17:15:38 ✔ onReplacePart (skipped)
17:15:38 WARN: 'PopupWidget#toggle: Before calling this method, the popup must be attached to the DOM.'
17:15:38 ve.init.mw.DesktopArticleTarget
17:15:39 ✔ init
17:15:39 ✔ compatibility
17:15:39 WARN: 'PopupWidget#toggle: Before calling this method, the popup must be attached to the DOM.'
17:15:40 ve.ui.FragmentInspector
17:15:43 ✔ Different selections and inputs
17:15:43 ve.ui.FragmentInspector (MW)
17:15:45 ✔ Wikitext link inspector
17:15:45 ve.ui.MWTwoPaneTransclusionDialogLayout
17:15:45 ✔ can add and remove multiple pages
17:15:45 ✔ can add a page at a specific index
17:15:45 ve.ui.MWAddParameterPage
17:15:45 ✔ Input event handlers
17:15:45 ✔ getValidationErrors:
17:15:45 ✔ getValidationErrors: a
17:15:45 ✔ getValidationErrors: a=b
17:15:45 ✔ getValidationErrors: x|a=b
17:15:45 ✔ getValidationErrors: used
17:15:45 ✔ getValidationErrors: unused
17:15:45 ✔ getValidationErrors: usedAlias
17:15:45 ✔ getValidationErrors: unusedAlias
17:15:45 ✔ getValidationErrors: usedAliasNoLabel
17:15:45 ✔ getValidationErrors: usedDeprecated
17:15:45 ✔ getValidationErrors: unusedDeprecated
17:15:45 ✔ createValueInput: undefined,
17:15:45 ✔ createValueInput: content,
17:15:45 ✔ createValueInput: line,
17:15:45 ✔ createValueInput: line,
17:15:45
17:15:45 ✔ createValueInput: number,
17:15:45 ✔ createValueInput: boolean,
17:15:45 ✔ createValueInput: boolean, 0
17:15:45 ✔ createValueInput: boolean, 1
17:15:45 ✔ createValueInput: boolean, 2
17:15:45 ✔ createValueInput: string,
17:15:45 ✔ createValueInput: date,
17:15:45 ✔ createValueInput: unbalanced-wikitext,
17:15:45 ✔ createValueInput: unknown,
17:15:45 ✔ createValueInput: url,
17:15:45 ✔ createValueInput: url, http://example.com
17:15:45 ✔ createValueInput: url, BadUrl
17:15:45 ✔ createValueInput: wiki-page-name,
17:15:45 ✔ createValueInput: wiki-page-name, GoodTitle
17:15:45 ✔ createValueInput: wiki-page-name, [[BadTitle]]
17:15:45 ✔ createValueInput: wiki-user-name,
17:15:45 ✔ createValueInput: wiki-user-name, GoodTitle
17:15:45 ✔ createValueInput: wiki-user-name, [[BadTitle]]
17:15:45 ✔ createValueInput: wiki-file-name,
17:15:45 ✔ createValueInput: wiki-file-name, GoodTitle
17:15:45 ✔ createValueInput: wiki-file-name, [[BadTitle]]
17:15:45 ✔ createValueInput: wiki-template-name,
17:15:45 ✔ createValueInput: wiki-template-name, GoodTitle
17:15:45 ✔ createValueInput: wiki-template-name, [[BadTitle]]
17:15:45 ✔ suggestedvalues: undefined
17:15:45 ✔ suggestedvalues: content
17:15:45 ✔ suggestedvalues: line
17:15:45 ✔ suggestedvalues: number
17:15:45 ✔ suggestedvalues: boolean
17:15:45 ✔ suggestedvalues: string
17:15:45 ✔ suggestedvalues: date
17:15:45 ✔ suggestedvalues: unbalanced-wikitext
17:15:45 ✔ suggestedvalues: unknown
17:15:45 ✔ suggestedvalues: url
17:15:45 ✔ suggestedvalues: wiki-page-name
17:15:45 ✔ suggestedvalues: wiki-user-name
17:15:45 ✔ suggestedvalues: wiki-file-name
17:15:45 ✔ suggestedvalues: wiki-template-name
17:15:45 ✔ containsSomeValue: empty
17:15:45 ✔ containsSomeValue: not empty
17:15:45 ✔ containsSomeValue: empty is meaningful because it is different from the default
17:15:45 ✔ containsSomeValue: value is different from the default
17:15:45 ✔ containsSomeValue: the default is probably not meaningful, but we can not be sure
17:15:45 ✔ containsSomeValue: whitespace is probably not meaningful, but we do not want to make this decision here
17:15:45 ✔ containsSomeValue: same for the default
17:15:45 ve.ui.MWParameterCheckboxInputWidget
17:15:45 ✔ Constructor passes config to parent
17:15:45 ✔ setValue( "1" )
17:15:45 ✔ setValue( "0" )
17:15:45 ✔ setValue( empty string )
17:15:45 ✔ setValue( unexpected string )
17:15:45 ✔ setValue( unexpected type )
17:15:45 ✔ setSelected( true )
17:15:45 ✔ setSelected( false )
17:15:45 ve.ui.MWTemplateTitleInputWidget
17:15:45 ✔ default prefixsearch
17:15:45 ✔ CirrusSearch: all API parameters
17:15:45 ✔ CirrusSearch: showRedirectTargets disabled
17:15:45 ✔ CirrusSearch: prefixsearch behavior
17:15:45 ✔ CirrusSearch with prefixsearch fallback
17:15:45 ✔ CirrusSearch: redirect is forwarded to the TitleOptionWidget
17:15:45 ✔ CirrusSearch: redirect appears in the description
17:15:45 ve.ui.MWTransclusionOutlineButtonWidget
17:15:45 ✔ Constructor
17:15:45 ✔ onKeyDown
17:15:45 ve.ui.MWTransclusionOutlineParameterSelectWidget
17:15:45 ✔ static item constructor
17:15:45 ✔ interaction with items
17:15:45 ✔ interaction with required parameter
17:15:45 ve.ui.MWTransclusionOutlineParameterWidget
17:15:45 ✔ interprets param with no attributes
17:15:45 ✔ interprets required param
17:15:45 ✔ interprets selected param
17:15:45 ve.ui.MWTransclusionOutlinePartWidget
17:15:45 ✔ Constructor
17:15:45 ve.ui.MWTransclusionOutlinePlaceholderWidget
17:15:45 ✔ Constructor
17:15:45 ve.ui.MWTransclusionOutlineTemplateWidget
17:15:45 ✔ Constructor
17:15:45 ✔ findCanonicalPosition()
17:15:45 ✔ filterParameters() when it cannot find anything
17:15:45 ✔ filterParameters() considers everything from the spec
17:15:45 ve.ui.MWTransclusionOutlineWidget
17:15:45 ✔ Constructor
17:15:45 ✔ Supports all ve.dm.MWTransclusionPartModel subclasses
17:15:45 ✔ Basic functionality
17:15:45 ✔ Adding and moving parts to specific positions
17:15:45 ✔ setSelectionByPageName: null
17:15:45 ✔ setSelectionByPageName:
17:15:45 ✔ setSelectionByPageName: part_0
17:15:45 ✔ setSelectionByPageName: part_0/
17:15:45 ✔ setSelectionByPageName: part_0/foo
17:15:45 ✔ setSelectionByPageName: part_1/foo
17:15:45 ✔ setSelectionByPageName: part_0/foo/bar
17:15:45 ve.dm.Converter (Cite)
17:15:45 ✔ getModelFromDom
17:15:45 ✔ getDomFromModel
17:15:45 ve.dm.InternalList (Cite)
17:15:45 ✔ addNode/removeNode
17:15:45 ✔ getItemInsertion
17:15:45 ✔ getUniqueListKey
17:15:45 ve.dm.Transaction (Cite)
17:15:45 ✔ newFromDocumentInsertion with references
17:15:45 ve.ui.DiffElement (Cite)
17:15:45 ✔ Diffing
17:15:45 ve.ui.MWWikitextStringTransferHandler (Cite)
17:15:45 ✔ convert
17:15:45 31 01 2023 17:15:45.795:DEBUG [Chrome Headless 90.0.4430.212 (Linux x86_64)]: EXECUTING -> CONNECTED
17:15:45 31 01 2023 17:15:45.805:DEBUG [launcher]: CAPTURED -> BEING_KILLED
17:15:45 31 01 2023 17:15:45.806:DEBUG [launcher]: BEING_KILLED -> BEING_FORCE_KILLED
17:15:45 31 01 2023 17:15:45.807:DEBUG [Chrome Headless 90.0.4430.212 (Linux x86_64)]: CONNECTED -> DISCONNECTED
17:15:45
17:15:45 Finished in 23.247 secs / 21.351 secs @ 17:15:45 GMT+0000 (Coordinated Universal Time)
17:15:45
17:15:45 SUMMARY:
17:15:45 ✔ 1134 tests completed
17:15:45 ℹ 7 tests skipped
17:15:45 31 01 2023 17:15:45.811:DEBUG [karma-server]: Run complete, exiting.
17:15:45 31 01 2023 17:15:45.813:DEBUG [launcher]: Disconnecting all browsers
17:15:45 31 01 2023 17:15:45.814:DEBUG [launcher]: BEING_FORCE_KILLED -> BEING_FORCE_KILLED
17:15:45 31 01 2023 17:15:45.814:DEBUG [proxy]: Destroying proxy agents
17:15:45 31 01 2023 17:15:45.817:DEBUG [middleware:source-files]: Requesting /dummy/?%7B%22event%22%3A%7B%22epicenter%22%3A%22Valdivia%22%2C%22magnitude%22%3A9.5%7D%2C%22schema%22%3A%22earthquake%22%2C%22webHost%22%3A%22127.0.0.1%22%2C%22wiki%22%3A%22postgres%22%2C%22revision%22%3A123%7D;
17:15:45 31 01 2023 17:15:45.817:DEBUG [middleware:source-files]: Fetching /dummy/
17:15:45 31 01 2023 17:15:45.818:DEBUG [proxy]: proxying request - /dummy/?%7B%22event%22%3A%7B%22epicenter%22%3A%22Valdivia%22%2C%22magnitude%22%3A9.5%7D%2C%22schema%22%3A%22earthquake%22%2C%22webHost%22%3A%22127.0.0.1%22%2C%22wiki%22%3A%22postgres%22%2C%22revision%22%3A123%7D; to 127.0.0.1:9413
17:15:45 31 01 2023 17:15:45.842:WARN [proxy]: failed to proxy /dummy/?%7B%22event%22%3A%7B%22epicenter%22%3A%22Valdivia%22%2C%22magnitude%22%3A9.5%7D%2C%22schema%22%3A%22earthquake%22%2C%22webHost%22%3A%22127.0.0.1%22%2C%22wiki%22%3A%22postgres%22%2C%22revision%22%3A123%7D; (socket hang up)
17:15:45 31 01 2023 17:15:45.844:DEBUG [launcher]: Process ChromeHeadless exited with code null and signal SIGTERM
17:15:45 31 01 2023 17:15:45.844:DEBUG [temp-dir]: Cleaning temp dir /tmp/karma-14295707
17:15:45 31 01 2023 17:15:45.876:DEBUG [launcher]: Finished all browsers
17:15:45 31 01 2023 17:15:45.877:DEBUG [launcher]: BEING_FORCE_KILLED -> FINISHED
17:15:45 31 01 2023 17:15:45.877:DEBUG [launcher]: FINISHED -> FINISHED
17:15:45
17:15:45 Done.
17:15:45 INFO:quibble.commands:<<< Finish: Run Qunit tests, in 30.797 s
PHPUnit extensions suite (with database)
Hide DetailsDETAIL: Failing row contains (1, 2023-01-31 17:15:55+00, 1, null, 2, 2, ipusers, 0, 127.0.0.1, 7F000001, , ).
17:15:45 INFO:quibble.commands:>>> Start: PHPUnit extensions suite (with database)
17:15:45 INFO:quibble.commands:PHPUnit extensions suite (with database)
17:15:45 INFO:quibble.commands:composer run --timeout=0 phpunit:entrypoint -- --testsuite extensions --group Database --exclude-group Broken,ParserFuzz,Stub,Standalone
17:15:45 > php tests/phpunit/phpunit.php '-c' 'tests/phpunit/suite.xml' '--testsuite' 'extensions' '--group' 'Database' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone'
17:15:46 Using PHP 7.4.33Function: MediaWiki\CheckUser\CheckUserLogService::addLogEntry
17:15:47 PHPUnit 9.5.28 by Sebastian Bergmann and contributors.
17:15:50
17:15:50 ............................................................... 63 / 958 ( 6%)
17:15:53 ...........................................................E.E. 126 / 958 ( 13%)
17:15:56 E.E............................................................ 189 / 958 ( 19%)
17:16:03 ............................................................... 252 / 958 ( 26%)
17:16:10 ............................................................... 315 / 958 ( 32%)
17:16:15 ............................................................... 378 / 958 ( 39%)
17:16:19 ............................................................... 441 / 958 ( 46%)
17:16:21 ............................................................... 504 / 958 ( 52%)
17:16:23 ..............................................................S 567 / 958 ( 59%)
17:16:24 ............................................................... 630 / 958 ( 65%)
17:16:28 ............................................................... 693 / 958 ( 72%)
17:16:33 ............................................................... 756 / 958 ( 78%)
17:16:34 ............................................................... 819 / 958 ( 85%)
17:16:35 ............................................................... 882 / 958 ( 92%)
17:16:35 ............................................................... 945 / 958 ( 98%)
17:16:42 ............. 958 / 958 (100%)
17:16:44
17:16:44 Time: 00:54.436, Memory: 269.00 MB
17:16:44
17:16:44 There were 4 errors:
17:16:44
17:16:44 1) MediaWiki\CheckUser\Tests\Integration\Api\ApiQueryCheckUserLogTest::testReasonFilter with data set "IP target with matching reason and log reason migration set to read new" ('ipusers', 'ip', '127.0.0.1', 'testing', 0, '1653047635', 'testing', true, 768)
17:16:44 Wikimedia\Rdbms\DBQueryError: Error 23502: ERROR: null value in column "cul_reason" violates not-null constraint
17:16:44 DETAIL: Failing row contains (1, 2023-01-31 17:15:55+00, 1, null, 2, 2, ipusers, 0, 127.0.0.1, 7F000001, , ).
17:16:44
17:16:44 Function: MediaWiki\CheckUser\CheckUserLogService::addLogEntry
17:16:44 Query: INSERT INTO "unittest_cu_log" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:55+00',1,'ipusers',0,'127.0.0.1','7F000001','','',2,2)
17:16:44
17:16:44
17:16:44 /workspace/src/includes/libs/rdbms/database/Database.php:1534
17:16:44 /workspace/src/includes/libs/rdbms/database/Database.php:1518
17:16:44 /workspace/src/includes/libs/rdbms/database/Database.php:1492
17:16:44 /workspace/src/includes/libs/rdbms/database/Database.php:865
17:16:44 /workspace/src/includes/libs/rdbms/database/Database.php:1756
17:16:44 /workspace/src/includes/libs/rdbms/database/DBConnRef.php:119
17:16:44 /workspace/src/includes/libs/rdbms/database/DBConnRef.php:395
17:16:44 /workspace/src/extensions/CheckUser/src/CheckUserLogService.php:109
17:16:44 /workspace/src/includes/deferred/MWCallableUpdate.php:38
17:16:44 /workspace/src/includes/deferred/DeferredUpdates.php:473
17:16:44 /workspace/src/includes/deferred/DeferredUpdates.php:398
17:16:44 /workspace/src/includes/deferred/DeferredUpdates.php:213Query: INSERT INTO "unittest_cu_log" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:55+00',1,'ipusers',0,'127.0.0.1','7F000001','','',2,2)
/workspace/src/includes/libs/rdbms/database/Database.php:1534
17:16:44 /workspace/src/includes/deferred/DeferredUpdatesScoplibs/rdbms/database/Database.php:2671518
17:16:44 /workspace/src/includes/deferred/DeferredUpdatesScoplibs/rdbms/database/Database.php:196492
17:16:44 /workspace/src/includes/deferred/DeferredUpdateslibs/rdbms/database/Database.php:234865
17:16:44 /workspace/src/includes/deferred/DeferredUpdateslibs/rdbms/database/Database.php:2801756
17:16:44 /workspace/src/includes/deferred/DeferredUpdateslibs/rdbms/database/DBConnRef.php:13419
17:16:44 /workspace/src/includes/deferred/DeferredUpdateslibs/rdbms/database/DBConnRef.php:151395
17:16:44 /workspace/src/extensions/CheckUser/src/CheckUserLogService.php:11709
17:16:44 /workspace/src/extensions/CheckUser/tests/phpunit/integration/Api/ApiQueryCheckUserLogTestincludes/deferred/MWCallableUpdate.php:16338
17:16:44 /workspace/src/tests/phpunit/MediaWikiIntegrationTestCaseincludes/deferred/DeferredUpdates.php:519473
17:16:44 === Logs generated by test case/workspace/src/includes/deferred/DeferredUpdates.php:398
17:16:44 [objectcache] [debug] MainWANObjectCache using store {class} {"class":"EmptyBagOStuff"}/workspace/src/includes/deferred/DeferredUpdates.php:213
17:16:44 [localisation] [debug] LocalisationCache using store LCStoreNull []/workspace/src/includes/deferred/DeferredUpdatesScope.php:267
17:16:44 [MessageCache] [debug] MessageCache using store {class} {"class":"HashBagOStuff"}/workspace/src/includes/deferred/DeferredUpdatesScope.php:196
17:16:44 [objectcache] [debug] MainWANObjectCache using store {class} {"class":"EmptyBagOStuff"}/workspace/src/includes/deferred/DeferredUpdates.php:234
17:16:44 [localisation] [debug] LocalisationCache using store LCStoreNull []/workspace/src/includes/deferred/DeferredUpdates.php:280
17:16:44 [UserOptionsManager] [debug] Loading options from database {"user_id":1}/workspace/src/includes/deferred/DeferredUpdates.php:134
17:16:44 [localisation] [debug] LocalisationCache::isExpired(en): cache missing, need to make one []/workspace/src/includes/deferred/DeferredUpdates.php:151
17:16:44 [DeferredUpdates] [debug] DeferredUpdates::run: started CdnCacheUpdate #37412 []/workspace/src/extensions/CheckUser/src/CheckUserLogService.php:117
17:16:44 [squid] [info] CdnCacheUpdate::purge: http://127.0.0.1:9413/index.php/User:UTSysop http://127.0.0.1:9413/index.php?title=User:UTSysop&action=history {"private":false}/workspace/src/extensions/CheckUser/tests/phpunit/integration/Api/ApiQueryCheckUserLogTest.php:163
17:16:44 [DeferredUpdates] [debug] DeferredUpdates::run: ended CdnCacheUpdate #37412, processing time: 0.00027704238891602 []/workspace/src/tests/phpunit/MediaWikiIntegrationTestCase.php:519
17:16:44 [CentralAuth] [debug] Loading state for global user {user} from DB {"user":"TestUser 85d767.022"}=== Logs generated by test case
17:16:44 [CentralAuth[objectcache] [debug] Loading attMainWANObjectCached wiki list for global user TestUser 85d767.022 from DB [] using store {class} {"class":"EmptyBagOStuff"}
17:16:44 [CentralAuth[localisation] [debug] Loading groups for global user {user} {"user":"TestUser 85d767.022"}calisationCache using store LCStoreNull []
17:16:44 [objectcache] [debug] fetchOrRegenerate(global:centralauth-user:03ca53e6267131a0ef8eff1d04a8c98d): miss, new value computed [][MessageCache] [debug] MessageCache using store {class} {"class":"HashBagOStuff"}
17:16:44 [CentralAuth[objectcache] [debug] Loading CentralAuthUser for user {user} from cache object {"user":"TestUser 85d767.022"}MainWANObjectCache using store {class} {"class":"EmptyBagOStuff"}
17:16:44 [localisation] [debug] LocalisationCache using store LCStoreNull []
17:16:44 [objectcache[UserOptionsManager] [debug] MainWANObjectCache using store {class} {"class":"EmptyBagOStuff"}Loading options from database {"user_id":1}
17:16:44 [DeferredUpdates] [debug] DeferredUpdates::run: started MWCallableUpdate_MediaWiki\CheckUser\CheckUserLogService->addLogEntry #36814[localisation] [debug] LocalisationCache::isExpired(en): cache missing, need to make one []
17:16:44 [exception] [error] [{reqId}] {exception_url} Wikimedia\Rdbms\DBQueryError: Error 23502: ERROR: null value in column "cul_reason" violates not-null constraint[DeferredUpdates] [debug] DeferredUpdates::run: started CdnCacheUpdate #37412 []
17:16:44 DETAIL: Failing row contains (1, 2023-01-31 17:15:55+00, 1, null, 2, 2, ipusers, 0, 127[squid] [info] CdnCacheUpdate::purge: http://127.0.0.1, 7F000001, , ).1:9413/index.php/User:UTSysop http://127.0.0.1:9413/index.php?title=User:UTSysop&action=history {"private":false}
17:16:44
17:16:44 Function: MediaWiki\CheckUser\CheckUserLogService::addLogEntry[DeferredUpdates] [debug] DeferredUpdates::run: ended CdnCacheUpdate #37412, processing time: 0.00027704238891602 []
17:16:44 Query: INSERT INTO "unittest_cu_log" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:55+00',1,'ipusers',0,'127.0.0.1','7F000001','','',2,2)[CentralAuth] [debug] Loading state for global user {user} from DB {"user":"TestUser 85d767.022"}
17:16:44 {"exception":{"error":"ERROR: null value in column \"cul_reason\" violates not-null constraint\nDETAIL: Failing row contains (1, 2023-01-31 17:15:55+00, 1, null, 2, 2, ipusers, 0, 127.0.0.1, 7F000001, , ).\n","errno":"23502","sql":"INSERT INTO \"unittest_cu_log\" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:55+00',1,'ipusers',0,'127.0.0.1','7F000001','','',2,2)","fname":"MediaWiki\\CheckUser\\CheckUserLogService::addLogEntry","db":{"_originalTablePrefix":"","_hasDataForTestClass":"MediaWiki\\CheckUser\\Tests\\Integration\\Api\\ApiQueryCheckUserLogTest"}},"exception_url":"[no req]","reqId":"736066318f3fcb2eba28d079","caught_by":"other"}[CentralAuth] [debug] Loading attached wiki list for global user TestUser 85d767.022 from DB []
17:16:44 [exception-json] [error] {"id":"736066318f3fcb2eba28d079","type":"Wikimedia\\Rdbms\\DBQueryError","file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1534,"message":"Error 23502: ERROR: null value in column \"cul_reason\" violates not-null constraint\nDETAIL: Failing row contains (1, 2023-01-31 17:15:55+00, 1, null, 2, 2, ipusers, 0, 127.0.0.1, 7F000001, , ).\n\nFunction: MediaWiki\\CheckUser\\CheckUserLogService::addLogEntry\nQuery: INSERT INTO \"unittest_cu_log\" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:55+00',1,'ipusers',0,'127.0.0.1','7F000001','','',2,2)\n","code":0,"url":null,"caught_by":"other","backtrace":[{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1518,"function":"getQueryException","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1492,"function":"getQueryExceptionAndLog","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":865,"function":"reportQueryError","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1756,"function":"query","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/DBConnRef.php","line":119,"function":"insert","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/DBConnRef.php","line":395,"function":"__call","class":"Wikimedia\\Rdbms\\DBConnRef","type":"->"},{"file":"/workspace/src/extensions/CheckUser/src/CheckUserLogService.php","line":109,"function":"insert","class":"Wikimedia\\Rdbms\\DBConnRef","type":"->"},{"file":"/workspace/src/includes/deferred/MWCallableUpdate.php","line":38,"function":"MediaWiki\\CheckUser\\{closure}","class":"MediaWiki\\CheckUser\\CheckUserLogService","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":473,"function":"doUpdate","class":"MWCallableUpdate","type":"->"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":398,"function":"attemptUpdate","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":213,"function":"run","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdatesScope.php","line":267,"function":"{closure}","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdatesScope.php","line":196,"function":"processStageQueue","class":"DeferredUpdatesScope","type":"->"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":234,"function":"processUpdates","class":"DeferredUpdatesScope","type":"->"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":280,"function":"doUpdates","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":134,"function":"tryOpportunisticExecute","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":151,"function":"addUpdate","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/extensions/CheckUser/src/CheckUserLogService.php","line":117,"function":"addCallableUpdate","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/extensions/CheckUser/tests/phpunit/integration/Api/ApiQueryCheckUserLogTest.php","line":163,"function":"addLogEntry","class":"MediaWiki\\CheckUser\\CheckUserLogService","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php","line":1548,"function":"testReasonFilter","class":"MediaWiki\\CheckUser\\Tests\\Integration\\Api\\ApiQueryCheckUserLogTest","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php","line":1154,"function":"runTest","class":"PHPUnit\\Framework\\TestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestResult.php","line":728,"function":"runBare","class":"PHPUnit\\Framework\\TestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php","line":904,"function":"run","class":"PHPUnit\\Framework\\TestResult","type":"->"},{"file":"/workspace/src/tests/phpunit/MediaWikiIntegrationTestCase.php","line":519,"function":"run","class":"PHPUnit\\Framework\\TestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"MediaWikiIntegrationTestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/TextUI/TestRunner.php","line":653,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/TextUI/Command.php","line":144,"function":"run","class":"PHPUnit\\TextUI\\TestRunner","type":"->"},{"file":"/workspace/src/tests/phpunit/phpunit.php","line":101,"function":"run","class":"PHPUnit\\TextUI\\Command","type":"->"},{"file":"/workspace/src/tests/phpunit/phpunit.php","line":153,"function":"execute","class":"PHPUnitMaintClass","type":"->"}]} {"private":true}[CentralAuth] [debug] Loading groups for global user {user} {"user":"TestUser 85d767.022"}
17:16:44 [DeferredUpdates] [error] Deferred update '{deferred_type}' failed to run. {"deferred_type":"MWCallableUpdate_MediaWiki\\CheckUser\\CheckUserLogService->addLogEntry","exception":{"error":"ERROR: null value in column \"cul_reason\" violates not-null constraint\nDETAIL: Failing row contains (1, 2023-01-31 17:15:55+00, 1, null, 2, 2, ipusers, 0, 127.0.0.1, 7F000001, [objectcache] [debug] fetchOrRegenerate(global:centralauth-user:03ca53e6267131a0ef8eff1d04a8c98d): miss, ).\n","errno":"23502","sql":"INSERT INTO \"unittest_cu_log\" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:55+00',1,'ipusers',0,'127.0.0.1','7F000001','','',2,2)","fname":"MediaWiki\\CheckUser\\CheckUserLogService::addLogEntry","db":{"_originalTablePrefix":"","_hasDataForTestClass":"MediaWiki\\CheckUser\\Tests\\Integration\\Api\\ApiQueryCheckUserLogTest"}}}new value computed []
17:16:44 [DeferredUpdates] [debug] DeferredUpdates::run: ended MWCallableUpdate_MediaWiki\CheckUser\CheckUserLogService->addLogEntry #36814, processing time: 0.0037658214569092 [][CentralAuth] [debug] Loading CentralAuthUser for user {user} from cache object {"user":"TestUser 85d767.022"}
17:16:44 ===[localisation] [debug] LocalisationCache using store LCStoreNull []
17:16:44
17:16:44 2) MediaWiki\CheckUser\Tests\Integration\Api\ApiQueryCheckUserLogTest::testReasonFilter with data set "IP target with non-matching reason and log reason migration set to read new" ('ipusers', 'ip', '127.0.0.1', 'testing', 0, '1653047635', 'Nonexisting reason12345', false, 768)[objectcache] [debug] MainWANObjectCache using store {class} {"class":"EmptyBagOStuff"}
17:16:44 Wikimedia\Rdbms\DBQueryError: Error 23502: ERROR: null value in column "cul_reason" violates not-null constraint[DeferredUpdates] [debug] DeferredUpdates::run: started MWCallableUpdate_MediaWiki\CheckUser\CheckUserLogService->addLogEntry #36814 []
17:16:44 DETAIL: Failing row contains (1, 2023-01-31 17:15:56+00, 1, null, 2, 2, ipusers, 0, 127.0.0.1, 7F000001, , ).[exception] [error] [{reqId}] {exception_url} Wikimedia\Rdbms\DBQueryError: Error 23502: ERROR: null value in column "cul_reason" violates not-null constraint
DETAIL: Failing row contains (1, 2023-01-31 17:16:44
17:16:44 5:55+00, 1, null, 2, 2, ipusers, 0, 127.0.0.1, 7F000001, , ).
Function: MediaWiki\CheckUser\CheckUserLogService::addLogEntry
17:16:44 Query: INSERT INTO "unittest_cu_log" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:565+00',1,'ipusers',0,'127.0.0.1','7F000001','','',2,2)
17:16:44
17:16:44
17:16:44 /workspace/src/includes/libs/rdbms/database/Database.php:1534 {"exception":{"error":"ERROR: null value in column \"cul_reason\" violates not-null constraint\nDETAIL: Failing row contains (1, 2023-01-31 17:15:55+00, 1, null, 2, 2, ipusers, 0, 127.0.0.1, 7F000001, , ).\n","errno":"23502","sql":"INSERT INTO \"unittest_cu_log\" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:55+00',1,'ipusers',0,'127.0.0.1','7F000001','','',2,2)","fname":"MediaWiki\\CheckUser\\CheckUserLogService::addLogEntry","db":{"_originalTablePrefix":"","_hasDataForTestClass":"MediaWiki\\CheckUser\\Tests\\Integration\\Api\\ApiQueryCheckUserLogTest"}},"exception_url":"[no req]","reqId":"736066318f3fcb2eba28d079","caught_by":"other"}
17:16:44 /workspace/src/includes/libs/rdbms/database/Database.php:1518[exception-json] [error] {"id":"736066318f3fcb2eba28d079","type":"Wikimedia\\Rdbms\\DBQueryError","file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1534,"message":"Error 23502: ERROR: null value in column \"cul_reason\" violates not-null constraint\nDETAIL: Failing row contains (1, 2023-01-31 17:15:55+00, 1, null, 2, 2, ipusers, 0, 127.0.0.1, 7F000001, , ).\n\nFunction: MediaWiki\\CheckUser\\CheckUserLogService::addLogEntry\nQuery: INSERT INTO \"unittest_cu_log\" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:55+00',1,'ipusers',0,'127.0.0.1','7F000001','','',2,2)\n","code":0,"url":null,"caught_by":"other","backtrace":[{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1518,"function":"getQueryException","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1492,"function":"getQueryExceptionAndLog","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":865,"function":"reportQueryError","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1756,"function":"query","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/DBConnRef.php","line":119,"function":"insert","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/DBConnRef.php","line":395,"function":"__call","class":"Wikimedia\\Rdbms\\DBConnRef","type":"->"},{"file":"/workspace/src/extensions/CheckUser/src/CheckUserLogService.php","line":109,"function":"insert","class":"Wikimedia\\Rdbms\\DBConnRef","type":"->"},{"file":"/workspace/src/includes/deferred/MWCallableUpdate.php","line":38,"function":"MediaWiki\\CheckUser\\{closure}","class":"MediaWiki\\CheckUser\\CheckUserLogService","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":473,"function":"doUpdate","class":"MWCallableUpdate","type":"->"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":398,"function":"attemptUpdate","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":213,"function":"run","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdatesScope.php","line":267,"function":"{closure}","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdatesScope.php","line":196,"function":"processStageQueue","class":"DeferredUpdatesScope","type":"->"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":234,"function":"processUpdates","class":"DeferredUpdatesScope","type":"->"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":280,"function":"doUpdates","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":134,"function":"tryOpportunisticExecute","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":151,"function":"addUpdate","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/extensions/CheckUser/src/CheckUserLogService.php","line":117,"function":"addCallableUpdate","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/extensions/CheckUser/tests/phpunit/integration/Api/ApiQueryCheckUserLogTest.php","line":163,"function":"addLogEntry","class":"MediaWiki\\CheckUser\\CheckUserLogService","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php","line":1548,"function":"testReasonFilter","class":"MediaWiki\\CheckUser\\Tests\\Integration\\Api\\ApiQueryCheckUserLogTest","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php","line":1154,"function":"runTest","class":"PHPUnit\\Framework\\TestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestResult.php","line":728,"function":"runBare","class":"PHPUnit\\Framework\\TestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php","line":904,"function":"run","class":"PHPUnit\\Framework\\TestResult","type":"->"},{"file":"/workspace/src/tests/phpunit/MediaWikiIntegrationTestCase.php","line":519,"function":"run","class":"PHPUnit\\Framework\\TestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"MediaWikiIntegrationTestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/TextUI/TestRunner.php","line":653,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/TextUI/Command.php","line":144,"function":"run","class":"PHPUnit\\TextUI\\TestRunner","type":"->"},{"file":"/workspace/src/tests/phpunit/phpunit.php","line":101,"function":"run","class":"PHPUnit\\TextUI\\Command","type":"->"},{"file":"/workspace/src/tests/phpunit/phpunit.php","line":153,"function":"execute","class":"PHPUnitMaintClass","type":"->"}]} {"private":true}
17:16:44 /workspace/src/includes/libs/rdbms/database/Database.php:1492[DeferredUpdates] [error] Deferred update '{deferred_type}' failed to run. {"deferred_type":"MWCallableUpdate_MediaWiki\\CheckUser\\CheckUserLogService->addLogEntry","exception":{"error":"ERROR: null value in column \"cul_reason\" violates not-null constraint\nDETAIL: Failing row contains (1, 2023-01-31 17:15:55+00, 1, null, 2, 2, ipusers, 0, 127.0.0.1, 7F000001, , ).\n","errno":"23502","sql":"INSERT INTO \"unittest_cu_log\" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:55+00',1,'ipusers',0,'127.0.0.1','7F000001','','',2,2)","fname":"MediaWiki\\CheckUser\\CheckUserLogService::addLogEntry","db":{"_originalTablePrefix":"","_hasDataForTestClass":"MediaWiki\\CheckUser\\Tests\\Integration\\Api\\ApiQueryCheckUserLogTest"}}}
17:16:44 /workspace/src/includes/libs/rdbms/database/Database.php:865[DeferredUpdates] [debug] DeferredUpdates::run: ended MWCallableUpdate_MediaWiki\CheckUser\CheckUserLogService->addLogEntry #36814, processing time: 0.0037658214569092 []
17:16:44 /workspace/src/includes/libs/rdbms/database/Database.php:1756===
2) MediaWiki\CheckUser\Tests\Integration\Api\ApiQueryCheckUserLogTest::testReasonFilter with data set "IP target with non-matching reason and log reason migration set to read new" ('ipusers', 'ip', '127.0.0.1', 'testing', 0, '1653047635', 'Nonexisting reason12345', false, 768)
17:16:44 /workspace/src/includes/libs/rdbms/database/DBConnRef.php:119Wikimedia\Rdbms\DBQueryError: Error 23502: ERROR: null value in column "cul_reason" violates not-null constraint
17:16:44 /workspace/src/includes/libs/rdbms/database/DBConnRef.php:395DETAIL: Failing row contains (1, 2023-01-31 17:15:56+00, 1, null, 2, 2, ipusers, 0, 127.0.0.1, 7F000001, , ).
Function: MediaWiki\CheckUser\CheckUserLogService::addLogEntry
17:16:44 /workspace/src/extensions/CheckUser/src/CheckUserLogService.php:109Query: INSERT INTO "unittest_cu_log" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:56+00',1,'ipusers',0,'127.0.0.1','7F000001','','',2,2)
/workspace/src/includes/libs/rdbms/database/Database.php:1534
17:16:44 /workspace/src/includes/deferred/MWCallableUpdatlibs/rdbms/database/Database.php:381518
17:16:44 /workspace/src/includes/deferred/DeferredUpdateslibs/rdbms/database/Database.php:4731492
17:16:44 /workspace/src/includes/deferred/DeferredUpdateslibs/rdbms/database/Database.php:398865
17:16:44 /workspace/src/includes/deferred/DeferredUpdateslibs/rdbms/database/Database.php:2131756
17:16:44 /workspace/src/includes/deferred/DeferredUpdatesScopelibs/rdbms/database/DBConnRef.php:267119
17:16:44 /workspace/src/includes/deferred/DeferredUpdatesScopelibs/rdbms/database/DBConnRef.php:196395
17:16:44 /workspace/src/includes/deferred/DeferredUpdatesextensions/CheckUser/src/CheckUserLogService.php:234109
17:16:44 /workspace/src/includes/deferred/DeferredMWCallableUpdates.php:28038
17:16:44 /workspace/src/includes/deferred/DeferredUpdates.php:134473
17:16:44 /workspace/src/includes/deferred/DeferredUpdates.php:151398
17:16:44 /workspace/src/extensions/CheckUser/src/CheckUserLogServiceincludes/deferred/DeferredUpdates.php:117213
17:16:44 /workspace/src/extensions/CheckUser/tests/phpunit/integration/Api/ApiQueryCheckUserLogTestincludes/deferred/DeferredUpdatesScope.php:163267
17:16:44 /workspace/src/tests/phpunit/MediaWikiIntegrationTestCasincludes/deferred/DeferredUpdatesScope.php:519196
17:16:44 === Logs generated by test case/workspace/src/includes/deferred/DeferredUpdates.php:234
17:16:44 [objectcache] [debug] MainWANObjectCache using store {class} {"class":"EmptyBagOStuff"}/workspace/src/includes/deferred/DeferredUpdates.php:280
17:16:44 [localisation] [debug] LocalisationCache using store LCStoreNull []/workspace/src/includes/deferred/DeferredUpdates.php:134
17:16:44 [MessageCache] [debug] MessageCache using store {class} {"class":"HashBagOStuff"}/workspace/src/includes/deferred/DeferredUpdates.php:151
17:16:44 [objectcache] [debug] MainWANObjectCache using store {class} {"class":"EmptyBagOStuff"}/workspace/src/extensions/CheckUser/src/CheckUserLogService.php:117
17:16:44 [localisation] [debug] Localis/workspace/src/extensions/CheckUser/tests/phpunit/integrationCache using store LCStoreNull []/Api/ApiQueryCheckUserLogTest.php:163
17:16:44 [UserOptionsManager] [debug] Loading options from database {"user_id":1}/workspace/src/tests/phpunit/MediaWikiIntegrationTestCase.php:519
17:16:44 [localisation] [debug] LocalisationCache::isExpired(en): cache missing, need to make one []=== Logs generated by test case
17:16:44 [DeferredUpdates[objectcache] [debug] DeferredUpdates::run: started CdnCacheUpdate #31012 []MainWANObjectCache using store {class} {"class":"EmptyBagOStuff"}
17:16:44 [squid] [info] CdnCacheUpdate::purge: http://127.0.0.1:9413/index.php/User:UTSysop http://127.0.0.1:9413/index.php?title=User:UTSysop&action=history {"private":false}[localisation] [debug] LocalisationCache using store LCStoreNull []
17:16:44 [DeferredUpdates[MessageCache] [debug] DeferredUpdates::run: ended CdnMessageCacheUpdate #31012, processing time: 0.00025415420532227 [] using store {class} {"class":"HashBagOStuff"}
17:16:44 [CentralAuth[objectcache] [debug] Loading state for global user {user} from DB {"user":"TestUser 85d767.029"}MainWANObjectCache using store {class} {"class":"EmptyBagOStuff"}
17:16:44 [CentralAuth[localisation] [debug] Loading attcalisationCached wiki list for global user TestUser 85d767.029 from DB using store LCStoreNull []
17:16:44 [CentralAuth[UserOptionsManager] [debug] Loading groups for global user {user}options from database {"user":"TestUser 85d767.029"}ser_id":1}
17:16:44 [objectcache[localisation] [debug] fetchOrRegenerate(global:centralauth-user:b37c69f601b527951235895c9c072c2f):LocalisationCache::isExpired(en): cache missing, new value computedneed to make one []
17:16:44 [CentralAuth[DeferredUpdates] [debug] Loading CentralAuthUser for user {user} from cache object {"user":"TestUser 85d767.029"}DeferredUpdates::run: started CdnCacheUpdate #31012 []
17:16:44 [localisation] [debug] LocalisationCache using store LCStoreNull [][squid] [info] CdnCacheUpdate::purge: http://127.0.0.1:9413/index.php/User:UTSysop http://127.0.0.1:9413/index.php?title=User:UTSysop&action=history {"private":false}
17:16:44 [objectcache[DeferredUpdates] [debug] MainWANObjectDeferredUpdates::run: ended CdnCache using store {class} {"class":"EmptyBagOStuff"}Update #31012, processing time: 0.00025415420532227 []
17:16:44 [DeferredUpdates] [debug] DeferredUpdates::run: started MWCallableUpdate_MediaWiki\CheckUser\CheckUserLogService->addLogEntry #19100 [][CentralAuth] [debug] Loading state for global user {user} from DB {"user":"TestUser 85d767.029"}
17:16:44 [exception] [error] [{reqId}] {exception_url} Wikimedia\Rdbms\DBQueryError: Error 23502: ERROR: null value in column "cul_reason" violates not-null constraint[CentralAuth] [debug] Loading attached wiki list for global user TestUser 85d767.029 from DB []
17:16:44 DETAIL: Failing row contains (1, 2023-01-31 17:15:56+00, 1, null, 2, 2, ip[CentralAuth] [debug] Loading groups for global user {user} {"users, 0, 127.0.0.1, 7F000001, , ).":"TestUser 85d767.029"}
17:16:44
17:16:44 Function: MediaWiki\CheckUser\CheckUserLogService::addLogEntry[objectcache] [debug] fetchOrRegenerate(global:centralauth-user:b37c69f601b527951235895c9c072c2f): miss, new value computed []
17:16:44 Query: INSERT INTO "unittest_cu_log" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:56+00',1,'ipusers',0,'127.0.0.1','7F000001','','',2,2)[CentralAuth] [debug] Loading CentralAuthUser for user {user} from cache object {"user":"TestUser 85d767.029"}
17:16:44 {"exception":{"error":"ERROR: null value in column \"cul_reason\" violates not-null constraint\nDETAIL: Failing row contains (1, 2023-01-31 17:15:56+00, 1, null, 2, 2, ipusers, 0, 127.0.0.1, 7F000001, , ).\n","errno":"23502","sql":"INSERT INTO \"unittest_cu_log\" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:56+00',1,'ipusers',0,'127.0.0.1','7F000001','','',2,2)","fname":"MediaWiki\\CheckUser\\CheckUserLogService::addLogEntry","db":{"_originalTablePrefix":"","_hasDataForTestClass":"MediaWiki\\CheckUser\\Tests\\Integration\\Api\\ApiQueryCheckUserLogTest"}},"exception_url":"[no req]","reqId":"736066318f3fcb2eba28d079","caught_by":"other"}[localisation] [debug] LocalisationCache using store LCStoreNull []
17:16:44 [exception-json] [error] {"id":"736066318f3fcb2eba28d079","type":"Wikimedia\\Rdbms\\DBQueryError","file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1534,"message":"Error 23502: ERROR: null value in column \"cul_reason\" violates not-null constraint\nDETAIL: Failing row contains (1, 2023-01-31 17:15:56+00, 1, null, 2, 2, ipusers, 0, 127.0.0.1, 7F000001, , ).\n\nFunction: MediaWiki\\CheckUser\\CheckUserLogService::addLogEntry\nQuery: INSERT INTO \"unittest_cu_log\" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:56+00',1,'ipusers',0,'127.0.0.1','7F000001','','',2,2)\n","code":0,"url":null,"caught_by":"other","backtrace":[{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1518,"function":"getQueryException","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1492,"function":"getQueryExceptionAndLog","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":865,"function":"reportQueryError","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1756,"function":"query","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/DBConnRef.php","line":119,"function":"insert","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/DBConnRef.php","line":395,"function":"__call","class":"Wikimedia\\Rdbms\\DBConnRef","type":"->"},{"file":"/workspace/src/extensions/CheckUser/src/CheckUserLogService.php","line":109,"function":"insert","class":"Wikimedia\\Rdbms\\DBConnRef","type":"->"},{"file":"/workspace/src/includes/deferred/MWCallableUpdate.php","line":38,"function":"MediaWiki\\CheckUser\\{closure}","class":"MediaWiki\\CheckUser\\CheckUserLogService","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":473,"function":"doUpdate","class":"MWCallableUpdate","type":"->"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":398,"function":"attemptUpdate","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":213,"function":"run","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdatesScope.php","line":267,"function":"{closure}","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdatesScope.php","line":196,"function":"processStageQueue","class":"DeferredUpdatesScope","type":"->"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":234,"function":"processUpdates","class":"DeferredUpdatesScope","type":"->"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":280,"function":"doUpdates","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":134,"function":"tryOpportunisticExecute","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":151,"function":"addUpdate","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/extensions/CheckUser/src/CheckUserLogService.php","line":117,"function":"addCallableUpdate","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/extensions/CheckUser/tests/phpunit/integration/Api/ApiQueryCheckUserLogTest.php","line":163,"function":"addLogEntry","class":"MediaWiki\\CheckUser\\CheckUserLogService","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php","line":1548,"function":"testReasonFilter","class":"MediaWiki\\CheckUser\\Tests\\Integration\\Api\\ApiQueryCheckUserLogTest","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php","line":1154,"function":"runTest","class":"PHPUnit\\Framework\\TestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestResult.php","line":728,"function":"runBare","class":"PHPUnit\\Framework\\TestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php","line":904,"function":"run","class":"PHPUnit\\Framework\\TestResult","type":"->"},{"file":"/workspace/src/tests/phpunit/MediaWikiIntegrationTestCase.php","line":519,"function":"run","class":"PHPUnit\\Framework\\TestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"MediaWikiIntegrationTestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/TextUI/TestRunner.php","line":653,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/TextUI/Command.php","line":144,"function":"run","class":"PHPUnit\\TextUI\\TestRunner","type":"->"},{"file":"/workspace/src/tests/phpunit/phpunit.php","line":101,"function":"run","class":"PHPUnit\\TextUI\\Command","type":"->"},{"file":"/workspace/src/tests/phpunit/phpunit.php","line":153,"function":"execute","class":"PHPUnitMaintClass","type":"->"}]} {"private":true}[objectcache] [debug] MainWANObjectCache using store {class} {"class":"EmptyBagOStuff"}
17:16:44 [DeferredUpdates] [error] Deferred update '{deferred_type}' failed to run. {"deferred_type":"MWCallableUpdate_MediaWiki\\CheckUser\\CheckUserLogService->addLogEntry","exception":{"error":"ERROR: null value in column \"cul_reason\" violates not-null constraint\nDETAIL: Failing row contains (1, 2023-01-31 17:15:56+00, 1, null, 2, 2, ipusers, 0, 127.0.0.1, 7F000001, , ).\n","errno":"23502","sql":"INSERT INTO \"unittest_cu_log\" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:56+00',1,'ipusers',0,'127.0.0.1','7F000001','','',2,2)","fname":"MediaWiki\\CheckUser\\CheckUserLogService::addLogEntry","db":{"_originalTablePrefix":"","_hasDataForTestClass":"MediaWiki\\CheckUser\\Tests\\Integration\\Api\\ApiQueryCheckUserLogTest"}}}[DeferredUpdates] [debug] DeferredUpdates::run: started MWCallableUpdate_MediaWiki\CheckUser\CheckUserLogService->addLogEntry #19100 []
17:16:44 [DeferredUpdates] [debug] DeferredUpdates::run: ended MWCallableUpdate_MediaWiki\CheckUser\CheckUserLogService->addLogEntry #19100, processing time: 0.0051398277282715 [][exception] [error] [{reqId}] {exception_url} Wikimedia\Rdbms\DBQueryError: Error 23502: ERROR: null value in column "cul_reason" violates not-null constraint
17:16:44 ===DETAIL: Failing row contains (1, 2023-01-31 17:15:56+00, 1, null, 2, 2, ipusers, 0, 127.0.0.1, 7F000001, , ).
Function: MediaWiki\CheckUser\CheckUserLogService::addLogEntry
17:16:44
17:16:44 3) MediaWiki\CheckUser\Tests\Integration\Api\ApiQueryCheckUserLogTest::testReasonFilter with data set "User target with matching reason and log reason migration set to read new" ('userips', 'user', 'Testing', '1234 - [[test]]', Query: INSERT INTO "unittest_cu_log" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:56+00',1,'ipusers',0, '1653042345', '1234 - [[test]]', true, 768'127.0.0.1','7F000001','','',2,2)
17:16:44 Wikimedia\Rdbms\DBQueryError: E {"exception":{"error 23502: ":"ERROR: null value in column "cul_reason" violates not-null constraint\"cul_reason\" violates not-null constraint\nDETAIL: Failing row contains (1, 2023-01-31 17:15:56+00, 1, null, 2, 2, ipusers, 0, 127.0.0.1, 7F000001, , ).\n","errno":"23502","sql":"INSERT INTO \"unittest_cu_log\" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:56+00',1,'ipusers',0,'127.0.0.1','7F000001','','',2,2)","fname":"MediaWiki\\CheckUser\\CheckUserLogService::addLogEntry","db":{"_originalTablePrefix":"","_hasDataForTestClass":"MediaWiki\\CheckUser\\Tests\\Integration\\Api\\ApiQueryCheckUserLogTest"}},"exception_url":"[no req]","reqId":"736066318f3fcb2eba28d079","caught_by":"other"}
17:16:44 DETAIL: Failing row contains (1, 2023-01-31 17:15:56+00, 1, null, 2, 3, userips, 0, Testing, , , ).[exception-json] [error] {"id":"736066318f3fcb2eba28d079","type":"Wikimedia\\Rdbms\\DBQueryError","file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1534,"message":"Error 23502: ERROR: null value in column \"cul_reason\" violates not-null constraint\nDETAIL: Failing row contains (1, 2023-01-31 17:15:56+00, 1, null, 2, 2, ipusers, 0, 127.0.0.1, 7F000001, , ).\n\nFunction: MediaWiki\\CheckUser\\CheckUserLogService::addLogEntry\nQuery: INSERT INTO \"unittest_cu_log\" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:56+00',1,'ipusers',0,'127.0.0.1','7F000001','','',2,2)\n","code":0,"url":null,"caught_by":"other","backtrace":[{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1518,"function":"getQueryException","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1492,"function":"getQueryExceptionAndLog","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":865,"function":"reportQueryError","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1756,"function":"query","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/DBConnRef.php","line":119,"function":"insert","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/DBConnRef.php","line":395,"function":"__call","class":"Wikimedia\\Rdbms\\DBConnRef","type":"->"},{"file":"/workspace/src/extensions/CheckUser/src/CheckUserLogService.php","line":109,"function":"insert","class":"Wikimedia\\Rdbms\\DBConnRef","type":"->"},{"file":"/workspace/src/includes/deferred/MWCallableUpdate.php","line":38,"function":"MediaWiki\\CheckUser\\{closure}","class":"MediaWiki\\CheckUser\\CheckUserLogService","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":473,"function":"doUpdate","class":"MWCallableUpdate","type":"->"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":398,"function":"attemptUpdate","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":213,"function":"run","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdatesScope.php","line":267,"function":"{closure}","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdatesScope.php","line":196,"function":"processStageQueue","class":"DeferredUpdatesScope","type":"->"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":234,"function":"processUpdates","class":"DeferredUpdatesScope","type":"->"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":280,"function":"doUpdates","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":134,"function":"tryOpportunisticExecute","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":151,"function":"addUpdate","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/extensions/CheckUser/src/CheckUserLogService.php","line":117,"function":"addCallableUpdate","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/extensions/CheckUser/tests/phpunit/integration/Api/ApiQueryCheckUserLogTest.php","line":163,"function":"addLogEntry","class":"MediaWiki\\CheckUser\\CheckUserLogService","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php","line":1548,"function":"testReasonFilter","class":"MediaWiki\\CheckUser\\Tests\\Integration\\Api\\ApiQueryCheckUserLogTest","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php","line":1154,"function":"runTest","class":"PHPUnit\\Framework\\TestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestResult.php","line":728,"function":"runBare","class":"PHPUnit\\Framework\\TestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php","line":904,"function":"run","class":"PHPUnit\\Framework\\TestResult","type":"->"},{"file":"/workspace/src/tests/phpunit/MediaWikiIntegrationTestCase.php","line":519,"function":"run","class":"PHPUnit\\Framework\\TestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"MediaWikiIntegrationTestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/TextUI/TestRunner.php","line":653,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/TextUI/Command.php","line":144,"function":"run","class":"PHPUnit\\TextUI\\TestRunner","type":"->"},{"file":"/workspace/src/tests/phpunit/phpunit.php","line":101,"function":"run","class":"PHPUnit\\TextUI\\Command","type":"->"},{"file":"/workspace/src/tests/phpunit/phpunit.php","line":153,"function":"execute","class":"PHPUnitMaintClass","type":"->"}]} {"private":true}
17:16:44
17:16:44 Function: MediaWiki\CheckUser\CheckUserLogService::addLogEntry[DeferredUpdates] [error] Deferred update '{deferred_type}' failed to run. {"deferred_type":"MWCallableUpdate_MediaWiki\\CheckUser\\CheckUserLogService->addLogEntry","exception":{"error":"ERROR: null value in column \"cul_reason\" violates not-null constraint\nDETAIL: Failing row contains (1, 2023-01-31 17:15:56+00, 1, null, 2, 2, ipusers, 0, 127.0.0.1, 7F000001, , ).\n","errno":"23502","sql":"INSERT INTO \"unittest_cu_log\" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:56+00',1,'ipusers',0,'127.0.0.1','7F000001','','',2,2)","fname":"MediaWiki\\CheckUser\\CheckUserLogService::addLogEntry","db":{"_originalTablePrefix":"","_hasDataForTestClass":"MediaWiki\\CheckUser\\Tests\\Integration\\Api\\ApiQueryCheckUserLogTest"}}}
17:16:44 Query: INSERT INTO "unittest_cu_log" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:56+00',1,'userips',0,'Testing','','','',2,3)[DeferredUpdates] [debug] DeferredUpdates::run: ended MWCallableUpdate_MediaWiki\CheckUser\CheckUserLogService->addLogEntry #19100, processing time: 0.0051398277282715 []
17:16:44
17:16:44
17:16:44 /workspace/src/includes/libs/rdbms/database/Database.php:1534===
3) MediaWiki\CheckUser\Tests\Integration\Api\ApiQueryCheckUserLogTest::testReasonFilter with data set "User target with matching reason and log reason migration set to read new" ('userips', 'user', 'Testing', '1234 - [[test]]', 0, '1653042345', '1234 - [[test]]', true, 768)
17:16:44 /workspace/src/includes/libs/rdbms/database/Database.php:1518Wikimedia\Rdbms\DBQueryError: Error 23502: ERROR: null value in column "cul_reason" violates not-null constraint
17:16:44 /workspace/src/includes/libs/rdbms/database/Database.php:1492DETAIL: Failing row contains (1, 2023-01-31 17:15:56+00, 1, null, 2, 3, userips, 0, Testing, , , ).
Function: MediaWiki\CheckUser\CheckUserLogService::addLogEntry
17:16:44 /workspace/src/includes/libs/rdbms/database/Database.php:865Query: INSERT INTO "unittest_cu_log" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:56+00',1,'userips',0,'Testing','','','',2,3)
/workspace/src/includes/libs/rdbms/database/Database.php:1534
17:16:44 /workspace/src/includes/libs/rdbms/database/Database.php:1756518
17:16:44 /workspace/src/includes/libs/rdbms/database/DBConnRefatabase.php:119492
17:16:44 /workspace/src/includes/libs/rdbms/database/DBConnRefatabase.php:395865
17:16:44 /workspace/src/extensions/CheckUser/src/CheckUserLogServicincludes/libs/rdbms/database/Database.php:109756
17:16:44 /workspace/src/includes/deferred/MWCallableUpdatelibs/rdbms/database/DBConnRef.php:38119
17:16:44 /workspace/src/includes/deferred/DeferredUpdateslibs/rdbms/database/DBConnRef.php:473395
17:16:44 /workspace/src/includes/deferred/DeferredUpdatesextensions/CheckUser/src/CheckUserLogService.php:398109
17:16:44 /workspace/src/includes/deferred/DeferredMWCallableUpdates.php:21338
17:16:44 /workspace/src/includes/deferred/DeferredUpdatesScope.php:267473
17:16:44 /workspace/src/includes/deferred/DeferredUpdatesScope.php:196398
17:16:44 /workspace/src/includes/deferred/DeferredUpdates.php:23413
17:16:44 /workspace/src/includes/deferred/DeferredUpdatesScope.php:28067
17:16:44 /workspace/src/includes/deferred/DeferredUpdatesScope.php:13496
17:16:44 /workspace/src/includes/deferred/DeferredUpdates.php:151234
17:16:44 /workspace/src/extensions/CheckUser/src/CheckUserLogServiceincludes/deferred/DeferredUpdates.php:117280
17:16:44 /workspace/src/extensions/CheckUser/tests/phpunit/integration/Api/ApiQueryCheckUserLogTestincludes/deferred/DeferredUpdates.php:16334
17:16:44 /workspace/src/tests/phpunit/MediaWikiIntegrationTestCaseincludes/deferred/DeferredUpdates.php:519151
17:16:44 === Logs generated by test case/workspace/src/extensions/CheckUser/src/CheckUserLogService.php:117
17:16:44 [objectcache] [debug] MainWANObjectCache using store {class} {"class":"EmptyBagOStuff"}/workspace/src/extensions/CheckUser/tests/phpunit/integration/Api/ApiQueryCheckUserLogTest.php:163
17:16:44 [localisation] [debug] LocalisationCache using store LCStoreNull []/workspace/src/tests/phpunit/MediaWikiIntegrationTestCase.php:519
17:16:44 [MessageCache] [debug] MessageCache using store {class} {"class":"HashBagOStuff"}=== Logs generated by test case
17:16:44 [objectcache] [debug] MainWANObjectCache using store {class} {"class":"EmptyBagOStuff"}
17:16:44 [localisation] [debug] LocalisationCache using store LCStoreNull []
17:16:44 [UserOptionsManager] [debug] Load[MessageCache] [debug] MessageCache using options from database {"user_id":1}store {class} {"class":"HashBagOStuff"}
17:16:44 [localisation[objectcache] [debug] LocalisationMainWANObjectCache::isExpired(en): cache missing, need to make one [] using store {class} {"class":"EmptyBagOStuff"}
17:16:44 [DeferredUpdates[localisation] [debug] DeferredUpdates::run: started CdnCacheUpdate #37556LocalisationCache using store LCStoreNull []
17:16:44 [squid] [info] CdnCacheUpdate::purge: http://127.0.0.1:9413/index.php/User:UTSysop http://127.0.0.1:9413/index.php?title=User:UTSysop&action=history {"private":false[UserOptionsManager] [debug] Loading options from database {"user_id":1}
17:16:44 [DeferredUpdates[localisation] [debug] DeferredUpdates::run: ended CdnCLocalisationCache::isExpired(en): cacheUpdate #37556 missing, processing time: 0.00019192695617676need to make one []
17:16:44 [CentralAuth[DeferredUpdates] [debug] Loading state for global user {user} from DB {"user":"TestUser 85d767.030"}DeferredUpdates::run: started CdnCacheUpdate #37556 []
17:16:44 [CentralAuth] [debug] Loading attached wiki list for global user TestUser 85d767.030 from DB [][squid] [info] CdnCacheUpdate::purge: http://127.0.0.1:9413/index.php/User:UTSysop http://127.0.0.1:9413/index.php?title=User:UTSysop&action=history {"private":false}
17:16:44 [CentralAuth[DeferredUpdates] [debug] Loading groups for global user {user} {"user":"TestUser 85d767.030"}DeferredUpdates::run: ended CdnCacheUpdate #37556, processing time: 0.00019192695617676 []
17:16:44 [objectcache] [debug] fetchOrRegenerate(global:centralauth-user:9ea1eeced5ccb6da6d3b5bb060086430): miss, new value computed [][CentralAuth] [debug] Loading state for global user {user} from DB {"user":"TestUser 85d767.030"}
17:16:44 [CentralAuth] [debug] Loading CentralAuthUser for user {user} from cache object {"attached wiki list for global user":" TestUser 85d767.030"} from DB []
17:16:44 [localisation[CentralAuth] [debug] LocalisationCache using store LCStoreNull []ading groups for global user {user} {"user":"TestUser 85d767.030"}
17:16:44 [objectcache] [debug] MainWANObjectCache using store {class} {"class":"EmptyBagOStuff"}fetchOrRegenerate(global:centralauth-user:9ea1eeced5ccb6da6d3b5bb060086430): miss, new value computed []
17:16:44 [localisation[CentralAuth] [debug] LocalisationCache::isExpired(en):ading CentralAuthUser for user {user} from cache missing, need to make one []e object {"user":"TestUser 85d767.030"}
17:16:44 [MessageCache[localisation] [debug] MessageLocalisationCache using store {class} {"class":"HashBagOStuff"}LCStoreNull []
17:16:44 [DeferredUpdates] [debug] DeferredUpdates::run: started MWCallableUpdate_MediaWiki\CheckUser\CheckUserLogService->addLogEntry #37601 [][objectcache] [debug] MainWANObjectCache using store {class} {"class":"EmptyBagOStuff"}
17:16:44 [exception] [error] [{reqId}] {exception_url} Wikimedia\Rdbms\DBQueryError: Error 23502: ERROR: null value in column "cul_reason" violates not-null constraint[localisation] [debug] LocalisationCache::isExpired(en): cache missing, need to make one []
17:16:44 DETAIL: Failing row contains (1, 2023-01-31 17:15:56+00, 1, null, 2, 3, userips, 0, Testing, , , ).[MessageCache] [debug] MessageCache using store {class} {"class":"HashBagOStuff"}
17:16:44
17:16:44 Function: MediaWiki\CheckUser\CheckUserLogService::addLogEntry[DeferredUpdates] [debug] DeferredUpdates::run: started MWCallableUpdate_MediaWiki\CheckUser\CheckUserLogService->addLogEntry #37601 []
17:16:44 Query: INSERT INTO "unittest_cu_log" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:56+00',1,'userips',0,'Testing','','','',2,3)[exception] [error] [{reqId}] {exception_url} Wikimedia\Rdbms\DBQueryError: Error 23502: ERROR: null value in column "cul_reason" violates not-null constraint
17:16:44 {"exception":{"error":"ERROR: null value in column \"cul_reason\" violates not-null constraint\nDETAIL: Failing row contains (1, 2023-01-31 17:15:56+00, 1, null, 2, 3, userips, 0, Testing, , , ).\n","errno":"23502","sql":"INSERT INTO \"unittest_cu_log\" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:56+00',1,'userips',0,'Testing','','','',2,3)","fname":"MediaWiki\\CheckUser\\CheckUserLogService::addLogEntry","db":{"_originalTablePrefix":"","_hasDataForTestClass":"MediaWiki\\CheckUser\\Tests\\Integration\\Api\\ApiQueryCheckUserLogTest"}},"exception_url":"[no req]","reqId":"736066318f3fcb2eba28d079","caught_by":"other"}
Function: MediaWiki\CheckUser\CheckUserLogService::addLogEntry
17:16:44 [exception-json] [error] {"id":"736066318f3fcb2eba28d079","type":"Wikimedia\\Rdbms\\DBQueryError","file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1534,"message":"Error 23502: ERROR: null value in column \"cul_reason\" violates not-null constraint\nDETAIL: Failing row contains (1, 2023-01-31 17:15:56+00, 1, null, 2, 3, userips, 0, Testing, , , ).\n\nFunction: MediaWiki\\CheckUser\\CheckUserLogService::addLogEntry\nQuery: INSERT INTO \"unittest_cu_log\" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:56+00',1,'userips',0,'Testing','','','',2,3)\n","code":0,"url":null,"caught_by":"other","backtrace":[{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1518,"function":"getQueryException","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1492,"function":"getQueryExceptionAndLog","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":865,"function":"reportQueryError","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1756,"function":"query","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/DBConnRef.php","line":119,"function":"insert","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/DBConnRef.php","line":395,"function":"__call","class":"Wikimedia\\Rdbms\\DBConnRef","type":"->"},{"file":"/workspace/src/extensions/CheckUser/src/CheckUserLogService.php","line":109,"function":"insert","class":"Wikimedia\\Rdbms\\DBConnRef","type":"->"},{"file":"/workspace/src/includes/deferred/MWCallableUpdate.php","line":38,"function":"MediaWiki\\CheckUser\\{closure}","class":"MediaWiki\\CheckUser\\CheckUserLogService","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":473,"function":"doUpdate","class":"MWCallableUpdate","type":"->"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":398,"function":"attemptUpdate","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":213,"function":"run","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdatesScope.php","line":267,"function":"{closure}","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdatesScope.php","line":196,"function":"processStageQueue","class":"DeferredUpdatesScope","type":"->"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":234,"function":"processUpdates","class":"DeferredUpdatesScope","type":"->"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":280,"function":"doUpdates","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":134,"function":"tryOpportunisticExecute","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":151,"function":"addUpdate","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/extensions/CheckUser/src/CheckUserLogService.php","line":117,"function":"addCallableUpdate","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/extensions/CheckUser/tests/phpunit/integration/Api/ApiQueryCheckUserLogTest.php","line":163,"function":"addLogEntry","class":"MediaWiki\\CheckUser\\CheckUserLogService","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php","line":1548,"function":"testReasonFilter","class":"MediaWiki\\CheckUser\\Tests\\Integration\\Api\\ApiQueryCheckUserLogTest","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php","line":1154,"function":"runTest","class":"PHPUnit\\Framework\\TestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestResult.php","line":728,"function":"runBare","class":"PHPUnit\\Framework\\TestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php","line":904,"function":"run","class":"PHPUnit\\Framework\\TestResult","type":"->"},{"file":"/workspace/src/tests/phpunit/MediaWikiIntegrationTestCase.php","line":519,"function":"run","class":"PHPUnit\\Framework\\TestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"MediaWikiIntegrationTestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/TextUI/TestRunner.php","line":653,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/TextUI/Command.php","line":144,"function":"run","class":"PHPUnit\\TextUI\\TestRunner","type":"->"},{"file":"/workspace/src/tests/phpunit/phpunit.php","line":101,"function":"run","class":"PHPUnit\\TextUI\\Command","type":"->"},{"file":"/workspace/src/tests/phpunit/phpunit.php","line":153,"function":"execute","class":"PHPUnitMaintClass","type":"->"}]} {"private":true}Query: INSERT INTO "unittest_cu_log" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:56+00',1,'userips',0,'Testing','','','',2,3)
17:16:44 [DeferredUpdates] [error] Deferred update '{deferred_type}' failed to run. {"deferred_type":"MWCallableUpdate_MediaWiki\\CheckUser\\CheckUserLogService->addLogEntry","exception":{"error":"ERROR: null value in column \"cul_reason\" violates not-null constraint\nDETAIL: Failing row contains (1, 2023-01-31 17:15:56+00, 1, null, 2, 3, userips, 0, Testing, , , ).\n","errno":"23502","sql":"INSERT INTO \"unittest_cu_log\" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:56+00',1,'userips',0,'Testing','','','',2,3)","fname":"MediaWiki\\CheckUser\\CheckUserLogService::addLogEntry","db":{"_originalTablePrefix":"","_hasDataForTestClass":"MediaWiki\\CheckUser\\Tests\\Integration\\Api\\ApiQueryCheckUserLogTest"}},"exception_url":"[no req]","reqId":"736066318f3fcb2eba28d079","caught_by":"other"}
17:16:44 [DeferredUpdates] [debug] DeferredUpdates::run: ended MWCallableUpdate_MediaWiki\CheckUser\CheckUserLogService->addLogEntry #37601, processing time: 0.0038840770721436 [][exception-json] [error] {"id":"736066318f3fcb2eba28d079","type":"Wikimedia\\Rdbms\\DBQueryError","file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1534,"message":"Error 23502: ERROR: null value in column \"cul_reason\" violates not-null constraint\nDETAIL: Failing row contains (1, 2023-01-31 17:15:56+00, 1, null, 2, 3, userips, 0, Testing, , , ).\n\nFunction: MediaWiki\\CheckUser\\CheckUserLogService::addLogEntry\nQuery: INSERT INTO \"unittest_cu_log\" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:56+00',1,'userips',0,'Testing','','','',2,3)\n","code":0,"url":null,"caught_by":"other","backtrace":[{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1518,"function":"getQueryException","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1492,"function":"getQueryExceptionAndLog","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":865,"function":"reportQueryError","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/Database.php","line":1756,"function":"query","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/DBConnRef.php","line":119,"function":"insert","class":"Wikimedia\\Rdbms\\Database","type":"->"},{"file":"/workspace/src/includes/libs/rdbms/database/DBConnRef.php","line":395,"function":"__call","class":"Wikimedia\\Rdbms\\DBConnRef","type":"->"},{"file":"/workspace/src/extensions/CheckUser/src/CheckUserLogService.php","line":109,"function":"insert","class":"Wikimedia\\Rdbms\\DBConnRef","type":"->"},{"file":"/workspace/src/includes/deferred/MWCallableUpdate.php","line":38,"function":"MediaWiki\\CheckUser\\{closure}","class":"MediaWiki\\CheckUser\\CheckUserLogService","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":473,"function":"doUpdate","class":"MWCallableUpdate","type":"->"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":398,"function":"attemptUpdate","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":213,"function":"run","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdatesScope.php","line":267,"function":"{closure}","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdatesScope.php","line":196,"function":"processStageQueue","class":"DeferredUpdatesScope","type":"->"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":234,"function":"processUpdates","class":"DeferredUpdatesScope","type":"->"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":280,"function":"doUpdates","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":134,"function":"tryOpportunisticExecute","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/includes/deferred/DeferredUpdates.php","line":151,"function":"addUpdate","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/extensions/CheckUser/src/CheckUserLogService.php","line":117,"function":"addCallableUpdate","class":"DeferredUpdates","type":"::"},{"file":"/workspace/src/extensions/CheckUser/tests/phpunit/integration/Api/ApiQueryCheckUserLogTest.php","line":163,"function":"addLogEntry","class":"MediaWiki\\CheckUser\\CheckUserLogService","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php","line":1548,"function":"testReasonFilter","class":"MediaWiki\\CheckUser\\Tests\\Integration\\Api\\ApiQueryCheckUserLogTest","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php","line":1154,"function":"runTest","class":"PHPUnit\\Framework\\TestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestResult.php","line":728,"function":"runBare","class":"PHPUnit\\Framework\\TestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php","line":904,"function":"run","class":"PHPUnit\\Framework\\TestResult","type":"->"},{"file":"/workspace/src/tests/phpunit/MediaWikiIntegrationTestCase.php","line":519,"function":"run","class":"PHPUnit\\Framework\\TestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"MediaWikiIntegrationTestCase","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php","line":675,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/TextUI/TestRunner.php","line":653,"function":"run","class":"PHPUnit\\Framework\\TestSuite","type":"->"},{"file":"/workspace/src/vendor/phpunit/phpunit/src/TextUI/Command.php","line":144,"function":"run","class":"PHPUnit\\TextUI\\TestRunner","type":"->"},{"file":"/workspace/src/tests/phpunit/phpunit.php","line":101,"function":"run","class":"PHPUnit\\TextUI\\Command","type":"->"},{"file":"/workspace/src/tests/phpunit/phpunit.php","line":153,"function":"execute","class":"PHPUnitMaintClass","type":"->"}]} {"private":true}
17:16:44 ===[DeferredUpdates] [error] Deferred update '{deferred_type}' failed to run. {"deferred_type":"MWCallableUpdate_MediaWiki\\CheckUser\\CheckUserLogService->addLogEntry","exception":{"error":"ERROR: null value in column \"cul_reason\" violates not-null constraint\nDETAIL: Failing row contains (1, 2023-01-31 17:15:56+00, 1, null, 2, 3, userips, 0, Testing, , , ).\n","errno":"23502","sql":"INSERT INTO \"unittest_cu_log\" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:56+00',1,'userips',0,'Testing','','','',2,3)","fname":"MediaWiki\\CheckUser\\CheckUserLogService::addLogEntry","db":{"_originalTablePrefix":"","_hasDataForTestClass":"MediaWiki\\CheckUser\\Tests\\Integration\\Api\\ApiQueryCheckUserLogTest"}}}
17:16:44
17:16:44 4) MediaWiki\CheckUser\Tests\Integration\Api\ApiQueryCheckUserLogTest::testReasonFilter with data set "User target with non-matching reason and log reason migration set to read new" ('userips', 'user', 'Testing', '1234 - [[test]]', 0, '1653042345', 'Nonexisting reason12345'[DeferredUpdates] [debug] DeferredUpdates::run: ended MWCallableUpdate_MediaWiki\CheckUser\CheckUserLogService->addLogEntry #37601, false, 768)processing time: 0.0038840770721436 []
17:16:44 Wikimedia\Rdbms\DBQueryError: Error 23502: ERROR: null value in column "cul_reason" violates not-null constraint===
4) MediaWiki\CheckUser\Tests\Integration\Api\ApiQueryCheckUserLogTest::testReasonFilter with data set "User target with non-matching reason and log reason migration set to read new" ('userips', 'user', 'Testing', '1234 - [[test]]', 0, '1653042345', 'Nonexisting reason12345', false, 768)
17:16:44 DETAIL: Failing row contains (1, 2023-01-31 17:15:57+00, 1, null, 2, 3, userips, 0, Testing, , , ).Wikimedia\Rdbms\DBQueryError: Error 23502: ERROR: null value in column "cul_reason" violates not-null constraint
17:16:44
DETAIL: Failing row contains (1, 2023-01-31 17:16:44 5:57+00, 1, null, 2, 3, userips, 0, Testing, , , ).
Function: MediaWiki\CheckUser\CheckUserLogService::addLogEntry
17:16:44 Query: INSERT INTO "unittest_cu_log" (cul_timestamp,cul_actor,cul_type,cul_target_id,cul_target_text,cul_target_hex,cul_range_start,cul_range_end,cul_reason_id,cul_reason_plaintext_id) VALUES ('2023-01-31 17:15:57+00',1,'userips',0,'Testing','','','',2,3)
```
**What should have happened instead?**:
**Software version** (skip for WMF-hosted wikis like Wikipedia):
**Other information** (browser name/version, screenshots, etc.):