def run(reporter)
      reporter.describe_context(self) unless @assertions.empty?
      if @context_error
        reporter.report("context preparation", [:context_error, @context_error])
      else
        local_run(reporter, situation_class.new)
        run_sub_contexts(reporter)
      end
      reporter
    end
def run(reporter)
      reporter.describe_context(self) unless @assertions.empty?
      if @context_error
        reporter.report("context preparation", [:context_error, @context_error])
      else
        local_run(reporter, situation_class.new)
        run_sub_contexts(reporter)
      end
      reporter
    end
Executes the setups, hookups, assertions, and teardowns and passes results on to a given
 {Riot::Reporter Reporter}. Sub-contexts will also be executed and provided the given reporter. A new
 {Riot::Situation Situation} will be created from the specified {#situation_class Situation class}.

 @param [Riot::Reporter] reporter the reporter to report results to
 @return [Riot::Reporter] the given reporter