summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/source/Interpreter/ScriptInterpreterPython.cpp18
-rw-r--r--lldb/test/functionalities/command_script/import/TestImport.py6
-rw-r--r--lldb/test/functionalities/command_script/import/thepackage/TPunitA.py3
-rw-r--r--lldb/test/functionalities/command_script/import/thepackage/TPunitB.py3
-rw-r--r--lldb/test/functionalities/command_script/import/thepackage/__init__.py6
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")
OpenPOWER on IntegriCloud