2 new revisions:

Revision: f2e48023dbc6
Branch:   default
Author:   Jussi Malinen <[email protected]>
Date:     Fri May 10 05:13:32 2013
Log: support non ascii characters in named and kw arguments when possible.
http://code.google.com/p/robotframework/source/detail?r=f2e48023dbc6

Revision: 4a0f8bceddc8
Branch:   default
Author:   Jussi Malinen <[email protected]>
Date:     Fri May 10 05:13:43 2013
Log:      Automated merge with https://code.google.com/p/robotframework/
http://code.google.com/p/robotframework/source/detail?r=4a0f8bceddc8

==============================================================================
Revision: f2e48023dbc6
Branch:   default
Author:   Jussi Malinen <[email protected]>
Date:     Fri May 10 05:13:32 2013
Log: support non ascii characters in named and kw arguments when possible.
http://code.google.com/p/robotframework/source/detail?r=f2e48023dbc6

Added:
 /atest/resources/read_interpreter.py
Modified:
 /atest/resources/atest_resource.txt
 /atest/robot/keywords/named_args/with_dynamic_keywords.txt
 /atest/robot/keywords/named_args/with_python_keywords.txt
 /atest/robot/keywords/named_args/with_user_keywords.txt
 /atest/testdata/keywords/named_args/DynamicLibrary.py
 /atest/testdata/keywords/named_args/with_dynamic_keywords.txt
 /atest/testdata/keywords/named_args/with_python_keywords.txt
 /atest/testdata/keywords/named_args/with_user_keywords.txt
 /src/robot/running/arguments/argumentresolver.py
 /src/robot/running/handlers.py

=======================================
--- /dev/null
+++ /atest/resources/read_interpreter.py        Fri May 10 05:13:32 2013
@@ -0,0 +1,26 @@
+import re
+from collections import namedtuple
+
+from robot.utils import ET
+
+
+MATCHER = re.compile(r'.*\((\w*) (.*) on (.*)\)')
+Interpreter = namedtuple('Interpreter', ['interpreter', 'version', 'platform'])
+
+
+def get_interpreter(output):
+    tree = ET.parse(output)
+    root = tree.getroot()
+    return Interpreter(*MATCHER.match(root.attrib['generator']).groups())
+
+def is_25(interpreter):
+    return interpreter.version.startswith('2.5')
+
+def is_jython(interpreter):
+    return interpreter.interpreter.lower() == 'jython'
+
+def is_python(interpreter):
+    return interpreter.interpreter.lower() == 'python'
+
+def is_python_25(interpreter):
+    return is_python(interpreter) and is_25(interpreter)
=======================================
--- /atest/resources/atest_resource.txt Wed May  8 05:38:04 2013
+++ /atest/resources/atest_resource.txt Fri May 10 05:13:32 2013
@@ -6,6 +6,7 @@
 Library         TestCheckerLibrary
 Library         TestHelper
 Library         XML
+Library         read_interpreter.py
 Variables       atest_variables.py

 *** Variables ***
@@ -319,3 +320,9 @@
     :FOR    ${kw}    IN    @{kws}
     \    Should Be Equal    ${kw.status}    PASS
     \    All Keywords Should Have Passed    ${kw}
+
+Run on Python 2.5
+    [arguments]     ${kw}   @{args}
+    ${interpreter} =    Get interpreter    ${OUTFILE}
+    ${is python 25} =   Is python 25    ${interpreter}
+    Run keyword if    ${is python 25}    ${kw}   @{args}
=======================================
--- /atest/robot/keywords/named_args/with_dynamic_keywords.txt Tue May 7 03:06:41 2013 +++ /atest/robot/keywords/named_args/with_dynamic_keywords.txt Fri May 10 05:13:32 2013
@@ -54,3 +54,6 @@

 Non working named combinations without varargs
     Check Test Case    ${TESTNAME}
+
+Nön äscii named arguments
+    Check Test Case    ${TESTNAME}
=======================================
--- /atest/robot/keywords/named_args/with_python_keywords.txt Tue May 7 02:31:45 2013 +++ /atest/robot/keywords/named_args/with_python_keywords.txt Fri May 10 05:13:32 2013
@@ -79,7 +79,8 @@
 List variable with multiple values for same variable
     Check Test Case    ${TESTNAME}

-Unicode not allowed in named argument names
+Nön äscii allowed in keyword argument names
+    Run on Python 2.5    Remove tags    Regression
     Check Test Case    ${TESTNAME}

 Empty string is allowed in kwargs names
=======================================
--- /atest/robot/keywords/named_args/with_user_keywords.txt Tue May 7 03:06:41 2013 +++ /atest/robot/keywords/named_args/with_user_keywords.txt Fri May 10 05:13:32 2013
@@ -54,3 +54,6 @@

 Non working named combinations without varargs
     Check Test Case    ${TESTNAME}
+
+Nön äscii named arguments
+    Check Test Case    ${TESTNAME}
=======================================
--- /atest/testdata/keywords/named_args/DynamicLibrary.py Tue Apr 23 07:45:33 2013 +++ /atest/testdata/keywords/named_args/DynamicLibrary.py Fri May 10 05:13:32 2013
@@ -1,3 +1,6 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
from dynamic_library_impl import (mandatory_and_kwargs, mandatory_and_named, mandatory_named_and_varargs, one_kwarg, two_kwargs, four_kw_args, named_arguments_with_varargs, escaped_default_value)

@@ -9,7 +12,8 @@
     'Mandatory And Named': (mandatory_and_named, ['a', 'b=default']),
