
There is a .categories file in the python_api directory that makes all nested tests belong to the category "pyapi". The decorator is unnecessary for these tests.
76 lines
2.5 KiB
Python
76 lines
2.5 KiB
Python
"""Test the RunCommandInterpreter API."""
|
|
|
|
import os
|
|
import lldb
|
|
from lldbsuite.test.decorators import *
|
|
from lldbsuite.test.lldbtest import *
|
|
|
|
class CommandRunInterpreterLegacyAPICase(TestBase):
|
|
|
|
NO_DEBUG_INFO_TESTCASE = True
|
|
mydir = TestBase.compute_mydir(__file__)
|
|
|
|
@skipIfReproducer # lldb::FileSP used in typemap cannot be instrumented.
|
|
def setUp(self):
|
|
TestBase.setUp(self)
|
|
|
|
self.stdin_path = self.getBuildArtifact("stdin.txt")
|
|
|
|
with open(self.stdin_path, 'w') as input_handle:
|
|
input_handle.write("nonexistingcommand\nquit")
|
|
|
|
# Python will close the file descriptor if all references
|
|
# to the filehandle object lapse, so we need to keep one
|
|
# around.
|
|
self.filehandle = open(self.stdin_path, 'r')
|
|
self.dbg.SetInputFileHandle(self.filehandle, False)
|
|
|
|
# No need to track the output
|
|
self.devnull = open(os.devnull, 'w')
|
|
self.dbg.SetOutputFileHandle(self.devnull, False)
|
|
self.dbg.SetErrorFileHandle (self.devnull, False)
|
|
|
|
def test_run_session_with_error_and_quit_legacy(self):
|
|
"""Run non-existing and quit command returns appropriate values"""
|
|
|
|
n_errors, quit_requested, has_crashed = self.dbg.RunCommandInterpreter(
|
|
True, False, lldb.SBCommandInterpreterRunOptions(), 0, False,
|
|
False)
|
|
|
|
self.assertGreater(n_errors, 0)
|
|
self.assertTrue(quit_requested)
|
|
self.assertFalse(has_crashed)
|
|
|
|
|
|
class CommandRunInterpreterAPICase(TestBase):
|
|
|
|
NO_DEBUG_INFO_TESTCASE = True
|
|
mydir = TestBase.compute_mydir(__file__)
|
|
|
|
@skipIfReproducer # lldb::FileSP used in typemap cannot be instrumented.
|
|
def setUp(self):
|
|
TestBase.setUp(self)
|
|
|
|
self.stdin_path = self.getBuildArtifact("stdin.txt")
|
|
|
|
with open(self.stdin_path, 'w') as input_handle:
|
|
input_handle.write("nonexistingcommand\nquit")
|
|
|
|
self.dbg.SetInputFile(open(self.stdin_path, 'r'))
|
|
|
|
# No need to track the output
|
|
devnull = open(os.devnull, 'w')
|
|
self.dbg.SetOutputFile(devnull)
|
|
self.dbg.SetErrorFile(devnull)
|
|
|
|
def test_run_session_with_error_and_quit(self):
|
|
"""Run non-existing and quit command returns appropriate values"""
|
|
|
|
n_errors, quit_requested, has_crashed = self.dbg.RunCommandInterpreter(
|
|
True, False, lldb.SBCommandInterpreterRunOptions(), 0, False,
|
|
False)
|
|
|
|
self.assertGreater(n_errors, 0)
|
|
self.assertTrue(quit_requested)
|
|
self.assertFalse(has_crashed)
|