frontend: guard against null disabledProducts in Footer#1963
Open
jcristau wants to merge 1 commit into
Open
firefoxci-taskcluster / tests-api-python-312
succeeded
May 7, 2026 in 4m 57s
FirefoxCI (pull_request)
api-python tox-py312
Details
View task in Taskcluster | View logs in Taskcluster | View task group in Taskcluster
Task Status
Started: 2026-05-07T02:18:13.563Z
Resolved: 2026-05-07T02:19:54.592Z
Task Execution Time: 1 minute, 41 seconds, 29 milliseconds
Task Status: completed
Reason Resolved: completed
TaskId: LJ41r62qQPizziA7nWy29Q
RunId: 0
Artifacts
- public/coverage.xml
- public/logs/live_backing.log
- public/logs/live.log
[taskcluster 2026-05-07T02:18:13.601Z] Worker Type (releng-t/linux-docker) settings:
[taskcluster 2026-05-07T02:18:13.601Z] {
[taskcluster 2026-05-07T02:18:13.601Z] "generic-worker": {
[taskcluster 2026-05-07T02:18:13.601Z] "config": {
[taskcluster 2026-05-07T02:18:13.601Z] "headlessTasks": true
[taskcluster 2026-05-07T02:18:13.601Z] },
[taskcluster 2026-05-07T02:18:13.601Z] "engine": "multiuser",
[taskcluster 2026-05-07T02:18:13.601Z] "go-arch": "amd64",
[taskcluster 2026-05-07T02:18:13.601Z] "go-os": "linux",
[taskcluster 2026-05-07T02:18:13.601Z] "go-version": "go1.26.2",
[taskcluster 2026-05-07T02:18:13.601Z] "release": "https://github.com/taskcluster/taskcluster/releases/tag/v99.2.1",
[taskcluster 2026-05-07T02:18:13.601Z] "revision": "ddb9ce7efdb98ae2d0917b69778e9f3cd125e07f",
[taskcluster 2026-05-07T02:18:13.601Z] "source": "https://github.com/taskcluster/taskcluster/commits/ddb9ce7efdb98ae2d0917b69778e9f3cd125e07f",
[taskcluster 2026-05-07T02:18:13.601Z] "version": "99.2.1"
[taskcluster 2026-05-07T02:18:13.601Z] },
[taskcluster 2026-05-07T02:18:13.601Z] "image": "projects/taskcluster-imaging/global/images/gw-fxci-gcp-l1-2404-amd64-headless-googlecompute-2026-05-04",
[taskcluster 2026-05-07T02:18:13.601Z] "instance-id": "5824574087130139414",
[taskcluster 2026-05-07T02:18:13.601Z] "instance-type": "projects/887720501152/machineTypes/c2-standard-4",
[taskcluster 2026-05-07T02:18:13.601Z] "local-ipv4": "10.138.1.119",
[taskcluster 2026-05-07T02:18:13.601Z] "project-id": "fxci-production-level1-workers",
...(353 lines hidden)...
[task 2026-05-07T02:19:51.504+00:00] [gw1] [ 80%] PASSED tests/test_tasks.py::test_get_trust_domain[-xpi-expectation6-xpi]
[task 2026-05-07T02:19:51.504+00:00] tests/test_tasks.py::test_get_trust_domain[https://github.com/mozilla-mobile/firefox-android-firefox-expectation7-mobile]
[task 2026-05-07T02:19:51.504+00:00] [gw1] [ 81%] PASSED tests/test_tasks.py::test_get_trust_domain[https://github.com/mozilla-mobile/firefox-android-firefox-expectation7-mobile]
[task 2026-05-07T02:19:51.504+00:00] tests/test_tasks.py::test_get_trust_domain[https://github.com/mozilla-mobile/firefox-android-firefox-android-expectation8-mobile]
[task 2026-05-07T02:19:51.505+00:00] [gw1] [ 82%] PASSED tests/test_tasks.py::test_get_trust_domain[https://github.com/mozilla-mobile/firefox-android-firefox-android-expectation8-mobile]
[task 2026-05-07T02:19:51.505+00:00] tests/test_tasks.py::test_get_trust_domain[https://github.com/mozilla-releng/staging-firefox-android-firefox-android-expectation9-mobile]
[task 2026-05-07T02:19:51.505+00:00] [gw1] [ 83%] PASSED tests/test_tasks.py::test_get_trust_domain[https://github.com/mozilla-releng/staging-firefox-android-firefox-android-expectation9-mobile]
[task 2026-05-07T02:19:51.505+00:00] tests/test_tasks.py::test_get_trust_domain[https://github.com/mozilla-mobile/mozilla-vpn-client-firefox-android-expectation10-mozillavpn]
[task 2026-05-07T02:19:51.505+00:00] [gw1] [ 83%] PASSED tests/test_tasks.py::test_get_trust_domain[https://github.com/mozilla-mobile/mozilla-vpn-client-firefox-android-expectation10-mozillavpn]
[task 2026-05-07T02:19:51.505+00:00] tests/test_tasks.py::test_cancel_action_task_group[happy-path]
[task 2026-05-07T02:19:51.505+00:00] [gw1] [ 84%] PASSED tests/test_tasks.py::test_cancel_action_task_group[happy-path]
[task 2026-05-07T02:19:51.505+00:00] tests/test_tasks.py::test_cancel_action_task_group[artifact-not-found]
[task 2026-05-07T02:19:51.505+00:00] [gw1] [ 85%] PASSED tests/test_tasks.py::test_cancel_action_task_group[artifact-not-found]
[task 2026-05-07T02:19:51.505+00:00] tests/test_tasks.py::test_cancel_action_task_group[no-cancel-all-action]
[task 2026-05-07T02:19:51.505+00:00] [gw1] [ 85%] PASSED tests/test_tasks.py::test_cancel_action_task_group[no-cancel-all-action]
[task 2026-05-07T02:19:51.505+00:00] tests/test_versions.py::test_versions[firefox-nightly-42.0.1]
[task 2026-05-07T02:19:51.505+00:00] [gw1] [ 86%] PASSED tests/test_versions.py::test_versions[firefox-nightly-42.0.1]
[task 2026-05-07T02:19:51.505+00:00] tests/test_versions.py::test_versions[foo-bar-77.7.7]
[task 2026-05-07T02:19:51.505+00:00] [gw1] [ 87%] PASSED tests/test_versions.py::test_versions[foo-bar-77.7.7]
[task 2026-05-07T02:19:51.505+00:00] tests/test_versions.py::test_versions[bar-foo-None]
[task 2026-05-07T02:19:51.505+00:00] [gw0] [ 88%] PASSED tests/test_openapi.py::test_validate_spec[admin]
[task 2026-05-07T02:19:51.505+00:00] tests/test_openapi.py::test_validate_spec[public]
[task 2026-05-07T02:19:51.505+00:00] [gw2] [ 88%] PASSED tests/test_sentry.py::test_sentry_captures_only_5xx_errors[500-True]
[task 2026-05-07T02:19:51.505+00:00] [gw1] [ 89%] PASSED tests/test_versions.py::test_versions[bar-foo-None]
[task 2026-05-07T02:19:51.505+00:00] tests/test_settings.py::test_scopes
[task 2026-05-07T02:19:51.505+00:00] tests/test_versions.py::test_versions[firefox-beta-None]
[task 2026-05-07T02:19:51.505+00:00] [gw2] [ 90%] PASSED tests/test_settings.py::test_scopes
[task 2026-05-07T02:19:51.505+00:00] tests/test_xpi.py::test_cancel_xpi_release
[task 2026-05-07T02:19:51.505+00:00] [gw1] [ 90%] PASSED tests/test_versions.py::test_versions[firefox-beta-None]
[task 2026-05-07T02:19:51.505+00:00] tests/test_xpi.py::test_cancel_xpi_release_admin_fallback
[task 2026-05-07T02:19:51.505+00:00] [gw2] [ 91%] PASSED tests/test_xpi.py::test_cancel_xpi_release
[task 2026-05-07T02:19:51.505+00:00] [gw0] [ 92%] PASSED tests/test_openapi.py::test_validate_spec[public]
[task 2026-05-07T02:19:51.505+00:00] tests/test_product_details.py::test_create_index_listing[product_details0-product_details_final0]
[task 2026-05-07T02:19:51.505+00:00] [gw0] [ 92%] PASSED tests/test_product_details.py::test_create_index_listing[product_details0-product_details_final0]
[task 2026-05-07T02:19:51.505+00:00] tests/test_xpi.py::test_cancel_xpi_release_admin_fallback_denied
[task 2026-05-07T02:19:51.505+00:00] tests/test_product_details.py::test_fetch_l10n_data
[task 2026-05-07T02:19:51.505+00:00] [gw1] [ 93%] PASSED tests/test_xpi.py::test_cancel_xpi_release_admin_fallback
[task 2026-05-07T02:19:51.505+00:00] [gw2] [ 94%] PASSED tests/test_xpi.py::test_cancel_xpi_release_admin_fallback_denied
[task 2026-05-07T02:19:51.505+00:00] [gw0] [ 95%] PASSED tests/test_product_details.py::test_fetch_l10n_data
[task 2026-05-07T02:19:51.505+00:00] [gw3] [ 95%] PASSED tests/test_product_details.py::test_rebuild
[task 2026-05-07T02:19:51.505+00:00] tests/test_publicapi.py::test_public_api_subset
[task 2026-05-07T02:19:51.505+00:00] [gw3] [ 96%] PASSED tests/test_publicapi.py::test_public_api_subset
[task 2026-05-07T02:19:51.505+00:00] tests/test_publicapi.py::test_good_version[release0-True]
[task 2026-05-07T02:19:51.505+00:00] [gw3] [ 97%] PASSED tests/test_publicapi.py::test_good_version[release0-True]
[task 2026-05-07T02:19:51.505+00:00] tests/test_publicapi.py::test_good_version[release1-True]
[task 2026-05-07T02:19:51.505+00:00] [gw3] [ 97%] PASSED tests/test_publicapi.py::test_good_version[release1-True]
[task 2026-05-07T02:19:51.505+00:00] tests/test_publicapi.py::test_good_version[release2-False]
[task 2026-05-07T02:19:51.505+00:00] [gw3] [ 98%] PASSED tests/test_publicapi.py::test_good_version[release2-False]
[task 2026-05-07T02:19:51.505+00:00] tests/test_publicapi.py::test_sort_releases_by_product_then_version[releases0-expected0]
[task 2026-05-07T02:19:51.505+00:00] [gw3] [ 99%] PASSED tests/test_publicapi.py::test_sort_releases_by_product_then_version[releases0-expected0]
[task 2026-05-07T02:19:51.505+00:00] tests/test_publicapi.py::test_sort_releases_by_product_then_version[releases1-expected1]
[task 2026-05-07T02:19:51.505+00:00] [gw3] [100%] PASSED tests/test_publicapi.py::test_sort_releases_by_product_then_version[releases1-expected1]
[task 2026-05-07T02:19:51.505+00:00]
[task 2026-05-07T02:19:51.505+00:00] =============================== warnings summary ===============================
[task 2026-05-07T02:19:51.505+00:00] .tox/py312/lib/python3.12/site-packages/connexion/json_schema.py:16: 10 warnings
[task 2026-05-07T02:19:51.505+00:00] /builds/worker/checkouts/vcs/api/.tox/py312/lib/python3.12/site-packages/connexion/json_schema.py:16: DeprecationWarning: jsonschema.RefResolver is deprecated as of v4.18.0, in favor of the https://github.com/python-jsonschema/referencing library, which provides more compliant referencing behavior as well as more flexible APIs for customization. A future release will remove RefResolver. Please file a feature request (on referencing) if you are missing an API for the kind of customization you need.
[task 2026-05-07T02:19:51.505+00:00] from jsonschema import Draft4Validator, RefResolver
[task 2026-05-07T02:19:51.505+00:00]
[task 2026-05-07T02:19:51.505+00:00] .tox/py312/lib/python3.12/site-packages/connexion/json_schema.py:17
[task 2026-05-07T02:19:51.505+00:00] .tox/py312/lib/python3.12/site-packages/connexion/json_schema.py:17
[task 2026-05-07T02:19:51.505+00:00] .tox/py312/lib/python3.12/site-packages/connexion/json_schema.py:17
[task 2026-05-07T02:19:51.505+00:00] .tox/py312/lib/python3.12/site-packages/connexion/json_schema.py:17
[task 2026-05-07T02:19:51.505+00:00] .tox/py312/lib/python3.12/site-packages/connexion/json_schema.py:17
[task 2026-05-07T02:19:51.505+00:00] /builds/worker/checkouts/vcs/api/.tox/py312/lib/python3.12/site-packages/connexion/json_schema.py:17: DeprecationWarning: jsonschema.exceptions.RefResolutionError is deprecated as of version 4.18.0. If you wish to catch potential reference resolution errors, directly catch referencing.exceptions.Unresolvable.
[task 2026-05-07T02:19:51.505+00:00] from jsonschema.exceptions import RefResolutionError, ValidationError # noqa
[task 2026-05-07T02:19:51.505+00:00]
[task 2026-05-07T02:19:51.505+00:00] .tox/py312/lib/python3.12/site-packages/authlib/_joserfc_helpers.py:8
[task 2026-05-07T02:19:51.505+00:00] .tox/py312/lib/python3.12/site-packages/authlib/_joserfc_helpers.py:8
[task 2026-05-07T02:19:51.505+00:00] .tox/py312/lib/python3.12/site-packages/authlib/_joserfc_helpers.py:8
[task 2026-05-07T02:19:51.505+00:00] .tox/py312/lib/python3.12/site-packages/authlib/_joserfc_helpers.py:8
[task 2026-05-07T02:19:51.505+00:00] /builds/worker/checkouts/vcs/api/.tox/py312/lib/python3.12/site-packages/authlib/_joserfc_helpers.py:8: AuthlibDeprecationWarning: authlib.jose module is deprecated, please use joserfc instead.
[task 2026-05-07T02:19:51.505+00:00] It will be compatible before version 2.0.0.
[task 2026-05-07T02:19:51.505+00:00] from authlib.jose import ECKey
[task 2026-05-07T02:19:51.505+00:00]
[task 2026-05-07T02:19:51.505+00:00] tests/test_merge_automation.py::test_list_behaviors[thunderbird-True]
[task 2026-05-07T02:19:51.505+00:00] tests/test_merge_automation.py::test_list_behaviors[thunderbird-True]
[task 2026-05-07T02:19:51.505+00:00] tests/test_merge_automation.py::test_cancel_merge_automation_not_found
[task 2026-05-07T02:19:51.505+00:00] tests/test_merge_automation.py::test_cancel_merge_automation_not_found
[task 2026-05-07T02:19:51.505+00:00] tests/test_merge_automation.py::test_list_behaviors[firefox-False]
[task 2026-05-07T02:19:51.505+00:00] tests/test_merge_automation.py::test_list_behaviors[firefox-False]
[task 2026-05-07T02:19:51.505+00:00] tests/test_merge_automation.py::test_mark_merge_automation_completed_already_terminal[TaskStatus.Canceled]
[task 2026-05-07T02:19:51.505+00:00] tests/test_merge_automation.py::test_mark_merge_automation_completed_already_terminal[TaskStatus.Canceled]
[task 2026-05-07T02:19:51.505+00:00] /builds/worker/checkouts/vcs/api/src/shipit_api/migrations/env.py:21: DeprecationWarning: 'get_engine' is deprecated and will be removed in Flask-SQLAlchemy 3.2. Use 'engine' or 'engines[key]' instead. If you're using Flask-Migrate or Alembic, you'll need to update your 'env.py' file.
[task 2026-05-07T02:19:51.505+00:00] return current_app.extensions["migrate"].db.get_engine()
[task 2026-05-07T02:19:51.505+00:00]
[task 2026-05-07T02:19:51.506+00:00] tests/test_merge_automation.py::test_cancel_merge_automation_failed_status
[task 2026-05-07T02:19:51.506+00:00] tests/test_merge_automation.py::test_cancel_merge_automation_success
[task 2026-05-07T02:19:51.506+00:00] tests/test_merge_automation.py::test_cancel_merge_automation_with_taskcluster_task
[task 2026-05-07T02:19:51.506+00:00] /builds/worker/checkouts/vcs/api/src/shipit_api/admin/merge_automation.py:102: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
[task 2026-05-07T02:19:51.506+00:00] if not current_user.has_permissions(required_permission):
[task 2026-05-07T02:19:51.506+00:00] Enable tracemalloc to get traceback where the object was allocated.
[task 2026-05-07T02:19:51.506+00:00] See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
[task 2026-05-07T02:19:51.506+00:00]
[task 2026-05-07T02:19:51.506+00:00] tests/test_merge_automation.py::test_mark_merge_automation_completed_already_terminal[TaskStatus.Canceled]
[task 2026-05-07T02:19:51.506+00:00] tests/test_merge_automation.py::test_mark_merge_automation_completed
[task 2026-05-07T02:19:51.506+00:00] tests/test_merge_automation.py::test_mark_merge_automation_completed_already_terminal[TaskStatus.Completed]
[task 2026-05-07T02:19:51.506+00:00] /builds/worker/checkouts/vcs/api/src/shipit_api/admin/merge_automation.py:125: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
[task 2026-05-07T02:19:51.506+00:00] if not current_user.has_permissions(required_permission):
[task 2026-05-07T02:19:51.506+00:00] Enable tracemalloc to get traceback where the object was allocated.
[task 2026-05-07T02:19:51.506+00:00] See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
[task 2026-05-07T02:19:51.506+00:00]
[task 2026-05-07T02:19:51.506+00:00] tests/test_merge_automation.py::test_start_merge_automation_success
[task 2026-05-07T02:19:51.506+00:00] tests/test_merge_automation.py::test_start_merge_automation_error_cases[None-TaskStatus.Running-409-Cannot start automation in Running status]
[task 2026-05-07T02:19:51.506+00:00] tests/test_merge_automation.py::test_start_merge_automation_taskcluster_failure
[task 2026-05-07T02:19:51.506+00:00] /builds/worker/checkouts/vcs/api/src/shipit_api/admin/merge_automation.py:148: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
[task 2026-05-07T02:19:51.506+00:00] if not current_user.has_permissions(required_permission):
[task 2026-05-07T02:19:51.506+00:00] Enable tracemalloc to get traceback where the object was allocated.
[task 2026-05-07T02:19:51.506+00:00] See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
[task 2026-05-07T02:19:51.506+00:00]
[task 2026-05-07T02:19:51.506+00:00] tests/test_merge_automation.py::test_submit_merge_automation_success
[task 2026-05-07T02:19:51.506+00:00] tests/test_merge_automation.py::test_submit_merge_automation_invalid_inputs[thunderbird-main-to-beta-None]
[task 2026-05-07T02:19:51.506+00:00] tests/test_merge_automation.py::test_submit_merge_automation_invalid_inputs[firefox-invalid-behavior-Behavior invalid-behavior not found for product: firefox]
[task 2026-05-07T02:19:51.506+00:00] /builds/worker/checkouts/vcs/api/src/shipit_api/admin/merge_automation.py:52: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
[task 2026-05-07T02:19:51.506+00:00] if not current_user.has_permissions(required_permission):
[task 2026-05-07T02:19:51.506+00:00] Enable tracemalloc to get traceback where the object was allocated.
[task 2026-05-07T02:19:51.506+00:00] See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
[task 2026-05-07T02:19:51.506+00:00]
[task 2026-05-07T02:19:51.506+00:00] tests/test_publicapi.py: 15 warnings
[task 2026-05-07T02:19:51.506+00:00] /builds/worker/checkouts/vcs/api/src/cli_common/openapi_subset.py:33: DeprecationWarning: The dpath.util package is being deprecated. All util functions have been moved to dpath package top level.
[task 2026-05-07T02:19:51.506+00:00] source = dpath.util.get(full_api, section, separator=".")
[task 2026-05-07T02:19:51.506+00:00]
[task 2026-05-07T02:19:51.506+00:00] tests/test_publicapi.py: 15 warnings
[task 2026-05-07T02:19:51.506+00:00] /builds/worker/checkouts/vcs/api/src/cli_common/openapi_subset.py:34: DeprecationWarning: The dpath.util package is being deprecated. All util functions have been moved to dpath package top level.
[task 2026-05-07T02:19:51.506+00:00] dpath.util.new(subset, section, source, separator=".")
[task 2026-05-07T02:19:51.506+00:00]
[task 2026-05-07T02:19:51.506+00:00] -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
[task 2026-05-07T02:19:51.506+00:00] ================================ tests coverage ================================
[task 2026-05-07T02:19:51.506+00:00] _______________ coverage: platform linux, python 3.12.8-final-0 ________________
[task 2026-05-07T02:19:51.506+00:00]
[task 2026-05-07T02:19:51.506+00:00] Name Stmts Miss Branch BrPart Cover Missing
[task 2026-05-07T02:19:51.506+00:00] ---------------------------------------------------------------------------------------------------------------------------------------
[task 2026-05-07T02:19:51.506+00:00] src/backend_common/__init__.py 95 5 24 6 91% 59->67, 61, 63, 72-73, 79, 87->90
[task 2026-05-07T02:19:51.506+00:00] src/backend_common/auth.py 240 97 60 20 54% 47, 55, 59, 63, 69, 72, 75->78, 83, 111, 114, 123, 126, 129, 132, 135, 152->155, 155->158, 166, 169, 172, 191->193, 208-213, 216-227, 237-244, 258->260, 262-288, 293, 295, 301-320, 328, 332, 336-343, 348, 360-379
[task 2026-05-07T02:19:51.506+00:00] src/backend_common/cors.py 7 0 0 0 100%
[task 2026-05-07T02:19:51.506+00:00] src/backend_common/db.py 36 6 4 2 80% 29-30, 42-47
[task 2026-05-07T02:19:51.506+00:00] src/backend_common/dockerflow.py 7 0 0 0 100%
[task 2026-05-07T02:19:51.506+00:00] src/backend_common/log.py 26 4 4 2 80% 25, 32-36
[task 2026-05-07T02:19:51.506+00:00] src/backend_common/pulse.py 38 22 6 0 36% 30-36, 39-51, 68-76
[task 2026-05-07T02:19:51.506+00:00] src/backend_common/security.py 8 8 0 0 0% 6-40
[task 2026-05-07T02:19:51.506+00:00] src/backend_common/taskcluster.py 15 0 2 1 94% 22->27
[task 2026-05-07T02:19:51.506+00:00] src/backend_common/testing.py 79 51 20 1 29% 57-66, 74-94, 99-124, 135-147, 153->exit, 161-171
[task 2026-05-07T02:19:51.506+00:00] src/cli_common/__init__.py 0 0 0 0 100%
[task 2026-05-07T02:19:51.506+00:00] src/cli_common/command.py 55 23 28 10 53% 17, 21, 26, 34-35, 40, 46, 48->51, 53-67, 78-79, 86-94
[task 2026-05-07T02:19:51.506+00:00] src/cli_common/openapi_subset.py 16 4 4 1 75% 39-41, 45
[task 2026-05-07T02:19:51.506+00:00] src/cli_common/pulse.py 53 45 10 0 13% 20-69, 73-78, 85-97
[task 2026-05-07T02:19:51.506+00:00] src/cli_common/utils.py 13 7 4 0 35% 15-21
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/admin/__init__.py 9 0 0 0 100%
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/admin/api.py 277 164 78 9 38% 45-51, 58-59, 73-80, 112, 117-127, 137, 140-141, 153-154, 162->170, 165->162, 195-216, 220-223, 228-229, 234-256, 260-301, 305-326, 330-347, 352-360, 365->371, 383-403, 407-418, 427-441
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/admin/auth0.py 21 0 10 0 100%
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/admin/github.py 128 75 34 2 38% 17-20, 45-78, 85, 92, 97-111, 156-186, 198, 202-203, 207-236, 240-245, 256-262, 272-278, 302-313, 323-326
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/admin/merge_automation.py 148 11 42 2 92% 26, 110-111, 205-206, 225-228, 250, 261
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/admin/product_details.py 462 51 166 29 86% 138, 225, 239-242, 256->259, 264, 307, 314, 327, 378, 403, 450, 453, 489, 493, 506-510, 526, 587, 589, 602-604, 616->618, 693-695, 714-715, 882, 1054, 1064-1067, 1103-1121, 1136, 1145, 1265, 1283->1281, 1298->exit, 1306
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/admin/release.py 43 8 12 0 82% 27-29, 66-67, 72-75
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/admin/settings.py 65 6 14 4 87% 45, 48, 192-196, 205-206
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/admin/tasks.py 199 88 50 6 55% 42, 46, 51-60, 72-75, 80-84, 89-93, 112-113, 149-150, 165-177, 181-190, 224-227, 237, 250, 257, 259->261, 265-285, 290, 295, 299-301, 305-312
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/admin/worker.py 30 19 0 0 37% 20-31, 37-52
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/admin/xpi.py 138 98 34 0 24% 22, 27-52, 56-79, 83-85, 89-91, 95-117, 144-147, 151-194
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/common/__init__.py 0 0 0 0 100%
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/common/config.py 80 3 18 3 94% 548, 552, 647
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/common/models.py 204 10 0 0 95% 21-24, 28, 55-59
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/common/product.py 11 0 0 0 100%
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/common/version.py 27 2 4 0 94% 33-34
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/migrations/env.py 46 15 10 3 61% 22-24, 30-31, 50, 65-69, 84-88, 91->94, 104
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/migrations/versions/3bd3bbb68ca2_initial_migration.py 24 8 0 0 67% 153-160
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/migrations/versions/a91368f8211b_add_merge_automation.py 10 1 0 0 90% 45
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/migrations/versions/bc175ac0c2c5_rename_phase_completed_to_scheduled_at.py 15 4 0 0 73% 26-29
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/public/__init__.py 8 3 0 0 62% 23-32
[task 2026-05-07T02:19:51.507+00:00] src/shipit_api/public/api.py 60 34 18 0 38% 34-50, 68-75, 79-81, 85-88, 92-96
[task 2026-05-07T02:19:51.507+00:00] ---------------------------------------------------------------------------------------------------------------------------------------
[task 2026-05-07T02:19:51.507+00:00] TOTAL 2693 872 656 101 65%
[task 2026-05-07T02:19:51.507+00:00] ====================== 142 passed, 69 warnings in 51.59s =======================
[task 2026-05-07T02:19:52.750+00:00] All done! ✨ 🍰 ✨
[task 2026-05-07T02:19:52.750+00:00] 55 files would be left unchanged.
[task 2026-05-07T02:19:52.750+00:00] ERROR [asyncio] Unclosed client session
[task 2026-05-07T02:19:52.750+00:00] client_session: <aiohttp.client.ClientSession object at 0x7f029f883da0>
[task 2026-05-07T02:19:52.750+00:00] report: venv> /builds/worker/checkouts/vcs/.venv/bin/uv venv -p /builds/worker/checkouts/vcs/.venv/bin/python --allow-existing '--prompt=api[report]' --python-preference system /builds/worker/checkouts/vcs/api/.tox/report
[task 2026-05-07T02:19:52.750+00:00] report: uv-sync> /builds/worker/checkouts/vcs/.venv/bin/uv sync --locked --python-preference system -p /builds/worker/checkouts/vcs/.venv/bin/python
[task 2026-05-07T02:19:52.750+00:00] report: commands[0]> coverage xml '--omit=*test*' -o /builds/worker/artifacts/coverage.xml
[task 2026-05-07T02:19:52.750+00:00] Wrote XML report to /builds/worker/artifacts/coverage.xml
[task 2026-05-07T02:19:52.750+00:00] clean: OK ✔ in 2.81 seconds
[task 2026-05-07T02:19:52.750+00:00] check: OK ✔ in 3.52 seconds
[task 2026-05-07T02:19:52.750+00:00] py312: OK ✔ in 59.43 seconds
[task 2026-05-07T02:19:52.750+00:00] clean: OK (2.81=setup[2.49]+cmd[0.32] seconds)
[task 2026-05-07T02:19:52.750+00:00] check: OK (3.52=setup[0.70]+cmd[1.55,0.37,0.90] seconds)
[task 2026-05-07T02:19:52.750+00:00] py312: OK (59.43=setup[1.16]+cmd[58.27] seconds)
[task 2026-05-07T02:19:52.750+00:00] report: OK (1.25=setup[0.48]+cmd[0.77] seconds)
[task 2026-05-07T02:19:52.750+00:00] congratulations :) (63.55 seconds)
[taskcluster 2026-05-07T02:19:53.755Z] Exit Code: 0
[taskcluster 2026-05-07T02:19:53.755Z] User Time: 9.339ms
[taskcluster 2026-05-07T02:19:53.755Z] Kernel Time: 21.792ms
[taskcluster 2026-05-07T02:19:53.755Z] Wall Time: 1m19.069957613s
[taskcluster 2026-05-07T02:19:53.755Z] Average Available System Memory: 14.26 GiB
[taskcluster 2026-05-07T02:19:53.755Z] Average System Memory Used: 1.35 GiB
[taskcluster 2026-05-07T02:19:53.755Z] Peak System Memory Used: 1.58 GiB
[taskcluster 2026-05-07T02:19:53.755Z] Total System Memory: 15.61 GiB
[taskcluster 2026-05-07T02:19:53.755Z] Result: SUCCEEDED
[taskcluster 2026-05-07T02:19:53.755Z] === Task Finished ===
[taskcluster 2026-05-07T02:19:53.755Z] Task Duration: 1m19.070693174s
[taskcluster 2026-05-07T02:19:54.202Z] [mounts] Preserving cache: Moving "/home/task_177812029291090/cache0" to "/home/generic-worker/caches/E9KX-CcQRC-x-TfDH9icug"
[taskcluster 2026-05-07T02:19:54.202Z] [mounts] Preserving cache: Moving "/home/task_177812029291090/cache1" to "/home/generic-worker/caches/HE7LCZm-SEedYO4uDjEtsw"
Loading