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.