Resubmit the fixes for TestProcessLaunch.py.

I was calling the base class tearDown() function the wrong way
which for some reason is ok on Python 3 but not on Python 2.

llvm-svn: 257788
This commit is contained in:
Zachary Turner 2016-01-14 19:14:02 +00:00
parent 1dd319f3b6
commit 1d89df0998
2 changed files with 27 additions and 22 deletions

View File

@ -4,12 +4,15 @@ Test lldb process launch flags.
from __future__ import print_function
import copy
import os
import time
import os, time
import lldb
from lldbsuite.test.lldbtest import *
import six
class ProcessLaunchTestCase(TestBase):
mydir = TestBase.compute_mydir(__file__)
@ -17,9 +20,11 @@ class ProcessLaunchTestCase(TestBase):
def setUp(self):
# Call super's setUp().
TestBase.setUp(self)
# disable "There is a running process, kill it and restart?" prompt
self.runCmd("settings set auto-confirm true")
self.addTearDownHook(lambda: self.runCmd("settings clear auto-confirm"))
def tearDown(self):
self.runCmd("settings clear auto-confirm")
TestBase.tearDown(self)
@not_remote_testsuite_ready
def test_io (self):
@ -180,8 +185,9 @@ class ProcessLaunchTestCase(TestBase):
self.fail(err_msg)
def test_environment_with_special_char (self):
"""Test that environment variables containing '*' and '}' are communicated correctly to the lldb-server."""
d = {'CXX_SOURCES' : 'print_env.cpp'}
"""Test that environment variables containing '*' and '}' are handled correctly by the inferior."""
source = 'print_env.cpp'
d = {'CXX_SOURCES' : source}
self.build(dictionary=d)
self.setTearDownCleanup(d)
exe = os.path.join (os.getcwd(), "a.out")
@ -189,19 +195,19 @@ class ProcessLaunchTestCase(TestBase):
evil_var = 'INIT*MIDDLE}TAIL'
target = self.dbg.CreateTarget(exe)
main_source_spec = lldb.SBFileSpec(source)
breakpoint = target.BreakpointCreateBySourceRegex('// Set breakpoint here.', main_source_spec)
process = target.LaunchSimple(None, ['EVIL=' + evil_var], self.get_process_working_directory())
self.assertEqual(process.GetState(), lldb.eStateStopped, PROCESS_STOPPED)
threads = lldbutil.get_threads_stopped_at_breakpoint(process, breakpoint)
self.assertEqual(len(threads), 1)
frame = threads[0].GetFrameAtIndex(0)
sbvalue = frame.EvaluateExpression("evil")
value = sbvalue.GetSummary().strip('"')
self.assertEqual(value, evil_var)
process.Continue()
self.assertEqual(process.GetState(), lldb.eStateExited, PROCESS_EXITED)
out = process.GetSTDOUT(len(evil_var))
self.assertIsNotNone(out, "Encountered an error reading the process's output")
out = out[:len(evil_var)]
if out != evil_var:
self.fail('The environment variable was mis-coded: %s\n' % repr(out))
newline = process.GetSTDOUT(1)
self.assertIsNotNone(newline, "Encountered an error reading the process's output")
newline = newline[0]
if newline != '\r' and newline != '\n':
self.fail('Garbage at end of environment variable')
pass

View File

@ -5,7 +5,6 @@
int main (int argc, char **argv)
{
char *evil = getenv("EVIL");
puts(evil);
return 0;
return 0; // Set breakpoint here.
}