Skip to content

Commit

Permalink
Upgraded to rspec trunk
Browse files Browse the repository at this point in the history
  • Loading branch information
joevandyk committed Feb 21, 2008
1 parent 782f18e commit c96e8c2
Show file tree
Hide file tree
Showing 61 changed files with 488 additions and 4,718 deletions.
7 changes: 0 additions & 7 deletions spec/helpers/refunds_helper_spec.rb
@@ -1,11 +1,4 @@
require File.dirname(__FILE__) + '/../spec_helper' require File.dirname(__FILE__) + '/../spec_helper'


describe RefundsHelper do describe RefundsHelper do

#Delete this example and add some real ones or delete this file
it "should include the RefundsHelper" do
included_modules = self.metaclass.send :included_modules
included_modules.should include(RefundsHelper)
end

end end
7 changes: 0 additions & 7 deletions spec/helpers/voids_helper_spec.rb
@@ -1,11 +1,4 @@
require File.dirname(__FILE__) + '/../spec_helper' require File.dirname(__FILE__) + '/../spec_helper'


describe VoidsHelper do describe VoidsHelper do

#Delete this example and add some real ones or delete this file
it "should include the VoidsHelper" do
included_modules = self.metaclass.send :included_modules
included_modules.should include(VoidsHelper)
end

end end
26 changes: 26 additions & 0 deletions vendor/plugins/rspec/CHANGES
@@ -1,6 +1,31 @@
== Version 1.1.4 (trunk)

Maintenance release.
Note: we've removed the metaclass method from Object. There were some generated specs that
used it, and they will now break. Just replace the metaclass call with (class << self; self; end)
and all will be well.

* Added #helper and #assigns to helper specs.
* Applied patch from Bryan Helmkamp to tweak format of generated spec.opts to be more obvious. Closes #162.
* Tweaked list of exceptions (ignores) for autotest with rspec_on_rails.
* Applied patch from Coda Hale to get the :red hook called in autotest. Closes #279.
* Applied patch from Patrick Ritchie to support --drb in spec.opts. Closes #274, #293.
* Applied patch from Rick Olson to get rspec_on_rails working with rails edge (>= 8862)
* Moved metaclass method from Object to an internal module which gets included where it is needed.
* Applied patch from Dayo Esho: and_yield clobbers return value from block. Closes #217.
* Applied patch from Bob Cotton: ExampleGroupFactory.default resets previously registered types. Closes #222.
* Applied patch from Mike Williams to support the lib directory in rails apps with the Textmate Alternate File command. Closes #276.
* ExampleGroupMethods#xspecify aliases #xit
* A SharedExampleGroup can be created within another ExampleGroup.
* Applied patch from Bob Cotton: Nested ExampleGroups do not have a spec_path. Closes #224.
* Applied patch from Wincent Colaiuta to invert sense of "spec --diff". Closes #281.
* Allow any type of render in view specs. Closes #57.
* Applied patch from Ian White to get rspec working with edge rails (8804). Closes #271.

== Version 1.1.3 == Version 1.1.3


Maintenance release. Maintenance release.
Notice to autotest users: you must also upgrade to ZenTest-3.9.0.


* Tightened up exceptions list in autotest/rails_spec. Closes #264. * Tightened up exceptions list in autotest/rails_spec. Closes #264.
* Applied patch from Ryan Davis for ZenTest-3.9.0 compatibility * Applied patch from Ryan Davis for ZenTest-3.9.0 compatibility
Expand All @@ -18,6 +43,7 @@ Maintenance release.
== Version 1.1.2 == Version 1.1.2


Minor bug fixes/enhancements. Minor bug fixes/enhancements.
Notice to autotest users: you must also upgrade to ZenTest-3.8.0.


