Revision: 2533
Author: janne.t.harkonen
Date: Thu Feb 25 00:30:22 2010
Log: Test and fix for user keyword error message when invalid argument name contains unicode
http://code.google.com/p/robotframework/source/detail?r=2533

Modified:
 /trunk/src/robot/parsing/userkeyword.py
 /trunk/utest/parsing/test_userkeyword.py

=======================================
--- /trunk/src/robot/parsing/userkeyword.py     Sun Apr 19 13:26:54 2009
+++ /trunk/src/robot/parsing/userkeyword.py     Thu Feb 25 00:30:22 2010
@@ -30,8 +30,9 @@
         try:
             handler = UserHandler(data)
         except DataError, err:
-            _report_creating_failed(data, str(err))
-            handler = UserErrorHandler(data.name, str(err))
+            msg = utils.unic(err)
+            _report_creating_failed(data, msg)
+            handler = UserErrorHandler(data.name, msg)
         handler = _check_for_duplicates(handlers, handler, data)
         handlers.append(handler)
     return handlers
=======================================
--- /trunk/utest/parsing/test_userkeyword.py    Thu Feb 25 00:00:28 2010
+++ /trunk/utest/parsing/test_userkeyword.py    Thu Feb 25 00:30:22 2010
@@ -1,7 +1,7 @@
-import unittest, sys
+import unittest
 from types import *

-from robot.parsing.userkeyword import UserHandler
+from robot.parsing.userkeyword import UserHandler, UserHandlerList, UserErrorHandler
 from robot.errors import *
 from robot.utils.asserts import *

@@ -11,11 +11,28 @@
         self.name = name

 class KwDataMock:
-    def __init__(self, name='My Keyword'):
+    def __init__(self, name='My Keyword', metadata=None):
         self.name = name
-        self.metadata = None
+        self.metadata = metadata
         self.keywords = []

+    def report_invalid_syntax(self, msg):
+        self.error = msg
+
+class MetaMock:
+    def __init__(self, name, value):
+        self.name = name
+        self.value = value
+
+
+class TestUserHandlerList(unittest.TestCase):
+
+    def test_invalid_argument_contains_unicode(self):
+        mock = KwDataMock(metadata=[MetaMock('arguments', [u'\xe4'])])
+        handler = UserHandlerList([mock])[0]
+        assert_true(isinstance(handler, UserErrorHandler))
+        assert_equals(handler._error, u"Invalid argument '\xe4'")
+

 class TestUserHandler(unittest.TestCase):

Reply via email to