diff options
author | Zachary Turner <zturner@google.com> | 2015-11-02 19:19:49 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2015-11-02 19:19:49 +0000 |
commit | 7d564544eb73710e1a5769b9832890f620d0997d (patch) | |
tree | d501d44cf8dc8e550f573e2b3354a8ef3286e443 /lldb/packages/Python/lldbsuite/test/dosep.py | |
parent | dcbac6285a1d72d31b842342be04410b6055aa28 (diff) | |
download | bcm5719-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.py | 7 |
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. |