* RSpec's Autotest subclasses compatible with ZenTest-3.8.0 (thanks to Ryan Davis for making it easier on Autotest subs). * RSpec's Autotest subclasses compatible with ZenTest-3.8.0 (thanks to Ryan Davis for making it easier on Autotest subs).
* Applied patch from idl to add spec/lib to rake stats. Closes #226. * Applied patch from idl to add spec/lib to rake stats. Closes #226.
Expand Down
6 changes: 0 additions & 6 deletions vendor/plugins/rspec/autotest/discover.rb

This file was deleted.

1 change: 0 additions & 1 deletion vendor/plugins/rspec/autotest/rspec.rb

This file was deleted.

16 changes: 7 additions & 9 deletions vendor/plugins/rspec/lib/autotest/rspec.rb
Expand Up @@ -21,17 +21,15 @@ class Autotest::Rspec < Autotest


def initialize def initialize
super super

self.failed_results_re = /^\d+\)\n(?:\e\[\d*m)?(?:.*?Error in )?'([^\n]*)'(?: FAILED)?(?:\e\[\d*m)?\n(.*?)\n\n/m self.failed_results_re = /^\d+\)\n(?:\e\[\d*m)?(?:.*?Error in )?'([^\n]*)'(?: FAILED)?(?:\e\[\d*m)?\n(.*?)\n\n/m
self.completed_re = /\Z/ # FIX: some sort of summary line at the end? self.completed_re = /\n(?:\e\[\d*m)?\d* examples?/m
end end

def consolidate_failures(failed) def consolidate_failures(failed)
filters = Hash.new { |h,k| h[k] = [] } filters = new_hash_of_arrays
failed.each do |spec, failed_trace| failed.each do |spec, trace|
if f = test_files_for(failed).find { |f| failed_trace =~ Regexp.new(f) } then if trace =~ /\n(\.\/)?(.*\.rb):[\d]+:\Z?/
filters[f] << spec filters[$2] << spec
break
end end
end end
return filters return filters
Expand All @@ -41,7 +39,7 @@ def make_test_cmd(files_to_test)
return "#{ruby} -S #{spec_command} #{add_options_if_present} #{files_to_test.keys.flatten.join(' ')}" return "#{ruby} -S #{spec_command} #{add_options_if_present} #{files_to_test.keys.flatten.join(' ')}"
end end


def add_options_if_present def add_options_if_present # :nodoc:
File.exist?("spec/spec.opts") ? "-O spec/spec.opts " : "" File.exist?("spec/spec.opts") ? "-O spec/spec.opts " : ""
end end


Expand Down
10 changes: 3 additions & 7 deletions vendor/plugins/rspec/lib/spec/example/example_group_factory.rb
Expand Up @@ -23,7 +23,7 @@ def register(id, example_group_class)
def default(example_group_class) def default(example_group_class)
old = @example_group_types old = @example_group_types
@example_group_types = Hash.new(example_group_class) @example_group_types = Hash.new(example_group_class)
@example_group_types.merge(old) if old @example_group_types.merge!(old) if old
end end


def get(id=nil) def get(id=nil)
Expand All @@ -36,12 +36,8 @@ def get(id=nil)


def create_example_group(*args, &block) def create_example_group(*args, &block)
opts = Hash === args.last ? args.last : {} opts = Hash === args.last ? args.last : {}
if opts[:shared] superclass = determine_superclass(opts)
SharedExampleGroup.new(*args, &block) superclass.describe(*args, &block)
else
superclass = determine_superclass(opts)
superclass.describe(*args, &block)
end
end end


protected protected
Expand Down
14 changes: 11 additions & 3 deletions vendor/plugins/rspec/lib/spec/example/example_group_methods.rb
Expand Up @@ -34,10 +34,17 @@ def inherited(klass)
# end # end
# #
def describe(*args, &example_group_block) def describe(*args, &example_group_block)
args << {} unless Hash === args.last
if example_group_block if example_group_block
self.subclass("Subclass") do params = args.last
describe(*args) params[:spec_path] = eval("caller(0)[1]", example_group_block) unless params[:spec_path]
module_eval(&example_group_block) if params[:shared]
SharedExampleGroup.new(*args, &example_group_block)
else
self.subclass("Subclass") do
describe(*args)
module_eval(&example_group_block)
end
end end
else else
set_description(*args) set_description(*args)
Expand Down Expand Up @@ -107,6 +114,7 @@ def it(description=nil, &implementation)
def xit(description=nil, opts={}, &block) def xit(description=nil, opts={}, &block)
Kernel.warn("Example disabled: #{description}") Kernel.warn("Example disabled: #{description}")
end end
alias_method :xspecify, :xit


def run def run
examples = examples_to_run examples = examples_to_run
Expand Down
4 changes: 4 additions & 0 deletions vendor/plugins/rspec/lib/spec/example/example_methods.rb
Expand Up @@ -63,6 +63,10 @@ def eval_each_fail_slow(procs) #:nodoc:
def description def description
@_defined_description || @_matcher_description || "NO NAME" @_defined_description || @_matcher_description || "NO NAME"
end end

def __full_description
"#{self.class.description} #{self.description}"
end


def set_instance_variables_from_hash(ivars) def set_instance_variables_from_hash(ivars)
ivars.each do |variable_name, value| ivars.each do |variable_name, value|
Expand Down
Expand Up @@ -17,7 +17,7 @@ def initialize(options)
end end


# This is snagged from diff/lcs/ldiff.rb (which is a commandline tool) # This is snagged from diff/lcs/ldiff.rb (which is a commandline tool)
def diff_as_string(data_old, data_new) def diff_as_string(data_new, data_old)
data_old = data_old.split(/\n/).map! { |e| e.chomp } data_old = data_old.split(/\n/).map! { |e| e.chomp }
data_new = data_new.split(/\n/).map! { |e| e.chomp } data_new = data_new.split(/\n/).map! { |e| e.chomp }
output = "" output = ""
Expand Down
1 change: 1 addition & 0 deletions vendor/plugins/rspec/lib/spec/extensions.rb
@@ -1,3 +1,4 @@
require 'spec/extensions/object' require 'spec/extensions/object'
require 'spec/extensions/class' require 'spec/extensions/class'
require 'spec/extensions/main' require 'spec/extensions/main'
require 'spec/extensions/metaclass'
7 changes: 7 additions & 0 deletions vendor/plugins/rspec/lib/spec/extensions/metaclass.rb
@@ -0,0 +1,7 @@
module Spec
module MetaClass
def metaclass
class << self; self; end
end
end
end
4 changes: 0 additions & 4 deletions vendor/plugins/rspec/lib/spec/extensions/object.rb
Expand Up @@ -3,8 +3,4 @@ def args_and_options(*args)
options = Hash === args.last ? args.pop : {} options = Hash === args.last ? args.pop : {}
return args, options return args, options
end end

def metaclass
class << self; self; end
end
end end
4 changes: 3 additions & 1 deletion vendor/plugins/rspec/lib/spec/mocks/message_expectation.rb
Expand Up @@ -112,12 +112,14 @@ def invoke_with_yield(block)
if block.nil? if block.nil?
@error_generator.raise_missing_block_error @args_to_yield @error_generator.raise_missing_block_error @args_to_yield
end end
value = nil
@args_to_yield.each do |args_to_yield_this_time| @args_to_yield.each do |args_to_yield_this_time|
if block.arity > -1 && args_to_yield_this_time.length != block.arity if block.arity > -1 && args_to_yield_this_time.length != block.arity
@error_generator.raise_wrong_arity_error args_to_yield_this_time, block.arity @error_generator.raise_wrong_arity_error args_to_yield_this_time, block.arity
end end
block.call(*args_to_yield_this_time) value = block.call(*args_to_yield_this_time)
end end
value
end end


def invoke_consecutive_return_block(args, block) def invoke_consecutive_return_block(args, block)
Expand Down
16 changes: 6 additions & 10 deletions vendor/plugins/rspec/lib/spec/mocks/proxy.rb
Expand Up @@ -88,15 +88,15 @@ def __add(sym)
end end


def define_expected_method(sym) def define_expected_method(sym)
if target_responds_to?(sym) && !metaclass.method_defined?(munge(sym)) if target_responds_to?(sym) && !target_metaclass.method_defined?(munge(sym))
munged_sym = munge(sym) munged_sym = munge(sym)
metaclass.instance_eval do target_metaclass.instance_eval do
alias_method munged_sym, sym if method_defined?(sym.to_s) alias_method munged_sym, sym if method_defined?(sym.to_s)
end end
@proxied_methods << sym @proxied_methods << sym
end end


metaclass_eval(<<-EOF, __FILE__, __LINE__) target_metaclass.class_eval(<<-EOF, __FILE__, __LINE__)
def #{sym}(*args, &block) def #{sym}(*args, &block)
__mock_proxy.message_received :#{sym}, *args, &block __mock_proxy.message_received :#{sym}, *args, &block
end end
Expand Down Expand Up @@ -125,12 +125,8 @@ def clear_proxied_methods
@proxied_methods.clear @proxied_methods.clear
end end


def metaclass_eval(str, filename, lineno) def target_metaclass
metaclass.class_eval(str, filename, lineno) class << @target; self; end
end

def metaclass
(class << @target; self; end)
end end


def verify_expectations def verify_expectations
Expand All @@ -142,7 +138,7 @@ def verify_expectations
def reset_proxied_methods def reset_proxied_methods
@proxied_methods.each do |sym| @proxied_methods.each do |sym|
munged_sym = munge(sym) munged_sym = munge(sym)
metaclass.instance_eval do target_metaclass.instance_eval do
if method_defined?(munged_sym.to_s) if method_defined?(munged_sym.to_s)
alias_method sym, munged_sym alias_method sym, munged_sym
undef_method munged_sym undef_method munged_sym
Expand Down
Expand Up @@ -19,8 +19,7 @@ def start(example_count)
end end


# This method is invoked at the beginning of the execution of each example_group. # This method is invoked at the beginning of the execution of each example_group.
# +name+ is the name of the example_group and +first+ is true if it is the # +example_group+ is the example_group.
# first example_group - otherwise it's false.
# #
# The next method to be invoked after this is #example_failed or #example_finished # The next method to be invoked after this is #example_failed or #example_finished
def add_example_group(example_group) def add_example_group(example_group)
Expand All @@ -46,7 +45,7 @@ def example_failed(example, counter, failure)
# been provided a block), or when an ExamplePendingError is raised. # been provided a block), or when an ExamplePendingError is raised.
# +message+ is the message from the ExamplePendingError, if it exists, or the # +message+ is the message from the ExamplePendingError, if it exists, or the
# default value of "Not Yet Implemented" # default value of "Not Yet Implemented"
def example_pending(example_group_description, example, message) def example_pending(example, message)
end end


# This method is invoked after all of the examples have executed. The next method # This method is invoked after all of the examples have executed. The next method
Expand Down
Expand Up @@ -26,8 +26,8 @@ def @output.flush
@pending_examples = [] @pending_examples = []
end end


def example_pending(example_group_description, example, message) def example_pending(example, message)
@pending_examples << ["#{example_group_description} #{example.description}", message] @pending_examples << [example.__full_description, message]
end end


def dump_failure(counter, failure) def dump_failure(counter, failure)
Expand Down
Expand Up @@ -4,19 +4,21 @@ module Spec
module Runner module Runner
module Formatter module Formatter
class FailingExampleGroupsFormatter < BaseTextFormatter class FailingExampleGroupsFormatter < BaseTextFormatter
attr_reader :example_group
def add_example_group(example_group) def add_example_group(example_group)
super super
@example_group_description_parts = example_group.description_parts @example_group = example_group
end end


def example_failed(example, counter, failure) def example_failed(example, counter, failure)
if @example_group_description_parts if @example_group
description_parts = @example_group_description_parts.collect do |description| description_parts = @example_group.description_parts.collect do |description|
description =~ /(.*) \(druby.*\)$/ ? $1 : description description =~ /(.*) \(druby.*\)$/ ? $1 : description
end end
@output.puts ::Spec::Example::ExampleGroupMethods.description_text(*description_parts) @output.puts ::Spec::Example::ExampleGroupMethods.description_text(*description_parts)

@output.flush @output.flush
@example_group_description_parts = nil @example_group = nil
end end
end end


Expand Down
Expand Up @@ -81,7 +81,7 @@ def example_failed(example, counter, failure)
@output.flush @output.flush
end end


def example_pending(example_group_description, example, message) def example_pending(example, message)
@output.puts " <script type=\"text/javascript\">makeYellow('rspec-header');</script>" unless @header_red @output.puts " <script type=\"text/javascript\">makeYellow('rspec-header');</script>" unless @header_red
@output.puts " <script type=\"text/javascript\">makeYellow('example_group_#{current_example_group_number}');</script>" unless @example_group_red @output.puts " <script type=\"text/javascript\">makeYellow('example_group_#{current_example_group_number}');</script>" unless @example_group_red
move_progress move_progress
Expand Down
Expand Up @@ -14,7 +14,7 @@ def example_passed(example)
@output.flush @output.flush
end end


def example_pending(example_group_description, example, message) def example_pending(example, message)
super super
@output.print yellow('P') @output.print yellow('P')
@output.flush @output.flush
Expand Down
Expand Up @@ -28,7 +28,7 @@ def example_passed(example)
output.flush output.flush
end end


def example_pending(example_group_description, example, message) def example_pending(example, message)
super super
output.puts yellow("- #{example.description} (PENDING: #{message})") output.puts yellow("- #{example.description} (PENDING: #{message})")
output.flush output.flush
Expand Down
8 changes: 6 additions & 2 deletions vendor/plugins/rspec/lib/spec/runner/option_parser.rb
Expand Up @@ -141,6 +141,10 @@ def invoke_requires(requires)
def parse_options_file(options_file) def parse_options_file(options_file)
option_file_args = IO.readlines(options_file).map {|l| l.chomp.split " "}.flatten option_file_args = IO.readlines(options_file).map {|l| l.chomp.split " "}.flatten
@argv.push(*option_file_args) @argv.push(*option_file_args)
# TODO - this is a brute force solution to http://rspec.lighthouseapp.com/projects/5645/tickets/293.
# Let's look for a cleaner way. Might not be one. But let's look. If not, perhaps
# this can be moved to a different method to indicate the special handling for drb?
parse_drb(@argv)
end end


def parse_generate_options def parse_generate_options
Expand Down Expand Up @@ -170,9 +174,9 @@ def write_generated_options(options_file)
@options.examples_should_not_be_run @options.examples_should_not_be_run
end end


def parse_drb def parse_drb(argv = nil)
argv ||= @options.argv # TODO - see note about about http://rspec.lighthouseapp.com/projects/5645/tickets/293
is_drb = false is_drb = false
argv = @options.argv
is_drb ||= argv.delete(OPTIONS[:drb][0]) is_drb ||= argv.delete(OPTIONS[:drb][0])
is_drb ||= argv.delete(OPTIONS[:drb][1]) is_drb ||= argv.delete(OPTIONS[:drb][1])
return nil unless is_drb return nil unless is_drb
Expand Down
6 changes: 4 additions & 2 deletions vendor/plugins/rspec/lib/spec/runner/options.rb
Expand Up @@ -177,9 +177,11 @@ def load_heckle_runner(heckle)
end end


def number_of_examples def number_of_examples
@example_groups.inject(0) do |sum, example_group| total = 0
sum + example_group.number_of_examples @example_groups.each do |example_group|
total += example_group.number_of_examples
end end
total
end end


def files_to_load def files_to_load
Expand Down

0 comments on commit c96e8c2

Please sign in to comment.