diff options
| author | Zachary Turner <zturner@google.com> | 2015-10-28 17:43:26 +0000 |
|---|---|---|
| committer | Zachary Turner <zturner@google.com> | 2015-10-28 17:43:26 +0000 |
| commit | c432c8f856e0bd84de980a9d9bb2d31b06fa95b1 (patch) | |
| tree | 4efa528e074a6e2df782345e4cd97f5d85d038c4 /lldb/packages/Python/lldbsuite/test/warnings/uuid/TestAddDsymCommand.py | |
| parent | a8a3bd210086b50242903ed95048fe5e53897878 (diff) | |
| download | bcm5719-llvm-c432c8f856e0bd84de980a9d9bb2d31b06fa95b1.tar.gz bcm5719-llvm-c432c8f856e0bd84de980a9d9bb2d31b06fa95b1.zip | |
Move lldb/test to lldb/packages/Python/lldbsuite/test.
This is the conclusion of an effort to get LLDB's Python code
structured into a bona-fide Python package. This has a number
of benefits, but most notably the ability to more easily share
Python code between different but related pieces of LLDB's Python
infrastructure (for example, `scripts` can now share code with
`test`).
llvm-svn: 251532
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/warnings/uuid/TestAddDsymCommand.py')
| -rw-r--r-- | lldb/packages/Python/lldbsuite/test/warnings/uuid/TestAddDsymCommand.py | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/warnings/uuid/TestAddDsymCommand.py b/lldb/packages/Python/lldbsuite/test/warnings/uuid/TestAddDsymCommand.py new file mode 100644 index 00000000000..8e5d31a7226 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/warnings/uuid/TestAddDsymCommand.py @@ -0,0 +1,107 @@ +"""Test that the 'add-dsym', aka 'target symbols add', command informs the user about success or failure.""" + +from __future__ import print_function + +import use_lldb_suite + +import os, time +import lldb +from lldbtest import * + +@skipUnlessDarwin +class AddDsymCommandCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + def setUp(self): + TestBase.setUp(self) + self.template = 'main.cpp.template' + self.source = 'main.cpp' + self.teardown_hook_added = False + + @no_debug_info_test + def test_add_dsym_command_with_error(self): + """Test that the 'add-dsym' command informs the user about failures.""" + + # Call the program generator to produce main.cpp, version 1. + self.generate_main_cpp(version=1) + self.buildDsym(clean=True) + + # Insert some delay and then call the program generator to produce main.cpp, version 2. + time.sleep(5) + self.generate_main_cpp(version=101) + # Now call make again, but this time don't generate the dSYM. + self.buildDwarf(clean=False) + + self.exe_name = 'a.out' + self.do_add_dsym_with_error(self.exe_name) + + @no_debug_info_test + def test_add_dsym_command_with_success(self): + """Test that the 'add-dsym' command informs the user about success.""" + + # Call the program generator to produce main.cpp, version 1. + self.generate_main_cpp(version=1) + self.buildDsym(clean=True) + + self.exe_name = 'a.out' + self.do_add_dsym_with_success(self.exe_name) + + @no_debug_info_test + def test_add_dsym_with_dSYM_bundle(self): + """Test that the 'add-dsym' command informs the user about success.""" + + # Call the program generator to produce main.cpp, version 1. + self.generate_main_cpp(version=1) + self.buildDsym(clean=True) + + self.exe_name = 'a.out' + self.do_add_dsym_with_dSYM_bundle(self.exe_name) + + + def generate_main_cpp(self, version=0): + """Generate main.cpp from main.cpp.template.""" + temp = os.path.join(os.getcwd(), self.template) + with open(temp, 'r') as f: + content = f.read() + + new_content = content.replace('%ADD_EXTRA_CODE%', + 'printf("This is version %d\\n");' % version) + src = os.path.join(os.getcwd(), self.source) + with open(src, 'w') as f: + f.write(new_content) + + # The main.cpp has been generated, add a teardown hook to remove it. + if not self.teardown_hook_added: + self.addTearDownHook(lambda: os.remove(src)) + self.teardown_hook_added = True + + def do_add_dsym_with_error(self, exe_name): + """Test that the 'add-dsym' command informs the user about failures.""" + self.runCmd("file " + exe_name, CURRENT_EXECUTABLE_SET) + + wrong_path = os.path.join("%s.dSYM" % exe_name, "Contents") + self.expect("add-dsym " + wrong_path, error=True, + substrs = ['invalid module path']) + + right_path = os.path.join("%s.dSYM" % exe_name, "Contents", "Resources", "DWARF", exe_name) + self.expect("add-dsym " + right_path, error=True, + substrs = ['symbol file', 'does not match']) + + def do_add_dsym_with_success(self, exe_name): + """Test that the 'add-dsym' command informs the user about success.""" + self.runCmd("file " + exe_name, CURRENT_EXECUTABLE_SET) + + # This time, the UUID should match and we expect some feedback from lldb. + right_path = os.path.join("%s.dSYM" % exe_name, "Contents", "Resources", "DWARF", exe_name) + self.expect("add-dsym " + right_path, + substrs = ['symbol file', 'has been added to']) + + def do_add_dsym_with_dSYM_bundle(self, exe_name): + """Test that the 'add-dsym' command informs the user about success when loading files in bundles.""" + self.runCmd("file " + exe_name, CURRENT_EXECUTABLE_SET) + + # This time, the UUID should be found inside the bundle + right_path = "%s.dSYM" % exe_name + self.expect("add-dsym " + right_path, + substrs = ['symbol file', 'has been added to']) |

