From c39b3c788bef90248c9bd124598a9b7ffed2d17c Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 29 Apr 2025 15:38:43 +0200 Subject: [PATCH] gh-130317: Skip test_pack_unpack_roundtrip_for_nans() on x86 Reduce also the number of iterations from 1000 to 10 to ease debugging failures and prevent "command line too line" error when tests are re-run. --- Lib/test/test_capi/test_float.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_capi/test_float.py b/Lib/test/test_capi/test_float.py index c857959d569529..44570bf6379565 100644 --- a/Lib/test/test_capi/test_float.py +++ b/Lib/test/test_capi/test_float.py @@ -180,10 +180,17 @@ def test_pack_unpack_roundtrip(self): self.assertEqual(value2, value) @unittest.skipUnless(HAVE_IEEE_754, "requires IEEE 754") + # Skip on x86 (32-bit), since these tests fail. The problem is that sNaN + # doubles become qNaN doubles just by the C calling convention, there is no + # way to preserve sNaN doubles between C function calls. But tests pass + # on Windows x86. + @unittest.skipIf((sys.maxsize == 2147483647) and not(sys.platform == 'win32'), + 'test fails on x86 (32-bit)') def test_pack_unpack_roundtrip_for_nans(self): pack = _testcapi.float_pack unpack = _testcapi.float_unpack - for _ in range(1000): + + for _ in range(10): for size in (2, 4, 8): sign = random.randint(0, 1) signaling = random.randint(0, 1) @@ -203,7 +210,7 @@ def test_pack_unpack_roundtrip_for_nans(self): data1 = data if endian == BIG_ENDIAN else data[::-1] value = unpack(data1, endian) if signaling and sys.platform == 'win32': - # On this platform sNaN becomes qNaN when returned + # On Windows x86, sNaN becomes qNaN when returned # from function. That's a known bug, e.g. # https://developercommunity.visualstudio.com/t/155064 # (see also gh-130317).