upload coverage.xml#1459
Draft
jcristau wants to merge 1 commit into
Draft
firefoxci-taskcluster / tox-api-py313
succeeded
Oct 20, 2025 in 22m 34s
FirefoxCI (pull_request)
test the tooltool api
Details
View task in Taskcluster | View logs in Taskcluster | View task group in Taskcluster
Task Status
Started: 2025-10-20T14:09:54.447Z
Resolved: 2025-10-20T14:11:58.366Z
Task Execution Time: 2 minutes, 3 seconds, 919 milliseconds
Task Status: completed
Reason Resolved: completed
RunId: 0
Artifacts
- public/coverage.xml
- public/logs/live_backing.log
- public/logs/live.log
[taskcluster 2025-10-20 14:09:54.505Z] Task ID: TQthz71QSO2hLicRdK87LQ
[taskcluster 2025-10-20 14:09:54.505Z] Worker ID: 2866161825779285176
[taskcluster 2025-10-20 14:09:54.505Z] Worker Group: us-west1-b
[taskcluster 2025-10-20 14:09:54.505Z] Worker Node Type: projects/887720501152/machineTypes/c2-standard-4
[taskcluster 2025-10-20 14:09:54.505Z] Worker Pool: releng-t/linux-gcp
[taskcluster 2025-10-20 14:09:54.505Z] Worker Version: 38.0.5
[taskcluster 2025-10-20 14:09:54.505Z] Public IP: 34.105.25.22
[taskcluster 2025-10-20 14:09:54.505Z] Hostname: releng-t-linux-gcp-et8kfmwssw-qrzuivj9fbw
[taskcluster 2025-10-20 14:09:54.505Z] using cache "releng-level-1-checkouts-v3-26529e177a382bde07b2-Go0hF6-MTF2Wx7qoJQzS1Q" -> /builds/worker/checkouts
[taskcluster 2025-10-20 14:09:59.135Z] Downloading artifact "public/image.tar.zst" from task ID: Go0hF6-MTF2Wx7qoJQzS1Q.
[taskcluster 2025-10-20 14:10:04.137Z] Download Progress: 48.04%
[taskcluster 2025-10-20 14:10:09.136Z] Download Progress: 95.43%
[taskcluster 2025-10-20 14:10:09.608Z] Downloaded artifact successfully.
[taskcluster 2025-10-20 14:10:09.608Z] Downloaded 408.022 mb
[taskcluster 2025-10-20 14:10:09.609Z] Decompressing downloaded image
[taskcluster 2025-10-20 14:10:12.901Z] Loading docker image from downloaded archive.
[taskcluster 2025-10-20 14:10:36.693Z] Image 'public/image.tar.zst' from task 'Go0hF6-MTF2Wx7qoJQzS1Q' loaded. Using image ID sha256:7340eaa91e6c4a14356a8bde06674148da8efcac842fa379c5d5a70f7053e293.
[taskcluster 2025-10-20 14:10:36.978Z] === Task Starting ===
[setup 2025-10-20T14:10:40.185+00:00] run-task started in /
...(54 lines hidden)...
[task 2025-10-20T14:11:29.912+00:00] PASSED
[task 2025-10-20T14:11:29.915+00:00] tooltool_api.lib.flask: Loading custom configuration
[task 2025-10-20T14:11:29.917+00:00] tooltool_api.lib.db: Starting migrations (app='tooltool_api')
[task 2025-10-20T14:11:29.923+00:00] INFO [alembic.runtime.migration] Context impl SQLiteImpl.
[task 2025-10-20T14:11:29.923+00:00] INFO [alembic.runtime.migration] Will assume non-transactional DDL.
[task 2025-10-20T14:11:29.927+00:00] INFO [alembic.runtime.migration] Running upgrade -> 8029026f4e23, Initial migration
[task 2025-10-20T14:11:29.935+00:00] INFO [alembic.runtime.migration] Running upgrade 8029026f4e23 -> 697dbab45f3f, Make releng_tooltool_files.size a BigInteger
[task 2025-10-20T14:11:29.941+00:00] tooltool_api.lib.db: Completed migrations (app='tooltool_api')
[task 2025-10-20T14:11:30.105+00:00] tests/test_api.py::test_upload_anon PASSED
[task 2025-10-20T14:11:30.108+00:00] tooltool_api.lib.flask: Loading custom configuration
[task 2025-10-20T14:11:30.111+00:00] tooltool_api.lib.db: Starting migrations (app='tooltool_api')
[task 2025-10-20T14:11:30.116+00:00] INFO [alembic.runtime.migration] Context impl SQLiteImpl.
[task 2025-10-20T14:11:30.116+00:00] INFO [alembic.runtime.migration] Will assume non-transactional DDL.
[task 2025-10-20T14:11:30.119+00:00] INFO [alembic.runtime.migration] Running upgrade -> 8029026f4e23, Initial migration
[task 2025-10-20T14:11:30.128+00:00] INFO [alembic.runtime.migration] Running upgrade 8029026f4e23 -> 697dbab45f3f, Make releng_tooltool_files.size a BigInteger
[task 2025-10-20T14:11:30.134+00:00] tooltool_api.lib.db: Completed migrations (app='tooltool_api')
[task 2025-10-20T14:11:30.537+00:00] tests/test_api.py::test_with_scopes tooltool_api.lib.auth: Init user test/user@mozilla.com
[task 2025-10-20T14:11:30.662+00:00] tooltool_api.api: Generating signed S3 PUT URL to be688838ca for test/user@mozilla.com; expiring in 60s (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='upload' tooltool_batch_id=None)
[task 2025-10-20T14:11:30.783+00:00] tooltool_api.api: Generating signed S3 GET URL for be688838ca, expiring in 60s (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:30.787+00:00] tooltool_api.lib.auth: Checking permissions (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None permissions=['project:releng:services/tooltool/api/manage'])
[task 2025-10-20T14:11:30.790+00:00] tooltool_api.lib.auth: Checking permissions (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None permissions=['project:releng:services/tooltool/api/manage'])
[task 2025-10-20T14:11:30.792+00:00] tooltool_api.lib.auth: Init user test/user@mozilla.com (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:30.794+00:00] tooltool_api.lib.auth: Init user test/user@mozilla.com (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:30.795+00:00] tooltool_api.lib.auth: Validated permissions, processing api request (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:30.806+00:00] tooltool_api.lib.auth: Init user test/user@mozilla.com (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:30.817+00:00] tooltool_api.api: Generating signed S3 GET URL for be688838ca, expiring in 60s (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:30.821+00:00] tooltool_api.lib.auth: Checking permissions (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None permissions=['project:releng:services/tooltool/api/manage'])
[task 2025-10-20T14:11:30.824+00:00] tooltool_api.lib.auth: Init user test/user@mozilla.com (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:30.826+00:00] tooltool_api.lib.auth: Init user test/user@mozilla.com (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:30.826+00:00] tooltool_api.lib.auth: Validated permissions, processing api request (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:30.855+00:00] PASSED
[task 2025-10-20T14:11:30.858+00:00] tooltool_api.lib.flask: Loading custom configuration
[task 2025-10-20T14:11:30.860+00:00] tooltool_api.lib.db: Starting migrations (app='tooltool_api')
[task 2025-10-20T14:11:30.866+00:00] INFO [alembic.runtime.migration] Context impl SQLiteImpl.
[task 2025-10-20T14:11:30.866+00:00] INFO [alembic.runtime.migration] Will assume non-transactional DDL.
[task 2025-10-20T14:11:30.869+00:00] INFO [alembic.runtime.migration] Running upgrade -> 8029026f4e23, Initial migration
[task 2025-10-20T14:11:30.878+00:00] INFO [alembic.runtime.migration] Running upgrade 8029026f4e23 -> 697dbab45f3f, Make releng_tooltool_files.size a BigInteger
[task 2025-10-20T14:11:30.884+00:00] tooltool_api.lib.db: Completed migrations (app='tooltool_api')
[task 2025-10-20T14:11:31.054+00:00] tests/test_api.py::test_swagger PASSED
[task 2025-10-20T14:11:31.056+00:00] tests/test_auth.py::test_anonymous PASSED
[task 2025-10-20T14:11:31.057+00:00] tooltool_api.lib.auth: Init user test/user@mozilla.com (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:31.059+00:00] tests/test_auth.py::test_taskcluster_user PASSED
[task 2025-10-20T14:11:31.068+00:00] tooltool_api.lib.auth: Init user test/user@mozilla.com (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:31.070+00:00] tooltool_api.lib.auth: Init user test/user@mozilla.com (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:31.071+00:00] tests/test_auth.py::test_auth PASSED
[task 2025-10-20T14:11:31.073+00:00] tooltool_api.lib.auth: Checking permissions (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None permissions=[['project/test/A', 'project/test/B'], ['project/test-admin/*']])
[task 2025-10-20T14:11:31.075+00:00] tooltool_api.lib.auth: Init user test/user@mozilla.com (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:31.076+00:00] tooltool_api.lib.auth: Init user test/user@mozilla.com (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:31.078+00:00] tests/test_auth.py::test_scopes_invalid PASSED
[task 2025-10-20T14:11:31.080+00:00] tooltool_api.lib.auth: User test/user@mozilla.com misses some permissions: project/test/B OR project/test-admin/* (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:31.080+00:00] tooltool_api.lib.auth: Checking permissions (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None permissions=[['project/test/A', 'project/test/B'], ['project/test-admin/*']])
[task 2025-10-20T14:11:31.081+00:00] tooltool_api.lib.auth: Init user test/user@mozilla.com (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:31.083+00:00] tooltool_api.lib.auth: Init user test/user@mozilla.com (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:31.084+00:00] tooltool_api.lib.auth: Validated permissions, processing api request (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:31.085+00:00] tests/test_auth.py::test_scopes_user PASSED
[task 2025-10-20T14:11:31.087+00:00] tooltool_api.lib.auth: Checking permissions (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None permissions=[['project/test/A', 'project/test/B'], ['project/test-admin/*']])
[task 2025-10-20T14:11:31.088+00:00] tooltool_api.lib.auth: Init user test/user@mozilla.com (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:31.090+00:00] tooltool_api.lib.auth: Init user test/user@mozilla.com (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:31.090+00:00] tooltool_api.lib.auth: Validated permissions, processing api request (tooltool_sha512='be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09' tooltool_operation='download_file' tooltool_batch_id=None)
[task 2025-10-20T14:11:31.092+00:00] tests/test_auth.py::test_scopes_admin PASSED
[task 2025-10-20T14:11:31.093+00:00] conftest: Test
[task 2025-10-20T14:11:31.094+00:00] conftest: Test args (arg1='aaa')
[task 2025-10-20T14:11:31.096+00:00] tests/test_log.py::test_logger PASSED
[task 2025-10-20T14:11:31.096+00:00] tests/test_utils.py::test_now PASSED
[task 2025-10-20T14:11:31.098+00:00] tests/test_utils.py::test_keyname PASSED
[task 2025-10-20T14:11:31.310+00:00] tests/test_utils.py::test_is_valid_sha512 PASSED/builds/worker/checkouts/vcs/.tox/py313/lib/python3.13/site-packages/_pytest/unraisableexception.py:33: ResourceWarning: unclosed database in <sqlite3.Connection object at 0x7f0d7bab4f40>
[task 2025-10-20T14:11:31.310+00:00] gc.collect()
[task 2025-10-20T14:11:31.310+00:00] ResourceWarning: Enable tracemalloc to get the object allocation traceback
[task 2025-10-20T14:11:31.404+00:00] /builds/worker/checkouts/vcs/.tox/py313/lib/python3.13/site-packages/_pytest/unraisableexception.py:33: ResourceWarning: unclosed database in <sqlite3.Connection object at 0x7f0d7bc8eb60>
[task 2025-10-20T14:11:31.404+00:00] gc.collect()
[task 2025-10-20T14:11:31.404+00:00] ResourceWarning: Enable tracemalloc to get the object allocation traceback
[task 2025-10-20T14:11:31.405+00:00] /builds/worker/checkouts/vcs/.tox/py313/lib/python3.13/site-packages/_pytest/unraisableexception.py:33: ResourceWarning: unclosed database in <sqlite3.Connection object at 0x7f0d7bcdac50>
[task 2025-10-20T14:11:31.405+00:00] gc.collect()
[task 2025-10-20T14:11:31.405+00:00] ResourceWarning: Enable tracemalloc to get the object allocation traceback
[task 2025-10-20T14:11:31.405+00:00] /builds/worker/checkouts/vcs/.tox/py313/lib/python3.13/site-packages/_pytest/unraisableexception.py:33: ResourceWarning: unclosed database in <sqlite3.Connection object at 0x7f0d7bab55d0>
[task 2025-10-20T14:11:31.405+00:00] gc.collect()
[task 2025-10-20T14:11:31.405+00:00] ResourceWarning: Enable tracemalloc to get the object allocation traceback
[task 2025-10-20T14:11:31.583+00:00]
[task 2025-10-20T14:11:31.583+00:00]
[task 2025-10-20T14:11:31.583+00:00] =============================== warnings summary ===============================
[task 2025-10-20T14:11:31.583+00:00] tests/test_api.py::test_no_uploads
[task 2025-10-20T14:11:31.584+00:00] tests/test_api.py::test_no_uploads
[task 2025-10-20T14:11:31.584+00:00] /builds/worker/checkouts/vcs/.tox/py313/lib/python3.13/site-packages/connexion/decorators/validation.py:16: DeprecationWarning: Accessing jsonschema.draft4_format_checker is deprecated and will be removed in a future release. Instead, use the FORMAT_CHECKER attribute on the corresponding Validator.
[task 2025-10-20T14:11:31.584+00:00] from jsonschema import Draft4Validator, ValidationError, draft4_format_checker
[task 2025-10-20T14:11:31.584+00:00]
[task 2025-10-20T14:11:31.584+00:00] tests/test_api.py::test_no_uploads
[task 2025-10-20T14:11:31.584+00:00] tests/test_api.py::test_no_uploads
[task 2025-10-20T14:11:31.584+00:00] /builds/worker/checkouts/vcs/.tox/py313/lib/python3.13/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 2025-10-20T14:11:31.584+00:00] from jsonschema import Draft4Validator, RefResolver
[task 2025-10-20T14:11:31.584+00:00]
[task 2025-10-20T14:11:31.584+00:00] tests/test_api.py::test_no_uploads
[task 2025-10-20T14:11:31.584+00:00] /builds/worker/checkouts/vcs/.tox/py313/lib/python3.13/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 2025-10-20T14:11:31.584+00:00] from jsonschema.exceptions import RefResolutionError, ValidationError # noqa
[task 2025-10-20T14:11:31.584+00:00]
[task 2025-10-20T14:11:31.584+00:00] tests/test_api.py::test_no_uploads
[task 2025-10-20T14:11:31.584+00:00] tests/test_api.py::test_no_uploads
[task 2025-10-20T14:11:31.584+00:00] tests/test_api.py::test_upload_anon
[task 2025-10-20T14:11:31.584+00:00] tests/test_api.py::test_with_scopes
[task 2025-10-20T14:11:31.585+00:00] tests/test_api.py::test_swagger
[task 2025-10-20T14:11:31.585+00:00] tests/test_log.py::test_logger
[task 2025-10-20T14:11:31.585+00:00] /builds/worker/checkouts/vcs/api/src/tooltool_api/lib/log.py:86: DeprecationWarning: `structlog.threadlocal` is deprecated, please use `structlog.contextvars` instead.
[task 2025-10-20T14:11:31.585+00:00] context_class=structlog.threadlocal.wrap_dict(dict),
[task 2025-10-20T14:11:31.585+00:00]
[task 2025-10-20T14:11:31.585+00:00] tests/test_api.py::test_no_uploads
[task 2025-10-20T14:11:31.585+00:00] tests/test_api.py::test_no_uploads
[task 2025-10-20T14:11:31.585+00:00] tests/test_api.py::test_upload_anon
[task 2025-10-20T14:11:31.585+00:00] tests/test_api.py::test_upload_anon
[task 2025-10-20T14:11:31.585+00:00] tests/test_api.py::test_with_scopes
[task 2025-10-20T14:11:31.585+00:00] tests/test_api.py::test_with_scopes
[task 2025-10-20T14:11:31.585+00:00] tests/test_api.py::test_swagger
[task 2025-10-20T14:11:31.585+00:00] tests/test_api.py::test_swagger
[task 2025-10-20T14:11:31.586+00:00] /builds/worker/checkouts/vcs/api/src/migrations/env.py:20: DeprecationWarning: 'get_engine' is deprecated and will be removed in Flask-SQLAlchemy 3.1. Use 'engine' or 'engines[key]' instead.
[task 2025-10-20T14:11:31.586+00:00] return current_app.extensions["migrate"].db.get_engine()
[task 2025-10-20T14:11:31.586+00:00]
[task 2025-10-20T14:11:31.586+00:00] tests/test_api.py::test_no_uploads
[task 2025-10-20T14:11:31.586+00:00] tests/test_api.py::test_no_uploads
[task 2025-10-20T14:11:31.586+00:00] tests/test_api.py::test_upload_anon
[task 2025-10-20T14:11:31.586+00:00] tests/test_api.py::test_upload_anon
[task 2025-10-20T14:11:31.586+00:00] tests/test_api.py::test_with_scopes
[task 2025-10-20T14:11:31.586+00:00] tests/test_api.py::test_with_scopes
[task 2025-10-20T14:11:31.586+00:00] tests/test_api.py::test_swagger
[task 2025-10-20T14:11:31.586+00:00] tests/test_api.py::test_swagger
[task 2025-10-20T14:11:31.586+00:00] /builds/worker/checkouts/vcs/.tox/py313/lib/python3.13/site-packages/connexion/spec.py:52: DeprecationWarning: Passing a schema to Validator.iter_errors is deprecated and will be removed in a future release. Call validator.evolve(schema=new_schema).iter_errors(...) instead.
[task 2025-10-20T14:11:31.587+00:00] for error in instance_validator.iter_errors(instance["default"], instance):
[task 2025-10-20T14:11:31.587+00:00]
[task 2025-10-20T14:11:31.587+00:00] tests/test_api.py::test_with_scopes
[task 2025-10-20T14:11:31.587+00:00] /builds/worker/checkouts/vcs/api/src/tooltool_api/api.py:134: RemovedIn20Warning: Deprecated API features detected! These feature(s) are not compatible with SQLAlchemy 2.0. To prevent incompatible upgrades prior to updating applications, ensure requirements files are pinned to "sqlalchemy<2.0". Set environment variable SQLALCHEMY_WARN_20=1 to show all deprecation warnings. Set environment variable SQLALCHEMY_SILENCE_UBER_WARNING=1 to silence this message. (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)
[task 2025-10-20T14:11:31.587+00:00] session.add(tooltool_api.models.BatchFile(filename=filename, file=file, batch=batch))
[task 2025-10-20T14:11:31.588+00:00]
[task 2025-10-20T14:11:31.588+00:00] -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
[task 2025-10-20T14:11:31.588+00:00] ================================ tests coverage ================================
[task 2025-10-20T14:11:31.588+00:00] _______________ coverage: platform linux, python 3.13.8-final-0 ________________
[task 2025-10-20T14:11:31.588+00:00]
[task 2025-10-20T14:11:31.588+00:00] Name Stmts Miss Branch BrPart Cover Missing
[task 2025-10-20T14:11:31.588+00:00] --------------------------------------------------------------------------------
[task 2025-10-20T14:11:31.588+00:00] src/tooltool_api/__init__.py 27 0 2 0 100%
[task 2025-10-20T14:11:31.588+00:00] src/tooltool_api/api.py 180 41 84 29 73% 28, 53, 56, 59, 67, 71, 94, 97, 101, 104-105, 107->111, 146, 152->160, 161-170, 185, 189, 198, 204, 209, 219, 228, 232, 244, 248, 262, 268-274, 278, 285, 290
[task 2025-10-20T14:11:31.588+00:00] src/tooltool_api/aws.py 25 5 2 0 81% 34-42
[task 2025-10-20T14:11:31.588+00:00] src/tooltool_api/cli.py 137 74 30 8 45% 26-60, 68-69, 77-78, 83-84, 87-88, 108, 111-113, 119-121, 127-130, 137-141, 149-150, 163-171, 191-204, 211-218
[task 2025-10-20T14:11:31.588+00:00] src/tooltool_api/config.py 4 0 0 0 100%
[task 2025-10-20T14:11:31.588+00:00] src/tooltool_api/flask.py 2 2 0 0 0% 6-8
[task 2025-10-20T14:11:31.588+00:00] src/tooltool_api/lib/api.py 19 1 0 0 95% 80
[task 2025-10-20T14:11:31.589+00:00] src/tooltool_api/lib/auth.py 188 42 54 10 74% 59, 63->66, 89, 95, 98, 141-143, 197-199, 213-224, 234, 238, 242->244, 254-258, 266->exit, 273-280, 285, 295-303
[task 2025-10-20T14:11:31.589+00:00] src/tooltool_api/lib/db.py 70 33 12 0 48% 23-48, 57, 61, 65, 87-88, 110-115
[task 2025-10-20T14:11:31.589+00:00] src/tooltool_api/lib/dockerflow.py 41 29 8 0 24% 29-30, 34-42, 49, 56-79
[task 2025-10-20T14:11:31.589+00:00] src/tooltool_api/lib/flask.py 45 7 16 5 80% 34-35, 37->41, 46, 53-55, 58, 68->73
[task 2025-10-20T14:11:31.589+00:00] src/tooltool_api/lib/log.py 48 12 18 6 67% 29->31, 45-54, 60, 63->67, 71, 81, 104, 110
[task 2025-10-20T14:11:31.590+00:00] src/tooltool_api/lib/pulse.py 90 69 14 0 20% 27-81, 85-90, 97-109, 125-131, 134-146, 162-166
[task 2025-10-20T14:11:31.590+00:00] src/tooltool_api/models.py 46 1 2 0 98% 31
[task 2025-10-20T14:11:31.590+00:00] src/tooltool_api/utils.py 9 0 0 0 100%
[task 2025-10-20T14:11:31.590+00:00] src/tooltool_api/view.py 4 1 0 0 75% 12
[task 2025-10-20T14:11:31.590+00:00] --------------------------------------------------------------------------------
[task 2025-10-20T14:11:31.591+00:00] TOTAL 935 317 242 58 63%
[task 2025-10-20T14:11:31.591+00:00] ======================= 14 passed, 28 warnings in 2.53s ========================
[task 2025-10-20T14:11:31.711+00:00] <sys>:0: ResourceWarning: unclosed database in <sqlite3.Connection object at 0x7f0d79d49f30>
[task 2025-10-20T14:11:31.858+00:00] py313: OK (47.42=setup[43.30]+cmd[4.12] seconds)
[task 2025-10-20T14:11:31.858+00:00] congratulations :) (47.54 seconds)
[task 2025-10-20T14:11:31.899+00:00] tooltool_api-py313: commands[1] /builds/worker/checkouts/vcs/api> tox -e codecov
[task 2025-10-20T14:11:32.460+00:00] codecov: install_deps> python -I -m pip install -r /builds/worker/checkouts/vcs/api/requirements/test.txt
[task 2025-10-20T14:11:53.535+00:00] .pkg: _optional_hooks> python /builds/worker/checkouts/vcs/.tox/tooltool_api-py313/lib/python3.13/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
[task 2025-10-20T14:11:53.740+00:00] .pkg: get_requires_for_build_editable> python /builds/worker/checkouts/vcs/.tox/tooltool_api-py313/lib/python3.13/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
[task 2025-10-20T14:11:53.977+00:00] .pkg: build_editable> python /builds/worker/checkouts/vcs/.tox/tooltool_api-py313/lib/python3.13/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
[task 2025-10-20T14:11:54.272+00:00] codecov: install_package_deps> python -I -m pip install Flask Flask-Cors Flask-Login Flask-Migrate 'Flask-SQLAlchemy<3.1' Logbook 'SQLAlchemy<2' Werkzeug aioamqp blinker boto3 botocore click 'connexion[swagger-ui]<3' cryptography flask-oidc flask-talisman gunicorn kombu psycopg2 requests 'sentry-sdk[flask]' structlog taskcluster
[task 2025-10-20T14:11:54.933+00:00] codecov: install_package> python -I -m pip install --force-reinstall --no-deps /builds/worker/checkouts/vcs/.tox/.tmp/package/2/mozilla_tooltool_api-1.0.0-0.editable-py3-none-any.whl
[task 2025-10-20T14:11:55.328+00:00] codecov: commands[0]> coverage xml
[task 2025-10-20T14:11:55.571+00:00] Wrote XML report to coverage.xml
[task 2025-10-20T14:11:55.601+00:00] codecov: commands[1]> sed -i -e 's|filename="|filename="api/|' coverage.xml
[task 2025-10-20T14:11:55.605+00:00] codecov: commands[2]> codecov --disable pycov --commit=243fa030d3f488680608d26820b1a4c6803d5e4c --branch= --pr=1459
[task 2025-10-20T14:11:56.637+00:00]
[task 2025-10-20T14:11:56.637+00:00] _____ _
[task 2025-10-20T14:11:56.637+00:00] / ____| | |
[task 2025-10-20T14:11:56.637+00:00] | | ___ __| | ___ ___ _____ __
[task 2025-10-20T14:11:56.637+00:00] | | / _ \ / _ |/ _ \/ __/ _ \ \ / /
[task 2025-10-20T14:11:56.637+00:00] | |___| (_) | (_| | __/ (_| (_) \ V /
[task 2025-10-20T14:11:56.638+00:00] \_____\___/ \____|\___|\___\___/ \_/
[task 2025-10-20T14:11:56.638+00:00] v2.1.13
[task 2025-10-20T14:11:56.638+00:00]
[task 2025-10-20T14:11:56.638+00:00] ==> Detecting CI provider
[task 2025-10-20T14:11:56.638+00:00] -> Got branch from git/hg
[task 2025-10-20T14:11:56.638+00:00] -> Got sha from git/hg
[task 2025-10-20T14:11:56.638+00:00] ==> Preparing upload
[task 2025-10-20T14:11:56.638+00:00] ==> Processing gcov (disable by -X gcov)
[task 2025-10-20T14:11:56.638+00:00] ==> Collecting reports
[task 2025-10-20T14:11:56.638+00:00] + /builds/worker/checkouts/vcs/api/coverage.xml bytes=44196
[task 2025-10-20T14:11:56.638+00:00] ==> Uploading
[task 2025-10-20T14:11:56.638+00:00] .url https://codecov.io
[task 2025-10-20T14:11:56.638+00:00] .query commit=243fa030d3f488680608d26820b1a4c6803d5e4c&branch=coverage&pr=1459&token=<secret>&package=py2.1.13
[task 2025-10-20T14:11:56.638+00:00] Gzipping contents..
[task 2025-10-20T14:11:56.638+00:00] Compressed contents to 4059 bytes
[task 2025-10-20T14:11:56.638+00:00] Pinging Codecov...
[task 2025-10-20T14:11:56.639+00:00] Uploading to S3...
[task 2025-10-20T14:11:56.639+00:00] Uploading to S3 took 0:00:00.441304
[task 2025-10-20T14:11:56.639+00:00] https://app.codecov.io/github/mozilla-releng/tooltool/commit/243fa030d3f488680608d26820b1a4c6803d5e4c
[task 2025-10-20T14:11:56.663+00:00] codecov: OK (24.41=setup[23.08]+cmd[0.27,0.00,1.06] seconds)
[task 2025-10-20T14:11:56.664+00:00] congratulations :) (24.47 seconds)
[task 2025-10-20T14:11:56.711+00:00] tooltool_api-py313: OK (75.12=setup[2.43]+cmd[47.88,24.81] seconds)
[task 2025-10-20T14:11:56.711+00:00] congratulations :) (75.14 seconds)
[taskcluster 2025-10-20 14:11:57.486Z] === Task Finished ===
[taskcluster 2025-10-20 14:11:57.778Z] Successful task run with exit code: 0 completed in 123.274 seconds
Loading