mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-04-08 16:44:06 +00:00

I'm not sure why this surfaced at this particular point, but TestCommandScriptImmediateOutput (a pexpect test) had a synchronization issue, where the (lldb) promts it was expecting were getting out of sync. This happened for two reasons: - it did not expect the initial (lldb) prompt we print at startup - launchArgs() returned None, which resulted in an extra "target create None" command being issued to lldb (and an extra unhandled prompt being printed). Resolving these two issues seems to fix (or at least, improve) the test. llvm-svn: 357459
96 lines
2.7 KiB
Python
96 lines
2.7 KiB
Python
from __future__ import print_function
|
|
from __future__ import absolute_import
|
|
|
|
# System modules
|
|
import os
|
|
import sys
|
|
|
|
# Third-party modules
|
|
import six
|
|
|
|
# LLDB Modules
|
|
import lldb
|
|
from .lldbtest import *
|
|
from . import lldbutil
|
|
|
|
if sys.platform.startswith('win32'):
|
|
class PExpectTest(TestBase):
|
|
pass
|
|
else:
|
|
import pexpect
|
|
|
|
class PExpectTest(TestBase):
|
|
|
|
mydir = TestBase.compute_mydir(__file__)
|
|
|
|
def setUp(self):
|
|
TestBase.setUp(self)
|
|
|
|
def launchArgs(self):
|
|
return ""
|
|
|
|
def launch(self, timeout=None):
|
|
if timeout is None:
|
|
timeout = 30
|
|
logfile = sys.stdout if self.TraceOn() else None
|
|
self.child = pexpect.spawn(
|
|
'%s --no-use-colors %s' %
|
|
(lldbtest_config.lldbExec, self.launchArgs()), logfile=logfile)
|
|
self.child.timeout = timeout
|
|
self.timeout = timeout
|
|
|
|
def expect(self, patterns=None, timeout=None, exact=None):
|
|
if patterns is None:
|
|
return None
|
|
if timeout is None:
|
|
timeout = self.timeout
|
|
if exact is None:
|
|
exact = False
|
|
if exact:
|
|
return self.child.expect_exact(patterns, timeout=timeout)
|
|
else:
|
|
return self.child.expect(patterns, timeout=timeout)
|
|
|
|
def expectall(self, patterns=None, timeout=None, exact=None):
|
|
if patterns is None:
|
|
return None
|
|
if timeout is None:
|
|
timeout = self.timeout
|
|
if exact is None:
|
|
exact = False
|
|
for pattern in patterns:
|
|
self.expect(pattern, timeout=timeout, exact=exact)
|
|
|
|
def sendimpl(
|
|
self,
|
|
sender,
|
|
command,
|
|
patterns=None,
|
|
timeout=None,
|
|
exact=None):
|
|
sender(command)
|
|
return self.expect(patterns=patterns, timeout=timeout, exact=exact)
|
|
|
|
def send(self, command, patterns=None, timeout=None, exact=None):
|
|
return self.sendimpl(
|
|
self.child.send,
|
|
command,
|
|
patterns,
|
|
timeout,
|
|
exact)
|
|
|
|
def sendline(self, command, patterns=None, timeout=None, exact=None):
|
|
return self.sendimpl(
|
|
self.child.sendline,
|
|
command,
|
|
patterns,
|
|
timeout,
|
|
exact)
|
|
|
|
def quit(self, gracefully=None):
|
|
if gracefully is None:
|
|
gracefully = True
|
|
self.child.sendeof()
|
|
self.child.close(force=not gracefully)
|
|
self.child = None
|