Revision: 3646
Author: jussi.ao.malinen
Date: Fri May 28 07:30:52 2010
Log: refactored error messages for failing imports
http://code.google.com/p/robotframework/source/detail?r=3646
Modified:
/trunk/atest/robot/test_libraries/library_imports_by_path.txt
/trunk/atest/testdata/test_libraries/library_import_by_path.txt
/trunk/src/robot/running/namespace.py
=======================================
--- /trunk/atest/robot/test_libraries/library_imports_by_path.txt Mon Apr
12 05:17:10 2010
+++ /trunk/atest/robot/test_libraries/library_imports_by_path.txt Fri May
28 07:30:52 2010
@@ -43,5 +43,7 @@
Check Stderr Contains Importing test library 'java_libraries.html'
failed: ImportError: No module named java_libraries
Importing Non Python Dir Fails
- Check Stderr Matches Regexp (?ms).*Importing test
library 'library_scope/' failed: ImportError: (No module named
library_scope/|Import by filename is not supported.)
-
+ Check Stderr Contains Test library 'library_scope/' does not exist.
+
+Importing Non Existing Py File
+ Check Stderr Contains Test library 'this_does_not_exist.py' does not
exist.
=======================================
--- /trunk/atest/testdata/test_libraries/library_import_by_path.txt Mon Mar
29 04:44:06 2010
+++ /trunk/atest/testdata/test_libraries/library_import_by_path.txt Fri May
28 07:30:52 2010
@@ -10,6 +10,7 @@
Library java_libraries.html
Library library_scope/
Library spaces in path/SpacePathLib.py
+Library this_does_not_exist.py
*** Variables ***
${MYVAR} ${CURDIR}${/}dir_for_libs
=======================================
--- /trunk/src/robot/running/namespace.py Thu May 27 05:25:49 2010
+++ /trunk/src/robot/running/namespace.py Fri May 28 07:30:52 2010
@@ -160,12 +160,7 @@
def _get_path(self, setting_name, path, basedir):
if setting_name == 'Library' and not
self._is_library_by_path(path, basedir):
return path
- try:
- path = self._resolve_path(path.replace('/', os.sep), basedir)
- except DataError:
- if setting_name == 'Variables': name = 'Variable file'
- if setting_name == 'Resource': name = 'Resource file'
- raise DataError("%s '%s' does not exist" % (name, path))
+ path = self._resolve_path(setting_name, path.replace('/', os.sep),
basedir)
if setting_name in ['Variables','Library']:
dirname, filename = os.path.split(os.path.normpath(path))
path = os.path.join(utils.normpath(dirname), filename)
@@ -174,21 +169,21 @@
return path
def _is_library_by_path(self, path, basedir):
- if os.path.splitext(path)[1].lower() in ['.py','.java','.class']:
- return os.path.isfile(os.path.join(basedir, path))
- if not path.endswith('/'):
- return False
- init = os.path.join(basedir,
path.replace('/',os.sep), '__init__.py')
- return os.path.isfile(init)
-
- def _resolve_path(self, respath, basedir):
+ return path.lower().endswith(('.py', '.java', '.class', '/'))
+
+ def _resolve_path(self, setting_name, path, basedir):
for base in [basedir] + sys.path:
if not os.path.isdir(base):
continue
- path = os.path.join(base, respath)
- if os.path.exists(path):
- return path
- raise DataError()
+ ret = os.path.join(base, path)
+ if os.path.isfile(ret):
+ return ret
+ if os.path.isdir(ret) and
os.path.isfile(os.path.join(ret, '__init__.py')):
+ return ret
+ name = {'Library': 'Test library',
+ 'Variables': 'Variable file',
+ 'Resource': 'Resource file'}[setting_name]
+ raise DataError("%s '%s' does not exist." % (name, path))
def _import_deprecated_standard_libs(self, name):
if name in ['BuiltIn', 'OperatingSystem']: