Add a test case to exercise 'target variable' command before and after running the inferior.

Currently it fails after the inferior is run.

rdar://problem/9763907

llvm-svn: 135009
This commit is contained in:
Johnny Chen 2011-07-12 23:18:03 +00:00
parent 10bc1e5452
commit af6e82f611
2 changed files with 55 additions and 4 deletions

View File

@ -1,5 +1,5 @@
"""
Test some target commands: create, list, select.
Test some target commands: create, list, select, variable.
"""
import unittest2
@ -21,19 +21,31 @@ class targetCommandTestCase(TestBase):
def test_target_command_with_dwarf(self):
"""Test some target commands: create, list, select."""
da = {'C_SOURCES': 'a.c', 'EXE': 'a.out'}
self.buildDefault(dictionary=da)
self.buildDwarf(dictionary=da)
self.addTearDownCleanup(dictionary=da)
db = {'C_SOURCES': 'b.c', 'EXE': 'b.out'}
self.buildDefault(dictionary=db)
self.buildDwarf(dictionary=db)
self.addTearDownCleanup(dictionary=db)
dc = {'C_SOURCES': 'c.c', 'EXE': 'c.out'}
self.buildDefault(dictionary=dc)
self.buildDwarf(dictionary=dc)
self.addTearDownCleanup(dictionary=dc)
self.do_target_command()
# rdar://problem/9763907
# 'target variable' command fails if the target program has been run
#@unittest2.expectedFailure
@unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
def test_target_variable_command_with_dsym(self):
"""Test 'target variable' command before and after starting the inferior."""
d = {'C_SOURCES': 'globals.c', 'EXE': 'globals'}
self.buildDsym(dictionary=d)
self.addTearDownCleanup(dictionary=d)
self.do_target_variable_command('globals')
def do_target_command(self):
"""Exercise 'target create', 'target list', 'target select' commands."""
exe_a = os.path.join(os.getcwd(), "a.out")
@ -87,6 +99,24 @@ class targetCommandTestCase(TestBase):
self.runCmd("target list")
def do_target_variable_command(self, exe_name):
"""Exercise 'target variable' command before and after starting the inferior."""
self.runCmd("file " + exe_name, CURRENT_EXECUTABLE_SET)
self.expect("target variable my_global_char", VARIABLES_DISPLAYED_CORRECTLY,
substrs = ["my_global_char", "'X'"])
self.expect("target variable my_global_str", VARIABLES_DISPLAYED_CORRECTLY,
substrs = ['my_global_str', '"abc"'])
self.runCmd("run")
# rdar://problem/9763907
# 'target variable' command fails if the target program has been run
self.expect("target variable my_global_char", VARIABLES_DISPLAYED_CORRECTLY,
substrs = ["my_global_char", "'X'"])
self.expect("target variable my_global_str", VARIABLES_DISPLAYED_CORRECTLY,
substrs = ['my_global_str', '"abc"'])
if __name__ == '__main__':
import atexit

View File

@ -0,0 +1,21 @@
//===-- main.c --------------------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include <stdio.h>
char my_global_char = 'X';
const char* my_global_str = "abc";
int main (int argc, char const *argv[])
{
printf("global char: %c\n", my_global_char);
printf("global str: %s\n", my_global_str);
return 0;
}