def _execute(self, context):
     handler = self._handler
     if not (handler.keywords or handler.return_value):
         raise DataError("User keyword '%s' contains no keywords." %
                         self.name)
     if context.dry_run and 'robot:no-dry-run' in handler.tags:
         return None, None
     error = return_ = pass_ = None
     try:
         StepRunner(context).run_steps(handler.keywords)
     except ReturnFromKeyword as exception:
         return_ = exception
         error = exception.earlier_failures
     except (ExitForLoop, ContinueForLoop) as exception:
         pass_ = exception
     except ExecutionPassed as exception:
         pass_ = exception
         error = exception.earlier_failures
         if error:
             error.continue_on_failure = False
     except ExecutionFailed as exception:
         error = exception
     with context.keyword_teardown(error):
         td_error = self._run_teardown(context)
     if error or td_error:
         error = UserKeywordExecutionFailed(error, td_error)
     return error or pass_, return_
Ejemplo n.º 2
0
 def _execute(self, context):
     if not (self._handler.keywords or self._handler.return_value):
         raise DataError("User keyword '%s' contains no keywords." %
                         self.name)
     error = return_ = pass_ = None
     try:
         StepRunner(context).run_steps(self._handler.keywords)
     except ReturnFromKeyword as exception:
         return_ = exception
         error = exception.earlier_failures
     except ExecutionPassed as exception:
         pass_ = exception
         error = exception.earlier_failures
     except ExecutionFailed as exception:
         error = exception
     with context.keyword_teardown(error):
         td_error = self._run_teardown(context)
     if error or td_error:
         error = UserKeywordExecutionFailed(error, td_error)
     return error or pass_, return_
Ejemplo n.º 3
0
 def _execute(self, context, positional, kwargs):
     self._set_variables(positional, kwargs, context.variables)
     context.output.trace(lambda: self._log_args(context.variables))
     self._verify_keyword_is_valid()
     error = return_ = pass_ = None
     runner = KeywordRunner(context)
     try:
         runner.run_keywords(self.keywords)
     except ReturnFromKeyword as exception:
         return_ = exception
         error = exception.earlier_failures
     except ExecutionPassed as exception:
         pass_ = exception
         error = exception.earlier_failures
     except ExecutionFailed as exception:
         error = exception
     with context.keyword_teardown(error):
         td_error = self._run_teardown(context)
     if error or td_error:
         error = UserKeywordExecutionFailed(error, td_error)
     return error or pass_, return_
Ejemplo n.º 4
0
 def _execute(self, context, arguments):
     self._set_variables(arguments, context.variables)
     context.output.trace(lambda: self._log_args(context.variables))
     self._verify_keyword_is_valid()
     self.timeout.start()
     error = return_ = pass_ = None
     try:
         self.keywords.run(context)
     except ReturnFromKeyword as exception:
         return_ = exception
         error = exception.earlier_failures
     except ExecutionPassed as exception:
         pass_ = exception
         error = exception.earlier_failures
     except ExecutionFailed as exception:
         error = exception
     with context.keyword_teardown(error):
         td_error = self._run_teardown(context)
     if error or td_error:
         error = UserKeywordExecutionFailed(error, td_error)
     return error or pass_, return_
            raise error
        return return_value

    def _execute(self, context, variables, args_spec, resolved_arguments):
        args_spec.set_variables(resolved_arguments, variables, context.output)
        self._verify_keyword_is_valid()
        self.timeout.start()
        try:
            self.keywords.run(context)
        except ExecutionFailed, error:
            pass
        else:
            error = None
        td_error = self._run_teardown(context, error)
        if error or td_error:
            return UserKeywordExecutionFailed(error, td_error)

    def _run_teardown(self, context, error):
        if not self.teardown:
            return None
        teardown = Teardown(self.teardown.name, self.teardown.args)
        teardown.replace_variables(context.get_current_vars(), [])
        context.start_keyword_teardown(error)
        error = teardown.run(context)
        context.end_keyword_teardown()
        return error

    def _verify_keyword_is_valid(self):
        if self._errors:
            raise DataError('User keyword initialization failed:\n%s'
                            % '\n'.join(self._errors))
Ejemplo n.º 6
0
        self._execute(context, variables, args_spec, resolved_arguments)
        return self._get_return_value(variables)

    def _execute(self, context, variables, args_spec, resolved_arguments):
        args_spec.set_variables(resolved_arguments, variables, context.output)
        self._verify_keyword_is_valid()
        self.timeout.start()
        try:
            self.keywords.run(context)
        except ExecutionFailed, error:
            pass
        else:
            error = None
        td_error = self._run_teardown(context, error)
        if error or td_error:
            raise UserKeywordExecutionFailed(error, td_error)

    def _run_teardown(self, context, error):
        if not self.teardown:
            return None
        teardown = Teardown(self.teardown.name, self.teardown.args)
        teardown.replace_variables(context.get_current_vars(), [])
        context.start_keyword_teardown(error)
        run_errors = KeywordRunErrors()
        teardown.run(context, KeywordTeardownListener(run_errors))
        context.end_keyword_teardown()
        return run_errors.teardown_error

    def _verify_keyword_is_valid(self):
        if self._errors:
            raise DataError('User keyword initialization failed:\n%s'