diff options
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test')
5 files changed, 56 insertions, 21 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/configuration.py b/lldb/packages/Python/lldbsuite/test/configuration.py index 72f046e86d7..8bd17feacb1 100644 --- a/lldb/packages/Python/lldbsuite/test/configuration.py +++ b/lldb/packages/Python/lldbsuite/test/configuration.py @@ -106,6 +106,9 @@ lldb_platform_working_dir = None # The base directory in which the tests are being built. test_build_dir = None +# The clang module cache directory used by lldb. +module_cache_dir = None + # The only directory to scan for tests. If multiple test directories are # specified, and an exclusive test subdirectory is specified, the latter option # takes precedence. diff --git a/lldb/packages/Python/lldbsuite/test/dotest.py b/lldb/packages/Python/lldbsuite/test/dotest.py index d41bafb0fec..e8974a453c1 100644 --- a/lldb/packages/Python/lldbsuite/test/dotest.py +++ b/lldb/packages/Python/lldbsuite/test/dotest.py @@ -55,7 +55,7 @@ def get_dotest_invocation(): def is_exe(fpath): """Returns true if fpath is an executable.""" if fpath == None: - return False + return False return os.path.isfile(fpath) and os.access(fpath, os.X_OK) @@ -274,10 +274,10 @@ def parseOptionsAndInitTestdirs(): break if args.dsymutil: - os.environ['DSYMUTIL'] = args.dsymutil + os.environ['DSYMUTIL'] = args.dsymutil elif platform_system == 'Darwin': - os.environ['DSYMUTIL'] = seven.get_command_output( - 'xcrun -find -toolchain default dsymutil') + os.environ['DSYMUTIL'] = seven.get_command_output( + 'xcrun -find -toolchain default dsymutil') if args.filecheck: # The lldb-dotest script produced by the CMake build passes in a path @@ -426,6 +426,11 @@ def parseOptionsAndInitTestdirs(): configuration.lldb_platform_working_dir = args.lldb_platform_working_dir if args.test_build_dir: configuration.test_build_dir = args.test_build_dir + if args.module_cache_dir: + configuration.module_cache_dir = args.module_cache_dir + else: + configuration.module_cache_dir = os.path.join(configuration.test_build_dir, + 'module-cache-lldb') # Gather all the dirs passed on the command line. if len(args.args) > 0: @@ -869,16 +874,16 @@ def canRunWatchpointTests(): platform = lldbplatformutil.getPlatform() if platform == "netbsd": - if os.geteuid() == 0: - return True, "root can always write dbregs" - try: - output = subprocess.check_output(["/sbin/sysctl", "-n", - "security.models.extensions.user_set_dbregs"]).decode().strip() - if output == "1": - return True, "security.models.extensions.user_set_dbregs enabled" - except subprocess.CalledProcessError: - pass - return False, "security.models.extensions.user_set_dbregs disabled" + if os.geteuid() == 0: + return True, "root can always write dbregs" + try: + output = subprocess.check_output(["/sbin/sysctl", "-n", + "security.models.extensions.user_set_dbregs"]).decode().strip() + if output == "1": + return True, "security.models.extensions.user_set_dbregs enabled" + except subprocess.CalledProcessError: + pass + return False, "security.models.extensions.user_set_dbregs disabled" return True, "watchpoint support available" def checkWatchpointSupport(): diff --git a/lldb/packages/Python/lldbsuite/test/dotest_args.py b/lldb/packages/Python/lldbsuite/test/dotest_args.py index fa36cbcef45..8de4d8dbb2f 100644 --- a/lldb/packages/Python/lldbsuite/test/dotest_args.py +++ b/lldb/packages/Python/lldbsuite/test/dotest_args.py @@ -147,6 +147,11 @@ def create_parser(): metavar='Test build directory', default='lldb-test-build.noindex', help='The root build directory for the tests. It will be removed before running.') + group.add_argument( + '--module-cache-dir', + dest='module_cache_dir', + metavar='The clang module cache directory used by LLDB', + help='The clang module cache directory used by LLDB. This is not the one used by the makefiles. Defaults to <test build directory>/module-cache-lldb.') # Configuration options group = parser.add_argument_group('Remote platform options') diff --git a/lldb/packages/Python/lldbsuite/test/lldbtest.py b/lldb/packages/Python/lldbsuite/test/lldbtest.py index 6c00350167d..48dc81780e9 100644 --- a/lldb/packages/Python/lldbsuite/test/lldbtest.py +++ b/lldb/packages/Python/lldbsuite/test/lldbtest.py @@ -1852,9 +1852,9 @@ class TestBase(Base): Base.setUp(self) # Set the clang modules cache path used by LLDB. - mod_cache = os.path.join(os.environ["LLDB_BUILD"], "module-cache-lldb") - self.runCmd('settings set symbols.clang-modules-cache-path "%s"' - % mod_cache) + self.runCmd( + 'settings set symbols.clang-modules-cache-path "{}"'.format( + configuration.module_cache_dir)) for s in self.setUpCommands(): self.runCmd(s) @@ -2058,13 +2058,13 @@ class TestBase(Base): if check: output = "" if self.res.GetOutput(): - output += "\nCommand output:\n" + self.res.GetOutput() + output += "\nCommand output:\n" + self.res.GetOutput() if self.res.GetError(): - output += "\nError output:\n" + self.res.GetError() + output += "\nError output:\n" + self.res.GetError() if msg: - msg += output + msg += output if cmd: - cmd += output + cmd += output self.assertTrue(self.res.Succeeded(), msg if (msg) else CMD_MSG(cmd)) diff --git a/lldb/packages/Python/lldbsuite/test/sanity/TestModuleCacheSanity.py b/lldb/packages/Python/lldbsuite/test/sanity/TestModuleCacheSanity.py new file mode 100644 index 00000000000..2ce00d4e7ca --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/sanity/TestModuleCacheSanity.py @@ -0,0 +1,22 @@ +""" +This is a sanity check that verifies that the module cache path is set +correctly and points inside the default test build directory. +""" + +from __future__ import print_function + +import lldb +import lldbsuite.test.lldbutil as lldbutil +from lldbsuite.test.lldbtest import * + + +class ModuleCacheSanityTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + NO_DEBUG_INFO_TESTCASE = True + + def test(self): + self.expect( + 'settings show symbols.clang-modules-cache-path', + substrs=['lldb-test-build.noindex', 'module-cache-lldb']) |