Skip to content

Commit 34b6825

Browse files
committed
Implemented some requested changes from code review.
1 parent 4cade84 commit 34b6825

File tree

6 files changed

+27
-32
lines changed

6 files changed

+27
-32
lines changed

atest/interpreter.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def __init__(self, path, name=None, version=None):
2626
self.path = path
2727
self.interpreter = self._get_interpreter(path)
2828
if not name:
29-
name, version = 'Python', '2.7'
29+
name, version = self._get_name_and_version()
3030
self.name = name
3131
self.version = version
3232
self.version_info = tuple(int(item) for item in version.split('.'))
@@ -55,10 +55,6 @@ def os(self):
5555
return name
5656
return sys.platform
5757

58-
@property
59-
def output_name(self):
60-
return '{i.name}-{i.version}-{i.os}'.format(i=self).replace(' ', '')
61-
6258
@property
6359
def excludes(self):
6460
if self.is_jython:

atest/run.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/usr/bin/env python
1+
#!/usr/bin/env python3.6
22

33
"""A script for running Robot Framework's acceptance tests.
44
@@ -43,15 +43,15 @@
4343

4444

4545
sys.path.append(join(CURDIR, '..'))
46-
# try:
47-
# from tasks import jar
48-
# except ImportError:
49-
# def jar(*args, **kwargs):
50-
# raise RuntimeError("Dependencies missing. See BUILD.rst for details.")
51-
# except AssertionError:
52-
# def jar(*args, **kwargs):
53-
# raise RuntimeError("JAR can be created only when in the project root. "
54-
# "See BUILD.rst for details.")
46+
try:
47+
from tasks import jar
48+
except ImportError:
49+
def jar(*args, **kwargs):
50+
raise RuntimeError("Dependencies missing. See BUILD.rst for details.")
51+
except AssertionError:
52+
def jar(*args, **kwargs):
53+
raise RuntimeError("JAR can be created only when in the project root. "
54+
"See BUILD.rst for details.")
5555

5656

5757
ARGUMENTS = '''
@@ -81,7 +81,7 @@ def atests(interpreter, *arguments):
8181

8282

8383
def _get_directories(interpreter):
84-
name = interpreter.output_name
84+
name = '{i.name}-{i.version}-{i.os}'.format(i=interpreter).replace(' ', '')
8585
outputdir = dos_to_long(join(CURDIR, 'results', name))
8686
tempdir = dos_to_long(join(tempfile.gettempdir(), 'robottests', name))
8787
if exists(outputdir):

atest/testdata/keywords/embedded_arguments.robot

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ Embedded Arguments as Lists
4545
Embedded Arguments as Dicts
4646
Key x is in {"a": "b", "x": "y"}
4747

48-
4948
Non-Existing Variable in Embedded Arguments
5049
[Documentation] FAIL Variable '${non existing}' not found.
5150
User ${non existing} Selects ${variables} From Webshop
@@ -293,4 +292,4 @@ Sublist @{sublist} is in @{list}
293292
List Should Contain Sub List ${list} ${sublist}
294293

295294
Key ${key} is in &{dictionary}
296-
Dictionary Should Contain Key ${dictionary} ${key}
295+
Dictionary Should Contain Key ${dictionary} ${key}

src/robot/running/arguments/embedded.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ class EmbeddedArguments(object):
2525

2626
def __init__(self, name):
2727
if '${' in name or '@{' in name or '&{' in name:
28-
self.var_type, self.name, self.args = EmbeddedArgumentParser().parse(name)
28+
self.name, self.args = EmbeddedArgumentParser().parse(name)
2929
else:
30-
self.var_type, self.name, self.args = None, None, []
30+
self.name, self.args = None, []
3131

3232
def __nonzero__(self):
3333
return self.name is not None
@@ -42,17 +42,15 @@ class EmbeddedArgumentParser(object):
4242
_variable_pattern = r'\$\{[^\}]+\}'
4343

4444
def parse(self, string):
45-
var_type = None
4645
args = []
4746
name_regexp = ['^']
4847
for before, variable, string in VariableIterator(string, identifiers='$@&'):
4948
name, pattern = self._get_name_and_pattern(variable[2:-1])
50-
args.append(name)
49+
args.append((variable[0], name))
5150
name_regexp.extend([re.escape(before), '(%s)' % pattern])
52-
var_type = variable[0]
5351
name_regexp.extend([re.escape(string), '$'])
5452
name = self._compile_regexp(name_regexp) if args else None
55-
return var_type, name, args
53+
return name, args
5654

5755
def _get_name_and_pattern(self, name):
5856
if ':' not in name:

src/robot/running/userkeyword.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ class EmbeddedArgumentsHandler(UserKeywordHandler):
104104
def __init__(self, keyword, libname, embedded):
105105
UserKeywordHandler.__init__(self, keyword, libname)
106106
self.keyword = keyword
107-
self.embedded_type = embedded.var_type
108107
self.embedded_name = embedded.name
109108
self.embedded_args = embedded.args
110109

src/robot/running/userkeywordrunner.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,9 @@ def __init__(self, handler, name):
228228
match = handler.embedded_name.match(name)
229229
if not match:
230230
raise ValueError('Does not match given name')
231-
self.embedded_args = list(zip(handler.embedded_type, handler.embedded_args, match.groups()))
231+
self.embedded_args = []
232+
for n, v in zip(handler.embedded_args, match.groups()):
233+
self.embedded_args.append(n + (v,))
232234

233235
def _resolve_arguments(self, args, variables=None):
234236
# Validates that no arguments given.
@@ -238,12 +240,13 @@ def _resolve_arguments(self, args, variables=None):
238240
return list(self._replace(variables))
239241

240242
def _replace(self, variables):
241-
for t, n, v in self.embedded_args:
242-
if t == '&' and is_dict_like(literal_eval(v)):
243-
yield n, DotDict(literal_eval(v))
244-
elif t == '@' and is_list_like(literal_eval(v)):
245-
yield n, variables.replace_list(literal_eval(v))
246-
yield n, variables.replace_scalar(v)
243+
for var_type, name, value in self.embedded_args:
244+
if var_type == '$':
245+
yield name, variables.replace_scalar(value)
246+
elif var_type == '@' and is_list_like(literal_eval(value)):
247+
yield name, variables.replace_list(literal_eval(value))
248+
elif var_type == '&' and is_dict_like(literal_eval(value)):
249+
yield name, DotDict(literal_eval(value))
247250

248251
def _set_arguments(self, embedded_args, context):
249252
variables = context.variables

0 commit comments

Comments
 (0)