forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			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):
 | 
						|
            pass
 | 
						|
 | 
						|
        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
 |