Bug#986727: pexpect: flaky autopkgtest
Source: pexpect
Version: 4.8.0-1
Severity: serious
X-Debbugs-CC: debian-ci@lists.debian.org
User: debian-ci@lists.debian.org
Usertags: flaky
Hi Maintainer
The autopkgtests of pexpect fail regularly and are therefore
unsuitable for regression testing. I've copied below what I hope is
the relevant part of the log.
There's a comment from upstream regarding this particular failing
test, and it is skipped when running on TRAVIS. Perhaps this test
should be skipped unconditionally in Debian?
Regards
Graham
[1] https://ci.debian.net/packages/p/pexpect/testing/amd64/
=================================== FAILURES ===================================
_________________ InteractTestCase.test_interact_exit_unicode __________________
self = <tests.test_interact.InteractTestCase
testMethod=test_interact_exit_unicode>
def test_interact_exit_unicode(self):
" Ensure subprocess receives utf8. "
p = pexpect.spawnu('{self.interact_py} --utf8'.format(self=self),
timeout=5, env=self.env)
p.expect('READY')
p.send('ɑ') # >>> map(ord, u'ɑ'.encode('utf8'))
p.expect('201<STOP>') # [201, 145]
p.expect('145<STOP>')
p.send('Β') # >>> map(ord, u'Β'.encode('utf8'))
p.expect('206<STOP>') # [206, 146]
p.expect('146<STOP>')
p.send('\x00')
if not os.environ.get('TRAVIS', None):
# on Travis-CI, we sometimes miss trailing stdout from the
# chain of child processes, not entirely sure why. So this
# is skipped on such systems.
> p.expect('0<STOP>')
tests/test_interact.py:91:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pexpect/spawnbase.py:343: in expect
return self.expect_list(compiled_pattern_list,
pexpect/spawnbase.py:372: in expect_list
return exp.expect_loop(timeout)
pexpect/expect.py:179: in expect_loop
return self.eof(e)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pexpect.expect.Expecter object at 0x7f0b5cf03eb0>
err = EOF('End Of File (EOF). Exception style platform.')
def eof(self, err=None):
spawn = self.spawn
spawn.before = spawn._before.getvalue()
spawn._buffer = spawn.buffer_type()
spawn._before = spawn.buffer_type()
spawn.after = EOF
index = self.searcher.eof_index
if index >= 0:
spawn.match = EOF
spawn.match_index = index
return index
else:
spawn.match = None
spawn.match_index = None
msg = str(spawn)
msg += '\nsearcher: %s' % self.searcher
if err is not None:
msg = str(err) + '\n' + msg
exc = EOF(msg)
exc.__cause__ = None # in Python 3.x we can use "raise exc
from None"
> raise exc
E pexpect.exceptions.EOF: End Of File (EOF). Exception style platform.
E <pexpect.pty_spawn.spawn object at 0x7f0b5cf03820>
E command: /usr/bin/python3
E args: [b'/usr/bin/python3', b'interact.py', b'--utf8']
E buffer (last 100 chars): ''
E before (last 100 chars): '\r\nEscaped interact\r\n'
E after: <class 'pexpect.exceptions.EOF'>
E match: None
E match_index: None
E exitstatus: None
E flag_eof: True
E pid: 1345
E child_fd: 18
E closed: False
E timeout: 5
E delimiter: <class 'pexpect.exceptions.EOF'>
E logfile: None
E logfile_read: None
E logfile_send: None
E maxread: 2000
E ignorecase: False
E searchwindowsize: None
E delaybeforesend: 0.05
E delayafterclose: 0.1
E delayafterterminate: 0.1
E searcher: searcher_re:
E 0: re.compile('0<STOP>')
pexpect/expect.py:122: EOF
----------------------------- Captured stdout call -----------------------------
Reply to: