Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable tests on 3.8+ #616

Merged
merged 31 commits into from
Nov 10, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
8a7d61b
Enable tests on 3.8+
Dreamsorcerer Aug 30, 2021
f31abba
Fix aioredis timeout issue (#617) (#618)
Dreamsorcerer Aug 30, 2021
cc56c24
Update conftest.py
Dreamsorcerer Aug 30, 2021
0bba364
Update conftest.py
Dreamsorcerer Aug 30, 2021
0517842
Remove version check
Dreamsorcerer Aug 30, 2021
c8ace3d
Update setup.py
Dreamsorcerer Aug 30, 2021
e604f09
Update test_redis_storage.py
Dreamsorcerer Aug 30, 2021
1918b48
Update conftest.py
Dreamsorcerer Aug 30, 2021
b1e8511
Update test_redis_storage.py
Dreamsorcerer Aug 30, 2021
47a0314
Update conftest.py
Dreamsorcerer Aug 30, 2021
b7fc168
Update conftest.py
Dreamsorcerer Aug 30, 2021
e58ff5b
Update conftest.py
Dreamsorcerer Aug 30, 2021
4883a42
Update conftest.py
Dreamsorcerer Aug 30, 2021
19d5a17
Update conftest.py
Dreamsorcerer Aug 30, 2021
2be5eaf
Update conftest.py
Dreamsorcerer Aug 30, 2021
b8c8b1d
Revert version check
Dreamsorcerer Aug 30, 2021
d24dd9a
Readd test
Dreamsorcerer Aug 30, 2021
c5c1e4c
Add reference to comment.
Dreamsorcerer Nov 10, 2021
7aef169
Workaround for connection pool.
Dreamsorcerer Nov 10, 2021
a53da88
Update conftest.py
Dreamsorcerer Nov 10, 2021
b038969
Update test_redis_storage.py
Dreamsorcerer Nov 10, 2021
dabf1c6
Update test_redis_storage.py
Dreamsorcerer Nov 10, 2021
d278d3e
Update conftest.py
Dreamsorcerer Nov 10, 2021
7f6cb66
Merge branch 'master' into Dreamsorcerer-patch-2
Dreamsorcerer Nov 10, 2021
aff6c6d
Update setup.py
Dreamsorcerer Nov 10, 2021
d40fd89
Update redis_storage.py
Dreamsorcerer Nov 10, 2021
858c4d1
Update conftest.py
Dreamsorcerer Nov 10, 2021
19eee00
Update conftest.py
Dreamsorcerer Nov 10, 2021
6204bbc
Update conftest.py
Dreamsorcerer Nov 10, 2021
a6ef72f
Update conftest.py
Dreamsorcerer Nov 10, 2021
94d62ae
Update conftest.py
Dreamsorcerer Nov 10, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.6, 3.7]
python-version: [3.6, 3.7, 3.8, 3.9]

steps:
- name: Checkout
Expand Down
5 changes: 3 additions & 2 deletions aiohttp_session/redis_storage.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,9 @@ def __init__(
)
if aioredis is None:
raise RuntimeError("Please install aioredis")
if StrictVersion(aioredis.__version__).version < (1, 0):
raise RuntimeError("aioredis<1.0 is not supported")
# May have installed aioredis separately (without aiohttp-session[aioredis]).
if StrictVersion(aioredis.__version__).version < (2, 0):
raise RuntimeError("aioredis<2.0 is not supported")
self._key_factory = key_factory
if not isinstance(redis_pool, aioredis.Redis):
raise TypeError(f"Expected aioredis.Redis got {type(redis_pool)}")
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def read(f):

install_requires = ["aiohttp>=3.8", 'typing_extensions>=3.7.4; python_version<"3.8"']
extras_require = {
"aioredis": ["aioredis>=1.0.0"],
"aioredis": ["aioredis>=2.0.0"],
"aiomcache": ["aiomcache>=0.5.2"],
"pycrypto": ["cryptography"],
"secure": ["cryptography"],
Expand Down
20 changes: 15 additions & 5 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@
from typing_extensions import TypedDict


# TODO: Remove once fixed: https://github.com/aio-libs/aioredis-py/issues/1115
aioredis.Redis.__del__ = lambda *args: None # type: ignore


class _ContainerInfo(TypedDict):
host: str
port: int
Expand Down Expand Up @@ -61,7 +65,8 @@ def session_id() -> str:
@pytest.fixture(scope="session")
def docker() -> DockerClient: # type: ignore[misc] # No docker types.
client = docker_from_env(version="auto")
return client
yield client
client.close()


@pytest.fixture(scope="session")
Expand Down Expand Up @@ -107,6 +112,10 @@ def redis_server( # type: ignore[misc] # No docker types.
except ConnectionError:
time.sleep(delay)
delay *= 2
finally:
loop.run_until_complete(conn.close())
# TODO: Remove once fixed: github.com/aio-libs/aioredis-py/issues/1103
loop.run_until_complete(conn.connection_pool.disconnect())
else:
pytest.fail("Cannot start redis server")

Expand All @@ -133,9 +142,8 @@ async def start(pool: aioredis.ConnectionPool) -> aioredis.Redis:
pool = aioredis.ConnectionPool.from_url(redis_url)
redis = loop.run_until_complete(start(pool))
yield redis
if redis is not None:
redis.close() # type: ignore[no-untyped-call]
loop.run_until_complete(pool.disconnect())
loop.run_until_complete(redis.close()) # type: ignore[no-untyped-call]
loop.run_until_complete(pool.disconnect())


@pytest.fixture(scope="session")
Expand Down Expand Up @@ -181,6 +189,8 @@ def memcached_server( # type: ignore[misc] # No docker types.
except ConnectionRefusedError:
time.sleep(delay)
delay *= 2
finally:
loop.run_until_complete(conn.close())
else:
pytest.fail("Cannot start memcached server")

Expand All @@ -203,4 +213,4 @@ def memcached( # type: ignore[misc]
) -> Iterator[aiomcache.Client]:
conn = aiomcache.Client(loop=loop, **memcached_params)
yield conn
conn.close()
loop.run_until_complete(conn.close())
1 change: 1 addition & 0 deletions tests/test_redis_storage.py
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,7 @@ async def handler(request: web.Request) -> web.StreamResponse:

redis = aioredis.from_url(redis_url) # type: ignore[no-untyped-call]
create_app(handler=handler, redis=redis)
await redis.close()


async def test_not_redis_provided_to_storage() -> None:
Expand Down