diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2016-01-06 20:12:03 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2016-01-06 20:12:03 +0000 | 
| commit | 9e6d35490a6542f9c97607f93c2ef8ca8e03cbcc (patch) | |
| tree | dd2a1ddf0476664c2b823409c36cbccd52662ca7 /packages/Python/lldbsuite/test/warnings/uuid/TestAddDsymCommand.py | |
| parent | 3bd2e91faeb9eeec1aae82c64a3253afff551cfd (diff) | |
Notes
Diffstat (limited to 'packages/Python/lldbsuite/test/warnings/uuid/TestAddDsymCommand.py')
| -rw-r--r-- | packages/Python/lldbsuite/test/warnings/uuid/TestAddDsymCommand.py | 107 | 
1 files changed, 107 insertions, 0 deletions
| diff --git a/packages/Python/lldbsuite/test/warnings/uuid/TestAddDsymCommand.py b/packages/Python/lldbsuite/test/warnings/uuid/TestAddDsymCommand.py new file mode 100644 index 000000000000..002a7aef0c76 --- /dev/null +++ b/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 os, time +import lldb +from lldbsuite.test.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']) | 
