From 71d7cc7d8f24fbb5b51b47b4f0133de701e7bd9b Mon Sep 17 00:00:00 2001 From: AN Long Date: Sun, 27 Oct 2024 17:02:44 +0800 Subject: [PATCH 01/16] Add more tests for msvcrt module --- Lib/test/test_msvcrt.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_msvcrt.py b/Lib/test/test_msvcrt.py index 1c6905bd1ee586..88f1949c441ab2 100644 --- a/Lib/test/test_msvcrt.py +++ b/Lib/test/test_msvcrt.py @@ -4,7 +4,7 @@ import unittest from textwrap import dedent -from test.support import os_helper, requires_resource +from test.support import os_helper, requires_resource, Py_DEBUG from test.support.os_helper import TESTFN, TESTFN_ASCII if sys.platform != "win32": @@ -115,6 +115,28 @@ def test_heap_min(self): except OSError: pass + def test_GetErrorMode(self): + msvcrt.GetErrorMode() + + def test_SetErrorMode(self): + old = msvcrt.SetErrorMode(0) + msvcrt.SetErrorMode(old) + + @unittest.skipUnless(Py_DEBUG, "only avialable under debug build") + def test_set_error_mode(self): + old = msvcrt.set_error_mode(msvcrt.OUT_TO_STDERR) + msvcrt.set_error_mode(old) + + @unittest.skipUnless(Py_DEBUG, "only avialable under debug build") + def test_CrtSetReportMode(self): + old = msvcrt.CrtSetReportMode(msvcrt.CRT_WARN, msvcrt.CRTDBG_MODE_DEBUG) + msvcrt.CrtSetReportMode(msvcrt.CRT_WARN, old) + + @unittest.skipUnless(Py_DEBUG, "only avialable under debug build") + def test_CrtSetReportFile(self): + old = msvcrt.CrtSetReportFile(msvcrt.CRT_WARN, sys.stdout.fileno()) + msvcrt.CrtSetReportFile(msvcrt.CRT_WARN, old) + if __name__ == "__main__": unittest.main() From e14193d0ad351b1991f73e78b72a23e6783d8cbc Mon Sep 17 00:00:00 2001 From: AN Long Date: Sun, 27 Oct 2024 19:19:10 +0800 Subject: [PATCH 02/16] Fix typos Co-authored-by: Tomas R. --- Lib/test/test_msvcrt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/test/test_msvcrt.py b/Lib/test/test_msvcrt.py index 88f1949c441ab2..07f5b0e875b689 100644 --- a/Lib/test/test_msvcrt.py +++ b/Lib/test/test_msvcrt.py @@ -122,7 +122,7 @@ def test_SetErrorMode(self): old = msvcrt.SetErrorMode(0) msvcrt.SetErrorMode(old) - @unittest.skipUnless(Py_DEBUG, "only avialable under debug build") + @unittest.skipUnless(Py_DEBUG, "only available under debug build") def test_set_error_mode(self): old = msvcrt.set_error_mode(msvcrt.OUT_TO_STDERR) msvcrt.set_error_mode(old) From f76b823fbfa14be612c24d8401d394a6373733b3 Mon Sep 17 00:00:00 2001 From: AN Long Date: Sun, 27 Oct 2024 19:20:17 +0800 Subject: [PATCH 03/16] Fix another two typos --- Lib/test/test_msvcrt.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_msvcrt.py b/Lib/test/test_msvcrt.py index 07f5b0e875b689..41d90633cc2c78 100644 --- a/Lib/test/test_msvcrt.py +++ b/Lib/test/test_msvcrt.py @@ -127,12 +127,12 @@ def test_set_error_mode(self): old = msvcrt.set_error_mode(msvcrt.OUT_TO_STDERR) msvcrt.set_error_mode(old) - @unittest.skipUnless(Py_DEBUG, "only avialable under debug build") + @unittest.skipUnless(Py_DEBUG, "only available under debug build") def test_CrtSetReportMode(self): old = msvcrt.CrtSetReportMode(msvcrt.CRT_WARN, msvcrt.CRTDBG_MODE_DEBUG) msvcrt.CrtSetReportMode(msvcrt.CRT_WARN, old) - @unittest.skipUnless(Py_DEBUG, "only avialable under debug build") + @unittest.skipUnless(Py_DEBUG, "only available under debug build") def test_CrtSetReportFile(self): old = msvcrt.CrtSetReportFile(msvcrt.CRT_WARN, sys.stdout.fileno()) msvcrt.CrtSetReportFile(msvcrt.CRT_WARN, old) From b0f2acca59e2f8c5c2ced3ea1e418efc71db0ce9 Mon Sep 17 00:00:00 2001 From: AN Long Date: Mon, 28 Oct 2024 14:47:07 +0800 Subject: [PATCH 04/16] Improve test Co-authored-by: sobolevn --- Lib/test/test_msvcrt.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_msvcrt.py b/Lib/test/test_msvcrt.py index 41d90633cc2c78..1b8b57625fa554 100644 --- a/Lib/test/test_msvcrt.py +++ b/Lib/test/test_msvcrt.py @@ -119,8 +119,12 @@ def test_GetErrorMode(self): msvcrt.GetErrorMode() def test_SetErrorMode(self): - old = msvcrt.SetErrorMode(0) - msvcrt.SetErrorMode(old) + old = msvcrt.GetErrorMode() + self.addCleanup(msvcrt.SetErrorMode, old) + + returned = msvcrt.SetErrorMode(0) + self.assertIs(type(returned), int) + self.assertEqual(old, returned) @unittest.skipUnless(Py_DEBUG, "only available under debug build") def test_set_error_mode(self): From a3f154638e73a541f3ecde70ff47603f95831411 Mon Sep 17 00:00:00 2001 From: AN Long Date: Mon, 28 Oct 2024 15:19:04 +0800 Subject: [PATCH 05/16] Improve other tests --- Lib/test/test_msvcrt.py | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/Lib/test/test_msvcrt.py b/Lib/test/test_msvcrt.py index 1b8b57625fa554..11a63d4d73f71b 100644 --- a/Lib/test/test_msvcrt.py +++ b/Lib/test/test_msvcrt.py @@ -128,18 +128,34 @@ def test_SetErrorMode(self): @unittest.skipUnless(Py_DEBUG, "only available under debug build") def test_set_error_mode(self): - old = msvcrt.set_error_mode(msvcrt.OUT_TO_STDERR) - msvcrt.set_error_mode(old) + old = msvcrt.set_error_mode(msvcrt.REPORT_ERRMODE) + self.addCleanup(msvcrt.set_error_mode, old) + + returned = msvcrt.set_error_mode(msvcrt.OUT_TO_STDERR) + self.assertIs(type(returned), int) + self.assertEqual(old, returned) @unittest.skipUnless(Py_DEBUG, "only available under debug build") def test_CrtSetReportMode(self): - old = msvcrt.CrtSetReportMode(msvcrt.CRT_WARN, msvcrt.CRTDBG_MODE_DEBUG) - msvcrt.CrtSetReportMode(msvcrt.CRT_WARN, old) + old = msvcrt.CrtSetReportMode(msvcrt.CRT_WARN, + msvcrt.CRTDBG_REPORT_MODE) + self.addCleanup(msvcrt.CrtSetReportMode, msvcrt.CRT_WARN, old) + + returned = msvcrt.CrtSetReportMode(msvcrt.CRT_WARN, + msvcrt.CRTDBG_MODE_DEBUG) + self.assertIs(type(returned), int) + self.assertEqual(old, returned) @unittest.skipUnless(Py_DEBUG, "only available under debug build") def test_CrtSetReportFile(self): - old = msvcrt.CrtSetReportFile(msvcrt.CRT_WARN, sys.stdout.fileno()) - msvcrt.CrtSetReportFile(msvcrt.CRT_WARN, old) + old = msvcrt.CrtSetReportFile(msvcrt.CRT_WARN, + msvcrt.CRTDBG_REPORT_FILE) + self.addCleanup(msvcrt.CrtSetReportFile, msvcrt.CRT_WARN, old) + + returned = msvcrt.CrtSetReportFile(msvcrt.CRT_WARN, + msvcrt.CRTDBG_FILE_STDOUT) + self.assertIs(type(returned), int) + self.assertEqual(old, returned) if __name__ == "__main__": From 13d43455f2917621eb1496621e6a475de03f950a Mon Sep 17 00:00:00 2001 From: AN Long Date: Mon, 28 Oct 2024 15:35:01 +0800 Subject: [PATCH 06/16] Check the result in some tests --- Lib/test/test_msvcrt.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Lib/test/test_msvcrt.py b/Lib/test/test_msvcrt.py index 11a63d4d73f71b..4e5e71b4f6fa55 100644 --- a/Lib/test/test_msvcrt.py +++ b/Lib/test/test_msvcrt.py @@ -133,6 +133,7 @@ def test_set_error_mode(self): returned = msvcrt.set_error_mode(msvcrt.OUT_TO_STDERR) self.assertIs(type(returned), int) + self.assertNotEqual(returned, -1) self.assertEqual(old, returned) @unittest.skipUnless(Py_DEBUG, "only available under debug build") @@ -144,6 +145,7 @@ def test_CrtSetReportMode(self): returned = msvcrt.CrtSetReportMode(msvcrt.CRT_WARN, msvcrt.CRTDBG_MODE_DEBUG) self.assertIs(type(returned), int) + self.assertNotEqual(returned, -1) self.assertEqual(old, returned) @unittest.skipUnless(Py_DEBUG, "only available under debug build") From c11647c0f10f09b64dfe51eb7ba72458a39e71fb Mon Sep 17 00:00:00 2001 From: AN Long Date: Wed, 16 Jul 2025 22:58:49 +0900 Subject: [PATCH 07/16] Update test_GetErrorCode --- Lib/test/test_msvcrt.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_msvcrt.py b/Lib/test/test_msvcrt.py index 4e5e71b4f6fa55..4660d3e4f01f82 100644 --- a/Lib/test/test_msvcrt.py +++ b/Lib/test/test_msvcrt.py @@ -116,7 +116,9 @@ def test_heap_min(self): pass def test_GetErrorMode(self): - msvcrt.GetErrorMode() + errmode = msvcrt.GetErrorMode() + self.assertIsInstance(errmode, int) + self.assertGreaterEqual(errmode, 0) def test_SetErrorMode(self): old = msvcrt.GetErrorMode() From 54ae00e806ce99eefe2fbdefaec5e9cf4f78f578 Mon Sep 17 00:00:00 2001 From: AN Long Date: Wed, 16 Jul 2025 23:33:11 +0900 Subject: [PATCH 08/16] Improve test_set_error_mode --- Lib/test/test_msvcrt.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_msvcrt.py b/Lib/test/test_msvcrt.py index 4660d3e4f01f82..bf19dd0a4397a5 100644 --- a/Lib/test/test_msvcrt.py +++ b/Lib/test/test_msvcrt.py @@ -136,7 +136,10 @@ def test_set_error_mode(self): returned = msvcrt.set_error_mode(msvcrt.OUT_TO_STDERR) self.assertIs(type(returned), int) self.assertNotEqual(returned, -1) - self.assertEqual(old, returned) + + returned = msvcrt.set_error_mode(msvcrt.REPORT_ERRMODE) + self.assertIs(type(returned), int) + self.assertEqual(returned, msvcrt.OUT_TO_STDERR) @unittest.skipUnless(Py_DEBUG, "only available under debug build") def test_CrtSetReportMode(self): From 90b904af26589fb7cfeb01a7014481e46abfd6c3 Mon Sep 17 00:00:00 2001 From: AN Long Date: Thu, 17 Jul 2025 00:06:37 +0900 Subject: [PATCH 09/16] Update test CrtSetReportXxx --- Lib/test/test_msvcrt.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/Lib/test/test_msvcrt.py b/Lib/test/test_msvcrt.py index bf19dd0a4397a5..2c02cb6799843f 100644 --- a/Lib/test/test_msvcrt.py +++ b/Lib/test/test_msvcrt.py @@ -151,18 +151,30 @@ def test_CrtSetReportMode(self): msvcrt.CRTDBG_MODE_DEBUG) self.assertIs(type(returned), int) self.assertNotEqual(returned, -1) - self.assertEqual(old, returned) + + returned = msvcrt.CrtSetReportMode(msvcrt.CRT_WARN, + msvcrt.CRTDBG_REPORT_MODE) + self.assertIs(type(returned), int) + self.assertEqual(returned, msvcrt.CRTDBG_MODE_DEBUG) @unittest.skipUnless(Py_DEBUG, "only available under debug build") def test_CrtSetReportFile(self): - old = msvcrt.CrtSetReportFile(msvcrt.CRT_WARN, - msvcrt.CRTDBG_REPORT_FILE) - self.addCleanup(msvcrt.CrtSetReportFile, msvcrt.CRT_WARN, old) + # Set the report mode to CRTDBG_REPORT_FILE at first. + old_mode = msvcrt.CrtSetReportMode(msvcrt.CRT_WARN, + msvcrt.CRTDBG_REPORT_MODE) + self.addCleanup(msvcrt.CrtSetReportMode, msvcrt.CRT_WARN, old_mode) + old_file = msvcrt.CrtSetReportFile(msvcrt.CRT_WARN, + msvcrt.CRTDBG_REPORT_FILE) + self.addCleanup(msvcrt.CrtSetReportFile, msvcrt.CRT_WARN, old_file) returned = msvcrt.CrtSetReportFile(msvcrt.CRT_WARN, msvcrt.CRTDBG_FILE_STDOUT) self.assertIs(type(returned), int) - self.assertEqual(old, returned) + + returned = msvcrt.CrtSetReportFile(msvcrt.CRT_WARN, + msvcrt.CRTDBG_REPORT_FILE) + self.assertIs(type(returned), int) + self.assertEqual(returned, msvcrt.get_osfhandle(sys.stdout.fileno())) if __name__ == "__main__": From 79b1e6ed52d21bf37e3aaf25579f76e1fbd54bb8 Mon Sep 17 00:00:00 2001 From: AN Long Date: Thu, 17 Jul 2025 23:41:25 +0900 Subject: [PATCH 10/16] Check if the old is equal to returned in some cases --- Lib/test/test_msvcrt.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Lib/test/test_msvcrt.py b/Lib/test/test_msvcrt.py index 2c02cb6799843f..ed0b6f22494f0d 100644 --- a/Lib/test/test_msvcrt.py +++ b/Lib/test/test_msvcrt.py @@ -136,6 +136,7 @@ def test_set_error_mode(self): returned = msvcrt.set_error_mode(msvcrt.OUT_TO_STDERR) self.assertIs(type(returned), int) self.assertNotEqual(returned, -1) + self.assertEqual(old, returned) returned = msvcrt.set_error_mode(msvcrt.REPORT_ERRMODE) self.assertIs(type(returned), int) @@ -151,6 +152,7 @@ def test_CrtSetReportMode(self): msvcrt.CRTDBG_MODE_DEBUG) self.assertIs(type(returned), int) self.assertNotEqual(returned, -1) + self.assertEqual(old, returned) returned = msvcrt.CrtSetReportMode(msvcrt.CRT_WARN, msvcrt.CRTDBG_REPORT_MODE) @@ -170,6 +172,7 @@ def test_CrtSetReportFile(self): returned = msvcrt.CrtSetReportFile(msvcrt.CRT_WARN, msvcrt.CRTDBG_FILE_STDOUT) self.assertIs(type(returned), int) + self.assertEqual(old_file, returned) returned = msvcrt.CrtSetReportFile(msvcrt.CRT_WARN, msvcrt.CRTDBG_REPORT_FILE) From d70b3ce57c0f794f21971cc0dbff82d568699a1c Mon Sep 17 00:00:00 2001 From: AN Long Date: Thu, 17 Jul 2025 23:43:24 +0900 Subject: [PATCH 11/16] Remove some redundant type check --- Lib/test/test_msvcrt.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/Lib/test/test_msvcrt.py b/Lib/test/test_msvcrt.py index ed0b6f22494f0d..b5771a3503a942 100644 --- a/Lib/test/test_msvcrt.py +++ b/Lib/test/test_msvcrt.py @@ -139,7 +139,6 @@ def test_set_error_mode(self): self.assertEqual(old, returned) returned = msvcrt.set_error_mode(msvcrt.REPORT_ERRMODE) - self.assertIs(type(returned), int) self.assertEqual(returned, msvcrt.OUT_TO_STDERR) @unittest.skipUnless(Py_DEBUG, "only available under debug build") @@ -156,7 +155,6 @@ def test_CrtSetReportMode(self): returned = msvcrt.CrtSetReportMode(msvcrt.CRT_WARN, msvcrt.CRTDBG_REPORT_MODE) - self.assertIs(type(returned), int) self.assertEqual(returned, msvcrt.CRTDBG_MODE_DEBUG) @unittest.skipUnless(Py_DEBUG, "only available under debug build") @@ -176,7 +174,6 @@ def test_CrtSetReportFile(self): returned = msvcrt.CrtSetReportFile(msvcrt.CRT_WARN, msvcrt.CRTDBG_REPORT_FILE) - self.assertIs(type(returned), int) self.assertEqual(returned, msvcrt.get_osfhandle(sys.stdout.fileno())) From c5c40055b54228f6f11195f6cc26d2b03ce24da4 Mon Sep 17 00:00:00 2001 From: AN Long Date: Fri, 18 Jul 2025 00:48:23 +0900 Subject: [PATCH 12/16] Test with extrem values --- Lib/test/test_msvcrt.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Lib/test/test_msvcrt.py b/Lib/test/test_msvcrt.py index b5771a3503a942..6f4637480ef7a0 100644 --- a/Lib/test/test_msvcrt.py +++ b/Lib/test/test_msvcrt.py @@ -2,6 +2,7 @@ import subprocess import sys import unittest +from contextlib import contextmanager from textwrap import dedent from test.support import os_helper, requires_resource, Py_DEBUG @@ -109,6 +110,18 @@ def test_putwch(self): class TestOther(unittest.TestCase): + # We can't suppress the msgbox with invalid input without debug build + @unittest.skipUnless(Py_DEBUG, "only available under debug build") + @contextmanager + def set_crt_dbg_report_to_stderr(self): + mode = msvcrt.CrtSetReportMode(msvcrt.CRT_ASSERT, msvcrt.CRTDBG_MODE_FILE) + file = msvcrt.CrtSetReportFile(msvcrt.CRT_ASSERT, msvcrt.CRTDBG_FILE_STDERR) + try: + yield + finally: + msvcrt.CrtSetReportMode(msvcrt.CRT_ASSERT, mode) + msvcrt.CrtSetReportFile(msvcrt.CRT_ASSERT, file) + def test_heap_min(self): try: msvcrt.heapmin() @@ -128,6 +141,10 @@ def test_SetErrorMode(self): self.assertIs(type(returned), int) self.assertEqual(old, returned) + msvcrt.SetErrorMode(-1) + msvcrt.SetErrorMode(2**32) # max unsigned int + msvcrt.SetErrorMode(-2**31) + @unittest.skipUnless(Py_DEBUG, "only available under debug build") def test_set_error_mode(self): old = msvcrt.set_error_mode(msvcrt.REPORT_ERRMODE) @@ -141,6 +158,11 @@ def test_set_error_mode(self): returned = msvcrt.set_error_mode(msvcrt.REPORT_ERRMODE) self.assertEqual(returned, msvcrt.OUT_TO_STDERR) + with self.set_crt_dbg_report_to_stderr(): + self.assertEqual(msvcrt.set_error_mode(-1), -1) + self.assertEqual(msvcrt.set_error_mode(2**31-1), -1) + self.assertEqual(msvcrt.set_error_mode(-2**31), -1) + @unittest.skipUnless(Py_DEBUG, "only available under debug build") def test_CrtSetReportMode(self): old = msvcrt.CrtSetReportMode(msvcrt.CRT_WARN, @@ -157,6 +179,10 @@ def test_CrtSetReportMode(self): msvcrt.CRTDBG_REPORT_MODE) self.assertEqual(returned, msvcrt.CRTDBG_MODE_DEBUG) + self.assertRaises(OSError, msvcrt.CrtSetReportMode, -1, -1) + self.assertRaises(OSError, msvcrt.CrtSetReportMode, 2**31-1, 2**31-1) + self.assertRaises(OSError, msvcrt.CrtSetReportMode, -2**31, -2**31) + @unittest.skipUnless(Py_DEBUG, "only available under debug build") def test_CrtSetReportFile(self): # Set the report mode to CRTDBG_REPORT_FILE at first. @@ -176,6 +202,10 @@ def test_CrtSetReportFile(self): msvcrt.CRTDBG_REPORT_FILE) self.assertEqual(returned, msvcrt.get_osfhandle(sys.stdout.fileno())) + msvcrt.CrtSetReportFile(-1, -1) + msvcrt.CrtSetReportFile(2**31-1, 2**31-1) + msvcrt.CrtSetReportFile(-2**31, -2**31) + if __name__ == "__main__": unittest.main() From 62a83898f53d1f932b3121b564be839988248c69 Mon Sep 17 00:00:00 2001 From: AN Long Date: Fri, 18 Jul 2025 01:12:15 +0900 Subject: [PATCH 13/16] Fix test --- Lib/test/test_msvcrt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/test/test_msvcrt.py b/Lib/test/test_msvcrt.py index 6f4637480ef7a0..9d233a640eb1c4 100644 --- a/Lib/test/test_msvcrt.py +++ b/Lib/test/test_msvcrt.py @@ -142,7 +142,7 @@ def test_SetErrorMode(self): self.assertEqual(old, returned) msvcrt.SetErrorMode(-1) - msvcrt.SetErrorMode(2**32) # max unsigned int + msvcrt.SetErrorMode(2**32-1) # max unsigned int msvcrt.SetErrorMode(-2**31) @unittest.skipUnless(Py_DEBUG, "only available under debug build") From 2d794f31967dba3a064066c80ee107d425728efb Mon Sep 17 00:00:00 2001 From: AN Long Date: Fri, 18 Jul 2025 01:28:04 +0900 Subject: [PATCH 14/16] Fix test_GetErrorMode --- Lib/test/test_msvcrt.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Lib/test/test_msvcrt.py b/Lib/test/test_msvcrt.py index 9d233a640eb1c4..793039650a076a 100644 --- a/Lib/test/test_msvcrt.py +++ b/Lib/test/test_msvcrt.py @@ -137,9 +137,9 @@ def test_SetErrorMode(self): old = msvcrt.GetErrorMode() self.addCleanup(msvcrt.SetErrorMode, old) - returned = msvcrt.SetErrorMode(0) - self.assertIs(type(returned), int) - self.assertEqual(old, returned) + returned = msvcrt.SetErrorMode(msvcrt.SEM_NOOPENFILEERRORBOX) + self.assertEqual(returned, old) + self.assertTrue(msvcrt.GetErrorMode() & msvcrt.SEM_NOOPENFILEERRORBOX) msvcrt.SetErrorMode(-1) msvcrt.SetErrorMode(2**32-1) # max unsigned int From 2fbd2e865f9d1e48d331eb7c05fd1445f51fb7c4 Mon Sep 17 00:00:00 2001 From: AN Long Date: Fri, 18 Jul 2025 01:51:18 +0900 Subject: [PATCH 15/16] Fix test_SetErrorMode --- Lib/test/test_msvcrt.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_msvcrt.py b/Lib/test/test_msvcrt.py index 793039650a076a..98c1d5134314eb 100644 --- a/Lib/test/test_msvcrt.py +++ b/Lib/test/test_msvcrt.py @@ -134,8 +134,17 @@ def test_GetErrorMode(self): self.assertGreaterEqual(errmode, 0) def test_SetErrorMode(self): + origin = msvcrt.GetErrorMode() + def cleanup(): + msvcrt.SetErrorMode(0) + for v in (msvcrt.SEM_FAILCRITICALERRORS, msvcrt.SEM_NOGPFAULTERRORBOX, + msvcrt.SEM_NOALIGNMENTFAULTEXCEPT, msvcrt.SEM_NOOPENFILEERRORBOX): + if origin & v: + msvcrt.SetErrorMode(v) + self.addCleanup(cleanup) + + msvcrt.SetErrorMode(0) old = msvcrt.GetErrorMode() - self.addCleanup(msvcrt.SetErrorMode, old) returned = msvcrt.SetErrorMode(msvcrt.SEM_NOOPENFILEERRORBOX) self.assertEqual(returned, old) From c3726e1e833d27003f32a2342eae3312b266c74c Mon Sep 17 00:00:00 2001 From: AN Long Date: Fri, 18 Jul 2025 20:49:05 +0900 Subject: [PATCH 16/16] Fix test_SetErrorMode --- Lib/test/test_msvcrt.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Lib/test/test_msvcrt.py b/Lib/test/test_msvcrt.py index 98c1d5134314eb..470139936b367b 100644 --- a/Lib/test/test_msvcrt.py +++ b/Lib/test/test_msvcrt.py @@ -137,10 +137,7 @@ def test_SetErrorMode(self): origin = msvcrt.GetErrorMode() def cleanup(): msvcrt.SetErrorMode(0) - for v in (msvcrt.SEM_FAILCRITICALERRORS, msvcrt.SEM_NOGPFAULTERRORBOX, - msvcrt.SEM_NOALIGNMENTFAULTEXCEPT, msvcrt.SEM_NOOPENFILEERRORBOX): - if origin & v: - msvcrt.SetErrorMode(v) + msvcrt.SetErrorMode(origin) self.addCleanup(cleanup) msvcrt.SetErrorMode(0) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy