23 from .steprunner
import StepRunner
24 from .model
import Keyword
25 from .outputcapture
import OutputCapturer
26 from .signalhandler
import STOP_SIGNAL_MONITOR
27 from .statusreporter
import StatusReporter
34 _executed_in_dry_run = (
'BuiltIn.Import Library',
35 'BuiltIn.Set Library Search Order')
39 self.
namename = name
or handler.name
52 return self.
_handler_handler.library.name
60 def run(self, kw, context):
61 assignment = VariableAssignment(kw.assign)
63 with assignment.assigner(context)
as assigner:
64 return_value = self.
_run_run(context, kw.args)
65 assigner.assign(return_value)
70 return KeywordResult(kwname=self.
namename,
71 libname=handler.libname,
74 assign=tuple(assignment),
78 def _run(self, context, args):
81 context.output.message(message)
83 self.
_handler_handler.resolve_arguments(args, context.variables)
84 context.output.trace(
lambda: self.
_trace_log_args_trace_log_args(positional, named))
86 positional,
dict(named))
90 args = [
prepr(arg)
for arg
in positional]
91 args += [
'%s=%s' % (
unic(n),
prepr(v))
for n, v
in named]
92 return 'Arguments: [ %s ]' %
' | '.join(args)
96 if timeout
and timeout.active:
98 with LOGGER.delayed_logging:
99 context.output.debug(timeout.get_message)
100 return timeout.run(handler, args=positional, kwargs=named)
102 return lambda: handler(*positional, **named)
105 return min(context.timeouts)
if context.timeouts
else None
113 STOP_SIGNAL_MONITOR.start_running_keyword(context.in_teardown)
116 STOP_SIGNAL_MONITOR.stop_running_keyword()
119 assignment = VariableAssignment(kw.assign)
120 result = self.
_get_result_get_result(kw, assignment)
122 assignment.validate_assignment()
123 self.
_dry_run_dry_run(context, kw.args)
127 self.
_run_run(context, args)
129 self.
_handler_handler.resolve_arguments(args)
135 LibraryKeywordRunner.__init__(self, handler, name)
140 raise DataError(
"Positional arguments are not allowed when using "
141 "embedded arguments.")
142 return LibraryKeywordRunner._run(self, context, self.
_embedded_args_embedded_args)
145 return LibraryKeywordRunner._dry_run(self, context, self.
_embedded_args_embedded_args)
150 def __init__(self, handler, default_dry_run_keywords=False):
151 LibraryKeywordRunner.__init__(self, handler)
164 LibraryKeywordRunner._dry_run(self, context, args)
173 keywords.append(keyword)
178 if name ==
'Run Keyword If':
180 if name ==
'Run Keywords':
189 yield Keyword(name=kw_call[0], args=kw_call[1:])
192 while 'ELSE IF' in given_args:
195 if 'ELSE' in given_args:
200 expr, kw_call = given_args[0], given_args[1:]
205 index = list(given_args).index(control_word)
206 expr_and_call = given_args[:index]
207 remaining = given_args[index+1:]
210 raise DataError(
"Invalid 'Run Keyword If' usage.")
213 return expr_and_call[1:], remaining
216 if len(kw_call) >= min_length:
222 yield Keyword(name=kw_call[0], args=kw_call[1:])
225 if 'AND' not in given_args:
226 for kw_call
in given_args:
229 while 'AND' in given_args:
230 index = list(given_args).index(
'AND')
231 kw_call, given_args = given_args[:index], given_args[index + 1:]
237 index = list(self.
_handler_handler.arguments.positional).index(
'name')
238 return [
Keyword(name=given_args[index], args=given_args[index+1:])]
Used when variable does not exist.
A list-like object representing keywords in a suite, a test or a keyword.
Represents results of a single keyword.
def _dry_run(self, context, args)
def _run(self, context, args)
def __init__(self, handler, name)
def __init__(self, handler, name=None)
def _run_with_output_captured_and_signal_monitor(self, runner, context)
def _runner_for(self, context, handler, positional, named)
def _dry_run(self, context, args)
def _run_with_signal_monitoring(self, runner, context)
def run(self, kw, context)
def _run(self, context, args)
def dry_run(self, kw, context)
tuple _executed_in_dry_run
def _get_timeout(self, context)
def _trace_log_args(self, positional, named)
def _get_result(self, kw, assignment)
def _get_timeout(self, namespace)
def _get_runnable_dry_run_keywords(self, args)
def _get_run_kws_keywords(self, given_args)
_default_dry_run_keywords
def _validate_kw_call(self, kw_call, min_length=2)
def _run_with_output_captured_and_signal_monitor(self, runner, context)
def _get_default_run_kw_keywords(self, given_args)
def _get_run_kws_calls(self, given_args)
def _dry_run(self, context, args)
def _get_dry_run_keywords(self, args)
def __init__(self, handler, default_dry_run_keywords=False)
def _get_run_kw_if_calls(self, given_args)
def _get_run_kw_if_keywords(self, given_args)
def _split_run_kw_if_args(self, given_args, control_word, required_after)
def prepr(item, width=80)
def contains_var(string, identifiers='$@&')