forked from OSchip/llvm-project
61 lines
2.6 KiB
Python
61 lines
2.6 KiB
Python
"""
|
|
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')
|