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

tests: fix win32 #3172

Open
wants to merge 18 commits into
base: master
Choose a base branch
from
10 changes: 8 additions & 2 deletions .github/workflows/test-suite.yml
Expand Up @@ -7,13 +7,18 @@ on:
pull_request:
branches: ["master"]

defaults:
run:
shell: bash

jobs:
tests:
name: "Python ${{ matrix.python-version }}"
runs-on: "ubuntu-latest"
name: "Python ${{ matrix.python-version }} (${{ matrix.os }})"
runs-on: "${{ matrix.os }}-latest"

strategy:
matrix:
os: ["ubuntu", "windows"]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure - I'm pleased to see us fix the test cases up for supporting windows, tho do we want to double the time our test runs take to complete?

python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]

steps:
Expand All @@ -32,3 +37,4 @@ jobs:
run: "scripts/test"
- name: "Enforce coverage"
run: "scripts/coverage"
if: "matrix.os == 'ubuntu'"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We probably don't need this conditional once we've fixed up all the tests to pass okay on windows, right?

5 changes: 4 additions & 1 deletion tests/client/test_async_client.py
@@ -1,5 +1,6 @@
from __future__ import annotations

import sys
import typing
from datetime import timedelta

Expand All @@ -18,7 +19,9 @@ async def test_get(server):
assert response.http_version == "HTTP/1.1"
assert response.headers
assert repr(response) == "<Response [200 OK]>"
assert response.elapsed > timedelta(seconds=0)
if sys.platform != "win32":
# flaky on windows
assert response.elapsed > timedelta(seconds=0)
trim21 marked this conversation as resolved.
Show resolved Hide resolved


@pytest.mark.parametrize(
Expand Down
4 changes: 4 additions & 0 deletions tests/test_multipart.py
@@ -1,6 +1,7 @@
from __future__ import annotations

import io
import sys
import tempfile
import typing

Expand Down Expand Up @@ -371,6 +372,9 @@ def test_multipart_encode_files_raises_exception_with_StringIO_content() -> None
httpx.Request("POST", url, data={}, files=files) # type: ignore


@pytest.mark.skipif(
sys.platform == "win32", reason="TemporaryFile on windows is binary mode"
)
def test_multipart_encode_files_raises_exception_with_text_mode_file() -> None:
url = "https://www.example.com"
with tempfile.TemporaryFile(mode="w") as upload:
trim21 marked this conversation as resolved.
Show resolved Hide resolved
Expand Down
4 changes: 4 additions & 0 deletions tests/test_timeouts.py
@@ -1,3 +1,5 @@
import sys

import pytest

import httpx
Expand All @@ -12,6 +14,7 @@ async def test_read_timeout(server):
await client.get(server.url.copy_with(path="/slow_response"))


@pytest.mark.skipif(sys.platform == "win32", reason="broken on windows")
@pytest.mark.anyio
async def test_write_timeout(server):
timeout = httpx.Timeout(None, write=1e-6)
Expand All @@ -33,6 +36,7 @@ async def test_connect_timeout(server):
await client.get("http://10.255.255.1/")


@pytest.mark.skipif(sys.platform == "win32", reason="broken on windows")
@pytest.mark.anyio
async def test_pool_timeout(server):
limits = httpx.Limits(max_connections=1)
Expand Down
3 changes: 3 additions & 0 deletions tests/test_utils.py
Expand Up @@ -2,6 +2,7 @@
import logging
import os
import random
import sys

import certifi
import pytest
Expand Down Expand Up @@ -122,6 +123,7 @@ def test_logging_redirect_chain(server, caplog):
]


@pytest.mark.skipif(sys.platform == "win32", reason="Path separator problem")
def test_logging_ssl(caplog):
caplog.set_level(logging.DEBUG)
with httpx.Client():
Expand All @@ -142,6 +144,7 @@ def test_logging_ssl(caplog):
]


@pytest.mark.skipif(sys.platform == "win32", reason="Path separator problem")
trim21 marked this conversation as resolved.
Show resolved Hide resolved
def test_get_ssl_cert_file():
# Two environments is not set.
assert get_ca_bundle_from_env() is None
Expand Down