def run(self, kw, context):
     assignment = VariableAssignment(kw.assign)
     variables = context.variables
     result = None
     status_reporter = None
     if sys.version_info[0] < 3:
         sys.exc_clear()
     try:
         args = self._resolve_arguments(kw.args, variables)
         with assignment.assigner(context) as assigner:
             with context.user_keyword:
                 self._set_arguments(args, context)
                 result = self._get_result(kw, assignment,
                                           context.variables)
                 status_reporter = self.get_status_reporter(context, result)
                 return_value = self._run(context, args, result)
             assigner.assign(return_value)
         return return_value
     except:
         if not result:
             result = self._get_result(kw, assignment, context.variables)
         if not status_reporter:
             status_reporter = self.get_status_reporter(context, result)
         raise
     finally:
         if status_reporter:
             status_reporter.__exit__(*sys.exc_info())
예제 #2
0
 def run(self, kw, context):
     assignment = VariableAssignment(kw.assign)
     with StatusReporter(context, self._get_result(kw, assignment)):
         with assignment.assigner(context) as assigner:
             return_value = self._run(context, kw.args)
             assigner.assign(return_value)
             return return_value
예제 #3
0
 def run(self, kw, context, run=True):
     result = KeywordResult(kwname=self.name,
                            libname=self.libname,
                            args=kw.args,
                            assign=tuple(VariableAssignment(kw.assign)),
                            type=kw.type)
     with StatusReporter(kw, result, context, run):
         if run:
             raise self.error
예제 #4
0
 def run(self, kw, context, run=True):
     assignment = VariableAssignment(kw.assign)
     result = self._get_result(kw, assignment, context.variables)
     with StatusReporter(kw, result, context, run):
         with assignment.assigner(context) as assigner:
             if run:
                 return_value = self._run(context, kw.args, result)
                 assigner.assign(return_value)
                 return return_value
예제 #5
0
 def run(self, kw, context, run=True):
     assignment = VariableAssignment(kw.assign)
     result = self._get_result(kw, assignment, context.variables)
     with StatusReporter(kw, result, context, run):
         if self.private:
             context.warn_on_invalid_private_call(self._handler)
         with assignment.assigner(context) as assigner:
             if run:
                 return_value = self._run(context, kw.args, result)
                 assigner.assign(return_value)
                 return return_value
예제 #6
0
 def dry_run(self, kw, context):
     assignment = VariableAssignment(kw.assign)
     result = self._get_result(kw, assignment)
     with StatusReporter(kw, result, context, run=False):
         assignment.validate_assignment()
         self._dry_run(context, kw.args)
예제 #7
0
 def _verify_invalid(self, assign):
     assert_raises(DataError,
                   VariableAssignment(assign).validate_assignment)
예제 #8
0
 def _verify_valid(self, assign):
     assignment = VariableAssignment(assign)
     assignment.validate_assignment()
     expected = [a.rstrip('= ') for a in assign]
     assert_equal(assignment.assignment, expected)