'Named Arguments With Varargs': (named_arguments_with_varargs, ['a=default', 'b=default', '*varargs']),
     'One Kwarg': (one_kwarg, ['kwarg=']),
-    'Two Kwargs': (two_kwargs, ['first=', 'second='])
+    'Two Kwargs': (two_kwargs, ['first=', 'second=']),
+    u'Nön äscii named args': (two_kwargs, [u'nönäscii=', u'官话='])
 }

 class DynamicLibrary(object):
=======================================
--- /atest/testdata/keywords/named_args/with_dynamic_keywords.txt Tue May 7 03:06:41 2013 +++ /atest/testdata/keywords/named_args/with_dynamic_keywords.txt Fri May 10 05:13:32 2013
@@ -108,6 +108,10 @@
     got positional argument after named arguments.    b=b    b
     got multiple values for argument 'a'.             a      a=a

+Nön äscii named arguments
+    ${result} =     Nön äscii named args   官话=官话     nönäscii=nönäscii
+    Should be equal      ${result}      nönäscii, 官话
+
 *** Keywords ***
 Execute working named vararg combination with result
     [arguments]    ${expected}    @{args}
=======================================
--- /atest/testdata/keywords/named_args/with_python_keywords.txt Tue May 7 03:12:48 2013 +++ /atest/testdata/keywords/named_args/with_python_keywords.txt Fri May 10 05:13:32 2013
@@ -178,9 +178,9 @@
     @{foo} =    Create list    a    b
     Lib mandatory and named 2    @{foo}    b=given second time

-Unicode not allowed in named argument names
-    [Documentation]    FAIL Illegal characters in argument name: 'äö'
-    Lib Mandatory Named varargs and kwargs    a    äö=illegal
+Nön äscii allowed in keyword argument names
+    ${result} =  lib_kwargs    äö=böö       官话=官话
+    Should be equal   ${result}  äö:böö, 官话:官话

 Empty string is allowed in kwargs names
     ${res} =    Lib Mandatory Named varargs and kwargs    a    b    =whut
=======================================
--- /atest/testdata/keywords/named_args/with_user_keywords.txt Tue May 7 03:06:41 2013 +++ /atest/testdata/keywords/named_args/with_user_keywords.txt Fri May 10 05:13:32 2013
@@ -108,6 +108,10 @@
     got positional argument after named arguments.    b=b    b
     got multiple values for argument 'a'.             a      a=a

+Nön äscii named arguments
+    ${result} =      Named arguments with nönäscii     nönäscii=pöpipöö
+    Should be equal    ${result}     pöpipöö
+
 *** Keywords ***
 Execute working named vararg combination with result
     [Arguments]    ${expected}    @{args}
@@ -162,3 +166,7 @@
 Named arguments with varargs
     [Arguments]    ${a}=default    ${b}=default    @{varargs}
     [Return]    ${a}    ${b}    @{varargs}
+
+Named arguments with nönäscii
+    [Arguments]    ${nönäscii}=
+    [return]       ${nönäscii}
=======================================
--- /src/robot/running/arguments/argumentresolver.py Mon May 6 13:54:31 2013 +++ /src/robot/running/arguments/argumentresolver.py Fri May 10 05:13:32 2013
@@ -64,17 +64,18 @@

     def _add_named(self, arg, named):
         name, value = arg.split('=', 1)
-        name = self._verify_str(name)
+        name = self._convert_to_str_if_possible(name)
         if name in named:
             self._raise_multiple_values(name)
         named[name] = value

-    def _verify_str(self, name):
- # Python 2.5 doesn't handle Unicode at all and Jython 2.5 and 2.7b1 handle non-ASCII Unicode wrong.
+    def _convert_to_str_if_possible(self, name):
+ # Python 2.5 doesn't handle Unicode kwargs at all, so we will try to
+        # support it by converting to str if possible
         try:
             return str(name)
         except UnicodeError:
- raise DataError("Illegal characters in argument name: '%s'" % name)
+            return name

     def _raise_multiple_values(self, name):
         raise DataError("%s '%s' got multiple values for argument '%s'."
=======================================
--- /src/robot/running/handlers.py      Mon May  6 15:13:19 2013
+++ /src/robot/running/handlers.py      Fri May 10 05:13:32 2013
@@ -219,6 +219,11 @@

     def _parse_arguments(self, handler_method):
         return DynamicArgumentParser().parse(self.longname, self._argspec)
+
+    def resolve_arguments(self, arguments, variables):
+ positional, named = _RunnableHandler.resolve_arguments(self, arguments, variables)
+        arguments = ArgumentMapper(self.arguments).map(positional, named)
+        return arguments, {}

     def _get_handler(self, lib_instance, handler_name):
         runner = getattr(lib_instance, self._run_keyword_method_name)
@@ -228,9 +233,8 @@
         return self._get_dynamic_handler(method, name)

     def _get_dynamic_handler(self, runner, name):
-        def handler(*positional, **named):
-            args = ArgumentMapper(self.arguments).map(positional, named)
-            return runner(name, args)
+        def handler(*positional):
+            return runner(name, positional)
         return handler



==============================================================================
Revision: 4a0f8bceddc8
Branch:   default
Author:   Jussi Malinen <[email protected]>
Date:     Fri May 10 05:13:43 2013
Log:      Automated merge with https://code.google.com/p/robotframework/
http://code.google.com/p/robotframework/source/detail?r=4a0f8bceddc8


--

--- You received this message because you are subscribed to the Google Groups "robotframework-commit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to