mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	 d432fa43b9
			
		
	
	
		d432fa43b9
		
			
		
	
	
	
	
		
			
			Fix typos (#123775)
(cherry picked from commit 9017b95ff2)
Co-authored-by: algonell <algonell@gmail.com>
		
	
			
		
			
				
	
	
		
			120 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os
 | |
| import subprocess
 | |
| import sys
 | |
| import unittest
 | |
| from textwrap import dedent
 | |
| 
 | |
| from test.support import os_helper, requires_resource
 | |
| from test.support.os_helper import TESTFN, TESTFN_ASCII
 | |
| 
 | |
| if sys.platform != "win32":
 | |
|     raise unittest.SkipTest("windows related tests")
 | |
| 
 | |
| import _winapi
 | |
| import msvcrt
 | |
| 
 | |
| 
 | |
| class TestFileOperations(unittest.TestCase):
 | |
|     def test_locking(self):
 | |
|         with open(TESTFN, "w") as f:
 | |
|             self.addCleanup(os_helper.unlink, TESTFN)
 | |
| 
 | |
|             msvcrt.locking(f.fileno(), msvcrt.LK_LOCK, 1)
 | |
|             self.assertRaises(OSError, msvcrt.locking, f.fileno(), msvcrt.LK_NBLCK, 1)
 | |
| 
 | |
|     def test_unlockfile(self):
 | |
|         with open(TESTFN, "w") as f:
 | |
|             self.addCleanup(os_helper.unlink, TESTFN)
 | |
| 
 | |
|             msvcrt.locking(f.fileno(), msvcrt.LK_LOCK, 1)
 | |
|             msvcrt.locking(f.fileno(), msvcrt.LK_UNLCK, 1)
 | |
|             msvcrt.locking(f.fileno(), msvcrt.LK_LOCK, 1)
 | |
| 
 | |
|     def test_setmode(self):
 | |
|         with open(TESTFN, "w") as f:
 | |
|             self.addCleanup(os_helper.unlink, TESTFN)
 | |
| 
 | |
|             msvcrt.setmode(f.fileno(), os.O_BINARY)
 | |
|             msvcrt.setmode(f.fileno(), os.O_TEXT)
 | |
| 
 | |
|     def test_open_osfhandle(self):
 | |
|         h = _winapi.CreateFile(TESTFN_ASCII, _winapi.GENERIC_WRITE, 0, 0, 1, 128, 0)
 | |
|         self.addCleanup(os_helper.unlink, TESTFN_ASCII)
 | |
| 
 | |
|         try:
 | |
|             fd = msvcrt.open_osfhandle(h, os.O_RDONLY)
 | |
|             h = None
 | |
|             os.close(fd)
 | |
|         finally:
 | |
|             if h:
 | |
|                 _winapi.CloseHandle(h)
 | |
| 
 | |
|     def test_get_osfhandle(self):
 | |
|         with open(TESTFN, "w") as f:
 | |
|             self.addCleanup(os_helper.unlink, TESTFN)
 | |
| 
 | |
|             msvcrt.get_osfhandle(f.fileno())
 | |
| 
 | |
| 
 | |
| c = '\u5b57'  # unicode CJK char (meaning 'character') for 'wide-char' tests
 | |
| c_encoded = b'\x57\x5b' # utf-16-le (which windows internally used) encoded char for this CJK char
 | |
| 
 | |
| 
 | |
| class TestConsoleIO(unittest.TestCase):
 | |
|     # CREATE_NEW_CONSOLE creates a "popup" window.
 | |
|     @requires_resource('gui')
 | |
|     def run_in_separated_process(self, code):
 | |
|         # Run test in a separated process to avoid stdin conflicts.
 | |
|         # See: gh-110147
 | |
|         cmd = [sys.executable, '-c', code]
 | |
|         subprocess.run(cmd, check=True, capture_output=True,
 | |
|                        creationflags=subprocess.CREATE_NEW_CONSOLE)
 | |
| 
 | |
|     def test_kbhit(self):
 | |
|         code = dedent('''
 | |
|             import msvcrt
 | |
|             assert msvcrt.kbhit() == 0
 | |
|         ''')
 | |
|         self.run_in_separated_process(code)
 | |
| 
 | |
|     def test_getch(self):
 | |
|         msvcrt.ungetch(b'c')
 | |
|         self.assertEqual(msvcrt.getch(), b'c')
 | |
| 
 | |
|     def check_getwch(self, funcname):
 | |
|         code = dedent(f'''
 | |
|             import msvcrt
 | |
|             from _testconsole import write_input
 | |
|             with open("CONIN$", "rb", buffering=0) as stdin:
 | |
|                 write_input(stdin, {ascii(c_encoded)})
 | |
|                 assert msvcrt.{funcname}() == "{c}"
 | |
|         ''')
 | |
|         self.run_in_separated_process(code)
 | |
| 
 | |
|     def test_getwch(self):
 | |
|         self.check_getwch('getwch')
 | |
| 
 | |
|     def test_getche(self):
 | |
|         msvcrt.ungetch(b'c')
 | |
|         self.assertEqual(msvcrt.getche(), b'c')
 | |
| 
 | |
|     def test_getwche(self):
 | |
|         self.check_getwch('getwche')
 | |
| 
 | |
|     def test_putch(self):
 | |
|         msvcrt.putch(b'c')
 | |
| 
 | |
|     def test_putwch(self):
 | |
|         msvcrt.putwch(c)
 | |
| 
 | |
| 
 | |
| class TestOther(unittest.TestCase):
 | |
|     def test_heap_min(self):
 | |
|         try:
 | |
|             msvcrt.heapmin()
 | |
|         except OSError:
 | |
|             pass
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     unittest.main()
 |