X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/ddd5b4cf19a92582fd114914be5bd5a04d3522a7..3f607d565bc0e2c7b1b738301c11c16d069913d5:/vendor/gems/rspec-1.1.2/lib/spec/example/example_methods.rb diff --git a/vendor/gems/rspec-1.1.2/lib/spec/example/example_methods.rb b/vendor/gems/rspec-1.1.2/lib/spec/example/example_methods.rb new file mode 100644 index 000000000..6dd4c9c72 --- /dev/null +++ b/vendor/gems/rspec-1.1.2/lib/spec/example/example_methods.rb @@ -0,0 +1,102 @@ +module Spec + module Example + module ExampleMethods + extend ExampleGroupMethods + extend ModuleReopeningFix + + PENDING_EXAMPLE_BLOCK = lambda { + raise Spec::Example::ExamplePendingError.new("Not Yet Implemented") + } + + def execute(options, instance_variables) + options.reporter.example_started(self) + set_instance_variables_from_hash(instance_variables) + + execution_error = nil + Timeout.timeout(options.timeout) do + begin + before_example + run_with_description_capturing + rescue Exception => e + execution_error ||= e + end + begin + after_example + rescue Exception => e + execution_error ||= e + end + end + + options.reporter.example_finished(self, execution_error) + success = execution_error.nil? || ExamplePendingError === execution_error + end + + def instance_variable_hash + instance_variables.inject({}) do |variable_hash, variable_name| + variable_hash[variable_name] = instance_variable_get(variable_name) + variable_hash + end + end + + def violated(message="") + raise Spec::Expectations::ExpectationNotMetError.new(message) + end + + def eval_each_fail_fast(procs) #:nodoc: + procs.each do |proc| + instance_eval(&proc) + end + end + + def eval_each_fail_slow(procs) #:nodoc: + first_exception = nil + procs.each do |proc| + begin + instance_eval(&proc) + rescue Exception => e + first_exception ||= e + end + end + raise first_exception if first_exception + end + + def description + @_defined_description || @_matcher_description || "NO NAME" + end + + def set_instance_variables_from_hash(ivars) + ivars.each do |variable_name, value| + # Ruby 1.9 requires variable.to_s on the next line + unless ['@_implementation', '@_defined_description', '@_matcher_description', '@method_name'].include?(variable_name.to_s) + instance_variable_set variable_name, value + end + end + end + + def run_with_description_capturing + begin + return instance_eval(&(@_implementation || PENDING_EXAMPLE_BLOCK)) + ensure + @_matcher_description = Spec::Matchers.generated_description + Spec::Matchers.clear_generated_description + end + end + + protected + include Matchers + include Pending + + def before_example + setup_mocks_for_rspec + self.class.run_before_each(self) + end + + def after_example + self.class.run_after_each(self) + verify_mocks_for_rspec + ensure + teardown_mocks_for_rspec + end + end + end +end \ No newline at end of file