class Rspec::Core::Example
def assign_auto_description
def assign_auto_description if description.empty? metadata[:description] = Rspec::Matchers.generated_description Rspec::Matchers.clear_generated_description end end
def description
def description @metadata[:description] end
def execution_result
def execution_result @metadata[:execution_result] end
def file_path
def file_path @metadata[:file_path] || behaviour.file_path end
def initialize(behaviour, desc, options, example_block=nil)
def initialize(behaviour, desc, options, example_block=nil) @behaviour, @options, @example_block = behaviour, options, example_block @metadata = @behaviour.metadata.dup @metadata[:description] = desc.to_s @metadata[:execution_result] = {} @metadata[:caller] = options.delete(:caller) if @metadata[:caller] @metadata[:file_path] = @metadata[:caller].split(":")[0].strip @metadata[:line_number] = @metadata[:caller].split(":")[1].to_i end @metadata.update(options) end
def inspect
def inspect "#{@metadata[:behaviour][:name]} - #{@metadata[:description]}" end
def record_results(results={})
def record_results(results={}) @metadata[:execution_result].update(results) end
def run(example_group_instance)
def run(example_group_instance) @example_group_instance = example_group_instance @example_group_instance.running_example = self run_started all_systems_nominal = true exception_encountered = nil begin run_before_each if @behaviour.around_eachs.empty? @example_group_instance.instance_eval(&example_block) if runnable? else @behaviour.around_eachs.first.call(AroundProxy.new(self, &example_block)) end rescue Exception => e exception_encountered = e all_systems_nominal = false end assign_auto_description begin run_after_each rescue Exception => e exception_encountered ||= e all_systems_nominal = false ensure @example_group_instance.running_example = nil end if exception_encountered run_failed(exception_encountered) else runnable? ? run_passed : run_pending end all_systems_nominal end
def run_after_each
def run_after_each @behaviour.eval_after_eachs(@example_group_instance) @example_group_instance._verify_mocks if @example_group_instance.respond_to?(:_verify_mocks) ensure @example_group_instance._teardown_mocks if @example_group_instance.respond_to?(:_teardown_mocks) end
def run_before_each
def run_before_each @example_group_instance._setup_mocks if @example_group_instance.respond_to?(:_setup_mocks) @behaviour.eval_before_eachs(@example_group_instance) end
def run_failed(exception)
def run_failed(exception) run_finished 'failed', :exception_encountered => exception end
def run_finished(status, results={})
def run_finished(status, results={}) record_results results.update(:status => status) finish_time = Time.now record_results :finished_at => finish_time, :run_time => (finish_time - execution_result[:started_at]) Rspec::Core.configuration.formatter.example_finished(self) end
def run_passed
def run_passed run_finished 'passed' end
def run_pending(message='Not yet implemented')
def run_pending(message='Not yet implemented') run_finished 'pending', :pending_message => message end
def run_started
def run_started record_results :started_at => Time.now end
def runnable?
def runnable? ![example_block.nil?, metadata[:disabled] == true, metadata[:pending] == true ].any? end
def to_s
def to_s inspect end