From 2226f64dd2ca21014ff929f26061fd4d37564ff0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janek=20Nouvertn=C3=A9?= Date: Thu, 11 Sep 2025 12:44:47 +0200 Subject: [PATCH 1/4] fix redis --- src/pytest_databases/docker/redis.py | 6 ------ tests/test_redis.py | 7 +++++++ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/pytest_databases/docker/redis.py b/src/pytest_databases/docker/redis.py index 0efa751..be71ace 100644 --- a/src/pytest_databases/docker/redis.py +++ b/src/pytest_databases/docker/redis.py @@ -62,8 +62,6 @@ def redis_service( db = 0 if worker_num is not None: if xdist_redis_isolation_level == "database": - container_num = worker_num // 1 - name += f"_{container_num + 1}" db = worker_num else: name += f"_{worker_num + 1}" @@ -94,8 +92,6 @@ def dragonfly_service( db = 0 if worker_num is not None: if xdist_redis_isolation_level == "database": - container_num = worker_num // 1 - name += f"_{container_num + 1}" db = worker_num else: name += f"_{worker_num + 1}" @@ -136,8 +132,6 @@ def keydb_service( db = 0 if worker_num is not None: if xdist_redis_isolation_level == "database": - container_num = worker_num // 1 - name += f"_{container_num + 1}" db = worker_num else: name += f"_{worker_num + 1}" diff --git a/tests/test_redis.py b/tests/test_redis.py index 1fdbc27..e01b770 100644 --- a/tests/test_redis.py +++ b/tests/test_redis.py @@ -93,6 +93,13 @@ def test_two({redis_compatible_service}: RedisService) -> None: assert not client.get("one") client.set("one", "1") assert {redis_compatible_service}.db == get_xdist_worker_num() + + +def test_use_same_db({redis_compatible_service}: RedisService) -> None: + client_0 = redis.Redis.from_url("redis://", host={redis_compatible_service}.host, port={redis_compatible_service}.port, db=0) + client_1 = redis.Redis.from_url("redis://", host={redis_compatible_service}.host, port={redis_compatible_service}.port, db=1) + assert client_0.get("one") == "1" + assert client_1.get("one") == "1" """) result = pytester.runpytest("-n", "2") result.assert_outcomes(passed=2) From 11691465b28a016f206422cf48f88b6db2aef6eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janek=20Nouvertn=C3=A9?= Date: Thu, 11 Sep 2025 13:00:14 +0200 Subject: [PATCH 2/4] remove sugar --- pyproject.toml | 1 - uv.lock | 27 +-------------------------- 2 files changed, 1 insertion(+), 27 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 784a710..345bf2c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -84,7 +84,6 @@ dev = [ "pytest-mock", "pytest-click", "pytest-xdist", - "pytest-sugar", "slotscheck", "psycopg-binary", # This fixes tests failing on M series CPUs. # lint diff --git a/uv.lock b/uv.lock index 8e921f0..e582ff2 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 2 +revision = 3 requires-python = ">=3.9" resolution-markers = [ "python_full_version >= '3.13'", @@ -2085,7 +2085,6 @@ dev = [ { name = "pytest-cov" }, { name = "pytest-databases", extra = ["azure-storage", "bigquery", "cockroachdb", "dragonfly", "elasticsearch7", "elasticsearch8", "keydb", "mariadb", "minio", "mssql", "mysql", "oracle", "postgres", "redis", "spanner", "valkey"] }, { name = "pytest-mock" }, - { name = "pytest-sugar" }, { name = "pytest-xdist" }, { name = "ruff" }, { name = "shibuya" }, @@ -2154,7 +2153,6 @@ dev = [ { name = "pytest-cov" }, { name = "pytest-databases", extras = ["azure-storage", "bigquery", "cockroachdb", "dragonfly", "elasticsearch7", "elasticsearch8", "keydb", "mssql", "mysql", "mariadb", "oracle", "postgres", "redis", "spanner", "minio", "valkey"] }, { name = "pytest-mock" }, - { name = "pytest-sugar" }, { name = "pytest-xdist" }, { name = "ruff" }, { name = "shibuya" }, @@ -2192,20 +2190,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f2/3b/b26f90f74e2986a82df6e7ac7e319b8ea7ccece1caec9f8ab6104dc70603/pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f", size = 9863, upload-time = "2024-03-21T22:14:02.694Z" }, ] -[[package]] -name = "pytest-sugar" -version = "1.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "packaging" }, - { name = "pytest" }, - { name = "termcolor" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f5/ac/5754f5edd6d508bc6493bc37d74b928f102a5fff82d9a80347e180998f08/pytest-sugar-1.0.0.tar.gz", hash = "sha256:6422e83258f5b0c04ce7c632176c7732cab5fdb909cb39cca5c9139f81276c0a", size = 14992, upload-time = "2024-02-01T18:30:36.735Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/92/fb/889f1b69da2f13691de09a111c16c4766a433382d44aa0ecf221deded44a/pytest_sugar-1.0.0-py3-none-any.whl", hash = "sha256:70ebcd8fc5795dc457ff8b69d266a4e2e8a74ae0c3edc749381c64b5246c8dfd", size = 10171, upload-time = "2024-02-01T18:30:29.395Z" }, -] - [[package]] name = "pytest-xdist" version = "3.6.1" @@ -3042,15 +3026,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload-time = "2022-10-06T17:21:44.262Z" }, ] -[[package]] -name = "termcolor" -version = "3.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/6c/3d75c196ac07ac8749600b60b03f4f6094d54e132c4d94ebac6ee0e0add0/termcolor-3.1.0.tar.gz", hash = "sha256:6a6dd7fbee581909eeec6a756cff1d7f7c376063b14e4a298dc4980309e55970", size = 14324, upload-time = "2025-04-30T11:37:53.791Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4f/bd/de8d508070629b6d84a30d01d57e4a65c69aa7f5abe7560b8fad3b50ea59/termcolor-3.1.0-py3-none-any.whl", hash = "sha256:591dd26b5c2ce03b9e43f391264626557873ce1d379019786f99b0c2bee140aa", size = 7684, upload-time = "2025-04-30T11:37:52.382Z" }, -] - [[package]] name = "tomli" version = "2.2.1" From dad9f2110284dbe6f343236ab8f4c24be604cc68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janek=20Nouvertn=C3=A9?= Date: Thu, 11 Sep 2025 13:15:50 +0200 Subject: [PATCH 3/4] fix redis tests --- pyproject.toml | 2 +- tests/test_redis.py | 32 ++++++++++++++++++-------------- uv.lock | 4 ++-- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 345bf2c..02a2150 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -76,7 +76,7 @@ valkey = ["valkey"] dev = [ # tests "bump-my-version", - "pytest-databases[azure-storage,bigquery,cockroachdb,dragonfly,elasticsearch7,elasticsearch8,keydb,mssql,mysql,mariadb,oracle,postgres,redis,spanner,minio,valkey]", + "pytest-databases[azure-storage,bigquery,cockroachdb,dragonfly,elasticsearch7,elasticsearch8,keydb,mssql,mysql,oracle,postgres,redis,spanner,minio,valkey]", "coverage[toml]>=6.2", "pytest", "pytest-cov", diff --git a/tests/test_redis.py b/tests/test_redis.py index e01b770..7445e0b 100644 --- a/tests/test_redis.py +++ b/tests/test_redis.py @@ -46,7 +46,7 @@ def redis_image(): return "{redis_image_name}" def test_redis_service(redis_service: RedisService) -> None: - assert redis.Redis.from_url("redis://", host=redis_service.host, port=redis_service.port).ping() + assert redis.Redis(host=redis_service.host, port=redis_service.port).ping() """) result = pytester.runpytest() result.assert_outcomes(passed=1) @@ -64,7 +64,7 @@ def test_default_no_xdist(pytester: pytest.Pytester, redis_compatible_service: s ] def test_redis_service({redis_compatible_service}: RedisService) -> None: - assert redis.Redis.from_url("redis://", host={redis_compatible_service}.host, port={redis_compatible_service}.port).ping() + assert redis.Redis(host={redis_compatible_service}.host, port={redis_compatible_service}.port).ping() """) result = pytester.runpytest() result.assert_outcomes(passed=1) @@ -82,27 +82,31 @@ def test_xdist_isolate_database(pytester: pytest.Pytester, redis_compatible_serv ] def test_one({redis_compatible_service}: RedisService) -> None: - client = redis.Redis.from_url("redis://", host={redis_compatible_service}.host, port={redis_compatible_service}.port, db={redis_compatible_service}.db) - assert not client.get("one") - client.set("one", "1") + client = redis.Redis(host={redis_compatible_service}.host, port={redis_compatible_service}.port, db={redis_compatible_service}.db) assert {redis_compatible_service}.db == get_xdist_worker_num() + assert not client.get("one") + client.set("one", "0") + assert client.get("one") == b"0" def test_two({redis_compatible_service}: RedisService) -> None: - client = redis.Redis.from_url("redis://", host={redis_compatible_service}.host, port={redis_compatible_service}.port, db={redis_compatible_service}.db) + client = redis.Redis(host={redis_compatible_service}.host, port={redis_compatible_service}.port, db={redis_compatible_service}.db) + assert {redis_compatible_service}.db == get_xdist_worker_num() assert not client.get("one") client.set("one", "1") - assert {redis_compatible_service}.db == get_xdist_worker_num() + assert client.get("one") == b"1" def test_use_same_db({redis_compatible_service}: RedisService) -> None: - client_0 = redis.Redis.from_url("redis://", host={redis_compatible_service}.host, port={redis_compatible_service}.port, db=0) - client_1 = redis.Redis.from_url("redis://", host={redis_compatible_service}.host, port={redis_compatible_service}.port, db=1) - assert client_0.get("one") == "1" - assert client_1.get("one") == "1" + client_0 = redis.Redis(host={redis_compatible_service}.host, port={redis_compatible_service}.port, db=0) + client_1 = redis.Redis(host={redis_compatible_service}.host, port={redis_compatible_service}.port, db=1) + client_0.set("foo", "0") + client_1.set("foo", "1") + assert client_0.get("foo") == b"0" + assert client_1.get("foo") == b"1" """) result = pytester.runpytest("-n", "2") - result.assert_outcomes(passed=2) + result.assert_outcomes(passed=3) def test_xdist_isolate_server(pytester: pytest.Pytester, redis_compatible_service: str) -> None: @@ -122,14 +126,14 @@ def xdist_redis_isolation_level(): def test_one({redis_compatible_service}: RedisService) -> None: - client = redis.Redis.from_url("redis://", host={redis_compatible_service}.host, port={redis_compatible_service}.port, db={redis_compatible_service}.db) + client = redis.Redis(host={redis_compatible_service}.host, port={redis_compatible_service}.port, db={redis_compatible_service}.db) assert not client.get("one") client.set("one", "1") assert {redis_compatible_service}.db == 0 def test_two({redis_compatible_service}: RedisService) -> None: - client = redis.Redis.from_url("redis://", host={redis_compatible_service}.host, port={redis_compatible_service}.port, db={redis_compatible_service}.db) + client = redis.Redis(host={redis_compatible_service}.host, port={redis_compatible_service}.port, db={redis_compatible_service}.db) assert not client.get("one") client.set("one", "1") assert {redis_compatible_service}.db == 0 diff --git a/uv.lock b/uv.lock index e582ff2..25d2600 100644 --- a/uv.lock +++ b/uv.lock @@ -2083,7 +2083,7 @@ dev = [ { name = "pytest-cdist" }, { name = "pytest-click" }, { name = "pytest-cov" }, - { name = "pytest-databases", extra = ["azure-storage", "bigquery", "cockroachdb", "dragonfly", "elasticsearch7", "elasticsearch8", "keydb", "mariadb", "minio", "mssql", "mysql", "oracle", "postgres", "redis", "spanner", "valkey"] }, + { name = "pytest-databases", extra = ["azure-storage", "bigquery", "cockroachdb", "dragonfly", "elasticsearch7", "elasticsearch8", "keydb", "minio", "mssql", "mysql", "oracle", "postgres", "redis", "spanner", "valkey"] }, { name = "pytest-mock" }, { name = "pytest-xdist" }, { name = "ruff" }, @@ -2151,7 +2151,7 @@ dev = [ { name = "pytest-cdist", specifier = ">=0.2" }, { name = "pytest-click" }, { name = "pytest-cov" }, - { name = "pytest-databases", extras = ["azure-storage", "bigquery", "cockroachdb", "dragonfly", "elasticsearch7", "elasticsearch8", "keydb", "mssql", "mysql", "mariadb", "oracle", "postgres", "redis", "spanner", "minio", "valkey"] }, + { name = "pytest-databases", extras = ["azure-storage", "bigquery", "cockroachdb", "dragonfly", "elasticsearch7", "elasticsearch8", "keydb", "mssql", "mysql", "oracle", "postgres", "redis", "spanner", "minio", "valkey"] }, { name = "pytest-mock" }, { name = "pytest-xdist" }, { name = "ruff" }, From c034a9301f4fe1c2b15d9046114a7ba6751cc149 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janek=20Nouvertn=C3=A9?= Date: Thu, 11 Sep 2025 13:49:06 +0200 Subject: [PATCH 4/4] fix pyproject.toml --- pyproject.toml | 2 +- uv.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 02a2150..345bf2c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -76,7 +76,7 @@ valkey = ["valkey"] dev = [ # tests "bump-my-version", - "pytest-databases[azure-storage,bigquery,cockroachdb,dragonfly,elasticsearch7,elasticsearch8,keydb,mssql,mysql,oracle,postgres,redis,spanner,minio,valkey]", + "pytest-databases[azure-storage,bigquery,cockroachdb,dragonfly,elasticsearch7,elasticsearch8,keydb,mssql,mysql,mariadb,oracle,postgres,redis,spanner,minio,valkey]", "coverage[toml]>=6.2", "pytest", "pytest-cov", diff --git a/uv.lock b/uv.lock index 25d2600..e582ff2 100644 --- a/uv.lock +++ b/uv.lock @@ -2083,7 +2083,7 @@ dev = [ { name = "pytest-cdist" }, { name = "pytest-click" }, { name = "pytest-cov" }, - { name = "pytest-databases", extra = ["azure-storage", "bigquery", "cockroachdb", "dragonfly", "elasticsearch7", "elasticsearch8", "keydb", "minio", "mssql", "mysql", "oracle", "postgres", "redis", "spanner", "valkey"] }, + { name = "pytest-databases", extra = ["azure-storage", "bigquery", "cockroachdb", "dragonfly", "elasticsearch7", "elasticsearch8", "keydb", "mariadb", "minio", "mssql", "mysql", "oracle", "postgres", "redis", "spanner", "valkey"] }, { name = "pytest-mock" }, { name = "pytest-xdist" }, { name = "ruff" }, @@ -2151,7 +2151,7 @@ dev = [ { name = "pytest-cdist", specifier = ">=0.2" }, { name = "pytest-click" }, { name = "pytest-cov" }, - { name = "pytest-databases", extras = ["azure-storage", "bigquery", "cockroachdb", "dragonfly", "elasticsearch7", "elasticsearch8", "keydb", "mssql", "mysql", "oracle", "postgres", "redis", "spanner", "minio", "valkey"] }, + { name = "pytest-databases", extras = ["azure-storage", "bigquery", "cockroachdb", "dragonfly", "elasticsearch7", "elasticsearch8", "keydb", "mssql", "mysql", "mariadb", "oracle", "postgres", "redis", "spanner", "minio", "valkey"] }, { name = "pytest-mock" }, { name = "pytest-xdist" }, { name = "ruff" },