diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:50:09 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:50:09 +0000 | 
| commit | f3fbd1c0586ff6ec7895991e6c28f61a503c36a8 (patch) | |
| tree | 48d008fd3df8c0e73271a4b18474e0aac6dbfe33 /packages/Python/lldbsuite/test/functionalities/llvm | |
| parent | 2fc5d2d1dfaf623ce4e24cd8590565902f8c557c (diff) | |
Notes
Diffstat (limited to 'packages/Python/lldbsuite/test/functionalities/llvm')
| -rw-r--r-- | packages/Python/lldbsuite/test/functionalities/llvm/TestLLVM.py | 60 | 
1 files changed, 60 insertions, 0 deletions
| diff --git a/packages/Python/lldbsuite/test/functionalities/llvm/TestLLVM.py b/packages/Python/lldbsuite/test/functionalities/llvm/TestLLVM.py new file mode 100644 index 000000000000..a2a43bf2fabd --- /dev/null +++ b/packages/Python/lldbsuite/test/functionalities/llvm/TestLLVM.py @@ -0,0 +1,60 @@ +""" +Test lldb 'commands regex' command which allows the user to create a regular expression command. +""" + +from __future__ import print_function + + + +import os +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + +class TestHomeDirectory(TestBase): + +    mydir = TestBase.compute_mydir(__file__) + +    @expectedFailureAll(hostoslist=["windows"], bugnumber="llvm.org/pr22274: need a pexpect replacement for windows") +    @no_debug_info_test +    def test_tilde_home_directory(self): +        """Test that we can resolve "~/" in paths correctly.  +        When a path starts with "~/", we use llvm::sys::path::home_directory() to +        resolve the home directory. This currently relies on "HOME" being set in the +        environment. While this is usually set, we can't rely upon that. We might  +        eventually get a fix into llvm::sys::path::home_directory() so it doesn't rely +        on having to have an environment variable set, but until then we have work around +        code in FileSpec::ResolveUsername (llvm::SmallVectorImpl<char> &path) to ensure +        this always works. This test tests that we get the correct answer for with and +        without "HOME" being set in the environment.""" +        import pexpect +        prompt = "(lldb) " + +        child = pexpect.spawn('%s --no-use-colors %s' % (lldbtest_config.lldbExec, self.lldbOption)) +        # Turn on logging for what the child sends back. +        if self.TraceOn(): +            child.logfile_read = sys.stdout +        # So that the spawned lldb session gets shutdown durng teardown. +        self.child = child + +        # Resolve "~/." to the full path of our home directory + "/." +        if 'HOME' in os.environ:  +            home_dir = os.environ['HOME'] +            if self.TraceOn(): +                print("home directory is: '%s'" % (home_dir)) +            if os.path.exists(home_dir): +                home_dir_slash_dot = home_dir + '/.' +                child.expect_exact(prompt) +                child.sendline('''script str(lldb.SBFileSpec("~/.", True))''') +                child.expect_exact(home_dir) +                child.expect_exact(prompt) +                child.sendline('''script import os; os.unsetenv('HOME'); str(lldb.SBFileSpec("~/", True))'''); +                child.expect_exact(home_dir) +                child.expect_exact(prompt) +            elif self.TraceOn(): +                print('''home directory "%s" doesn't exist, skipping home directory test''' % (home_dir)) +        elif self.TraceOn(): +            print('"HOME" not in environment, skipping home directory test') + +        child.sendline('quit') | 
