Skip to content

Some tests are broken on Windows and non-UTC timezones and slow with multiple network interfaces #3335

Open

Description

Hi, I tried to run tests (pytest tests/unit) on Windows, but they produced errors and are slow. After spending quite a while going down the rabbit hole, it seems quite simple to patch.

  1. Replace (deprecated) datetime.datetime.utcfromtimestamp(ts) with datetime.datetime.fromtimestamp(ts, datetime.UTC)

On my non-UTC system, the roundtrip between timestamp and time object confuses the tests, since at some point in there local time is involved. Plus it is deprecated, so at some point this will need to be patched anyway.

  1. Replace USERPROFILE environment variable instead of HOME on Windows

HOME is usually not used by Wwindows applications, including Python. Using the native Windows equivalent USERPROFILE seems to have the same effect / fix it, at least on my machine.

  1. Hardcode localhost loopback

I notice on WSL the tests ran very fast, while on Windows it ran very slow. Turns out it's getting stuck on tests/unit/api_test.py, test 25-33. Sprinkling in some debug logs (print(self.server.server_address)), I notice it is hitting some random virtual network interface on Windows (I have plenty of those due to running VMs...) but using the loopback 127.0.0.1 on WSL. I'm not sure why, and I'm not sure if the tests are relying on a random IP and port, but hardcoding it to the loopback address (+ fixed port, since I couldn't figure out how to make it work by changing only the address) makes the tests pass significantly faster for me (a few seconds vs half a minute).

Happy to submit PRs and/or my patches, if it werent for requiring a legal name...

Activity

  1. mahekara28 commented on Nov 3, 2026

    @mahekara28

    I've pushed a fix for the remaining Windows test issues. The tests now set USERPROFILE alongside HOME, and the TCP test server uses 127.0.0.1 while still picking a free port automatically.

    The Windows unit suite now reports 610 passed with no failures, and Ruff passes too. The timezone part was already fixed in #3354.

    I'll open a PR shortly with the patch and test results.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions