diff --git a/scripts/populate_tox/config.py b/scripts/populate_tox/config.py index f3f1ba0092..f874ff8a9c 100644 --- a/scripts/populate_tox/config.py +++ b/scripts/populate_tox/config.py @@ -6,6 +6,14 @@ # See scripts/populate_tox/README.md for more info on the format and examples. TEST_SUITE_CONFIG = { + "aiohttp": { + "package": "aiohttp", + "deps": { + "*": ["pytest-aiohttp"], + ">=3.8": ["pytest-asyncio"], + }, + "python": ">=3.7", + }, "ariadne": { "package": "ariadne", "deps": { diff --git a/scripts/populate_tox/populate_tox.py b/scripts/populate_tox/populate_tox.py index f741496f93..c04ab1b209 100644 --- a/scripts/populate_tox/populate_tox.py +++ b/scripts/populate_tox/populate_tox.py @@ -67,7 +67,6 @@ "potel", # Integrations that can be migrated -- we should eventually remove all # of these from the IGNORE list - "aiohttp", "anthropic", "arq", "asyncpg", diff --git a/scripts/populate_tox/tox.jinja b/scripts/populate_tox/tox.jinja index 380a80f690..3cfb5e1252 100644 --- a/scripts/populate_tox/tox.jinja +++ b/scripts/populate_tox/tox.jinja @@ -36,11 +36,6 @@ envlist = # At a minimum, we should test against at least the lowest # and the latest supported version of a framework. - # AIOHTTP - {py3.7}-aiohttp-v{3.4} - {py3.7,py3.9,py3.11}-aiohttp-v{3.8} - {py3.8,py3.12,py3.13}-aiohttp-latest - # Anthropic {py3.8,py3.11,py3.12}-anthropic-v{0.16,0.28,0.40} {py3.7,py3.11,py3.12}-anthropic-latest @@ -184,14 +179,6 @@ deps = # === Integrations === - # AIOHTTP - aiohttp-v3.4: aiohttp~=3.4.0 - aiohttp-v3.8: aiohttp~=3.8.0 - aiohttp-latest: aiohttp - aiohttp: pytest-aiohttp - aiohttp-v3.8: pytest-asyncio - aiohttp-latest: pytest-asyncio - # Anthropic anthropic: pytest-asyncio anthropic-v{0.16,0.28}: httpx<0.28.0 diff --git a/tests/integrations/aiohttp/test_aiohttp.py b/tests/integrations/aiohttp/test_aiohttp.py index ef7c04e90a..06859b127f 100644 --- a/tests/integrations/aiohttp/test_aiohttp.py +++ b/tests/integrations/aiohttp/test_aiohttp.py @@ -1,10 +1,16 @@ import asyncio import json -import sys + from contextlib import suppress from unittest import mock import pytest + +try: + import pytest_asyncio +except ImportError: + pytest_asyncio = None + from aiohttp import web, ClientSession from aiohttp.client import ServerDisconnectedError from aiohttp.web_request import Request @@ -21,6 +27,14 @@ from tests.conftest import ApproxDict +if pytest_asyncio is None: + # `loop` was deprecated in `pytest-aiohttp` + # in favor of `event_loop` from `pytest-asyncio` + @pytest.fixture + def event_loop(loop): + yield loop + + @pytest.mark.asyncio async def test_basic(sentry_init, aiohttp_client, capture_events): sentry_init(integrations=[AioHttpIntegration()]) @@ -474,14 +488,6 @@ async def hello(request): assert error_event["contexts"]["trace"]["trace_id"] == trace_id -if sys.version_info < (3, 12): - # `loop` was deprecated in `pytest-aiohttp` - # in favor of `event_loop` from `pytest-asyncio` - @pytest.fixture - def event_loop(loop): - yield loop - - @pytest.mark.asyncio async def test_crumb_capture( sentry_init, aiohttp_raw_server, aiohttp_client, event_loop, capture_events diff --git a/tox.ini b/tox.ini index 49411b3189..6f3b9863e8 100644 --- a/tox.ini +++ b/tox.ini @@ -10,7 +10,7 @@ # The file (and all resulting CI YAMLs) then need to be regenerated via # "scripts/generate-test-files.sh". # -# Last generated: 2025-04-23T07:46:44.042662+00:00 +# Last generated: 2025-04-23T08:07:00.653648+00:00 [tox] requires = @@ -36,11 +36,6 @@ envlist = # At a minimum, we should test against at least the lowest # and the latest supported version of a framework. - # AIOHTTP - {py3.7}-aiohttp-v{3.4} - {py3.7,py3.9,py3.11}-aiohttp-v{3.8} - {py3.8,py3.12,py3.13}-aiohttp-latest - # Anthropic {py3.8,py3.11,py3.12}-anthropic-v{0.16,0.28,0.40} {py3.7,py3.11,py3.12}-anthropic-latest @@ -263,6 +258,11 @@ envlist = # ~~~ Web 2 ~~~ + {py3.7}-aiohttp-v3.4.4 + {py3.7}-aiohttp-v3.6.3 + {py3.7,py3.9,py3.10}-aiohttp-v3.8.6 + {py3.9,py3.12,py3.13}-aiohttp-v3.11.18 + {py3.6,py3.7}-bottle-v0.12.25 {py3.8,py3.12,py3.13}-bottle-v0.13.3 @@ -335,14 +335,6 @@ deps = # === Integrations === - # AIOHTTP - aiohttp-v3.4: aiohttp~=3.4.0 - aiohttp-v3.8: aiohttp~=3.8.0 - aiohttp-latest: aiohttp - aiohttp: pytest-aiohttp - aiohttp-v3.8: pytest-asyncio - aiohttp-latest: pytest-asyncio - # Anthropic anthropic: pytest-asyncio anthropic-v{0.16,0.28}: httpx<0.28.0 @@ -699,6 +691,14 @@ deps = # ~~~ Web 2 ~~~ + aiohttp-v3.4.4: aiohttp==3.4.4 + aiohttp-v3.6.3: aiohttp==3.6.3 + aiohttp-v3.8.6: aiohttp==3.8.6 + aiohttp-v3.11.18: aiohttp==3.11.18 + aiohttp: pytest-aiohttp + aiohttp-v3.8.6: pytest-asyncio + aiohttp-v3.11.18: pytest-asyncio + bottle-v0.12.25: bottle==0.12.25 bottle-v0.13.3: bottle==0.13.3 bottle: werkzeug<2.1.0