Skip to content

Commit d35fa67

Browse files
chore(tests): simplify get_platform test
`nest_asyncio` is archived and broken on some platforms so it's not worth keeping in our test suite.
1 parent 94440c3 commit d35fa67

File tree

3 files changed

+7
-50
lines changed

3 files changed

+7
-50
lines changed

pyproject.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ dev-dependencies = [
5656
"dirty-equals>=0.6.0",
5757
"importlib-metadata>=6.7.0",
5858
"rich>=13.7.1",
59-
"nest_asyncio==1.6.0",
6059
"pytest-xdist>=3.6.1",
6160
"griffe>=1",
6261
]

requirements-dev.lock

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ filelock==3.12.4
5050
frozenlist==1.6.2
5151
# via aiohttp
5252
# via aiosignal
53-
griffe==1.14.0
53+
griffe==1.13.0
5454
h11==0.16.0
5555
# via httpcore
5656
httpcore==1.0.9
@@ -78,7 +78,6 @@ multidict==6.4.4
7878
mypy==1.14.1
7979
mypy-extensions==1.0.0
8080
# via mypy
81-
nest-asyncio==1.6.0
8281
nodeenv==1.8.0
8382
# via pyright
8483
nox==2023.4.22

tests/test_client.py

Lines changed: 6 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,10 @@
66
import os
77
import sys
88
import json
9-
import time
109
import asyncio
1110
import inspect
12-
import subprocess
1311
import tracemalloc
1412
from typing import Any, Union, cast
15-
from textwrap import dedent
1613
from unittest import mock
1714
from typing_extensions import Literal
1815

@@ -23,14 +20,17 @@
2320

2421
from cloudflare import Cloudflare, AsyncCloudflare, APIResponseValidationError
2522
from cloudflare._types import Omit
23+
from cloudflare._utils import asyncify
2624
from cloudflare._models import BaseModel, FinalRequestOptions
2725
from cloudflare._exceptions import APIStatusError, APITimeoutError, APIResponseValidationError
2826
from cloudflare._base_client import (
2927
DEFAULT_TIMEOUT,
3028
HTTPX_DEFAULT_TIMEOUT,
3129
BaseClient,
30+
OtherPlatform,
3231
DefaultHttpxClient,
3332
DefaultAsyncHttpxClient,
33+
get_platform,
3434
make_request_options,
3535
)
3636

@@ -1902,50 +1902,9 @@ def retry_handler(_request: httpx.Request) -> httpx.Response:
19021902

19031903
assert response.http_request.headers.get("x-stainless-retry-count") == "42"
19041904

1905-
def test_get_platform(self) -> None:
1906-
# A previous implementation of asyncify could leave threads unterminated when
1907-
# used with nest_asyncio.
1908-
#
1909-
# Since nest_asyncio.apply() is global and cannot be un-applied, this
1910-
# test is run in a separate process to avoid affecting other tests.
1911-
test_code = dedent("""
1912-
import asyncio
1913-
import nest_asyncio
1914-
import threading
1915-
1916-
from cloudflare._utils import asyncify
1917-
from cloudflare._base_client import get_platform
1918-
1919-
async def test_main() -> None:
1920-
result = await asyncify(get_platform)()
1921-
print(result)
1922-
for thread in threading.enumerate():
1923-
print(thread.name)
1924-
1925-
nest_asyncio.apply()
1926-
asyncio.run(test_main())
1927-
""")
1928-
with subprocess.Popen(
1929-
[sys.executable, "-c", test_code],
1930-
text=True,
1931-
) as process:
1932-
timeout = 10 # seconds
1933-
1934-
start_time = time.monotonic()
1935-
while True:
1936-
return_code = process.poll()
1937-
if return_code is not None:
1938-
if return_code != 0:
1939-
raise AssertionError("calling get_platform using asyncify resulted in a non-zero exit code")
1940-
1941-
# success
1942-
break
1943-
1944-
if time.monotonic() - start_time > timeout:
1945-
process.kill()
1946-
raise AssertionError("calling get_platform using asyncify resulted in a hung process")
1947-
1948-
time.sleep(0.1)
1905+
async def test_get_platform(self) -> None:
1906+
platform = await asyncify(get_platform)()
1907+
assert isinstance(platform, (str, OtherPlatform))
19491908

19501909
async def test_proxy_environment_variables(self, monkeypatch: pytest.MonkeyPatch) -> None:
19511910
# Test that the proxy environment variables are set correctly

0 commit comments

Comments
 (0)