summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/dosep.py
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2015-11-02 19:19:49 +0000
committerZachary Turner <zturner@google.com>2015-11-02 19:19:49 +0000
commit7d564544eb73710e1a5769b9832890f620d0997d (patch)
treed501d44cf8dc8e550f573e2b3354a8ef3286e443 /lldb/packages/Python/lldbsuite/test/dosep.py
parentdcbac6285a1d72d31b842342be04410b6055aa28 (diff)
downloadbcm5719-llvm-7d564544eb73710e1a5769b9832890f620d0997d.tar.gz
bcm5719-llvm-7d564544eb73710e1a5769b9832890f620d0997d.zip
Make dosep correctly invoke the top-level script when forking out
packages/Python/lldbsuite is now a Python package, and it relies on its __init__.py being called to do package-level initialization. If you exec packages/Python/lldbsuite/dotest.py directly, you won't get this package level initialization, and things will fail. But without this patch, this is exactly what dosep itself does. To launch the multi-processing fork, it was hardcoding a path to dotest.py and exec'ing it from inside the package. The fix here is to get the path of the top-level script, and then exec'ing that instead. A more robust solution would involve refactoring the code so that dosep execs some internal script that imports lldbsuite, but that's a bit more involved. Differential Revision: http://reviews.llvm.org/D14157 Reviewed by: Todd Fiala llvm-svn: 251819
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/dosep.py')
-rw-r--r--lldb/packages/Python/lldbsuite/test/dosep.py7
1 files changed, 4 insertions, 3 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/dosep.py b/lldb/packages/Python/lldbsuite/test/dosep.py
index 0342d7e97a6..4f9a23d6118 100644
--- a/lldb/packages/Python/lldbsuite/test/dosep.py
+++ b/lldb/packages/Python/lldbsuite/test/dosep.py
@@ -279,11 +279,12 @@ def call_with_timeout(command, timeout, name, inferior_pid_events):
return process_driver.results
-def process_dir(root, files, test_root, dotest_argv, inferior_pid_events):
+def process_dir(root, files, dotest_argv, inferior_pid_events):
"""Examine a directory for tests, and invoke any found within it."""
results = []
for name in files:
- script_file = os.path.join(test_root, "dotest.py")
+ import __main__ as main
+ script_file = main.__file__
command = ([sys.executable, script_file] +
dotest_argv +
["--inferior", "-p", name, root])
@@ -966,7 +967,7 @@ def walk_and_invoke(test_directory, test_subdir, dotest_argv,
test_work_items = []
find_test_files_in_dir_tree(
test_subdir, lambda testdir, test_files: test_work_items.append([
- test_subdir, test_files, test_directory, dotest_argv, None]))
+ test_subdir, test_files, dotest_argv, None]))
# Convert test work items into test results using whatever
# was provided as the test run function.
OpenPOWER on IntegriCloud