◐ Shell
clean mode source ↗

Message 376543 - Python tracker

After splitting the two reads onto two lines, the indefinite hang happens in the second one, stdin.readall.  

    def test_ctrl_z(self):
        with open('CONIN$', 'rb', buffering=0) as stdin:
            source = '\xC4\x1A\r\n'.encode('utf-16-le')
            expected = '\xC4'.encode('utf-8')
            print('here')
            write_input(stdin, source)
            a = stdin.read(1)
##            b = stdin.readall()
            self.assertEqual(expected[0:1], a)
##            self.assertEqual(expected[1:], b)

The resulting failure of the first assertion results in:
FAIL: test_ctrl_z (__main__.WindowsConsoleIOTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "F:\dev\3x\lib\test\test_winconsoleio.py", line 197, in test_ctrl_z
    self.assertEqual(expected[0:1], a)
AssertionError: b'\xc3' != b'\r'

This minimal change would stop the hang crash, which is the first priority.  However, changing the repeat from 10 to 1, to look like

        prec->Event.KeyEvent.wRepeatCount = 1;


fixes all failures, including the hang.  I will submit for CI testing.
But two questions.

Is this line needed with a repeat of 1, or should it be removed?

Also, this file has a section added by arg clinic.  Does it need to be regenerated for this change?  If so, how?