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']:

Reply via email to