diff options
5 files changed, 28 insertions, 8 deletions
diff --git a/lldb/source/Interpreter/ScriptInterpreterPython.cpp b/lldb/source/Interpreter/ScriptInterpreterPython.cpp index 5a4fa625a0a..5b6e0f5d80e 100644 --- a/lldb/source/Interpreter/ScriptInterpreterPython.cpp +++ b/lldb/source/Interpreter/ScriptInterpreterPython.cpp @@ -2602,13 +2602,8 @@ ScriptInterpreterPython::LoadScriptingModule (const char* pathname, Locker::AcquireLock | (init_session ? Locker::InitSession : 0), Locker::FreeAcquiredLock | (init_session ? Locker::TearDownSession : 0)); - if (target_file.GetFileType() == FileSpec::eFileTypeDirectory) - { - // for directories, just import - basename = pathname; - } - else if (target_file.GetFileType() == FileSpec::eFileTypeInvalid || - target_file.GetFileType() == FileSpec::eFileTypeUnknown) + if (target_file.GetFileType() == FileSpec::eFileTypeInvalid || + target_file.GetFileType() == FileSpec::eFileTypeUnknown) { // if not a valid file of any sort, check if it might be a filename still // dot can't be used but / and \ can, and if either is found, reject @@ -2619,7 +2614,9 @@ ScriptInterpreterPython::LoadScriptingModule (const char* pathname, } basename = pathname; // not a filename, probably a package of some sort, let it go through } - else + else if (target_file.GetFileType() == FileSpec::eFileTypeDirectory || + target_file.GetFileType() == FileSpec::eFileTypeRegular || + target_file.GetFileType() == FileSpec::eFileTypeSymbolicLink) { const char* directory = target_file.GetDirectory().GetCString(); @@ -2645,6 +2642,11 @@ ScriptInterpreterPython::LoadScriptingModule (const char* pathname, basename.resize(basename.length()-4); } } + else + { + error.SetErrorString("no known way to import this module specification"); + return false; + } // check if the module is already import-ed command_stream.Clear(); diff --git a/lldb/test/functionalities/command_script/import/TestImport.py b/lldb/test/functionalities/command_script/import/TestImport.py index d97011fb275..b4accc07db7 100644 --- a/lldb/test/functionalities/command_script/import/TestImport.py +++ b/lldb/test/functionalities/command_script/import/TestImport.py @@ -30,6 +30,8 @@ class ImportTestCase(TestBase): self.runCmd('command script delete foobarcmd', check=False) self.runCmd('command script delete barcmd', check=False) self.runCmd('command script delete barothercmd', check=False) + self.runCmd('command script delete TPcommandA', check=False) + self.runCmd('command script delete TPcommandB', check=False) # Execute the cleanup function during test case tear down. self.addTearDownHook(cleanup) @@ -46,6 +48,10 @@ class ImportTestCase(TestBase): self.expect("command script import ./foo/foo.py", error=True, startstr='error: module importing failed') + self.runCmd("command script import --allow-reload ./thepackage") + self.expect("TPcommandA",substrs=["hello world A"]) + self.expect("TPcommandB",substrs=["hello world B"]) + self.runCmd("script import dummymodule") self.expect("command script import ./dummymodule.py", error=True, startstr='error: module importing failed') diff --git a/lldb/test/functionalities/command_script/import/thepackage/TPunitA.py b/lldb/test/functionalities/command_script/import/thepackage/TPunitA.py new file mode 100644 index 00000000000..86381a1acc2 --- /dev/null +++ b/lldb/test/functionalities/command_script/import/thepackage/TPunitA.py @@ -0,0 +1,3 @@ +def command(debugger, command, result, internal_dict): + result.PutCString(u"hello world A") + return None diff --git a/lldb/test/functionalities/command_script/import/thepackage/TPunitB.py b/lldb/test/functionalities/command_script/import/thepackage/TPunitB.py new file mode 100644 index 00000000000..52db603e512 --- /dev/null +++ b/lldb/test/functionalities/command_script/import/thepackage/TPunitB.py @@ -0,0 +1,3 @@ +def command(debugger, command, result, internal_dict): + result.PutCString(u"hello world B") + return None diff --git a/lldb/test/functionalities/command_script/import/thepackage/__init__.py b/lldb/test/functionalities/command_script/import/thepackage/__init__.py new file mode 100644 index 00000000000..faa4e3b0cbf --- /dev/null +++ b/lldb/test/functionalities/command_script/import/thepackage/__init__.py @@ -0,0 +1,6 @@ +import TPunitA +import TPunitB + +def __lldb_init_module(debugger,*args): + debugger.HandleCommand("command script add -f thepackage.TPunitA.command TPcommandA") + debugger.HandleCommand("command script add -f thepackage.TPunitB.command TPcommandB") |

