mirror of
https://github.com/TracksApp/tracks.git
synced 2026-02-25 16:44:09 +01:00
Added Rspec and Webrat plugins and started porting Selenium on Rails tests to Rspec Plain Text Stories driving Webrat driving Selenium.
This commit is contained in:
parent
7b432a74ed
commit
2c09db45c5
602 changed files with 47788 additions and 29 deletions
15
vendor/plugins/rspec/spec/README.jruby
vendored
Normal file
15
vendor/plugins/rspec/spec/README.jruby
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
= Running specs on JRuby =
|
||||
|
||||
svn co http://svn.codehaus.org/jruby/trunk jruby
|
||||
cd jruby/jruby
|
||||
ant clean
|
||||
ant
|
||||
# put JRuby's bin dir on your PATH
|
||||
jruby -S gem install rake --no-ri --no-rdoc
|
||||
jruby -S gem install diff-lcs
|
||||
jruby -S gem install syntax
|
||||
cd ../testsuites/rspec
|
||||
mkdir target
|
||||
jruby -S rake checkout_code
|
||||
cd target/rspec
|
||||
jruby bin/spec spec -c
|
||||
19
vendor/plugins/rspec/spec/autotest/discover_spec.rb
vendored
Normal file
19
vendor/plugins/rspec/spec/autotest/discover_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
require File.dirname(__FILE__) + "/../autotest_helper"
|
||||
|
||||
module DiscoveryHelper
|
||||
def load_discovery
|
||||
require File.dirname(__FILE__) + "/../../lib/autotest/discover"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class Autotest
|
||||
describe Rspec, "discovery" do
|
||||
include DiscoveryHelper
|
||||
|
||||
it "should add the rspec autotest plugin" do
|
||||
Autotest.should_receive(:add_discovery).and_yield
|
||||
load_discovery
|
||||
end
|
||||
end
|
||||
end
|
||||
206
vendor/plugins/rspec/spec/autotest/rspec_spec.rb
vendored
Normal file
206
vendor/plugins/rspec/spec/autotest/rspec_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,206 @@
|
|||
require File.dirname(__FILE__) + "/../autotest_helper"
|
||||
|
||||
class Autotest
|
||||
|
||||
module AutotestHelper
|
||||
def rspec_output
|
||||
<<-HERE
|
||||
.............PPF
|
||||
|
||||
1)
|
||||
'false should be false' FAILED
|
||||
expected: true,
|
||||
got: false (using ==)
|
||||
./spec/autotest/rspec_spec.rb:203:
|
||||
|
||||
Finished in 0.158674 seconds
|
||||
|
||||
16 examples, 1 failure, 2 pending
|
||||
|
||||
Pending:
|
||||
Autotest::Rspec handling failed results should return an array of failed examples and errors (TODO)
|
||||
Autotest::Rspec tests/specs for a given file should find all the specs for a given file (TODO)
|
||||
HERE
|
||||
end
|
||||
|
||||
def common_setup
|
||||
@proc = mock Proc
|
||||
@kernel = mock Kernel
|
||||
@kernel.stub!(:proc).and_return @proc
|
||||
|
||||
File.stub!(:exists).and_return true
|
||||
@windows_alt_separator = "\\"
|
||||
@posix_separator = '/'
|
||||
|
||||
@rspec_output = rspec_output
|
||||
end
|
||||
end
|
||||
|
||||
describe Rspec do
|
||||
describe "selection of rspec command" do
|
||||
include AutotestHelper
|
||||
|
||||
before(:each) do
|
||||
common_setup
|
||||
@rspec_autotest = Rspec.new
|
||||
end
|
||||
|
||||
it "should try to find the spec command if it exists in ./bin and use it above everything else" do
|
||||
File.stub!(:exists?).and_return true
|
||||
|
||||
spec_path = File.expand_path("#{File.dirname(__FILE__)}/../../bin/spec")
|
||||
File.should_receive(:exists?).with(spec_path).and_return true
|
||||
@rspec_autotest.spec_command.should == spec_path
|
||||
end
|
||||
|
||||
it "should otherwise select the default spec command in gem_dir/bin/spec" do
|
||||
@rspec_autotest.stub!(:spec_commands).and_return ["/foo/spec"]
|
||||
Config::CONFIG.stub!(:[]).and_return "/foo"
|
||||
File.should_receive(:exists?).with("/foo/spec").and_return(true)
|
||||
|
||||
@rspec_autotest.spec_command.should == "/foo/spec"
|
||||
end
|
||||
|
||||
it "should raise an error if no spec command is found at all" do
|
||||
File.stub!(:exists?).and_return false
|
||||
|
||||
lambda {
|
||||
@rspec_autotest.spec_command
|
||||
}.should raise_error(RspecCommandError, "No spec command could be found!")
|
||||
end
|
||||
end
|
||||
|
||||
describe "selection of rspec command (windows compatibility issues)" do
|
||||
include AutotestHelper
|
||||
|
||||
before(:each) do
|
||||
common_setup
|
||||
end
|
||||
|
||||
it "should use the ALT_SEPARATOR if it is non-nil" do
|
||||
@rspec_autotest = Rspec.new
|
||||
spec_command = File.expand_path("#{File.dirname(__FILE__)}/../../bin/spec")
|
||||
@rspec_autotest.stub!(:spec_commands).and_return [spec_command]
|
||||
@rspec_autotest.spec_command(@windows_alt_separator).should == spec_command.gsub('/', @windows_alt_separator)
|
||||
end
|
||||
|
||||
it "should not use the ALT_SEPATOR if it is nil" do
|
||||
@windows_alt_separator = nil
|
||||
@rspec_autotest = Rspec.new
|
||||
spec_command = File.expand_path("#{File.dirname(__FILE__)}/../../bin/spec")
|
||||
@rspec_autotest.stub!(:spec_commands).and_return [spec_command]
|
||||
@rspec_autotest.spec_command.should == spec_command
|
||||
end
|
||||
end
|
||||
|
||||
describe "adding spec.opts --options" do
|
||||
before(:each) do
|
||||
@rspec_autotest = Rspec.new
|
||||
end
|
||||
|
||||
it "should return the command line option to add spec.opts if the options file exists" do
|
||||
File.stub!(:exist?).and_return true
|
||||
@rspec_autotest.add_options_if_present.should == "-O spec/spec.opts "
|
||||
end
|
||||
|
||||
it "should return an empty string if no spec.opts exists" do
|
||||
File.stub!(:exist?).and_return false
|
||||
Rspec.new.add_options_if_present.should == ""
|
||||
end
|
||||
end
|
||||
|
||||
describe "commands" do
|
||||
before(:each) do
|
||||
@rspec_autotest = Rspec.new
|
||||
@rspec_autotest.stub!(:ruby).and_return "ruby"
|
||||
@rspec_autotest.stub!(:add_options_if_present).and_return "-O spec/spec.opts"
|
||||
|
||||
@ruby = @rspec_autotest.ruby
|
||||
@spec_command = @rspec_autotest.spec_command
|
||||
@options = @rspec_autotest.add_options_if_present
|
||||
@files_to_test = {
|
||||
:spec => ["file_one", "file_two"]
|
||||
}
|
||||
# this is not the inner representation of Autotest!
|
||||
@rspec_autotest.stub!(:files_to_test).and_return @files_to_test
|
||||
@files_to_test.stub!(:keys).and_return @files_to_test[:spec]
|
||||
@to_test = @files_to_test.keys.flatten.join ' '
|
||||
end
|
||||
|
||||
it "should contain the various commands, ordered by preference" do
|
||||
Rspec.new.spec_commands.should == [
|
||||
File.expand_path("#{File.dirname(__FILE__)}/../../bin/spec"),
|
||||
"#{Config::CONFIG['bindir']}/spec"
|
||||
]
|
||||
end
|
||||
|
||||
it "should make the apropriate test command" do
|
||||
@rspec_autotest.make_test_cmd(@files_to_test).should == "#{@ruby} -S #{@spec_command} #{@options} #{@to_test}"
|
||||
end
|
||||
end
|
||||
|
||||
describe "mappings" do
|
||||
|
||||
before(:each) do
|
||||
@lib_file = "lib/something.rb"
|
||||
@spec_file = "spec/something_spec.rb"
|
||||
@rspec_autotest = Rspec.new
|
||||
@rspec_autotest.hook :initialize
|
||||
end
|
||||
|
||||
it "should find the spec file for a given lib file" do
|
||||
@rspec_autotest.should map_specs([@spec_file]).to(@lib_file)
|
||||
end
|
||||
|
||||
it "should find the spec file if given a spec file" do
|
||||
@rspec_autotest.should map_specs([@spec_file]).to(@spec_file)
|
||||
end
|
||||
|
||||
it "should only find the file if the file is being tracked (in @file)" do
|
||||
@rspec_autotest.should map_specs([]).to("lib/untracked_file")
|
||||
end
|
||||
end
|
||||
|
||||
describe "consolidating failures" do
|
||||
include AutotestHelper
|
||||
|
||||
before(:each) do
|
||||
common_setup
|
||||
@rspec_autotest = Rspec.new
|
||||
|
||||
@spec_file = "spec/autotest/some_spec.rb"
|
||||
@rspec_autotest.instance_variable_set("@files", {@spec_file => Time.now})
|
||||
@rspec_autotest.stub!(:find_files_to_test).and_return true
|
||||
end
|
||||
|
||||
it "should return no failures if no failures were given in the output" do
|
||||
@rspec_autotest.consolidate_failures([[]]).should == {}
|
||||
end
|
||||
|
||||
it "should return a hash with the spec filename => spec name for each failure or error" do
|
||||
@rspec_autotest.stub!(:test_files_for).and_return "spec/autotest/some_spec.rb"
|
||||
failures = [
|
||||
[
|
||||
"false should be false",
|
||||
"expected: true,\n got: false (using ==)\n#{@spec_file}:203:"
|
||||
]
|
||||
]
|
||||
@rspec_autotest.consolidate_failures(failures).should == {
|
||||
@spec_file => ["false should be false"]
|
||||
}
|
||||
end
|
||||
|
||||
it "should not include the subject file" do
|
||||
subject_file = "lib/autotest/some.rb"
|
||||
@rspec_autotest.stub!(:test_files_for).and_return "spec/autotest/some_spec.rb"
|
||||
failures = [
|
||||
[
|
||||
"false should be false",
|
||||
"expected: true,\n got: false (using ==)\n#{subject_file}:143:\n#{@spec_file}:203:"
|
||||
]
|
||||
]
|
||||
@rspec_autotest.consolidate_failures(failures).keys.should_not include(subject_file)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
6
vendor/plugins/rspec/spec/autotest_helper.rb
vendored
Normal file
6
vendor/plugins/rspec/spec/autotest_helper.rb
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
require "rubygems"
|
||||
require 'autotest'
|
||||
dir = File.dirname(__FILE__)
|
||||
require "#{dir}/spec_helper"
|
||||
require File.expand_path("#{dir}/../lib/autotest/rspec")
|
||||
require "#{dir}/autotest_matchers"
|
||||
47
vendor/plugins/rspec/spec/autotest_matchers.rb
vendored
Normal file
47
vendor/plugins/rspec/spec/autotest_matchers.rb
vendored
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
module Spec
|
||||
module Matchers
|
||||
class AutotestMappingMatcher
|
||||
def initialize(specs)
|
||||
@specs = specs
|
||||
end
|
||||
|
||||
def to(file)
|
||||
@file = file
|
||||
self
|
||||
end
|
||||
|
||||
def matches?(autotest)
|
||||
@autotest = prepare autotest
|
||||
@actual = autotest.test_files_for(@file)
|
||||
@actual == @specs
|
||||
end
|
||||
|
||||
def failure_message
|
||||
"expected #{@autotest.class} to map #{@specs.inspect} to #{@file.inspect}\ngot #{@actual.inspect}"
|
||||
end
|
||||
|
||||
private
|
||||
def prepare autotest
|
||||
stub_found_files autotest
|
||||
stub_find_order autotest
|
||||
autotest
|
||||
end
|
||||
|
||||
def stub_found_files autotest
|
||||
found_files = @specs.inject({}){|h,f| h[f] = Time.at(0)}
|
||||
autotest.stub!(:find_files).and_return(found_files)
|
||||
end
|
||||
|
||||
def stub_find_order autotest
|
||||
find_order = @specs.dup << @file
|
||||
autotest.instance_eval { @find_order = find_order }
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def map_specs(specs)
|
||||
AutotestMappingMatcher.new(specs)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
7
vendor/plugins/rspec/spec/rspec_suite.rb
vendored
Normal file
7
vendor/plugins/rspec/spec/rspec_suite.rb
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
if __FILE__ == $0
|
||||
dir = File.dirname(__FILE__)
|
||||
Dir["#{dir}/**/*_spec.rb"].reverse.each do |file|
|
||||
# puts "require '#{file}'"
|
||||
require file
|
||||
end
|
||||
end
|
||||
13
vendor/plugins/rspec/spec/ruby_forker.rb
vendored
Normal file
13
vendor/plugins/rspec/spec/ruby_forker.rb
vendored
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
require 'rbconfig'
|
||||
|
||||
module RubyForker
|
||||
# Forks a ruby interpreter with same type as ourself.
|
||||
# juby will fork jruby, ruby will fork ruby etc.
|
||||
def ruby(args, stderr=nil)
|
||||
config = ::Config::CONFIG
|
||||
interpreter = File::join(config['bindir'], config['ruby_install_name']) + config['EXEEXT']
|
||||
cmd = "#{interpreter} #{args}"
|
||||
cmd << " 2> #{stderr}" unless stderr.nil?
|
||||
`#{cmd}`
|
||||
end
|
||||
end
|
||||
6
vendor/plugins/rspec/spec/spec.opts
vendored
Normal file
6
vendor/plugins/rspec/spec/spec.opts
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
--colour
|
||||
--format
|
||||
profile
|
||||
--timeout
|
||||
20
|
||||
--diff
|
||||
10
vendor/plugins/rspec/spec/spec/adapters/ruby_engine_spec.rb
vendored
Normal file
10
vendor/plugins/rspec/spec/spec/adapters/ruby_engine_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
describe Spec::Adapters::RubyEngine do
|
||||
it "should default to MRI" do
|
||||
Spec::Adapters::RubyEngine.adapter.should be_an_instance_of(Spec::Adapters::RubyEngine::MRI)
|
||||
end
|
||||
|
||||
it "should provide Rubinius for rbx" do
|
||||
Spec::Adapters::RubyEngine.stub!(:engine).and_return('rbx')
|
||||
Spec::Adapters::RubyEngine.adapter.should be_an_instance_of(Spec::Adapters::RubyEngine::Rubinius)
|
||||
end
|
||||
end
|
||||
282
vendor/plugins/rspec/spec/spec/example/configuration_spec.rb
vendored
Executable file
282
vendor/plugins/rspec/spec/spec/example/configuration_spec.rb
vendored
Executable file
|
|
@ -0,0 +1,282 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Example
|
||||
|
||||
describe Configuration do
|
||||
before(:each) do
|
||||
@config = Configuration.new
|
||||
@example_group = mock("example_group")
|
||||
end
|
||||
|
||||
describe "#mock_with" do
|
||||
|
||||
it "should default mock framework to rspec" do
|
||||
@config.mock_framework.should =~ /\/plugins\/mock_frameworks\/rspec$/
|
||||
end
|
||||
|
||||
it "should let you set rspec mocking explicitly" do
|
||||
@config.mock_with(:rspec)
|
||||
@config.mock_framework.should =~ /\/plugins\/mock_frameworks\/rspec$/
|
||||
end
|
||||
|
||||
it "should let you set mocha" do
|
||||
@config.mock_with(:mocha)
|
||||
@config.mock_framework.should =~ /\/plugins\/mock_frameworks\/mocha$/
|
||||
end
|
||||
|
||||
it "should let you set flexmock" do
|
||||
@config.mock_with(:flexmock)
|
||||
@config.mock_framework.should =~ /\/plugins\/mock_frameworks\/flexmock$/
|
||||
end
|
||||
|
||||
it "should let you set rr" do
|
||||
@config.mock_with(:rr)
|
||||
@config.mock_framework.should =~ /\/plugins\/mock_frameworks\/rr$/
|
||||
end
|
||||
|
||||
it "should let you set an arbitrary adapter module" do
|
||||
adapter = Module.new
|
||||
@config.mock_with(adapter)
|
||||
@config.mock_framework.should == adapter
|
||||
end
|
||||
end
|
||||
|
||||
describe "#include" do
|
||||
|
||||
before do
|
||||
@original_configuration = Spec::Runner.configuration
|
||||
spec_configuration = @config
|
||||
Spec::Runner.instance_eval {@configuration = spec_configuration}
|
||||
@example_group_class = Class.new(ExampleGroup) do
|
||||
class << self
|
||||
def this_class_has_special_methods
|
||||
end
|
||||
end
|
||||
end
|
||||
ExampleGroupFactory.register(:foobar, @example_group_class)
|
||||
end
|
||||
|
||||
after do
|
||||
original_configuration = @original_configuration
|
||||
Spec::Runner.instance_eval {@configuration = original_configuration}
|
||||
ExampleGroupFactory.reset
|
||||
end
|
||||
|
||||
it "should include the submitted module in ExampleGroup subclasses" do
|
||||
mod = Module.new
|
||||
@config.include mod
|
||||
Class.new(@example_group_class).included_modules.should include(mod)
|
||||
end
|
||||
|
||||
it "should let you define modules to be included for a specific type" do
|
||||
mod = Module.new
|
||||
@config.include mod, :type => :foobar
|
||||
Class.new(@example_group_class).included_modules.should include(mod)
|
||||
end
|
||||
|
||||
it "should not include modules in a type they are not intended for" do
|
||||
mod = Module.new
|
||||
@other_example_group_class = Class.new(ExampleGroup)
|
||||
ExampleGroupFactory.register(:baz, @other_example_group_class)
|
||||
|
||||
@config.include mod, :type => :foobar
|
||||
|
||||
Class.new(@other_example_group_class).included_modules.should_not include(mod)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe Configuration do
|
||||
|
||||
before(:each) do
|
||||
@config = Configuration.new
|
||||
@special_example_group = Class.new(ExampleGroup)
|
||||
@special_child_example_group = Class.new(@special_example_group)
|
||||
@nonspecial_example_group = Class.new(ExampleGroup)
|
||||
ExampleGroupFactory.register(:special, @special_example_group)
|
||||
ExampleGroupFactory.register(:special_child, @special_child_example_group)
|
||||
ExampleGroupFactory.register(:non_special, @nonspecial_example_group)
|
||||
@example_group = @special_child_example_group.describe "Special Example Group"
|
||||
@unselected_example_group = Class.new(@nonspecial_example_group).describe "Non Special Example Group"
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
ExampleGroupFactory.reset
|
||||
end
|
||||
|
||||
describe "#prepend_before" do
|
||||
it "prepends the before block on all instances of the passed in type" do
|
||||
order = []
|
||||
@config.prepend_before(:all) do
|
||||
order << :prepend__before_all
|
||||
end
|
||||
@config.prepend_before(:all, :type => :special) do
|
||||
order << :special_prepend__before_all
|
||||
end
|
||||
@config.prepend_before(:all, :type => :special_child) do
|
||||
order << :special_child_prepend__before_all
|
||||
end
|
||||
@config.prepend_before(:each) do
|
||||
order << :prepend__before_each
|
||||
end
|
||||
@config.prepend_before(:each, :type => :special) do
|
||||
order << :special_prepend__before_each
|
||||
end
|
||||
@config.prepend_before(:each, :type => :special_child) do
|
||||
order << :special_child_prepend__before_each
|
||||
end
|
||||
@config.prepend_before(:all, :type => :non_special) do
|
||||
order << :special_prepend__before_all
|
||||
end
|
||||
@config.prepend_before(:each, :type => :non_special) do
|
||||
order << :special_prepend__before_each
|
||||
end
|
||||
@example_group.it "calls prepend_before" do
|
||||
end
|
||||
|
||||
@example_group.run
|
||||
order.should == [
|
||||
:prepend__before_all,
|
||||
:special_prepend__before_all,
|
||||
:special_child_prepend__before_all,
|
||||
:prepend__before_each,
|
||||
:special_prepend__before_each,
|
||||
:special_child_prepend__before_each
|
||||
]
|
||||
end
|
||||
end
|
||||
|
||||
describe "#append_before" do
|
||||
|
||||
it "calls append_before on the type" do
|
||||
order = []
|
||||
@config.append_before(:all) do
|
||||
order << :append_before_all
|
||||
end
|
||||
@config.append_before(:all, :type => :special) do
|
||||
order << :special_append_before_all
|
||||
end
|
||||
@config.append_before(:all, :type => :special_child) do
|
||||
order << :special_child_append_before_all
|
||||
end
|
||||
@config.append_before(:each) do
|
||||
order << :append_before_each
|
||||
end
|
||||
@config.append_before(:each, :type => :special) do
|
||||
order << :special_append_before_each
|
||||
end
|
||||
@config.append_before(:each, :type => :special_child) do
|
||||
order << :special_child_append_before_each
|
||||
end
|
||||
@config.append_before(:all, :type => :non_special) do
|
||||
order << :special_append_before_all
|
||||
end
|
||||
@config.append_before(:each, :type => :non_special) do
|
||||
order << :special_append_before_each
|
||||
end
|
||||
@example_group.it "calls append_before" do
|
||||
end
|
||||
|
||||
@example_group.run
|
||||
order.should == [
|
||||
:append_before_all,
|
||||
:special_append_before_all,
|
||||
:special_child_append_before_all,
|
||||
:append_before_each,
|
||||
:special_append_before_each,
|
||||
:special_child_append_before_each
|
||||
]
|
||||
end
|
||||
end
|
||||
|
||||
describe "#prepend_after" do
|
||||
|
||||
it "prepends the after block on all instances of the passed in type" do
|
||||
order = []
|
||||
@config.prepend_after(:all) do
|
||||
order << :prepend__after_all
|
||||
end
|
||||
@config.prepend_after(:all, :type => :special) do
|
||||
order << :special_prepend__after_all
|
||||
end
|
||||
@config.prepend_after(:all, :type => :special) do
|
||||
order << :special_child_prepend__after_all
|
||||
end
|
||||
@config.prepend_after(:each) do
|
||||
order << :prepend__after_each
|
||||
end
|
||||
@config.prepend_after(:each, :type => :special) do
|
||||
order << :special_prepend__after_each
|
||||
end
|
||||
@config.prepend_after(:each, :type => :special) do
|
||||
order << :special_child_prepend__after_each
|
||||
end
|
||||
@config.prepend_after(:all, :type => :non_special) do
|
||||
order << :special_prepend__after_all
|
||||
end
|
||||
@config.prepend_after(:each, :type => :non_special) do
|
||||
order << :special_prepend__after_each
|
||||
end
|
||||
@example_group.it "calls prepend_after" do
|
||||
end
|
||||
|
||||
@example_group.run
|
||||
order.should == [
|
||||
:special_child_prepend__after_each,
|
||||
:special_prepend__after_each,
|
||||
:prepend__after_each,
|
||||
:special_child_prepend__after_all,
|
||||
:special_prepend__after_all,
|
||||
:prepend__after_all
|
||||
]
|
||||
end
|
||||
end
|
||||
|
||||
describe "#append_after" do
|
||||
|
||||
it "calls append_after on the type" do
|
||||
order = []
|
||||
@config.append_after(:all) do
|
||||
order << :append__after_all
|
||||
end
|
||||
@config.append_after(:all, :type => :special) do
|
||||
order << :special_append__after_all
|
||||
end
|
||||
@config.append_after(:all, :type => :special_child) do
|
||||
order << :special_child_append__after_all
|
||||
end
|
||||
@config.append_after(:each) do
|
||||
order << :append__after_each
|
||||
end
|
||||
@config.append_after(:each, :type => :special) do
|
||||
order << :special_append__after_each
|
||||
end
|
||||
@config.append_after(:each, :type => :special_child) do
|
||||
order << :special_child_append__after_each
|
||||
end
|
||||
@config.append_after(:all, :type => :non_special) do
|
||||
order << :non_special_append_after_all
|
||||
end
|
||||
@config.append_after(:each, :type => :non_special) do
|
||||
order << :non_special_append_after_each
|
||||
end
|
||||
@example_group.it "calls append_after" do
|
||||
end
|
||||
|
||||
@example_group.run
|
||||
order.should == [
|
||||
:special_child_append__after_each,
|
||||
:special_append__after_each,
|
||||
:append__after_each,
|
||||
:special_child_append__after_all,
|
||||
:special_append__after_all,
|
||||
:append__after_all
|
||||
]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
20
vendor/plugins/rspec/spec/spec/example/example_group/described_module_spec.rb
vendored
Normal file
20
vendor/plugins/rspec/spec/spec/example/example_group/described_module_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
require File.dirname(__FILE__) + "/../../../spec_helper"
|
||||
|
||||
module Spec
|
||||
module Example
|
||||
module AModule; end
|
||||
class AClass; end
|
||||
|
||||
describe "With", AModule do
|
||||
it "should have the described_type as 'AModule'" do
|
||||
self.class.described_module.should == AModule
|
||||
end
|
||||
end
|
||||
|
||||
describe "With", AClass do
|
||||
it "should have the described_module as nil" do
|
||||
self.class.described_module.should be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
76
vendor/plugins/rspec/spec/spec/example/example_group/warning_messages_spec.rb
vendored
Normal file
76
vendor/plugins/rspec/spec/spec/example/example_group/warning_messages_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
require File.dirname(__FILE__) + "/../../../spec_helper"
|
||||
|
||||
module Spec
|
||||
module Example
|
||||
module AModuleAutomaticallyIncluded
|
||||
def call_method
|
||||
@method_called = true
|
||||
return "a string"
|
||||
end
|
||||
|
||||
def method_called?
|
||||
@method_called ? true : false
|
||||
end
|
||||
end
|
||||
|
||||
describe "Including modules in an example group" do
|
||||
describe AModuleAutomaticallyIncluded do
|
||||
before :each do
|
||||
Kernel.stub!(:warn)
|
||||
end
|
||||
|
||||
it "should return the correct values" do
|
||||
self.method_called?.should be_false
|
||||
self.call_method.should eql("a string")
|
||||
self.method_called?.should be_true
|
||||
end
|
||||
|
||||
it "should respond_to? the methods from the module" do
|
||||
self.should respond_to(:method_called?)
|
||||
self.should respond_to(:call_method)
|
||||
end
|
||||
|
||||
it "should not respond_to? methods which do not come from the module (or are in Spec::ExampleGroup)" do
|
||||
self.should_not respond_to(:adsfadfadadf_a_method_which_does_not_exist)
|
||||
end
|
||||
|
||||
it "should respond_to? a method in Spec::ExampleGroup" do
|
||||
self.should respond_to(:describe)
|
||||
end
|
||||
|
||||
it "should issue a warning with Kernel.warn" do
|
||||
Kernel.should_receive(:warn)
|
||||
self.call_method
|
||||
end
|
||||
|
||||
it "should issue a warning when the example calls the method which is automatically included" do
|
||||
Kernel.should_receive(:warn).with("Modules will no longer be automatically included in RSpec version 1.1.4. Called from #{__FILE__}:#{__LINE__+1}")
|
||||
self.method_called?
|
||||
end
|
||||
|
||||
it "should issue a warning with the correct file and line numbers" do
|
||||
Kernel.should_receive(:warn).with("Modules will no longer be automatically included in RSpec version 1.1.4. Called from #{__FILE__}:#{__LINE__+1}")
|
||||
self.method_called?
|
||||
end
|
||||
end
|
||||
|
||||
describe AModuleAutomaticallyIncluded, "which is also manually included" do
|
||||
include AModuleAutomaticallyIncluded
|
||||
|
||||
before :each do
|
||||
Kernel.stub!(:warn)
|
||||
end
|
||||
|
||||
it "should respond to the methods since it is included" do
|
||||
self.should respond_to(:method_called?)
|
||||
self.should respond_to(:call_method)
|
||||
end
|
||||
|
||||
it "should not issue a warning, since the module is manually included" do
|
||||
Kernel.should_not_receive(:warn)
|
||||
self.method_called?
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
48
vendor/plugins/rspec/spec/spec/example/example_group_class_definition_spec.rb
vendored
Normal file
48
vendor/plugins/rspec/spec/spec/example/example_group_class_definition_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
module Spec
|
||||
module Example
|
||||
class ExampleGroupSubclass < ExampleGroup
|
||||
class << self
|
||||
attr_accessor :examples_ran
|
||||
end
|
||||
|
||||
@@klass_variable_set = true
|
||||
CONSTANT = :foobar
|
||||
|
||||
before do
|
||||
@instance_variable = :hello
|
||||
end
|
||||
|
||||
it "should run" do
|
||||
self.class.examples_ran = true
|
||||
end
|
||||
|
||||
it "should have access to instance variables" do
|
||||
@instance_variable.should == :hello
|
||||
end
|
||||
|
||||
it "should have access to class variables" do
|
||||
@@klass_variable_set.should == true
|
||||
end
|
||||
|
||||
it "should have access to constants" do
|
||||
CONSTANT.should == :foobar
|
||||
end
|
||||
|
||||
it "should have access to methods defined in the Example Group" do
|
||||
a_method.should == 22
|
||||
end
|
||||
|
||||
def a_method
|
||||
22
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleGroupSubclass do
|
||||
it "should run" do
|
||||
ExampleGroupSubclass.examples_ran.should be_true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
144
vendor/plugins/rspec/spec/spec/example/example_group_factory_spec.rb
vendored
Normal file
144
vendor/plugins/rspec/spec/spec/example/example_group_factory_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,144 @@
|
|||
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
||||
|
||||
module Spec
|
||||
module Example
|
||||
describe ExampleGroupFactory do
|
||||
describe "#get" do
|
||||
attr_reader :example_group
|
||||
before do
|
||||
@example_group = Class.new(ExampleGroup)
|
||||
ExampleGroupFactory.register(:registered_type, @example_group)
|
||||
end
|
||||
|
||||
after do
|
||||
ExampleGroupFactory.reset
|
||||
end
|
||||
|
||||
it "should #get the default ExampleGroup type when passed nil" do
|
||||
ExampleGroupFactory.get(nil).should == ExampleGroup
|
||||
end
|
||||
|
||||
it "should #get the default ExampleGroup for unregistered non-nil values" do
|
||||
ExampleGroupFactory.get(:does_not_exist).should == ExampleGroup
|
||||
end
|
||||
|
||||
it "should #get custom type for :registered_type" do
|
||||
ExampleGroupFactory.get(:registered_type).should == @example_group
|
||||
end
|
||||
|
||||
it "should #get the actual type when that is passed in" do
|
||||
ExampleGroupFactory.get(@example_group).should == @example_group
|
||||
end
|
||||
|
||||
it "should get the custom type after setting the default" do
|
||||
@example_group2 = Class.new(ExampleGroup)
|
||||
ExampleGroupFactory.default(@example_group2)
|
||||
ExampleGroupFactory.get(:registered_type).should == @example_group
|
||||
end
|
||||
end
|
||||
|
||||
describe "#create_example_group" do
|
||||
attr_reader :parent_example_group
|
||||
before do
|
||||
@parent_example_group = Class.new(ExampleGroup) do
|
||||
def initialize(*args, &block)
|
||||
;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
it "should create a uniquely named class" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group("example_group") {}
|
||||
example_group.name.should =~ /Spec::Example::ExampleGroup::Subclass_\d+/
|
||||
end
|
||||
|
||||
it "should create a Spec::Example::Example subclass by default" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group("example_group") {}
|
||||
example_group.superclass.should == Spec::Example::ExampleGroup
|
||||
end
|
||||
|
||||
describe "when :type => :default" do
|
||||
it "should create a Spec::Example::Example" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"example_group", :type => :default
|
||||
) {}
|
||||
example_group.superclass.should == Spec::Example::ExampleGroup
|
||||
end
|
||||
|
||||
it "should create a Spec::Example::Example" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"example_group", :type => :default
|
||||
) {}
|
||||
example_group.superclass.should == Spec::Example::ExampleGroup
|
||||
end
|
||||
end
|
||||
|
||||
describe "when :type => :something_other_than_default" do
|
||||
it "should create specified type" do
|
||||
Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
|
||||
non_default_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"example_group", :type => :something_other_than_default
|
||||
) {}
|
||||
non_default_example_group.superclass.should == parent_example_group
|
||||
end
|
||||
end
|
||||
|
||||
it "should create a type indicated by :spec_path" do
|
||||
Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
|
||||
custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"example_group", :spec_path => "./spec/something_other_than_default/some_spec.rb"
|
||||
) {}
|
||||
custom_example_group.superclass.should == parent_example_group
|
||||
end
|
||||
|
||||
it "should create a type indicated by :spec_path (with spec_path generated by caller on windows)" do
|
||||
Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
|
||||
custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"example_group",
|
||||
:spec_path => "./spec\\something_other_than_default\\some_spec.rb"
|
||||
) {}
|
||||
custom_example_group.superclass.should == parent_example_group
|
||||
end
|
||||
|
||||
describe "when :shared => true" do
|
||||
attr_reader :shared_example_group
|
||||
before do
|
||||
@shared_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"name", :spec_path => '/blah/spec/models/blah.rb', :type => :controller, :shared => true
|
||||
) {}
|
||||
end
|
||||
|
||||
it "should create and register a Spec::Example::Example" do
|
||||
shared_example_group.should be_an_instance_of(Spec::Example::SharedExampleGroup)
|
||||
SharedExampleGroup.shared_example_groups.should include(shared_example_group)
|
||||
end
|
||||
end
|
||||
|
||||
it "should favor the :type over the :spec_path" do
|
||||
Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
|
||||
custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"name", :spec_path => '/blah/spec/models/blah.rb', :type => :something_other_than_default
|
||||
) {}
|
||||
custom_example_group.superclass.should == parent_example_group
|
||||
end
|
||||
|
||||
it "should register ExampleGroup by default" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group("The ExampleGroup") do
|
||||
end
|
||||
rspec_options.example_groups.should include(example_group)
|
||||
end
|
||||
|
||||
it "should enable unregistering of ExampleGroups" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group("The ExampleGroup") do
|
||||
unregister
|
||||
end
|
||||
rspec_options.example_groups.should_not include(example_group)
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
Spec::Example::ExampleGroupFactory.reset
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
572
vendor/plugins/rspec/spec/spec/example/example_group_methods_spec.rb
vendored
Normal file
572
vendor/plugins/rspec/spec/spec/example/example_group_methods_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,572 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
module Spec
|
||||
module Example
|
||||
describe 'ExampleGroupMethods' do
|
||||
it_should_behave_like "sandboxed rspec_options"
|
||||
attr_reader :example_group, :result, :reporter
|
||||
before(:each) do
|
||||
options.formatters << mock("formatter", :null_object => true)
|
||||
options.backtrace_tweaker = mock("backtrace_tweaker", :null_object => true)
|
||||
@reporter = FakeReporter.new(@options)
|
||||
options.reporter = reporter
|
||||
@example_group = Class.new(ExampleGroup) do
|
||||
describe("ExampleGroup")
|
||||
it "does nothing"
|
||||
end
|
||||
class << example_group
|
||||
public :include
|
||||
end
|
||||
@result = nil
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
ExampleGroup.reset
|
||||
end
|
||||
|
||||
["describe","context"].each do |method|
|
||||
describe "#{method}" do
|
||||
describe "when creating an ExampleGroup" do
|
||||
attr_reader :child_example_group
|
||||
before do
|
||||
@child_example_group = @example_group.send method, "Another ExampleGroup" do
|
||||
it "should pass" do
|
||||
true.should be_true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
it "should create a subclass of the ExampleGroup when passed a block" do
|
||||
child_example_group.superclass.should == @example_group
|
||||
@options.example_groups.should include(child_example_group)
|
||||
end
|
||||
|
||||
it "should not inherit examples" do
|
||||
child_example_group.examples.length.should == 1
|
||||
end
|
||||
end
|
||||
|
||||
describe "when creating a SharedExampleGroup" do
|
||||
attr_reader :name, :shared_example_group
|
||||
before do
|
||||
@name = "A Shared ExampleGroup"
|
||||
@shared_example_group = @example_group.send method, name, :shared => true do
|
||||
it "should pass" do
|
||||
true.should be_true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
after do
|
||||
SharedExampleGroup.shared_example_groups.delete_if do |registered_shared_example_group|
|
||||
registered_shared_example_group == shared_example_group
|
||||
end
|
||||
end
|
||||
|
||||
it "should create a SharedExampleGroup" do
|
||||
SharedExampleGroup.find_shared_example_group(name).should == shared_example_group
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
describe "#it" do
|
||||
it "should should create an example instance" do
|
||||
lambda {
|
||||
@example_group.it("")
|
||||
}.should change { @example_group.examples.length }.by(1)
|
||||
end
|
||||
end
|
||||
|
||||
describe "#xit and #xspecify" do
|
||||
before(:each) do
|
||||
Kernel.stub!(:warn)
|
||||
end
|
||||
|
||||
it "should NOT create an example instance" do
|
||||
lambda {
|
||||
@example_group.xit("")
|
||||
}.should_not change(@example_group.examples, :length)
|
||||
|
||||
lambda {
|
||||
@example_group.xspecify("")
|
||||
}.should_not change(@example_group.examples, :length)
|
||||
end
|
||||
|
||||
it "should warn that it is disabled" do
|
||||
Kernel.should_receive(:warn).with("Example disabled: foo").twice
|
||||
@example_group.xit("foo")
|
||||
@example_group.xspecify("foo")
|
||||
end
|
||||
end
|
||||
|
||||
describe "#examples" do
|
||||
it "should have Examples" do
|
||||
example_group = Class.new(ExampleGroup) do
|
||||
describe('example')
|
||||
it "should pass" do
|
||||
1.should == 1
|
||||
end
|
||||
end
|
||||
example_group.examples.length.should == 1
|
||||
example_group.examples.first.description.should == "should pass"
|
||||
end
|
||||
|
||||
it "should not include methods that begin with test (only when TU interop is loaded)" do
|
||||
example_group = Class.new(ExampleGroup) do
|
||||
describe('example')
|
||||
def test_any_args(*args)
|
||||
true.should be_true
|
||||
end
|
||||
def test_something
|
||||
1.should == 1
|
||||
end
|
||||
def test
|
||||
raise "This is not a real test"
|
||||
end
|
||||
def testify
|
||||
raise "This is not a real test"
|
||||
end
|
||||
def should_something
|
||||
# forces the run
|
||||
end
|
||||
end
|
||||
example_group.examples.length.should == 1
|
||||
example_group.run.should be_true
|
||||
end
|
||||
|
||||
it "should include methods that begin with should and has an arity of 0 in suite" do
|
||||
example_group = Class.new(ExampleGroup) do
|
||||
describe('example')
|
||||
def shouldCamelCase
|
||||
true.should be_true
|
||||
end
|
||||
def should_any_args(*args)
|
||||
true.should be_true
|
||||
end
|
||||
def should_something
|
||||
1.should == 1
|
||||
end
|
||||
def should_not_something
|
||||
1.should_not == 2
|
||||
end
|
||||
def should
|
||||
raise "This is not a real example"
|
||||
end
|
||||
def should_not
|
||||
raise "This is not a real example"
|
||||
end
|
||||
end
|
||||
example_group = example_group.dup
|
||||
example_group.examples.length.should == 4
|
||||
descriptions = example_group.examples.collect {|example| example.description}.sort
|
||||
descriptions.should include("shouldCamelCase")
|
||||
descriptions.should include("should_any_args")
|
||||
descriptions.should include("should_something")
|
||||
descriptions.should include("should_not_something")
|
||||
end
|
||||
|
||||
it "should not include methods that begin with test_ and has an arity > 0 in suite" do
|
||||
example_group = Class.new(ExampleGroup) do
|
||||
describe('example')
|
||||
def test_invalid(foo)
|
||||
1.should == 1
|
||||
end
|
||||
def testInvalidCamelCase(foo)
|
||||
1.should == 1
|
||||
end
|
||||
end
|
||||
example_group.examples.length.should == 0
|
||||
end
|
||||
|
||||
it "should not include methods that begin with should_ and has an arity > 0 in suite" do
|
||||
example_group = Class.new(ExampleGroup) do
|
||||
describe('example')
|
||||
def should_invalid(foo)
|
||||
1.should == 2
|
||||
end
|
||||
def shouldInvalidCamelCase(foo)
|
||||
1.should == 3
|
||||
end
|
||||
def should_not_invalid(foo)
|
||||
1.should == 4
|
||||
end
|
||||
def should_valid
|
||||
1.should == 1
|
||||
end
|
||||
end
|
||||
example_group.examples.length.should == 1
|
||||
example_group.run.should be_true
|
||||
end
|
||||
|
||||
it "should run should_methods" do
|
||||
example_group = Class.new(ExampleGroup) do
|
||||
def should_valid
|
||||
1.should == 2
|
||||
end
|
||||
end
|
||||
example_group.examples.length.should == 1
|
||||
example_group.run.should be_false
|
||||
end
|
||||
end
|
||||
|
||||
describe "#set_description" do
|
||||
attr_reader :example_group
|
||||
before do
|
||||
class << example_group
|
||||
public :set_description
|
||||
end
|
||||
end
|
||||
|
||||
describe "#set_description(String)" do
|
||||
before(:each) do
|
||||
example_group.set_description("abc")
|
||||
end
|
||||
|
||||
specify ".description should return the String passed into .set_description" do
|
||||
example_group.description.should == "abc"
|
||||
end
|
||||
|
||||
specify ".described_type should provide nil as its type" do
|
||||
example_group.described_type.should be_nil
|
||||
end
|
||||
end
|
||||
|
||||
describe "#set_description(Type)" do
|
||||
before(:each) do
|
||||
example_group.set_description(ExampleGroup)
|
||||
end
|
||||
|
||||
specify ".description should return a String representation of that type (fully qualified) as its name" do
|
||||
example_group.description.should == "Spec::Example::ExampleGroup"
|
||||
end
|
||||
|
||||
specify ".described_type should return the passed in type" do
|
||||
example_group.described_type.should == Spec::Example::ExampleGroup
|
||||
end
|
||||
end
|
||||
|
||||
describe "#set_description(String, Type)" do
|
||||
before(:each) do
|
||||
example_group.set_description("behaving", ExampleGroup)
|
||||
end
|
||||
|
||||
specify ".description should return String then space then Type" do
|
||||
example_group.description.should == "behaving Spec::Example::ExampleGroup"
|
||||
end
|
||||
|
||||
specify ".described_type should return the passed in type" do
|
||||
example_group.described_type.should == Spec::Example::ExampleGroup
|
||||
end
|
||||
end
|
||||
|
||||
describe "#set_description(Type, String not starting with a space)" do
|
||||
before(:each) do
|
||||
example_group.set_description(ExampleGroup, "behaving")
|
||||
end
|
||||
|
||||
specify ".description should return the Type then space then String" do
|
||||
example_group.description.should == "Spec::Example::ExampleGroup behaving"
|
||||
end
|
||||
end
|
||||
|
||||
describe "#set_description(Type, String starting with .)" do
|
||||
before(:each) do
|
||||
example_group.set_description(ExampleGroup, ".behaving")
|
||||
end
|
||||
|
||||
specify ".description should return the Type then String" do
|
||||
example_group.description.should == "Spec::Example::ExampleGroup.behaving"
|
||||
end
|
||||
end
|
||||
|
||||
describe "#set_description(Type, String containing .)" do
|
||||
before(:each) do
|
||||
example_group.set_description(ExampleGroup, "calling a.b")
|
||||
end
|
||||
|
||||
specify ".description should return the Type then space then String" do
|
||||
example_group.description.should == "Spec::Example::ExampleGroup calling a.b"
|
||||
end
|
||||
end
|
||||
|
||||
describe "#set_description(Type, String starting with .)" do
|
||||
before(:each) do
|
||||
example_group.set_description(ExampleGroup, ".behaving")
|
||||
end
|
||||
|
||||
specify "should return the Type then String" do
|
||||
example_group.description.should == "Spec::Example::ExampleGroup.behaving"
|
||||
end
|
||||
end
|
||||
|
||||
describe "#set_description(Type, String containing .)" do
|
||||
before(:each) do
|
||||
example_group.set_description(ExampleGroup, "is #1")
|
||||
end
|
||||
|
||||
specify ".description should return the Type then space then String" do
|
||||
example_group.description.should == "Spec::Example::ExampleGroup is #1"
|
||||
end
|
||||
end
|
||||
|
||||
describe "#set_description(String, Type, String)" do
|
||||
before(:each) do
|
||||
example_group.set_description("A", Hash, "with one entry")
|
||||
end
|
||||
|
||||
specify ".description should return the first String then space then Type then second String" do
|
||||
example_group.description.should == "A Hash with one entry"
|
||||
end
|
||||
end
|
||||
|
||||
describe "#set_description(Hash representing options)" do
|
||||
before(:each) do
|
||||
example_group.set_description(:a => "b", :spec_path => "blah")
|
||||
end
|
||||
|
||||
it ".spec_path should expand the passed in :spec_path option passed into the constructor" do
|
||||
example_group.spec_path.should == File.expand_path("blah")
|
||||
end
|
||||
|
||||
it ".description_options should return all the options passed in" do
|
||||
example_group.description_options.should == {:a => "b", :spec_path => "blah"}
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
describe "#description" do
|
||||
it "should return the same description instance for each call" do
|
||||
example_group.description.should eql(example_group.description)
|
||||
end
|
||||
|
||||
it "should not add a space when description_text begins with #" do
|
||||
child_example_group = Class.new(example_group) do
|
||||
describe("#foobar", "Does something")
|
||||
end
|
||||
child_example_group.description.should == "ExampleGroup#foobar Does something"
|
||||
end
|
||||
|
||||
it "should not add a space when description_text begins with ." do
|
||||
child_example_group = Class.new(example_group) do
|
||||
describe(".foobar", "Does something")
|
||||
end
|
||||
child_example_group.description.should == "ExampleGroup.foobar Does something"
|
||||
end
|
||||
|
||||
it "should return the class name if nil" do
|
||||
example_group.set_description(nil)
|
||||
example_group.description.should =~ /Class:/
|
||||
end
|
||||
|
||||
it "should return the class name if nil" do
|
||||
example_group.set_description("")
|
||||
example_group.description.should =~ /Class:/
|
||||
end
|
||||
end
|
||||
|
||||
describe "#description_parts" do
|
||||
it "should return an Array of the current class description args" do
|
||||
example_group.description_parts.should == [example_group.description]
|
||||
end
|
||||
|
||||
it "should return an Array of the description args from each class in the hierarchy" do
|
||||
child_example_group = Class.new(example_group)
|
||||
child_example_group.describe("Child", ExampleGroup)
|
||||
child_example_group.description.should_not be_empty
|
||||
|
||||
grand_child_example_group = Class.new(child_example_group)
|
||||
grand_child_example_group.describe("GrandChild", ExampleGroup)
|
||||
grand_child_example_group.description.should_not be_empty
|
||||
|
||||
grand_child_example_group.description_parts.should == [
|
||||
"ExampleGroup",
|
||||
"Child",
|
||||
Spec::Example::ExampleGroup,
|
||||
"GrandChild",
|
||||
Spec::Example::ExampleGroup
|
||||
]
|
||||
end
|
||||
end
|
||||
|
||||
describe "#described_type" do
|
||||
it "should return passed in type" do
|
||||
child_example_group = Class.new(example_group) do
|
||||
describe Object
|
||||
end
|
||||
child_example_group.described_type.should == Object
|
||||
end
|
||||
|
||||
it "should return #described_type of superclass when no passed in type" do
|
||||
parent_example_group = Class.new(ExampleGroup) do
|
||||
describe Object, "#foobar"
|
||||
end
|
||||
child_example_group = Class.new(parent_example_group) do
|
||||
describe "not a type"
|
||||
end
|
||||
child_example_group.described_type.should == Object
|
||||
end
|
||||
end
|
||||
|
||||
describe "#remove_after" do
|
||||
it "should unregister a given after(:each) block" do
|
||||
after_all_ran = false
|
||||
@example_group.it("example") {}
|
||||
proc = Proc.new { after_all_ran = true }
|
||||
ExampleGroup.after(:each, &proc)
|
||||
@example_group.run
|
||||
after_all_ran.should be_true
|
||||
|
||||
after_all_ran = false
|
||||
ExampleGroup.remove_after(:each, &proc)
|
||||
@example_group.run
|
||||
after_all_ran.should be_false
|
||||
end
|
||||
end
|
||||
|
||||
describe "#include" do
|
||||
it "should have accessible class methods from included module" do
|
||||
mod1_method_called = false
|
||||
mod1 = Module.new do
|
||||
extend Spec::MetaClass
|
||||
class_methods = Module.new do
|
||||
define_method :mod1_method do
|
||||
mod1_method_called = true
|
||||
end
|
||||
end
|
||||
|
||||
metaclass.class_eval do
|
||||
define_method(:included) do |receiver|
|
||||
receiver.extend class_methods
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
mod2_method_called = false
|
||||
mod2 = Module.new do
|
||||
extend Spec::MetaClass
|
||||
class_methods = Module.new do
|
||||
define_method :mod2_method do
|
||||
mod2_method_called = true
|
||||
end
|
||||
end
|
||||
|
||||
metaclass.class_eval do
|
||||
define_method(:included) do |receiver|
|
||||
receiver.extend class_methods
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@example_group.include mod1, mod2
|
||||
|
||||
@example_group.mod1_method
|
||||
@example_group.mod2_method
|
||||
mod1_method_called.should be_true
|
||||
mod2_method_called.should be_true
|
||||
end
|
||||
end
|
||||
|
||||
describe "#number_of_examples" do
|
||||
it "should count number of specs" do
|
||||
proc do
|
||||
@example_group.it("one") {}
|
||||
@example_group.it("two") {}
|
||||
@example_group.it("three") {}
|
||||
@example_group.it("four") {}
|
||||
end.should change {@example_group.number_of_examples}.by(4)
|
||||
end
|
||||
end
|
||||
|
||||
describe "#class_eval" do
|
||||
it "should allow constants to be defined" do
|
||||
example_group = Class.new(ExampleGroup) do
|
||||
describe('example')
|
||||
FOO = 1
|
||||
it "should reference FOO" do
|
||||
FOO.should == 1
|
||||
end
|
||||
end
|
||||
example_group.run
|
||||
Object.const_defined?(:FOO).should == false
|
||||
end
|
||||
end
|
||||
|
||||
describe '#register' do
|
||||
it "should add ExampleGroup to set of ExampleGroups to be run" do
|
||||
options.example_groups.delete(example_group)
|
||||
options.example_groups.should_not include(example_group)
|
||||
|
||||
example_group.register {}
|
||||
options.example_groups.should include(example_group)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#unregister' do
|
||||
before do
|
||||
options.example_groups.should include(example_group)
|
||||
end
|
||||
|
||||
it "should remove ExampleGroup from set of ExampleGroups to be run" do
|
||||
example_group.unregister
|
||||
options.example_groups.should_not include(example_group)
|
||||
end
|
||||
end
|
||||
|
||||
describe "#registration_backtrace" do
|
||||
it "returns the backtrace of where the ExampleGroup was registered" do
|
||||
example_group = Class.new(ExampleGroup)
|
||||
example_group.registration_backtrace.join("\n").should include("#{__FILE__}:#{__LINE__-1}")
|
||||
end
|
||||
end
|
||||
|
||||
describe "#run" do
|
||||
it "should add_example_group if there are any examples to run" do
|
||||
example_group = Class.new(ExampleGroup) do
|
||||
it "should do something" do end
|
||||
end
|
||||
reporter.should_receive(:add_example_group)
|
||||
example_group.run
|
||||
end
|
||||
|
||||
it "should NOT add_example_group if there are no examples to run" do
|
||||
example_group = Class.new(ExampleGroup) do end
|
||||
reporter.should_not_receive(:add_example_group)
|
||||
example_group.run
|
||||
end
|
||||
end
|
||||
|
||||
describe "#matcher_class=" do
|
||||
it "should call new and matches? on the class used for matching examples" do
|
||||
example_group = Class.new(ExampleGroup) do
|
||||
it "should do something" do end
|
||||
class << self
|
||||
def specified_examples
|
||||
["something"]
|
||||
end
|
||||
def to_s
|
||||
"TestMatcher"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
matcher = mock("matcher")
|
||||
matcher.should_receive(:matches?).with(["something"]).any_number_of_times
|
||||
|
||||
matcher_class = Class.new
|
||||
matcher_class.should_receive(:new).with("TestMatcher", "should do something").twice.and_return(matcher)
|
||||
|
||||
begin
|
||||
ExampleGroupMethods.matcher_class = matcher_class
|
||||
|
||||
example_group.run
|
||||
ensure
|
||||
ExampleGroupMethods.matcher_class = ExampleMatcher
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
723
vendor/plugins/rspec/spec/spec/example/example_group_spec.rb
vendored
Normal file
723
vendor/plugins/rspec/spec/spec/example/example_group_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,723 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
module Spec
|
||||
module Example
|
||||
class ExampleModuleScopingSpec < ExampleGroup
|
||||
describe ExampleGroup, "via a class definition"
|
||||
|
||||
module Foo
|
||||
module Bar
|
||||
def self.loaded?
|
||||
true
|
||||
end
|
||||
end
|
||||
end
|
||||
include Foo
|
||||
|
||||
it "should understand module scoping" do
|
||||
Bar.should be_loaded
|
||||
end
|
||||
|
||||
@@foo = 1
|
||||
|
||||
it "should allow class variables to be defined" do
|
||||
@@foo.should == 1
|
||||
end
|
||||
end
|
||||
|
||||
class ExampleClassVariablePollutionSpec < ExampleGroup
|
||||
describe ExampleGroup, "via a class definition without a class variable"
|
||||
|
||||
it "should not retain class variables from other Example classes" do
|
||||
proc do
|
||||
@@foo
|
||||
end.should raise_error
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleGroup, "#pending" do
|
||||
it "should raise a Pending error when its block fails" do
|
||||
block_ran = false
|
||||
lambda {
|
||||
pending("something") do
|
||||
block_ran = true
|
||||
raise "something wrong with my example"
|
||||
end
|
||||
}.should raise_error(Spec::Example::ExamplePendingError, "something")
|
||||
block_ran.should == true
|
||||
end
|
||||
|
||||
it "should raise Spec::Example::PendingExampleFixedError when its block does not fail" do
|
||||
block_ran = false
|
||||
lambda {
|
||||
pending("something") do
|
||||
block_ran = true
|
||||
end
|
||||
}.should raise_error(Spec::Example::PendingExampleFixedError, "Expected pending 'something' to fail. No Error was raised.")
|
||||
block_ran.should == true
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleGroup, "#run with failure in example", :shared => true do
|
||||
it "should add an example failure to the TestResult" do
|
||||
example_group.run.should be_false
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleGroup, "#run" do
|
||||
it_should_behave_like "sandboxed rspec_options"
|
||||
attr_reader :example_group, :formatter, :reporter
|
||||
before :each do
|
||||
@formatter = mock("formatter", :null_object => true)
|
||||
options.formatters << formatter
|
||||
options.backtrace_tweaker = mock("backtrace_tweaker", :null_object => true)
|
||||
@reporter = FakeReporter.new(options)
|
||||
options.reporter = reporter
|
||||
@example_group = Class.new(ExampleGroup) do
|
||||
describe("example")
|
||||
it "does nothing" do
|
||||
end
|
||||
end
|
||||
class << example_group
|
||||
public :include
|
||||
end
|
||||
end
|
||||
|
||||
after :each do
|
||||
ExampleGroup.reset
|
||||
end
|
||||
|
||||
it "should not run when there are no examples" do
|
||||
example_group = Class.new(ExampleGroup) do
|
||||
describe("Foobar")
|
||||
end
|
||||
example_group.examples.should be_empty
|
||||
|
||||
reporter = mock("Reporter")
|
||||
reporter.should_not_receive(:add_example_group)
|
||||
example_group.run
|
||||
end
|
||||
|
||||
describe "when before_each fails" do
|
||||
before(:each) do
|
||||
$example_ran = $after_each_ran = false
|
||||
@example_group = describe("Foobar") do
|
||||
before(:each) {raise}
|
||||
it "should not be run" do
|
||||
$example_ran = true
|
||||
end
|
||||
after(:each) do
|
||||
$after_each_ran = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
it "should not run example block" do
|
||||
example_group.run
|
||||
$example_ran.should be_false
|
||||
end
|
||||
|
||||
it "should run after_each" do
|
||||
example_group.run
|
||||
$after_each_ran.should be_true
|
||||
end
|
||||
|
||||
it "should report failure location when in before_each" do
|
||||
reporter.should_receive(:example_finished) do |example_group, error|
|
||||
error.message.should eql("in before_each")
|
||||
end
|
||||
example_group.run
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleGroup, "#run on dry run" do
|
||||
before do
|
||||
@options.dry_run = true
|
||||
end
|
||||
|
||||
it "should not run before(:all) or after(:all)" do
|
||||
before_all_ran = false
|
||||
after_all_ran = false
|
||||
ExampleGroup.before(:all) { before_all_ran = true }
|
||||
ExampleGroup.after(:all) { after_all_ran = true }
|
||||
example_group.it("should") {}
|
||||
example_group.run
|
||||
before_all_ran.should be_false
|
||||
after_all_ran.should be_false
|
||||
end
|
||||
|
||||
it "should not run example" do
|
||||
example_ran = false
|
||||
example_group.it("should") {example_ran = true}
|
||||
example_group.run
|
||||
example_ran.should be_false
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleGroup, "#run with specified examples" do
|
||||
attr_reader :examples_that_were_run
|
||||
before do
|
||||
@examples_that_were_run = []
|
||||
end
|
||||
|
||||
describe "when specified_examples matches entire ExampleGroup" do
|
||||
before do
|
||||
examples_that_were_run = @examples_that_were_run
|
||||
@example_group = Class.new(ExampleGroup) do
|
||||
describe("the ExampleGroup")
|
||||
it("should be run") do
|
||||
examples_that_were_run << 'should be run'
|
||||
end
|
||||
|
||||
it("should also be run") do
|
||||
examples_that_were_run << 'should also be run'
|
||||
end
|
||||
end
|
||||
options.examples = ["the ExampleGroup"]
|
||||
end
|
||||
|
||||
it "should not run the Examples in the ExampleGroup" do
|
||||
example_group.run
|
||||
examples_that_were_run.should == ['should be run', 'should also be run']
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleGroup, "#run when specified_examples matches only Example description" do
|
||||
before do
|
||||
examples_that_were_run = @examples_that_were_run
|
||||
@example_group = Class.new(ExampleGroup) do
|
||||
describe("example")
|
||||
it("should be run") do
|
||||
examples_that_were_run << 'should be run'
|
||||
end
|
||||
end
|
||||
options.examples = ["should be run"]
|
||||
end
|
||||
|
||||
it "should not run the example" do
|
||||
example_group.run
|
||||
examples_that_were_run.should == ['should be run']
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleGroup, "#run when specified_examples does not match an Example description" do
|
||||
before do
|
||||
examples_that_were_run = @examples_that_were_run
|
||||
@example_group = Class.new(ExampleGroup) do
|
||||
describe("example")
|
||||
it("should be something else") do
|
||||
examples_that_were_run << 'should be something else'
|
||||
end
|
||||
end
|
||||
options.examples = ["does not match anything"]
|
||||
end
|
||||
|
||||
it "should not run the example" do
|
||||
example_group.run
|
||||
examples_that_were_run.should == []
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleGroup, "#run when specified_examples matches an Example description" do
|
||||
before do
|
||||
examples_that_were_run = @examples_that_were_run
|
||||
@example_group = Class.new(ExampleGroup) do
|
||||
describe("example")
|
||||
it("should be run") do
|
||||
examples_that_were_run << 'should be run'
|
||||
end
|
||||
it("should not be run") do
|
||||
examples_that_were_run << 'should not be run'
|
||||
end
|
||||
end
|
||||
options.examples = ["should be run"]
|
||||
end
|
||||
|
||||
it "should run only the example, when there in only one" do
|
||||
example_group.run
|
||||
examples_that_were_run.should == ["should be run"]
|
||||
end
|
||||
|
||||
it "should run only the one example" do
|
||||
example_group.run
|
||||
examples_that_were_run.should == ["should be run"] end
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleGroup, "#run with success" do
|
||||
before do
|
||||
@special_example_group = Class.new(ExampleGroup)
|
||||
ExampleGroupFactory.register(:special, @special_example_group)
|
||||
@not_special_example_group = Class.new(ExampleGroup)
|
||||
ExampleGroupFactory.register(:not_special, @not_special_example_group)
|
||||
end
|
||||
|
||||
after do
|
||||
ExampleGroupFactory.reset
|
||||
end
|
||||
|
||||
it "should send reporter add_example_group" do
|
||||
example_group.run
|
||||
reporter.example_groups.should == [example_group]
|
||||
end
|
||||
|
||||
it "should run example on run" do
|
||||
example_ran = false
|
||||
example_group.it("should") {example_ran = true}
|
||||
example_group.run
|
||||
example_ran.should be_true
|
||||
end
|
||||
|
||||
it "should run before(:all) block only once" do
|
||||
before_all_run_count_run_count = 0
|
||||
example_group.before(:all) {before_all_run_count_run_count += 1}
|
||||
example_group.it("test") {true}
|
||||
example_group.it("test2") {true}
|
||||
example_group.run
|
||||
before_all_run_count_run_count.should == 1
|
||||
end
|
||||
|
||||
it "should run after(:all) block only once" do
|
||||
after_all_run_count = 0
|
||||
example_group.after(:all) {after_all_run_count += 1}
|
||||
example_group.it("test") {true}
|
||||
example_group.it("test2") {true}
|
||||
example_group.run
|
||||
after_all_run_count.should == 1
|
||||
@reporter.rspec_verify
|
||||
end
|
||||
|
||||
it "after(:all) should have access to all instance variables defined in before(:all)" do
|
||||
context_instance_value_in = "Hello there"
|
||||
context_instance_value_out = ""
|
||||
example_group.before(:all) { @instance_var = context_instance_value_in }
|
||||
example_group.after(:all) { context_instance_value_out = @instance_var }
|
||||
example_group.it("test") {true}
|
||||
example_group.run
|
||||
context_instance_value_in.should == context_instance_value_out
|
||||
end
|
||||
|
||||
it "should copy instance variables from before(:all)'s execution context into spec's execution context" do
|
||||
context_instance_value_in = "Hello there"
|
||||
context_instance_value_out = ""
|
||||
example_group.before(:all) { @instance_var = context_instance_value_in }
|
||||
example_group.it("test") {context_instance_value_out = @instance_var}
|
||||
example_group.run
|
||||
context_instance_value_in.should == context_instance_value_out
|
||||
end
|
||||
|
||||
it "should not add global before callbacks for untargetted example_group" do
|
||||
fiddle = []
|
||||
|
||||
ExampleGroup.before(:all) { fiddle << "Example.before(:all)" }
|
||||
ExampleGroup.prepend_before(:all) { fiddle << "Example.prepend_before(:all)" }
|
||||
@special_example_group.before(:each) { fiddle << "Example.before(:each, :type => :special)" }
|
||||
@special_example_group.prepend_before(:each) { fiddle << "Example.prepend_before(:each, :type => :special)" }
|
||||
@special_example_group.before(:all) { fiddle << "Example.before(:all, :type => :special)" }
|
||||
@special_example_group.prepend_before(:all) { fiddle << "Example.prepend_before(:all, :type => :special)" }
|
||||
|
||||
example_group = Class.new(ExampleGroup) do
|
||||
describe("I'm not special", :type => :not_special)
|
||||
it "does nothing"
|
||||
end
|
||||
example_group.run
|
||||
fiddle.should == [
|
||||
'Example.prepend_before(:all)',
|
||||
'Example.before(:all)',
|
||||
]
|
||||
end
|
||||
|
||||
it "should add global before callbacks for targetted example_groups" do
|
||||
fiddle = []
|
||||
|
||||
ExampleGroup.before(:all) { fiddle << "Example.before(:all)" }
|
||||
ExampleGroup.prepend_before(:all) { fiddle << "Example.prepend_before(:all)" }
|
||||
@special_example_group.before(:each) { fiddle << "special.before(:each, :type => :special)" }
|
||||
@special_example_group.prepend_before(:each) { fiddle << "special.prepend_before(:each, :type => :special)" }
|
||||
@special_example_group.before(:all) { fiddle << "special.before(:all, :type => :special)" }
|
||||
@special_example_group.prepend_before(:all) { fiddle << "special.prepend_before(:all, :type => :special)" }
|
||||
@special_example_group.append_before(:each) { fiddle << "special.append_before(:each, :type => :special)" }
|
||||
|
||||
example_group = Class.new(@special_example_group).describe("I'm a special example_group") {}
|
||||
example_group.it("test") {true}
|
||||
example_group.run
|
||||
fiddle.should == [
|
||||
'Example.prepend_before(:all)',
|
||||
'Example.before(:all)',
|
||||
'special.prepend_before(:all, :type => :special)',
|
||||
'special.before(:all, :type => :special)',
|
||||
'special.prepend_before(:each, :type => :special)',
|
||||
'special.before(:each, :type => :special)',
|
||||
'special.append_before(:each, :type => :special)',
|
||||
]
|
||||
end
|
||||
|
||||
it "should order before callbacks from global to local" do
|
||||
fiddle = []
|
||||
ExampleGroup.prepend_before(:all) { fiddle << "Example.prepend_before(:all)" }
|
||||
ExampleGroup.before(:all) { fiddle << "Example.before(:all)" }
|
||||
example_group.prepend_before(:all) { fiddle << "prepend_before(:all)" }
|
||||
example_group.before(:all) { fiddle << "before(:all)" }
|
||||
example_group.prepend_before(:each) { fiddle << "prepend_before(:each)" }
|
||||
example_group.before(:each) { fiddle << "before(:each)" }
|
||||
example_group.run
|
||||
fiddle.should == [
|
||||
'Example.prepend_before(:all)',
|
||||
'Example.before(:all)',
|
||||
'prepend_before(:all)',
|
||||
'before(:all)',
|
||||
'prepend_before(:each)',
|
||||
'before(:each)'
|
||||
]
|
||||
end
|
||||
|
||||
it "should order after callbacks from local to global" do
|
||||
fiddle = []
|
||||
example_group.after(:each) { fiddle << "after(:each)" }
|
||||
example_group.append_after(:each) { fiddle << "append_after(:each)" }
|
||||
example_group.after(:all) { fiddle << "after(:all)" }
|
||||
example_group.append_after(:all) { fiddle << "append_after(:all)" }
|
||||
ExampleGroup.after(:all) { fiddle << "Example.after(:all)" }
|
||||
ExampleGroup.append_after(:all) { fiddle << "Example.append_after(:all)" }
|
||||
example_group.run
|
||||
fiddle.should == [
|
||||
'after(:each)',
|
||||
'append_after(:each)',
|
||||
'after(:all)',
|
||||
'append_after(:all)',
|
||||
'Example.after(:all)',
|
||||
'Example.append_after(:all)'
|
||||
]
|
||||
end
|
||||
|
||||
it "should have accessible instance methods from included module" do
|
||||
mod1_method_called = false
|
||||
mod1 = Module.new do
|
||||
define_method :mod1_method do
|
||||
mod1_method_called = true
|
||||
end
|
||||
end
|
||||
|
||||
mod2_method_called = false
|
||||
mod2 = Module.new do
|
||||
define_method :mod2_method do
|
||||
mod2_method_called = true
|
||||
end
|
||||
end
|
||||
|
||||
example_group.include mod1, mod2
|
||||
|
||||
example_group.it("test") do
|
||||
mod1_method
|
||||
mod2_method
|
||||
end
|
||||
example_group.run
|
||||
mod1_method_called.should be_true
|
||||
mod2_method_called.should be_true
|
||||
end
|
||||
|
||||
it "should include targetted modules included using configuration" do
|
||||
mod1 = Module.new
|
||||
mod2 = Module.new
|
||||
mod3 = Module.new
|
||||
Spec::Runner.configuration.include(mod1, mod2)
|
||||
Spec::Runner.configuration.include(mod3, :type => :not_special)
|
||||
|
||||
example_group = Class.new(@special_example_group).describe("I'm special", :type => :special) do
|
||||
it "does nothing"
|
||||
end
|
||||
example_group.run
|
||||
|
||||
example_group.included_modules.should include(mod1)
|
||||
example_group.included_modules.should include(mod2)
|
||||
example_group.included_modules.should_not include(mod3)
|
||||
end
|
||||
|
||||
it "should include any predicate_matchers included using configuration" do
|
||||
$included_predicate_matcher_found = false
|
||||
Spec::Runner.configuration.predicate_matchers[:do_something] = :does_something?
|
||||
example_group = Class.new(ExampleGroup) do
|
||||
describe('example')
|
||||
it "should respond to do_something" do
|
||||
$included_predicate_matcher_found = respond_to?(:do_something)
|
||||
end
|
||||
end
|
||||
example_group.run
|
||||
$included_predicate_matcher_found.should be(true)
|
||||
end
|
||||
|
||||
it "should use a mock framework set up in config" do
|
||||
mod = Module.new do
|
||||
class << self
|
||||
def included(mod)
|
||||
$included_module = mod
|
||||
end
|
||||
end
|
||||
|
||||
def teardown_mocks_for_rspec
|
||||
$torn_down = true
|
||||
end
|
||||
end
|
||||
|
||||
begin
|
||||
$included_module = nil
|
||||
$torn_down = true
|
||||
Spec::Runner.configuration.mock_with mod
|
||||
|
||||
example_group = Class.new(ExampleGroup) do
|
||||
describe('example')
|
||||
it "does nothing"
|
||||
end
|
||||
example_group.run
|
||||
|
||||
$included_module.should_not be_nil
|
||||
$torn_down.should == true
|
||||
ensure
|
||||
Spec::Runner.configuration.mock_with :rspec
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleGroup, "#run with pending example that has a failing assertion" do
|
||||
before do
|
||||
example_group.it("should be pending") do
|
||||
pending("Example fails") {false.should be_true}
|
||||
end
|
||||
end
|
||||
|
||||
it "should send example_pending to formatter" do
|
||||
@formatter.should_receive(:example_pending).with("example", "should be pending", "Example fails")
|
||||
example_group.run
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleGroup, "#run with pending example that does not have a failing assertion" do
|
||||
it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
|
||||
|
||||
before do
|
||||
example_group.it("should be pending") do
|
||||
pending("Example passes") {true.should be_true}
|
||||
end
|
||||
end
|
||||
|
||||
it "should send example_pending to formatter" do
|
||||
@formatter.should_receive(:example_pending).with("example", "should be pending", "Example passes")
|
||||
example_group.run
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleGroup, "#run when before(:all) fails" do
|
||||
it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
|
||||
|
||||
before do
|
||||
ExampleGroup.before(:all) { raise NonStandardError, "before(:all) failure" }
|
||||
end
|
||||
|
||||
it "should not run any example" do
|
||||
spec_ran = false
|
||||
example_group.it("test") {spec_ran = true}
|
||||
example_group.run
|
||||
spec_ran.should be_false
|
||||
end
|
||||
|
||||
it "should run ExampleGroup after(:all)" do
|
||||
after_all_ran = false
|
||||
ExampleGroup.after(:all) { after_all_ran = true }
|
||||
example_group.run
|
||||
after_all_ran.should be_true
|
||||
end
|
||||
|
||||
it "should run example_group after(:all)" do
|
||||
after_all_ran = false
|
||||
example_group.after(:all) { after_all_ran = true }
|
||||
example_group.run
|
||||
after_all_ran.should be_true
|
||||
end
|
||||
|
||||
it "should supply before(:all) as description" do
|
||||
@reporter.should_receive(:failure) do |example, error|
|
||||
example.description.should eql("before(:all)")
|
||||
error.message.should eql("before(:all) failure")
|
||||
end
|
||||
|
||||
example_group.it("test") {true}
|
||||
example_group.run
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleGroup, "#run when before(:each) fails" do
|
||||
it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
|
||||
|
||||
before do
|
||||
ExampleGroup.before(:each) { raise NonStandardError }
|
||||
end
|
||||
|
||||
it "should run after(:all)" do
|
||||
after_all_ran = false
|
||||
ExampleGroup.after(:all) { after_all_ran = true }
|
||||
example_group.run
|
||||
after_all_ran.should be_true
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleGroup, "#run when any example fails" do
|
||||
it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
|
||||
|
||||
before do
|
||||
example_group.it("should") { raise NonStandardError }
|
||||
end
|
||||
|
||||
it "should run after(:all)" do
|
||||
after_all_ran = false
|
||||
ExampleGroup.after(:all) { after_all_ran = true }
|
||||
example_group.run
|
||||
after_all_ran.should be_true
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleGroup, "#run when first after(:each) block fails" do
|
||||
it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
|
||||
|
||||
before do
|
||||
class << example_group
|
||||
attr_accessor :first_after_ran, :second_after_ran
|
||||
end
|
||||
example_group.first_after_ran = false
|
||||
example_group.second_after_ran = false
|
||||
|
||||
example_group.after(:each) do
|
||||
self.class.second_after_ran = true
|
||||
end
|
||||
example_group.after(:each) do
|
||||
self.class.first_after_ran = true
|
||||
raise "first"
|
||||
end
|
||||
end
|
||||
|
||||
it "should run second after(:each) block" do
|
||||
reporter.should_receive(:example_finished) do |example, error|
|
||||
example.should equal(example)
|
||||
error.message.should eql("first")
|
||||
end
|
||||
example_group.run
|
||||
example_group.first_after_ran.should be_true
|
||||
example_group.second_after_ran.should be_true
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleGroup, "#run when first before(:each) block fails" do
|
||||
it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
|
||||
|
||||
before do
|
||||
class << example_group
|
||||
attr_accessor :first_before_ran, :second_before_ran
|
||||
end
|
||||
example_group.first_before_ran = false
|
||||
example_group.second_before_ran = false
|
||||
|
||||
example_group.before(:each) do
|
||||
self.class.first_before_ran = true
|
||||
raise "first"
|
||||
end
|
||||
example_group.before(:each) do
|
||||
self.class.second_before_ran = true
|
||||
end
|
||||
end
|
||||
|
||||
it "should not run second before(:each)" do
|
||||
reporter.should_receive(:example_finished) do |name, error|
|
||||
error.message.should eql("first")
|
||||
end
|
||||
example_group.run
|
||||
example_group.first_before_ran.should be_true
|
||||
example_group.second_before_ran.should be_false
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleGroup, "#run when failure in after(:all)" do
|
||||
it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
|
||||
|
||||
before do
|
||||
ExampleGroup.after(:all) { raise NonStandardError, "in after(:all)" }
|
||||
end
|
||||
|
||||
it "should return false" do
|
||||
example_group.run.should be_false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class ExampleSubclass < ExampleGroup
|
||||
end
|
||||
|
||||
describe ExampleGroup, "subclasses" do
|
||||
after do
|
||||
ExampleGroupFactory.reset
|
||||
end
|
||||
|
||||
it "should have access to the described_type" do
|
||||
example_group = Class.new(ExampleSubclass) do
|
||||
describe(Array)
|
||||
end
|
||||
example_group.send(:described_type).should == Array
|
||||
end
|
||||
|
||||
it "should concat descriptions when nested" do
|
||||
example_group = Class.new(ExampleSubclass) do
|
||||
describe(Array)
|
||||
$nested_group = describe("when empty") do
|
||||
end
|
||||
end
|
||||
$nested_group.description.to_s.should == "Array when empty"
|
||||
end
|
||||
end
|
||||
|
||||
describe Enumerable do
|
||||
before(:each) do
|
||||
Kernel.stub!(:warn)
|
||||
end
|
||||
|
||||
def each(&block)
|
||||
["4", "2", "1"].each(&block)
|
||||
end
|
||||
|
||||
it "should be included in examples because it is a module" do
|
||||
map{|e| e.to_i}.should == [4,2,1]
|
||||
end
|
||||
end
|
||||
|
||||
describe "An", Enumerable, "as a second argument" do
|
||||
before(:each) do
|
||||
Kernel.stub!(:warn)
|
||||
end
|
||||
|
||||
def each(&block)
|
||||
["4", "2", "1"].each(&block)
|
||||
end
|
||||
|
||||
it "should be included in examples because it is a module" do
|
||||
map{|e| e.to_i}.should == [4,2,1]
|
||||
end
|
||||
end
|
||||
|
||||
describe Enumerable do
|
||||
describe "as the parent of nested example groups" do
|
||||
before(:each) do
|
||||
Kernel.stub!(:warn)
|
||||
end
|
||||
|
||||
it "should be included in examples because it is a module" do
|
||||
pending("need to make sure nested groups know the described type") do
|
||||
map{|e| e.to_i}.should == [4,2,1]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe String do
|
||||
it "should not be included in examples because it is not a module" do
|
||||
lambda{self.map}.should raise_error(NoMethodError, /undefined method `map' for/)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
96
vendor/plugins/rspec/spec/spec/example/example_matcher_spec.rb
vendored
Normal file
96
vendor/plugins/rspec/spec/spec/example/example_matcher_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Example
|
||||
module ExampleMatcherSpecHelper
|
||||
class MatchDescription
|
||||
def initialize(description)
|
||||
@description = description
|
||||
end
|
||||
|
||||
def matches?(matcher)
|
||||
matcher.matches?(@description)
|
||||
end
|
||||
|
||||
def failure_message
|
||||
"expected matcher.matches?(#{@description.inspect}) to return true, got false"
|
||||
end
|
||||
|
||||
def negative_failure_message
|
||||
"expected matcher.matches?(#{@description.inspect}) to return false, got true"
|
||||
end
|
||||
end
|
||||
def match_description(description)
|
||||
MatchDescription.new(description)
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleMatcher, "#matches?" do
|
||||
include ExampleMatcherSpecHelper
|
||||
|
||||
it "should match correct example_group and example" do
|
||||
matcher = ExampleMatcher.new("example_group", "example")
|
||||
matcher.should match_description("example_group example")
|
||||
end
|
||||
|
||||
it "should not match wrong example" do
|
||||
matcher = ExampleMatcher.new("example_group", "other example")
|
||||
matcher.should_not match_description("example_group example")
|
||||
end
|
||||
|
||||
it "should not match wrong example_group" do
|
||||
matcher = ExampleMatcher.new("other example_group", "example")
|
||||
matcher.should_not match_description("example_group example")
|
||||
end
|
||||
|
||||
it "should match example only" do
|
||||
matcher = ExampleMatcher.new("example_group", "example")
|
||||
matcher.should match_description("example")
|
||||
end
|
||||
|
||||
it "should match example_group only" do
|
||||
matcher = ExampleMatcher.new("example_group", "example")
|
||||
matcher.should match_description("example_group")
|
||||
end
|
||||
|
||||
it "should match example_group ending with before(:all)" do
|
||||
matcher = ExampleMatcher.new("example_group", "example")
|
||||
matcher.should match_description("example_group before(:all)")
|
||||
end
|
||||
|
||||
it "should escape regexp chars" do
|
||||
matcher = ExampleMatcher.new("(con|text)", "[example]")
|
||||
matcher.should_not match_description("con p")
|
||||
end
|
||||
|
||||
it "should match when example_group is modularized" do
|
||||
matcher = ExampleMatcher.new("MyModule::MyClass", "example")
|
||||
matcher.should match_description("MyClass example")
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleMatcher, "#matches? normal case" do
|
||||
it "matches when passed in example matches" do
|
||||
matcher = ExampleMatcher.new("Foo", "bar")
|
||||
matcher.matches?(["no match", "Foo bar"]).should == true
|
||||
end
|
||||
|
||||
it "does not match when no passed in examples match" do
|
||||
matcher = ExampleMatcher.new("Foo", "bar")
|
||||
matcher.matches?(["no match1", "no match2"]).should == false
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleMatcher, "#matches? where description has '::' in it" do
|
||||
it "matches when passed in example matches" do
|
||||
matcher = ExampleMatcher.new("Foo::Bar", "baz")
|
||||
matcher.matches?(["no match", "Foo::Bar baz"]).should == true
|
||||
end
|
||||
|
||||
it "does not match when no passed in examples match" do
|
||||
matcher = ExampleMatcher.new("Foo::Bar", "baz")
|
||||
matcher.matches?(["no match1", "no match2"]).should == false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
126
vendor/plugins/rspec/spec/spec/example/example_methods_spec.rb
vendored
Normal file
126
vendor/plugins/rspec/spec/spec/example/example_methods_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
module Spec
|
||||
module Example
|
||||
module ModuleThatIsReopened
|
||||
end
|
||||
|
||||
module ExampleMethods
|
||||
include ModuleThatIsReopened
|
||||
end
|
||||
|
||||
module ModuleThatIsReopened
|
||||
def module_that_is_reopened_method
|
||||
end
|
||||
end
|
||||
|
||||
describe ExampleMethods do
|
||||
describe "with an included module that is reopened" do
|
||||
it "should have repoened methods" do
|
||||
method(:module_that_is_reopened_method).should_not be_nil
|
||||
end
|
||||
end
|
||||
|
||||
describe "lifecycle" do
|
||||
before do
|
||||
@original_rspec_options = $rspec_options
|
||||
@options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
|
||||
$rspec_options = @options
|
||||
@options.formatters << mock("formatter", :null_object => true)
|
||||
@options.backtrace_tweaker = mock("backtrace_tweaker", :null_object => true)
|
||||
@reporter = FakeReporter.new(@options)
|
||||
@options.reporter = @reporter
|
||||
|
||||
ExampleMethods.before_all_parts.should == []
|
||||
ExampleMethods.before_each_parts.should == []
|
||||
ExampleMethods.after_each_parts.should == []
|
||||
ExampleMethods.after_all_parts.should == []
|
||||
def ExampleMethods.count
|
||||
@count ||= 0
|
||||
@count = @count + 1
|
||||
@count
|
||||
end
|
||||
end
|
||||
|
||||
after do
|
||||
$rspec_options = @original_rspec_options
|
||||
ExampleMethods.instance_variable_set("@before_all_parts", [])
|
||||
ExampleMethods.instance_variable_set("@before_each_parts", [])
|
||||
ExampleMethods.instance_variable_set("@after_each_parts", [])
|
||||
ExampleMethods.instance_variable_set("@after_all_parts", [])
|
||||
end
|
||||
|
||||
it "should pass before and after callbacks to all ExampleGroup subclasses" do
|
||||
ExampleMethods.before(:suite) do
|
||||
ExampleMethods.count.should == 1
|
||||
end
|
||||
|
||||
ExampleMethods.before(:all) do
|
||||
ExampleMethods.count.should == 2
|
||||
end
|
||||
|
||||
ExampleMethods.before(:each) do
|
||||
ExampleMethods.count.should == 3
|
||||
end
|
||||
|
||||
ExampleMethods.after(:each) do
|
||||
ExampleMethods.count.should == 4
|
||||
end
|
||||
|
||||
ExampleMethods.after(:all) do
|
||||
ExampleMethods.count.should == 5
|
||||
end
|
||||
|
||||
ExampleMethods.after(:suite) do
|
||||
ExampleMethods.count.should == 6
|
||||
end
|
||||
|
||||
@example_group = Class.new(ExampleGroup) do
|
||||
it "should use ExampleMethods callbacks" do
|
||||
end
|
||||
end
|
||||
@options.run_examples
|
||||
ExampleMethods.count.should == 7
|
||||
end
|
||||
|
||||
describe "run_with_description_capturing" do
|
||||
before(:each) do
|
||||
@example_group = Class.new(ExampleGroup) do end
|
||||
@example = @example_group.new("foo", &(lambda { 2.should == 2 }))
|
||||
@example.run_with_description_capturing
|
||||
end
|
||||
|
||||
it "should provide the generated description" do
|
||||
@example.instance_eval { @_matcher_description }.should == "should == 2"
|
||||
end
|
||||
|
||||
it "should clear the global generated_description" do
|
||||
Spec::Matchers.generated_description.should == nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#implementation_backtrace" do
|
||||
it "returns the backtrace of where the implementation was defined" do
|
||||
example_group = Class.new(ExampleGroup) do
|
||||
it "should use ExampleMethods callbacks" do
|
||||
end
|
||||
end
|
||||
example = example_group.examples.first
|
||||
example.implementation_backtrace.join("\n").should include("#{__FILE__}:#{__LINE__-4}")
|
||||
end
|
||||
end
|
||||
|
||||
describe "#__full_description" do
|
||||
it "should return the full description of the ExampleGroup and Example" do
|
||||
example_group = Class.new(ExampleGroup).describe("An ExampleGroup") do
|
||||
it "should do something" do
|
||||
end
|
||||
end
|
||||
example = example_group.examples.first
|
||||
example.__full_description.should == "An ExampleGroup should do something"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
194
vendor/plugins/rspec/spec/spec/example/example_runner_spec.rb
vendored
Normal file
194
vendor/plugins/rspec/spec/spec/example/example_runner_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,194 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Example
|
||||
# describe "Spec::Example::ExampleRunner", "#run", :shared => true do
|
||||
# before(:each) do
|
||||
# @options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
|
||||
# @reporter = ::Spec::Runner::Reporter.new(@options)
|
||||
# @options.reporter = @reporter
|
||||
# @example_group_class = Class.new(ExampleGroup) do
|
||||
# plugin_mock_framework
|
||||
# describe("Some Examples")
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# def create_runner(example_definition)
|
||||
# example = @example_group_class.new(example_definition)
|
||||
# runner = ExampleGroup.new(@options, example)
|
||||
# runner.stub!(:verify_mocks)
|
||||
# runner.stub!(:teardown_mocks)
|
||||
# runner
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# describe ExampleRunner, "#run with blank passing example" do
|
||||
# it_should_behave_like "Spec::Example::ExampleRunner#run"
|
||||
#
|
||||
# before do
|
||||
# @e = @example_group_class.it("example") {}
|
||||
# @runner = create_runner(@e)
|
||||
# end
|
||||
#
|
||||
# it "should send reporter example_started" do
|
||||
# @reporter.should_receive(:example_started).with(equal(@e))
|
||||
# @runner.run
|
||||
# end
|
||||
#
|
||||
# it "should report its name for dry run" do
|
||||
# @options.dry_run = true
|
||||
# @reporter.should_receive(:example_finished).with(equal(@e), nil)
|
||||
# @runner.run
|
||||
# end
|
||||
#
|
||||
# it "should report success" do
|
||||
# @reporter.should_receive(:example_finished).with(equal(@e), nil)
|
||||
# @runner.run
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# describe ExampleRunner, "#run with a failing example" do
|
||||
# predicate_matchers[:is_a] = [:is_a?]
|
||||
# it_should_behave_like "Spec::Example::ExampleRunner#run"
|
||||
#
|
||||
# before do
|
||||
# @e = @example_group_class.it("example") do
|
||||
# (2+2).should == 5
|
||||
# end
|
||||
# @runner = create_runner(@e)
|
||||
# end
|
||||
#
|
||||
# it "should report failure due to failure" do
|
||||
# @reporter.should_receive(:example_finished).with(
|
||||
# equal(@e),
|
||||
# is_a(Spec::Expectations::ExpectationNotMetError)
|
||||
# )
|
||||
# @runner.run
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# describe ExampleRunner, "#run with a erroring example" do
|
||||
# it_should_behave_like "Spec::Example::ExampleRunner#run"
|
||||
#
|
||||
# before do
|
||||
# @error = error = NonStandardError.new("in body")
|
||||
# @example_definition = @example_group_class.it("example") do
|
||||
# raise(error)
|
||||
# end
|
||||
# @runner = create_runner(@example_definition)
|
||||
# end
|
||||
#
|
||||
# it "should report failure due to error" do
|
||||
# @reporter.should_receive(:example_finished).with(
|
||||
# equal(@example_definition),
|
||||
# @error
|
||||
# )
|
||||
# @runner.run
|
||||
# end
|
||||
#
|
||||
# it "should run after_each block" do
|
||||
# @example_group_class.after(:each) do
|
||||
# raise("in after_each")
|
||||
# end
|
||||
# @reporter.should_receive(:example_finished) do |example_definition, error|
|
||||
# example_definition.should equal(@example_definition)
|
||||
# error.message.should eql("in body")
|
||||
# end
|
||||
# @runner.run
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# describe ExampleRunner, "#run where after_each fails" do
|
||||
# it_should_behave_like "Spec::Example::ExampleRunner#run"
|
||||
#
|
||||
# before do
|
||||
# @example_ran = example_ran = false
|
||||
# @example_definition = @example_group_class.it("should not run") do
|
||||
# example_ran = true
|
||||
# end
|
||||
# @runner = create_runner(@example_definition)
|
||||
# @example_group_class.after(:each) { raise(NonStandardError.new("in after_each")) }
|
||||
# end
|
||||
#
|
||||
# it "should report failure location when in after_each" do
|
||||
# @reporter.should_receive(:example_finished) do |example_definition, error|
|
||||
# example_definition.should equal(@example_definition)
|
||||
# error.message.should eql("in after_each")
|
||||
# end
|
||||
# @runner.run
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# describe ExampleRunner, "#run with use cases" do
|
||||
# predicate_matchers[:is_a] = [:is_a?]
|
||||
# it_should_behave_like "Spec::Example::ExampleRunner#run"
|
||||
#
|
||||
# it "should report NO NAME when told to use generated description with --dry-run" do
|
||||
# @options.dry_run = true
|
||||
# example_definition = @example_group_class.it() do
|
||||
# 5.should == 5
|
||||
# end
|
||||
# runner = create_runner(example_definition)
|
||||
#
|
||||
# @reporter.should_receive(:example_finished) do |example_definition, error|
|
||||
# example_definition.description.should == "NO NAME (Because of --dry-run)"
|
||||
# end
|
||||
# runner.run
|
||||
# end
|
||||
#
|
||||
# it "should report given name if present with --dry-run" do
|
||||
# @options.dry_run = true
|
||||
# example_definition = @example_group_class.it("example name") do
|
||||
# 5.should == 5
|
||||
# end
|
||||
# runner = create_runner(example_definition)
|
||||
#
|
||||
# @reporter.should_receive(:example_finished) do |example_definition, error|
|
||||
# example_definition.description.should == "example name"
|
||||
# end
|
||||
# runner.run
|
||||
# end
|
||||
#
|
||||
# it "should report NO NAME when told to use generated description with no expectations" do
|
||||
# example_definition = @example_group_class.it() {}
|
||||
# runner = create_runner(example_definition)
|
||||
# @reporter.should_receive(:example_finished) do |example, error|
|
||||
# example.description.should == "NO NAME (Because there were no expectations)"
|
||||
# end
|
||||
# runner.run
|
||||
# end
|
||||
#
|
||||
# it "should report NO NAME when told to use generated description and matcher fails" do
|
||||
# example_definition = @example_group_class.it() do
|
||||
# 5.should "" # Has no matches? method..
|
||||
# end
|
||||
# runner = create_runner(example_definition)
|
||||
#
|
||||
# @reporter.should_receive(:example_finished) do |example, error|
|
||||
# example_definition.description.should == "NO NAME (Because of Error raised in matcher)"
|
||||
# end
|
||||
# runner.run
|
||||
# end
|
||||
#
|
||||
# it "should report generated description when told to and it is available" do
|
||||
# example_definition = @example_group_class.it() {
|
||||
# 5.should == 5
|
||||
# }
|
||||
# runner = create_runner(example_definition)
|
||||
#
|
||||
# @reporter.should_receive(:example_finished) do |example_definition, error|
|
||||
# example_definition.description.should == "should == 5"
|
||||
# end
|
||||
# runner.run
|
||||
# end
|
||||
#
|
||||
# it "should unregister description_generated callback (lest a memory leak should build up)" do
|
||||
# example_definition = @example_group_class.it("something")
|
||||
# runner = create_runner(example_definition)
|
||||
#
|
||||
# Spec::Matchers.should_receive(:example_finished)
|
||||
# runner.run
|
||||
# end
|
||||
# end
|
||||
end
|
||||
end
|
||||
53
vendor/plugins/rspec/spec/spec/example/example_spec.rb
vendored
Normal file
53
vendor/plugins/rspec/spec/spec/example/example_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
module Spec
|
||||
module Example
|
||||
# describe Example do
|
||||
# before(:each) do
|
||||
# @example = Example.new "example" do
|
||||
# foo
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# it "should tell you its docstring" do
|
||||
# @example.description.should == "example"
|
||||
# end
|
||||
#
|
||||
# it "should execute its block in the context provided" do
|
||||
# context = Class.new do
|
||||
# def foo
|
||||
# "foo"
|
||||
# end
|
||||
# end.new
|
||||
# @example.run_in(context).should == "foo"
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# describe Example, "#description" do
|
||||
# it "should default to NO NAME when not passed anything when there are no matchers" do
|
||||
# example = Example.new {}
|
||||
# example.run_in(Object.new)
|
||||
# example.description.should == "NO NAME"
|
||||
# end
|
||||
#
|
||||
# it "should default to NO NAME description (Because of --dry-run) when passed nil and there are no matchers" do
|
||||
# example = Example.new(nil) {}
|
||||
# example.run_in(Object.new)
|
||||
# example.description.should == "NO NAME"
|
||||
# end
|
||||
#
|
||||
# it "should allow description to be overridden" do
|
||||
# example = Example.new("Test description")
|
||||
# example.description.should == "Test description"
|
||||
# end
|
||||
#
|
||||
# it "should use description generated from matcher when there is no passed in description" do
|
||||
# example = Example.new(nil) do
|
||||
# 1.should == 1
|
||||
# end
|
||||
# example.run_in(Object.new)
|
||||
# example.description.should == "should == 1"
|
||||
# end
|
||||
# end
|
||||
end
|
||||
end
|
||||
71
vendor/plugins/rspec/spec/spec/example/nested_example_group_spec.rb
vendored
Normal file
71
vendor/plugins/rspec/spec/spec/example/nested_example_group_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
module Spec
|
||||
module Example
|
||||
describe 'Nested Example Groups' do
|
||||
parent = self
|
||||
|
||||
def count
|
||||
@count ||= 0
|
||||
@count = @count + 1
|
||||
@count
|
||||
end
|
||||
|
||||
before(:all) do
|
||||
count.should == 1
|
||||
end
|
||||
|
||||
before(:all) do
|
||||
count.should == 2
|
||||
end
|
||||
|
||||
before(:each) do
|
||||
count.should == 3
|
||||
end
|
||||
|
||||
before(:each) do
|
||||
count.should == 4
|
||||
end
|
||||
|
||||
it "should run before(:all), before(:each), example, after(:each), after(:all) in order" do
|
||||
count.should == 5
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
count.should == 7
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
count.should == 6
|
||||
end
|
||||
|
||||
after(:all) do
|
||||
count.should == 9
|
||||
end
|
||||
|
||||
after(:all) do
|
||||
count.should == 8
|
||||
end
|
||||
|
||||
describe 'nested example group' do
|
||||
self.superclass.should == parent
|
||||
|
||||
it "should run all before and after callbacks" do
|
||||
count.should == 5
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "Nested Example Groups" do
|
||||
describe "description options", :other_options => "other options" do
|
||||
it "should have a spec_path" do
|
||||
self.class.description_options[:spec_path].should match(/#{__FILE__}/)
|
||||
end
|
||||
|
||||
it "should pass other options" do
|
||||
self.class.description_options[:other_options].should == "other options"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
31
vendor/plugins/rspec/spec/spec/example/pending_module_spec.rb
vendored
Normal file
31
vendor/plugins/rspec/spec/spec/example/pending_module_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
module Spec
|
||||
module Example
|
||||
describe Pending do
|
||||
|
||||
it 'should raise an ExamplePendingError if no block is supplied' do
|
||||
lambda {
|
||||
include Pending
|
||||
pending "TODO"
|
||||
}.should raise_error(ExamplePendingError, /TODO/)
|
||||
end
|
||||
|
||||
it 'should raise an ExamplePendingError if a supplied block fails as expected' do
|
||||
lambda {
|
||||
include Pending
|
||||
pending "TODO" do
|
||||
raise "oops"
|
||||
end
|
||||
}.should raise_error(ExamplePendingError, /TODO/)
|
||||
end
|
||||
|
||||
it 'should raise a PendingExampleFixedError if a supplied block starts working' do
|
||||
lambda {
|
||||
include Pending
|
||||
pending "TODO" do
|
||||
# success!
|
||||
end
|
||||
}.should raise_error(PendingExampleFixedError, /TODO/)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
21
vendor/plugins/rspec/spec/spec/example/predicate_matcher_spec.rb
vendored
Executable file
21
vendor/plugins/rspec/spec/spec/example/predicate_matcher_spec.rb
vendored
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
module Spec
|
||||
module Example
|
||||
class Fish
|
||||
def can_swim?(distance_in_yards)
|
||||
distance_in_yards < 1000
|
||||
end
|
||||
end
|
||||
|
||||
describe "predicate_matcher[method_on_object] = matcher_method" do
|
||||
predicate_matchers[:swim] = :can_swim?
|
||||
it "should match matcher_method if method_on_object returns true" do
|
||||
swim(100).matches?(Fish.new).should be_true
|
||||
end
|
||||
it "should not match matcher_method if method_on_object returns false" do
|
||||
swim(10000).matches?(Fish.new).should be_false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
265
vendor/plugins/rspec/spec/spec/example/shared_example_group_spec.rb
vendored
Normal file
265
vendor/plugins/rspec/spec/spec/example/shared_example_group_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,265 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
module Spec
|
||||
module Example
|
||||
describe ExampleGroup, "with :shared => true" do
|
||||
it_should_behave_like "sandboxed rspec_options"
|
||||
attr_reader :formatter, :example_group
|
||||
before(:each) do
|
||||
@formatter = Spec::Mocks::Mock.new("formatter", :null_object => true)
|
||||
options.formatters << formatter
|
||||
@example_group = Class.new(ExampleGroup).describe("example_group")
|
||||
class << example_group
|
||||
public :include
|
||||
end
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
@formatter.rspec_verify
|
||||
@example_group = nil
|
||||
$shared_example_groups.clear unless $shared_example_groups.nil?
|
||||
end
|
||||
|
||||
def make_shared_example_group(name, opts=nil, &block)
|
||||
example_group = SharedExampleGroup.new(name, :shared => true, &block)
|
||||
SharedExampleGroup.add_shared_example_group(example_group)
|
||||
example_group
|
||||
end
|
||||
|
||||
def non_shared_example_group()
|
||||
@non_shared_example_group ||= Class.new(ExampleGroup).describe("example_group")
|
||||
end
|
||||
|
||||
it "should accept an optional options hash" do
|
||||
lambda { Class.new(ExampleGroup).describe("context") }.should_not raise_error(Exception)
|
||||
lambda { Class.new(ExampleGroup).describe("context", :shared => true) }.should_not raise_error(Exception)
|
||||
end
|
||||
|
||||
it "should return all shared example_groups" do
|
||||
b1 = make_shared_example_group("b1", :shared => true) {}
|
||||
b2 = make_shared_example_group("b2", :shared => true) {}
|
||||
|
||||
b1.should_not be(nil)
|
||||
b2.should_not be(nil)
|
||||
|
||||
SharedExampleGroup.find_shared_example_group("b1").should equal(b1)
|
||||
SharedExampleGroup.find_shared_example_group("b2").should equal(b2)
|
||||
end
|
||||
|
||||
it "should register as shared example_group" do
|
||||
example_group = make_shared_example_group("example_group") {}
|
||||
SharedExampleGroup.shared_example_groups.should include(example_group)
|
||||
end
|
||||
|
||||
it "should not be shared when not configured as shared" do
|
||||
example_group = non_shared_example_group
|
||||
SharedExampleGroup.shared_example_groups.should_not include(example_group)
|
||||
end
|
||||
|
||||
it "should complain when adding a second shared example_group with the same description" do
|
||||
describe "shared example_group", :shared => true do
|
||||
end
|
||||
lambda do
|
||||
describe "shared example_group", :shared => true do
|
||||
end
|
||||
end.should raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
it "should NOT complain when adding the same shared example_group instance again" do
|
||||
shared_example_group = Class.new(ExampleGroup).describe("shared example_group", :shared => true)
|
||||
SharedExampleGroup.add_shared_example_group(shared_example_group)
|
||||
SharedExampleGroup.add_shared_example_group(shared_example_group)
|
||||
end
|
||||
|
||||
it "should NOT complain when adding the same shared example_group again (i.e. file gets reloaded)" do
|
||||
lambda do
|
||||
2.times do
|
||||
describe "shared example_group which gets loaded twice", :shared => true do
|
||||
end
|
||||
end
|
||||
end.should_not raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
it "should NOT complain when adding the same shared example_group in same file with different absolute path" do
|
||||
shared_example_group_1 = Class.new(ExampleGroup).describe(
|
||||
"shared example_group",
|
||||
:shared => true,
|
||||
:spec_path => "/my/spec/a/../shared.rb"
|
||||
)
|
||||
shared_example_group_2 = Class.new(ExampleGroup).describe(
|
||||
"shared example_group",
|
||||
:shared => true,
|
||||
:spec_path => "/my/spec/b/../shared.rb"
|
||||
)
|
||||
|
||||
SharedExampleGroup.add_shared_example_group(shared_example_group_1)
|
||||
SharedExampleGroup.add_shared_example_group(shared_example_group_2)
|
||||
end
|
||||
|
||||
it "should complain when adding a different shared example_group with the same name in a different file with the same basename" do
|
||||
shared_example_group_1 = Class.new(ExampleGroup).describe(
|
||||
"shared example_group",
|
||||
:shared => true,
|
||||
:spec_path => "/my/spec/a/shared.rb"
|
||||
)
|
||||
shared_example_group_2 = Class.new(ExampleGroup).describe(
|
||||
"shared example_group",
|
||||
:shared => true,
|
||||
:spec_path => "/my/spec/b/shared.rb"
|
||||
)
|
||||
|
||||
SharedExampleGroup.add_shared_example_group(shared_example_group_1)
|
||||
lambda do
|
||||
SharedExampleGroup.add_shared_example_group(shared_example_group_2)
|
||||
end.should raise_error(ArgumentError, /already exists/)
|
||||
end
|
||||
|
||||
it "should add examples to current example_group using it_should_behave_like" do
|
||||
shared_example_group = make_shared_example_group("shared example_group") do
|
||||
it("shared example") {}
|
||||
it("shared example 2") {}
|
||||
end
|
||||
|
||||
example_group.it("example") {}
|
||||
example_group.number_of_examples.should == 1
|
||||
example_group.it_should_behave_like("shared example_group")
|
||||
example_group.number_of_examples.should == 3
|
||||
end
|
||||
|
||||
it "should add examples to current example_group using include" do
|
||||
shared_example_group = describe "all things", :shared => true do
|
||||
it "should do stuff" do end
|
||||
end
|
||||
|
||||
example_group = describe "one thing" do
|
||||
include shared_example_group
|
||||
end
|
||||
|
||||
example_group.number_of_examples.should == 1
|
||||
end
|
||||
|
||||
it "should add examples to current example_group using it_should_behave_like with a module" do
|
||||
AllThings = describe "all things", :shared => true do
|
||||
it "should do stuff" do end
|
||||
end
|
||||
|
||||
example_group = describe "one thing" do
|
||||
it_should_behave_like AllThings
|
||||
end
|
||||
|
||||
example_group.number_of_examples.should == 1
|
||||
end
|
||||
|
||||
it "should run shared examples" do
|
||||
shared_example_ran = false
|
||||
shared_example_group = make_shared_example_group("shared example_group") do
|
||||
it("shared example") { shared_example_ran = true }
|
||||
end
|
||||
|
||||
example_ran = false
|
||||
|
||||
example_group.it_should_behave_like("shared example_group")
|
||||
example_group.it("example") {example_ran = true}
|
||||
example_group.run
|
||||
example_ran.should be_true
|
||||
shared_example_ran.should be_true
|
||||
end
|
||||
|
||||
it "should run setup and teardown from shared example_group" do
|
||||
shared_setup_ran = false
|
||||
shared_teardown_ran = false
|
||||
shared_example_group = make_shared_example_group("shared example_group") do
|
||||
before { shared_setup_ran = true }
|
||||
after { shared_teardown_ran = true }
|
||||
it("shared example") { shared_example_ran = true }
|
||||
end
|
||||
|
||||
example_ran = false
|
||||
|
||||
example_group.it_should_behave_like("shared example_group")
|
||||
example_group.it("example") {example_ran = true}
|
||||
example_group.run
|
||||
example_ran.should be_true
|
||||
shared_setup_ran.should be_true
|
||||
shared_teardown_ran.should be_true
|
||||
end
|
||||
|
||||
it "should run before(:all) and after(:all) only once from shared example_group" do
|
||||
shared_before_all_run_count = 0
|
||||
shared_after_all_run_count = 0
|
||||
shared_example_group = make_shared_example_group("shared example_group") do
|
||||
before(:all) { shared_before_all_run_count += 1}
|
||||
after(:all) { shared_after_all_run_count += 1}
|
||||
it("shared example") { shared_example_ran = true }
|
||||
end
|
||||
|
||||
example_ran = false
|
||||
|
||||
example_group.it_should_behave_like("shared example_group")
|
||||
example_group.it("example") {example_ran = true}
|
||||
example_group.run
|
||||
example_ran.should be_true
|
||||
shared_before_all_run_count.should == 1
|
||||
shared_after_all_run_count.should == 1
|
||||
end
|
||||
|
||||
it "should include modules, included into shared example_group, into current example_group" do
|
||||
@formatter.should_receive(:add_example_group).with(any_args)
|
||||
|
||||
shared_example_group = make_shared_example_group("shared example_group") do
|
||||
it("shared example") { shared_example_ran = true }
|
||||
end
|
||||
|
||||
mod1_method_called = false
|
||||
mod1 = Module.new do
|
||||
define_method :mod1_method do
|
||||
mod1_method_called = true
|
||||
end
|
||||
end
|
||||
|
||||
mod2_method_called = false
|
||||
mod2 = Module.new do
|
||||
define_method :mod2_method do
|
||||
mod2_method_called = true
|
||||
end
|
||||
end
|
||||
|
||||
shared_example_group.include mod2
|
||||
|
||||
example_group.it_should_behave_like("shared example_group")
|
||||
example_group.include mod1
|
||||
|
||||
example_group.it("test") do
|
||||
mod1_method
|
||||
mod2_method
|
||||
end
|
||||
example_group.run
|
||||
mod1_method_called.should be_true
|
||||
mod2_method_called.should be_true
|
||||
end
|
||||
|
||||
it "should make methods defined in the shared example_group available in consuming example_group" do
|
||||
shared_example_group = make_shared_example_group("shared example_group xyz") do
|
||||
def a_shared_helper_method
|
||||
"this got defined in a shared example_group"
|
||||
end
|
||||
end
|
||||
example_group.it_should_behave_like("shared example_group xyz")
|
||||
success = false
|
||||
example_group.it("should access a_shared_helper_method") do
|
||||
a_shared_helper_method
|
||||
success = true
|
||||
end
|
||||
example_group.run
|
||||
success.should be_true
|
||||
end
|
||||
|
||||
it "should raise when named shared example_group can not be found" do
|
||||
lambda {
|
||||
example_group.it_should_behave_like("non-existent shared example group")
|
||||
violated
|
||||
}.should raise_error("Shared Example Group 'non-existent shared example group' can not be found")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
25
vendor/plugins/rspec/spec/spec/example/subclassing_example_group_spec.rb
vendored
Normal file
25
vendor/plugins/rspec/spec/spec/example/subclassing_example_group_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
module Spec
|
||||
module Example
|
||||
class GrandParentExampleGroup < Spec::Example::ExampleGroup
|
||||
describe "Grandparent ExampleGroup"
|
||||
end
|
||||
|
||||
class ParentExampleGroup < GrandParentExampleGroup
|
||||
describe "Parent ExampleGroup"
|
||||
it "should bar" do
|
||||
end
|
||||
end
|
||||
|
||||
class ChildExampleGroup < ParentExampleGroup
|
||||
describe "Child ExampleGroup"
|
||||
it "should bam" do
|
||||
end
|
||||
end
|
||||
|
||||
describe ChildExampleGroup do
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
127
vendor/plugins/rspec/spec/spec/expectations/differs/default_spec.rb
vendored
Normal file
127
vendor/plugins/rspec/spec/spec/expectations/differs/default_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Fixtures
|
||||
class Animal
|
||||
def initialize(name,species)
|
||||
@name,@species = name,species
|
||||
end
|
||||
|
||||
def inspect
|
||||
<<-EOA
|
||||
<Animal
|
||||
name=#{@name},
|
||||
species=#{@species}
|
||||
>
|
||||
EOA
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "Diff" do
|
||||
before(:each) do
|
||||
@options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
|
||||
@differ = Spec::Expectations::Differs::Default.new(@options)
|
||||
end
|
||||
|
||||
it "should output unified diff of two strings" do
|
||||
expected="foo\nbar\nzap\nthis\nis\nsoo\nvery\nvery\nequal\ninsert\na\nline\n"
|
||||
actual="foo\nzap\nbar\nthis\nis\nsoo\nvery\nvery\nequal\ninsert\na\nanother\nline\n"
|
||||
expected_diff= <<'EOD'
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
foo
|
||||
-zap
|
||||
bar
|
||||
+zap
|
||||
this
|
||||
is
|
||||
soo
|
||||
@@ -9,6 +9,5 @@
|
||||
equal
|
||||
insert
|
||||
a
|
||||
-another
|
||||
line
|
||||
EOD
|
||||
|
||||
diff = @differ.diff_as_string(expected, actual)
|
||||
diff.should eql(expected_diff)
|
||||
end
|
||||
|
||||
it "should output unified diff message of two arrays" do
|
||||
expected = [ :foo, 'bar', :baz, 'quux', :metasyntactic, 'variable', :delta, 'charlie', :width, 'quite wide' ]
|
||||
actual = [ :foo, 'bar', :baz, 'quux', :metasyntactic, 'variable', :delta, 'tango' , :width, 'very wide' ]
|
||||
|
||||
expected_diff = <<'EOD'
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
:metasyntactic,
|
||||
"variable",
|
||||
:delta,
|
||||
- "tango",
|
||||
+ "charlie",
|
||||
:width,
|
||||
- "very wide"]
|
||||
+ "quite wide"]
|
||||
EOD
|
||||
|
||||
|
||||
diff = @differ.diff_as_object(expected,actual)
|
||||
diff.should == expected_diff
|
||||
end
|
||||
|
||||
it "should output unified diff message of two objects" do
|
||||
expected = Spec::Fixtures::Animal.new "bob", "giraffe"
|
||||
actual = Spec::Fixtures::Animal.new "bob", "tortoise"
|
||||
|
||||
expected_diff = <<'EOD'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<Animal
|
||||
name=bob,
|
||||
- species=tortoise
|
||||
+ species=giraffe
|
||||
>
|
||||
EOD
|
||||
|
||||
diff = @differ.diff_as_object(expected,actual)
|
||||
diff.should == expected_diff
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
describe "Diff in context format" do
|
||||
before(:each) do
|
||||
@options = Spec::Runner::Options.new(StringIO.new, StringIO.new)
|
||||
@options.diff_format = :context
|
||||
@differ = Spec::Expectations::Differs::Default.new(@options)
|
||||
end
|
||||
|
||||
it "should output unified diff message of two objects" do
|
||||
expected = Spec::Fixtures::Animal.new "bob", "giraffe"
|
||||
actual = Spec::Fixtures::Animal.new "bob", "tortoise"
|
||||
|
||||
expected_diff = <<'EOD'
|
||||
|
||||
***************
|
||||
*** 1,5 ****
|
||||
<Animal
|
||||
name=bob,
|
||||
! species=tortoise
|
||||
>
|
||||
--- 1,5 ----
|
||||
<Animal
|
||||
name=bob,
|
||||
! species=giraffe
|
||||
>
|
||||
EOD
|
||||
|
||||
diff = @differ.diff_as_object(expected,actual)
|
||||
diff.should == expected_diff
|
||||
end
|
||||
end
|
||||
107
vendor/plugins/rspec/spec/spec/expectations/extensions/object_spec.rb
vendored
Normal file
107
vendor/plugins/rspec/spec/spec/expectations/extensions/object_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
||||
|
||||
describe Object, "#should" do
|
||||
before(:each) do
|
||||
@target = "target"
|
||||
@matcher = mock("matcher")
|
||||
@matcher.stub!(:matches?).and_return(true)
|
||||
@matcher.stub!(:failure_message)
|
||||
end
|
||||
|
||||
it "should accept and interact with a matcher" do
|
||||
@matcher.should_receive(:matches?).with(@target).and_return(true)
|
||||
@target.should @matcher
|
||||
end
|
||||
|
||||
it "should ask for a failure_message when matches? returns false" do
|
||||
@matcher.should_receive(:matches?).with(@target).and_return(false)
|
||||
@matcher.should_receive(:failure_message).and_return("the failure message")
|
||||
lambda {
|
||||
@target.should @matcher
|
||||
}.should fail_with("the failure message")
|
||||
end
|
||||
|
||||
it "should raise error if it receives false directly" do
|
||||
lambda {
|
||||
@target.should false
|
||||
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
||||
end
|
||||
|
||||
it "should raise error if it receives false (evaluated)" do
|
||||
lambda {
|
||||
@target.should eql?("foo")
|
||||
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
||||
end
|
||||
|
||||
it "should raise error if it receives true" do
|
||||
lambda {
|
||||
@target.should true
|
||||
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
||||
end
|
||||
|
||||
it "should raise error if it receives nil" do
|
||||
lambda {
|
||||
@target.should nil
|
||||
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
||||
end
|
||||
|
||||
it "should raise error if it receives no argument and it is not used as a left side of an operator" do
|
||||
pending "Is it even possible to catch this?"
|
||||
lambda {
|
||||
@target.should
|
||||
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
||||
end
|
||||
end
|
||||
|
||||
describe Object, "#should_not" do
|
||||
before(:each) do
|
||||
@target = "target"
|
||||
@matcher = mock("matcher")
|
||||
end
|
||||
|
||||
it "should accept and interact with a matcher" do
|
||||
@matcher.should_receive(:matches?).with(@target).and_return(false)
|
||||
@matcher.stub!(:negative_failure_message)
|
||||
|
||||
@target.should_not @matcher
|
||||
end
|
||||
|
||||
it "should ask for a negative_failure_message when matches? returns true" do
|
||||
@matcher.should_receive(:matches?).with(@target).and_return(true)
|
||||
@matcher.should_receive(:negative_failure_message).and_return("the negative failure message")
|
||||
lambda {
|
||||
@target.should_not @matcher
|
||||
}.should fail_with("the negative failure message")
|
||||
end
|
||||
|
||||
it "should raise error if it receives false directly" do
|
||||
lambda {
|
||||
@target.should_not false
|
||||
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
||||
end
|
||||
|
||||
it "should raise error if it receives false (evaluated)" do
|
||||
lambda {
|
||||
@target.should_not eql?("foo")
|
||||
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
||||
end
|
||||
|
||||
it "should raise error if it receives true" do
|
||||
lambda {
|
||||
@target.should_not true
|
||||
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
||||
end
|
||||
|
||||
it "should raise error if it receives nil" do
|
||||
lambda {
|
||||
@target.should_not nil
|
||||
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
||||
end
|
||||
|
||||
it "should raise error if it receives no argument and it is not used as a left side of an operator" do
|
||||
pending "Is it even possible to catch this?"
|
||||
lambda {
|
||||
@target.should_not
|
||||
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
||||
end
|
||||
end
|
||||
71
vendor/plugins/rspec/spec/spec/expectations/fail_with_spec.rb
vendored
Normal file
71
vendor/plugins/rspec/spec/spec/expectations/fail_with_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
describe Spec::Expectations, "#fail_with with no diff" do
|
||||
before(:each) do
|
||||
@old_differ = Spec::Expectations.differ
|
||||
Spec::Expectations.differ = nil
|
||||
end
|
||||
|
||||
it "should handle just a message" do
|
||||
lambda {
|
||||
Spec::Expectations.fail_with "the message"
|
||||
}.should fail_with("the message")
|
||||
end
|
||||
|
||||
it "should handle an Array" do
|
||||
lambda {
|
||||
Spec::Expectations.fail_with ["the message","expected","actual"]
|
||||
}.should fail_with("the message")
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
Spec::Expectations.differ = @old_differ
|
||||
end
|
||||
end
|
||||
|
||||
describe Spec::Expectations, "#fail_with with diff" do
|
||||
before(:each) do
|
||||
@old_differ = Spec::Expectations.differ
|
||||
@differ = mock("differ")
|
||||
Spec::Expectations.differ = @differ
|
||||
end
|
||||
|
||||
it "should not call differ if no expected/actual" do
|
||||
lambda {
|
||||
Spec::Expectations.fail_with "the message"
|
||||
}.should fail_with("the message")
|
||||
end
|
||||
|
||||
it "should call differ if expected/actual are presented separately" do
|
||||
@differ.should_receive(:diff_as_string).and_return("diff")
|
||||
lambda {
|
||||
Spec::Expectations.fail_with "the message", "expected", "actual"
|
||||
}.should fail_with("the message\nDiff:diff")
|
||||
end
|
||||
|
||||
it "should call differ if expected/actual are not strings" do
|
||||
@differ.should_receive(:diff_as_object).and_return("diff")
|
||||
lambda {
|
||||
Spec::Expectations.fail_with "the message", :expected, :actual
|
||||
}.should fail_with("the message\nDiff:diff")
|
||||
end
|
||||
|
||||
it "should not call differ if expected or actual are procs" do
|
||||
@differ.should_not_receive(:diff_as_string)
|
||||
@differ.should_not_receive(:diff_as_object)
|
||||
lambda {
|
||||
Spec::Expectations.fail_with "the message", lambda {}, lambda {}
|
||||
}.should fail_with("the message")
|
||||
end
|
||||
|
||||
it "should call differ if expected/actual are presented in an Array with message" do
|
||||
@differ.should_receive(:diff_as_string).with("actual","expected").and_return("diff")
|
||||
lambda {
|
||||
Spec::Expectations.fail_with(["the message", "expected", "actual"])
|
||||
}.should fail_with(/the message\nDiff:diff/)
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
Spec::Expectations.differ = @old_differ
|
||||
end
|
||||
end
|
||||
76
vendor/plugins/rspec/spec/spec/extensions/main_spec.rb
vendored
Normal file
76
vendor/plugins/rspec/spec/spec/extensions/main_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Extensions
|
||||
describe Main do
|
||||
it_should_behave_like "sandboxed rspec_options"
|
||||
before(:each) do
|
||||
@main = Class.new do; include Main; end
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
$rspec_story_steps = @original_rspec_story_steps
|
||||
end
|
||||
|
||||
it "should create an Options object" do
|
||||
@main.send(:rspec_options).should be_instance_of(Spec::Runner::Options)
|
||||
@main.send(:rspec_options).should === $rspec_options
|
||||
end
|
||||
|
||||
specify {@main.should respond_to(:describe)}
|
||||
specify {@main.should respond_to(:context)}
|
||||
|
||||
it "should raise when no block given to describe" do
|
||||
lambda { @main.describe "foo" }.should raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
it "should raise when no description given to describe" do
|
||||
lambda { @main.describe do; end }.should raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
it "should registered ExampleGroups by default" do
|
||||
example_group = @main.describe("The ExampleGroup") do end
|
||||
rspec_options.example_groups.should include(example_group)
|
||||
end
|
||||
|
||||
it "should not run unregistered ExampleGroups" do
|
||||
example_group = @main.describe("The ExampleGroup") do
|
||||
unregister
|
||||
end
|
||||
|
||||
rspec_options.example_groups.should_not include(example_group)
|
||||
end
|
||||
|
||||
it "should create a shared ExampleGroup with share_examples_for" do
|
||||
group = @main.share_examples_for "all things" do end
|
||||
group.should be_an_instance_of(Spec::Example::SharedExampleGroup)
|
||||
end
|
||||
|
||||
describe "#share_as" do
|
||||
before(:each) do
|
||||
$share_as_examples_example_module_number ||= 1
|
||||
$share_as_examples_example_module_number += 1
|
||||
t = Time.new.to_i
|
||||
@group_name = "Group#{$share_as_examples_example_module_number}"
|
||||
end
|
||||
|
||||
it "should create a shared ExampleGroup" do
|
||||
group = @main.share_as @group_name do end
|
||||
group.should be_an_instance_of(Spec::Example::SharedExampleGroup)
|
||||
end
|
||||
|
||||
it "should create a constant that points to a Module" do
|
||||
group = @main.share_as @group_name do end
|
||||
Object.const_get(@group_name).should equal(group)
|
||||
end
|
||||
|
||||
it "should bark if you pass it something not-constantizable" do
|
||||
lambda do
|
||||
@group = @main.share_as "Non Constant" do end
|
||||
end.should raise_error(NameError, /The first argument to share_as must be a legal name for a constant/)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
10
vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_that_fails.rb
vendored
Normal file
10
vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_that_fails.rb
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
|
||||
$:.unshift rspec_lib unless $:.include?(rspec_lib)
|
||||
require 'test/unit'
|
||||
require 'spec'
|
||||
|
||||
describe "example group with failures" do
|
||||
it "should fail" do
|
||||
false.should be_true
|
||||
end
|
||||
end
|
||||
10
vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_that_passes.rb
vendored
Normal file
10
vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_that_passes.rb
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
|
||||
$:.unshift rspec_lib unless $:.include?(rspec_lib)
|
||||
require 'test/unit'
|
||||
require 'spec'
|
||||
|
||||
describe "example group with passing examples" do
|
||||
it "should pass" do
|
||||
true.should be_true
|
||||
end
|
||||
end
|
||||
10
vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_with_errors.rb
vendored
Normal file
10
vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_with_errors.rb
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
|
||||
$:.unshift rspec_lib unless $:.include?(rspec_lib)
|
||||
require 'test/unit'
|
||||
require 'spec'
|
||||
|
||||
describe "example group with errors" do
|
||||
it "should raise errors" do
|
||||
raise "error raised in example group with errors"
|
||||
end
|
||||
end
|
||||
10
vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_that_fails.rb
vendored
Normal file
10
vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_that_fails.rb
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
|
||||
$:.unshift rspec_lib unless $:.include?(rspec_lib)
|
||||
require 'test/unit'
|
||||
require 'spec'
|
||||
|
||||
class TestCaseThatFails < Test::Unit::TestCase
|
||||
def test_that_fails
|
||||
false.should be_true
|
||||
end
|
||||
end
|
||||
10
vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_that_passes.rb
vendored
Normal file
10
vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_that_passes.rb
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
|
||||
$:.unshift rspec_lib unless $:.include?(rspec_lib)
|
||||
require 'test/unit'
|
||||
require 'spec'
|
||||
|
||||
class TestCaseThatPasses < Test::Unit::TestCase
|
||||
def test_that_passes
|
||||
true.should be_true
|
||||
end
|
||||
end
|
||||
10
vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_with_errors.rb
vendored
Normal file
10
vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_with_errors.rb
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
|
||||
$:.unshift rspec_lib unless $:.include?(rspec_lib)
|
||||
require 'test/unit'
|
||||
require 'spec'
|
||||
|
||||
class TestCaseWithErrors < Test::Unit::TestCase
|
||||
def test_with_error
|
||||
raise "error raised in TestCaseWithErrors"
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
|
||||
$:.unshift rspec_lib unless $:.include?(rspec_lib)
|
||||
require "test/unit"
|
||||
require "spec"
|
||||
|
||||
module Test
|
||||
module Unit
|
||||
describe TestSuiteAdapter do
|
||||
def create_adapter(group)
|
||||
TestSuiteAdapter.new(group)
|
||||
end
|
||||
|
||||
describe "#size" do
|
||||
it "should return the number of examples in the example group" do
|
||||
group = Class.new(Spec::ExampleGroup) do
|
||||
describe("some examples")
|
||||
it("bar") {}
|
||||
it("baz") {}
|
||||
end
|
||||
adapter = create_adapter(group)
|
||||
adapter.size.should == 2
|
||||
end
|
||||
end
|
||||
|
||||
describe "#delete" do
|
||||
it "should do nothing" do
|
||||
group = Class.new(Spec::ExampleGroup) do
|
||||
describe("Some Examples")
|
||||
it("does something") {}
|
||||
end
|
||||
adapter = create_adapter(group)
|
||||
adapter.delete(adapter.examples.first)
|
||||
adapter.should be_empty
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
45
vendor/plugins/rspec/spec/spec/interop/test/unit/spec_spec.rb
vendored
Normal file
45
vendor/plugins/rspec/spec/spec/interop/test/unit/spec_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
require File.dirname(__FILE__) + '/test_unit_spec_helper'
|
||||
|
||||
describe "ExampleGroup with test/unit/interop" do
|
||||
include TestUnitSpecHelper
|
||||
|
||||
before(:each) do
|
||||
@dir = File.dirname(__FILE__) + "/resources"
|
||||
end
|
||||
|
||||
describe "with passing examples" do
|
||||
it "should output 0 failures" do
|
||||
output = ruby("#{@dir}/spec_that_passes.rb")
|
||||
output.should include("1 example, 0 failures")
|
||||
end
|
||||
|
||||
it "should return an exit code of 0" do
|
||||
ruby("#{@dir}/spec_that_passes.rb")
|
||||
$?.should == 0
|
||||
end
|
||||
end
|
||||
|
||||
describe "with failing examples" do
|
||||
it "should output 1 failure" do
|
||||
output = ruby("#{@dir}/spec_that_fails.rb")
|
||||
output.should include("1 example, 1 failure")
|
||||
end
|
||||
|
||||
it "should return an exit code of 256" do
|
||||
ruby("#{@dir}/spec_that_fails.rb")
|
||||
$?.should == 256
|
||||
end
|
||||
end
|
||||
|
||||
describe "with example that raises an error" do
|
||||
it "should output 1 failure" do
|
||||
output = ruby("#{@dir}/spec_with_errors.rb")
|
||||
output.should include("1 example, 1 failure")
|
||||
end
|
||||
|
||||
it "should return an exit code of 256" do
|
||||
ruby("#{@dir}/spec_with_errors.rb")
|
||||
$?.should == 256
|
||||
end
|
||||
end
|
||||
end
|
||||
14
vendor/plugins/rspec/spec/spec/interop/test/unit/test_unit_spec_helper.rb
vendored
Normal file
14
vendor/plugins/rspec/spec/spec/interop/test/unit/test_unit_spec_helper.rb
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
require File.dirname(__FILE__) + '/../../../../spec_helper'
|
||||
require File.dirname(__FILE__) + '/../../../../ruby_forker'
|
||||
|
||||
module TestUnitSpecHelper
|
||||
include RubyForker
|
||||
|
||||
def run_script(file_name)
|
||||
output = ruby(file_name)
|
||||
if !$?.success? || output.include?("FAILED") || output.include?("Error")
|
||||
raise output
|
||||
end
|
||||
output
|
||||
end
|
||||
end
|
||||
45
vendor/plugins/rspec/spec/spec/interop/test/unit/testcase_spec.rb
vendored
Normal file
45
vendor/plugins/rspec/spec/spec/interop/test/unit/testcase_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
require File.dirname(__FILE__) + '/test_unit_spec_helper'
|
||||
|
||||
describe "Test::Unit::TestCase" do
|
||||
include TestUnitSpecHelper
|
||||
|
||||
before(:each) do
|
||||
@dir = File.dirname(__FILE__) + "/resources"
|
||||
end
|
||||
|
||||
describe "with passing test case" do
|
||||
it "should output 0 failures" do
|
||||
output = ruby("#{@dir}/test_case_that_passes.rb")
|
||||
output.should include("1 example, 0 failures")
|
||||
end
|
||||
|
||||
it "should return an exit code of 0" do
|
||||
ruby("#{@dir}/test_case_that_passes.rb")
|
||||
$?.should == 0
|
||||
end
|
||||
end
|
||||
|
||||
describe "with failing test case" do
|
||||
it "should output 1 failure" do
|
||||
output = ruby("#{@dir}/test_case_that_fails.rb")
|
||||
output.should include("1 example, 1 failure")
|
||||
end
|
||||
|
||||
it "should return an exit code of 256" do
|
||||
ruby("#{@dir}/test_case_that_fails.rb")
|
||||
$?.should == 256
|
||||
end
|
||||
end
|
||||
|
||||
describe "with test case that raises an error" do
|
||||
it "should output 1 failure" do
|
||||
output = ruby("#{@dir}/test_case_with_errors.rb")
|
||||
output.should include("1 example, 1 failure")
|
||||
end
|
||||
|
||||
it "should return an exit code of 256" do
|
||||
ruby("#{@dir}/test_case_with_errors.rb")
|
||||
$?.should == 256
|
||||
end
|
||||
end
|
||||
end
|
||||
9
vendor/plugins/rspec/spec/spec/interop/test/unit/testsuite_adapter_spec.rb
vendored
Normal file
9
vendor/plugins/rspec/spec/spec/interop/test/unit/testsuite_adapter_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
require File.dirname(__FILE__) + '/test_unit_spec_helper'
|
||||
|
||||
describe "TestSuiteAdapter" do
|
||||
include TestUnitSpecHelper
|
||||
it "should pass" do
|
||||
dir = File.dirname(__FILE__)
|
||||
run_script "#{dir}/resources/testsuite_adapter_spec_with_test_unit.rb"
|
||||
end
|
||||
end
|
||||
39
vendor/plugins/rspec/spec/spec/matchers/be_close_spec.rb
vendored
Normal file
39
vendor/plugins/rspec/spec/spec/matchers/be_close_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
module Spec
|
||||
module Matchers
|
||||
describe BeClose do
|
||||
it "should match when value == target" do
|
||||
BeClose.new(5.0, 0.5).matches?(5.0).should be_true
|
||||
end
|
||||
it "should match when value < (target + delta)" do
|
||||
BeClose.new(5.0, 0.5).matches?(5.49).should be_true
|
||||
end
|
||||
it "should match when value > (target - delta)" do
|
||||
BeClose.new(5.0, 0.5).matches?(4.51).should be_true
|
||||
end
|
||||
it "should not match when value == (target - delta)" do
|
||||
BeClose.new(5.0, 0.5).matches?(4.5).should be_false
|
||||
end
|
||||
it "should not match when value < (target - delta)" do
|
||||
BeClose.new(5.0, 0.5).matches?(4.49).should be_false
|
||||
end
|
||||
it "should not match when value == (target + delta)" do
|
||||
BeClose.new(5.0, 0.5).matches?(5.5).should be_false
|
||||
end
|
||||
it "should not match when value > (target + delta)" do
|
||||
BeClose.new(5.0, 0.5).matches?(5.51).should be_false
|
||||
end
|
||||
it "should provide a useful failure message" do
|
||||
#given
|
||||
matcher = BeClose.new(5.0, 0.5)
|
||||
#when
|
||||
matcher.matches?(5.51)
|
||||
#then
|
||||
matcher.failure_message.should == "expected 5.0 +/- (< 0.5), got 5.51"
|
||||
end
|
||||
it "should describe itself" do
|
||||
BeClose.new(5.0, 0.5).description.should == "be close to 5.0 (within +- 0.5)"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
248
vendor/plugins/rspec/spec/spec/matchers/be_spec.rb
vendored
Normal file
248
vendor/plugins/rspec/spec/spec/matchers/be_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,248 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
describe "should be_predicate" do
|
||||
it "should pass when actual returns true for :predicate?" do
|
||||
actual = stub("actual", :happy? => true)
|
||||
actual.should be_happy
|
||||
end
|
||||
|
||||
it "should pass when actual returns true for :predicates? (present tense)" do
|
||||
actual = stub("actual", :exists? => true)
|
||||
actual.should be_exist
|
||||
end
|
||||
|
||||
it "should fail when actual returns false for :predicate?" do
|
||||
actual = stub("actual", :happy? => false)
|
||||
lambda {
|
||||
actual.should be_happy
|
||||
}.should fail_with("expected happy? to return true, got false")
|
||||
end
|
||||
|
||||
it "should fail when actual does not respond to :predicate?" do
|
||||
lambda {
|
||||
Object.new.should be_happy
|
||||
}.should raise_error(NameError)
|
||||
end
|
||||
end
|
||||
|
||||
describe "should_not be_predicate" do
|
||||
it "should pass when actual returns false for :sym?" do
|
||||
actual = stub("actual", :happy? => false)
|
||||
actual.should_not be_happy
|
||||
end
|
||||
|
||||
it "should fail when actual returns true for :sym?" do
|
||||
actual = stub("actual", :happy? => true)
|
||||
lambda {
|
||||
actual.should_not be_happy
|
||||
}.should fail_with("expected happy? to return false, got true")
|
||||
end
|
||||
|
||||
it "should fail when actual does not respond to :sym?" do
|
||||
lambda {
|
||||
Object.new.should_not be_happy
|
||||
}.should raise_error(NameError)
|
||||
end
|
||||
end
|
||||
|
||||
describe "should be_predicate(*args)" do
|
||||
it "should pass when actual returns true for :predicate?(*args)" do
|
||||
actual = mock("actual")
|
||||
actual.should_receive(:older_than?).with(3).and_return(true)
|
||||
actual.should be_older_than(3)
|
||||
end
|
||||
|
||||
it "should fail when actual returns false for :predicate?(*args)" do
|
||||
actual = mock("actual")
|
||||
actual.should_receive(:older_than?).with(3).and_return(false)
|
||||
lambda {
|
||||
actual.should be_older_than(3)
|
||||
}.should fail_with("expected older_than?(3) to return true, got false")
|
||||
end
|
||||
|
||||
it "should fail when actual does not respond to :predicate?" do
|
||||
lambda {
|
||||
Object.new.should be_older_than(3)
|
||||
}.should raise_error(NameError)
|
||||
end
|
||||
end
|
||||
|
||||
describe "should_not be_predicate(*args)" do
|
||||
it "should pass when actual returns false for :predicate?(*args)" do
|
||||
actual = mock("actual")
|
||||
actual.should_receive(:older_than?).with(3).and_return(false)
|
||||
actual.should_not be_older_than(3)
|
||||
end
|
||||
|
||||
it "should fail when actual returns true for :predicate?(*args)" do
|
||||
actual = mock("actual")
|
||||
actual.should_receive(:older_than?).with(3).and_return(true)
|
||||
lambda {
|
||||
actual.should_not be_older_than(3)
|
||||
}.should fail_with("expected older_than?(3) to return false, got true")
|
||||
end
|
||||
|
||||
it "should fail when actual does not respond to :predicate?" do
|
||||
lambda {
|
||||
Object.new.should_not be_older_than(3)
|
||||
}.should raise_error(NameError)
|
||||
end
|
||||
end
|
||||
|
||||
describe "should be_true" do
|
||||
it "should pass when actual equal(true)" do
|
||||
true.should be_true
|
||||
end
|
||||
|
||||
it "should fail when actual equal(false)" do
|
||||
lambda {
|
||||
false.should be_true
|
||||
}.should fail_with("expected true, got false")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should be_false" do
|
||||
it "should pass when actual equal(false)" do
|
||||
false.should be_false
|
||||
end
|
||||
|
||||
it "should fail when actual equal(true)" do
|
||||
lambda {
|
||||
true.should be_false
|
||||
}.should fail_with("expected false, got true")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should be_nil" do
|
||||
it "should pass when actual is nil" do
|
||||
nil.should be_nil
|
||||
end
|
||||
|
||||
it "should fail when actual is not nil" do
|
||||
lambda {
|
||||
:not_nil.should be_nil
|
||||
}.should fail_with("expected nil, got :not_nil")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should_not be_nil" do
|
||||
it "should pass when actual is not nil" do
|
||||
:not_nil.should_not be_nil
|
||||
end
|
||||
|
||||
it "should fail when actual is nil" do
|
||||
lambda {
|
||||
nil.should_not be_nil
|
||||
}.should fail_with("expected not nil, got nil")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should be <" do
|
||||
it "should pass when < operator returns true" do
|
||||
3.should be < 4
|
||||
end
|
||||
|
||||
it "should fail when < operator returns false" do
|
||||
lambda { 3.should be < 3 }.should fail_with("expected < 3, got 3")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should be <=" do
|
||||
it "should pass when <= operator returns true" do
|
||||
3.should be <= 4
|
||||
4.should be <= 4
|
||||
end
|
||||
|
||||
it "should fail when <= operator returns false" do
|
||||
lambda { 3.should be <= 2 }.should fail_with("expected <= 2, got 3")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should be >=" do
|
||||
it "should pass when >= operator returns true" do
|
||||
4.should be >= 4
|
||||
5.should be >= 4
|
||||
end
|
||||
|
||||
it "should fail when >= operator returns false" do
|
||||
lambda { 3.should be >= 4 }.should fail_with("expected >= 4, got 3")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should be >" do
|
||||
it "should pass when > operator returns true" do
|
||||
5.should be > 4
|
||||
end
|
||||
|
||||
it "should fail when > operator returns false" do
|
||||
lambda { 3.should be > 4 }.should fail_with("expected > 4, got 3")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should be ==" do
|
||||
it "should pass when == operator returns true" do
|
||||
5.should be == 5
|
||||
end
|
||||
|
||||
it "should fail when == operator returns false" do
|
||||
lambda { 3.should be == 4 }.should fail_with("expected == 4, got 3")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should be ===" do
|
||||
it "should pass when === operator returns true" do
|
||||
Hash.should be === Hash.new
|
||||
end
|
||||
|
||||
it "should fail when === operator returns false" do
|
||||
lambda { Hash.should be === "not a hash" }.should fail_with(%[expected === "not a hash", got Hash])
|
||||
end
|
||||
end
|
||||
|
||||
describe "should be" do
|
||||
it "should pass if actual is true or a set value" do
|
||||
true.should be
|
||||
1.should be
|
||||
end
|
||||
|
||||
it "should fail if actual is false" do
|
||||
lambda {false.should be}.should fail_with("expected if to be satisfied, got false")
|
||||
end
|
||||
|
||||
it "should fail if actual is nil" do
|
||||
lambda {nil.should be}.should fail_with("expected if to be satisfied, got nil")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should be(value)" do
|
||||
it "should pass if actual.equal?(value)" do
|
||||
5.should be(5)
|
||||
end
|
||||
it "should fail if !actual.equal?(value)" do
|
||||
lambda { 5.should be(6) }.should fail_with("expected 6, got 5")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
describe "arbitrary predicate with DelegateClass" do
|
||||
it "should access methods defined in the delegating class (LH[#48])" do
|
||||
pending(%{
|
||||
Looks like DelegateClass is delegating #should to the
|
||||
delegate. Not sure how to fix this one. Or if we even should."
|
||||
})
|
||||
require 'delegate'
|
||||
class ArrayDelegate < DelegateClass(Array)
|
||||
def initialize(array)
|
||||
@internal_array = array
|
||||
super(@internal_array)
|
||||
end
|
||||
|
||||
def large?
|
||||
@internal_array.size >= 5
|
||||
end
|
||||
end
|
||||
|
||||
delegate = ArrayDelegate.new([1,2,3,4,5,6])
|
||||
delegate.should be_large
|
||||
end
|
||||
end
|
||||
319
vendor/plugins/rspec/spec/spec/matchers/change_spec.rb
vendored
Normal file
319
vendor/plugins/rspec/spec/spec/matchers/change_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,319 @@
|
|||
#Based on patch from Wilson Bilkovich
|
||||
|
||||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
class SomethingExpected
|
||||
attr_accessor :some_value
|
||||
end
|
||||
|
||||
describe "should change(actual, message)" do
|
||||
before(:each) do
|
||||
@instance = SomethingExpected.new
|
||||
@instance.some_value = 5
|
||||
end
|
||||
|
||||
it "should pass when actual is modified by the block" do
|
||||
lambda {@instance.some_value = 6}.should change(@instance, :some_value)
|
||||
end
|
||||
|
||||
it "should fail when actual is not modified by the block" do
|
||||
lambda do
|
||||
lambda {}.should change(@instance, :some_value)
|
||||
end.should fail_with("some_value should have changed, but is still 5")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should_not change(actual, message)" do
|
||||
before(:each) do
|
||||
@instance = SomethingExpected.new
|
||||
@instance.some_value = 5
|
||||
end
|
||||
|
||||
it "should pass when actual is not modified by the block" do
|
||||
lambda { }.should_not change(@instance, :some_value)
|
||||
end
|
||||
|
||||
it "should fail when actual is not modified by the block" do
|
||||
lambda do
|
||||
lambda {@instance.some_value = 6}.should_not change(@instance, :some_value)
|
||||
end.should fail_with("some_value should not have changed, but did change from 5 to 6")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should change { block }" do
|
||||
before(:each) do
|
||||
@instance = SomethingExpected.new
|
||||
@instance.some_value = 5
|
||||
end
|
||||
|
||||
it "should pass when actual is modified by the block" do
|
||||
lambda {@instance.some_value = 6}.should change { @instance.some_value }
|
||||
end
|
||||
|
||||
it "should fail when actual is not modified by the block" do
|
||||
lambda do
|
||||
lambda {}.should change{ @instance.some_value }
|
||||
end.should fail_with("result should have changed, but is still 5")
|
||||
end
|
||||
|
||||
it "should warn if passed a block using do/end" do
|
||||
lambda do
|
||||
lambda {}.should change do
|
||||
end
|
||||
end.should raise_error(Spec::Matchers::MatcherError, /block passed to should or should_not/)
|
||||
end
|
||||
end
|
||||
|
||||
describe "should_not change { block }" do
|
||||
before(:each) do
|
||||
@instance = SomethingExpected.new
|
||||
@instance.some_value = 5
|
||||
end
|
||||
|
||||
it "should pass when actual is modified by the block" do
|
||||
lambda {}.should_not change{ @instance.some_value }
|
||||
end
|
||||
|
||||
it "should fail when actual is not modified by the block" do
|
||||
lambda do
|
||||
lambda {@instance.some_value = 6}.should_not change { @instance.some_value }
|
||||
end.should fail_with("result should not have changed, but did change from 5 to 6")
|
||||
end
|
||||
|
||||
it "should warn if passed a block using do/end" do
|
||||
lambda do
|
||||
lambda {}.should_not change do
|
||||
end
|
||||
end.should raise_error(Spec::Matchers::MatcherError, /block passed to should or should_not/)
|
||||
end
|
||||
end
|
||||
|
||||
describe "should change(actual, message).by(expected)" do
|
||||
before(:each) do
|
||||
@instance = SomethingExpected.new
|
||||
@instance.some_value = 5
|
||||
end
|
||||
|
||||
it "should pass when attribute is changed by expected amount" do
|
||||
lambda { @instance.some_value += 1 }.should change(@instance, :some_value).by(1)
|
||||
end
|
||||
|
||||
it "should fail when the attribute is changed by unexpected amount" do
|
||||
lambda do
|
||||
lambda { @instance.some_value += 2 }.should change(@instance, :some_value).by(1)
|
||||
end.should fail_with("some_value should have been changed by 1, but was changed by 2")
|
||||
end
|
||||
|
||||
it "should fail when the attribute is changed by unexpected amount in the opposite direction" do
|
||||
lambda do
|
||||
lambda { @instance.some_value -= 1 }.should change(@instance, :some_value).by(1)
|
||||
end.should fail_with("some_value should have been changed by 1, but was changed by -1")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should change{ block }.by(expected)" do
|
||||
before(:each) do
|
||||
@instance = SomethingExpected.new
|
||||
@instance.some_value = 5
|
||||
end
|
||||
|
||||
it "should pass when attribute is changed by expected amount" do
|
||||
lambda { @instance.some_value += 1 }.should change{@instance.some_value}.by(1)
|
||||
end
|
||||
|
||||
it "should fail when the attribute is changed by unexpected amount" do
|
||||
lambda do
|
||||
lambda { @instance.some_value += 2 }.should change{@instance.some_value}.by(1)
|
||||
end.should fail_with("result should have been changed by 1, but was changed by 2")
|
||||
end
|
||||
|
||||
it "should fail when the attribute is changed by unexpected amount in the opposite direction" do
|
||||
lambda do
|
||||
lambda { @instance.some_value -= 1 }.should change{@instance.some_value}.by(1)
|
||||
end.should fail_with("result should have been changed by 1, but was changed by -1")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should change(actual, message).by_at_least(expected)" do
|
||||
before(:each) do
|
||||
@instance = SomethingExpected.new
|
||||
@instance.some_value = 5
|
||||
end
|
||||
|
||||
it "should pass when attribute is changed by greater than the expected amount" do
|
||||
lambda { @instance.some_value += 2 }.should change(@instance, :some_value).by_at_least(1)
|
||||
end
|
||||
|
||||
it "should pass when attribute is changed by the expected amount" do
|
||||
lambda { @instance.some_value += 2 }.should change(@instance, :some_value).by_at_least(2)
|
||||
end
|
||||
|
||||
it "should fail when the attribute is changed by less than the expected amount" do
|
||||
lambda do
|
||||
lambda { @instance.some_value += 1 }.should change(@instance, :some_value).by_at_least(2)
|
||||
end.should fail_with("some_value should have been changed by at least 2, but was changed by 1")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "should change{ block }.by_at_least(expected)" do
|
||||
before(:each) do
|
||||
@instance = SomethingExpected.new
|
||||
@instance.some_value = 5
|
||||
end
|
||||
|
||||
it "should pass when attribute is changed by greater than expected amount" do
|
||||
lambda { @instance.some_value += 2 }.should change{@instance.some_value}.by_at_least(1)
|
||||
end
|
||||
|
||||
it "should pass when attribute is changed by the expected amount" do
|
||||
lambda { @instance.some_value += 2 }.should change{@instance.some_value}.by_at_least(2)
|
||||
end
|
||||
|
||||
it "should fail when the attribute is changed by less than the unexpected amount" do
|
||||
lambda do
|
||||
lambda { @instance.some_value += 1 }.should change{@instance.some_value}.by_at_least(2)
|
||||
end.should fail_with("result should have been changed by at least 2, but was changed by 1")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
describe "should change(actual, message).by_at_most(expected)" do
|
||||
before(:each) do
|
||||
@instance = SomethingExpected.new
|
||||
@instance.some_value = 5
|
||||
end
|
||||
|
||||
it "should pass when attribute is changed by less than the expected amount" do
|
||||
lambda { @instance.some_value += 2 }.should change(@instance, :some_value).by_at_most(3)
|
||||
end
|
||||
|
||||
it "should pass when attribute is changed by the expected amount" do
|
||||
lambda { @instance.some_value += 2 }.should change(@instance, :some_value).by_at_most(2)
|
||||
end
|
||||
|
||||
it "should fail when the attribute is changed by greater than the expected amount" do
|
||||
lambda do
|
||||
lambda { @instance.some_value += 2 }.should change(@instance, :some_value).by_at_most(1)
|
||||
end.should fail_with("some_value should have been changed by at most 1, but was changed by 2")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "should change{ block }.by_at_most(expected)" do
|
||||
before(:each) do
|
||||
@instance = SomethingExpected.new
|
||||
@instance.some_value = 5
|
||||
end
|
||||
|
||||
it "should pass when attribute is changed by less than expected amount" do
|
||||
lambda { @instance.some_value += 2 }.should change{@instance.some_value}.by_at_most(3)
|
||||
end
|
||||
|
||||
it "should pass when attribute is changed by the expected amount" do
|
||||
lambda { @instance.some_value += 2 }.should change{@instance.some_value}.by_at_most(2)
|
||||
end
|
||||
|
||||
it "should fail when the attribute is changed by greater than the unexpected amount" do
|
||||
lambda do
|
||||
lambda { @instance.some_value += 2 }.should change{@instance.some_value}.by_at_most(1)
|
||||
end.should fail_with("result should have been changed by at most 1, but was changed by 2")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should change(actual, message).from(old)" do
|
||||
before(:each) do
|
||||
@instance = SomethingExpected.new
|
||||
@instance.some_value = 'string'
|
||||
end
|
||||
|
||||
it "should pass when attribute is == to expected value before executing block" do
|
||||
lambda { @instance.some_value = "astring" }.should change(@instance, :some_value).from("string")
|
||||
end
|
||||
|
||||
it "should fail when attribute is not == to expected value before executing block" do
|
||||
lambda do
|
||||
lambda { @instance.some_value = "knot" }.should change(@instance, :some_value).from("cat")
|
||||
end.should fail_with("some_value should have initially been \"cat\", but was \"string\"")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should change{ block }.from(old)" do
|
||||
before(:each) do
|
||||
@instance = SomethingExpected.new
|
||||
@instance.some_value = 'string'
|
||||
end
|
||||
|
||||
it "should pass when attribute is == to expected value before executing block" do
|
||||
lambda { @instance.some_value = "astring" }.should change{@instance.some_value}.from("string")
|
||||
end
|
||||
|
||||
it "should fail when attribute is not == to expected value before executing block" do
|
||||
lambda do
|
||||
lambda { @instance.some_value = "knot" }.should change{@instance.some_value}.from("cat")
|
||||
end.should fail_with("result should have initially been \"cat\", but was \"string\"")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should change(actual, message).to(new)" do
|
||||
before(:each) do
|
||||
@instance = SomethingExpected.new
|
||||
@instance.some_value = 'string'
|
||||
end
|
||||
|
||||
it "should pass when attribute is == to expected value after executing block" do
|
||||
lambda { @instance.some_value = "cat" }.should change(@instance, :some_value).to("cat")
|
||||
end
|
||||
|
||||
it "should fail when attribute is not == to expected value after executing block" do
|
||||
lambda do
|
||||
lambda { @instance.some_value = "cat" }.should change(@instance, :some_value).from("string").to("dog")
|
||||
end.should fail_with("some_value should have been changed to \"dog\", but is now \"cat\"")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should change{ block }.to(new)" do
|
||||
before(:each) do
|
||||
@instance = SomethingExpected.new
|
||||
@instance.some_value = 'string'
|
||||
end
|
||||
|
||||
it "should pass when attribute is == to expected value after executing block" do
|
||||
lambda { @instance.some_value = "cat" }.should change{@instance.some_value}.to("cat")
|
||||
end
|
||||
|
||||
it "should fail when attribute is not == to expected value after executing block" do
|
||||
lambda do
|
||||
lambda { @instance.some_value = "cat" }.should change{@instance.some_value}.from("string").to("dog")
|
||||
end.should fail_with("result should have been changed to \"dog\", but is now \"cat\"")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should change(actual, message).from(old).to(new)" do
|
||||
before(:each) do
|
||||
@instance = SomethingExpected.new
|
||||
@instance.some_value = 'string'
|
||||
end
|
||||
|
||||
it "should pass when #to comes before #from" do
|
||||
lambda { @instance.some_value = "cat" }.should change(@instance, :some_value).to("cat").from("string")
|
||||
end
|
||||
|
||||
it "should pass when #from comes before #to" do
|
||||
lambda { @instance.some_value = "cat" }.should change(@instance, :some_value).from("string").to("cat")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should change{ block }.from(old).to(new)" do
|
||||
before(:each) do
|
||||
@instance = SomethingExpected.new
|
||||
@instance.some_value = 'string'
|
||||
end
|
||||
|
||||
it "should pass when #to comes before #from" do
|
||||
lambda { @instance.some_value = "cat" }.should change{@instance.some_value}.to("cat").from("string")
|
||||
end
|
||||
|
||||
it "should pass when #from comes before #to" do
|
||||
lambda { @instance.some_value = "cat" }.should change{@instance.some_value}.from("string").to("cat")
|
||||
end
|
||||
end
|
||||
153
vendor/plugins/rspec/spec/spec/matchers/description_generation_spec.rb
vendored
Normal file
153
vendor/plugins/rspec/spec/spec/matchers/description_generation_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
describe "Matchers should be able to generate their own descriptions" do
|
||||
after(:each) do
|
||||
Spec::Matchers.clear_generated_description
|
||||
end
|
||||
|
||||
it "should == expected" do
|
||||
"this".should == "this"
|
||||
Spec::Matchers.generated_description.should == "should == \"this\""
|
||||
end
|
||||
|
||||
it "should not == expected" do
|
||||
"this".should_not == "that"
|
||||
Spec::Matchers.generated_description.should == "should not == \"that\""
|
||||
end
|
||||
|
||||
it "should be empty (arbitrary predicate)" do
|
||||
[].should be_empty
|
||||
Spec::Matchers.generated_description.should == "should be empty"
|
||||
end
|
||||
|
||||
it "should not be empty (arbitrary predicate)" do
|
||||
[1].should_not be_empty
|
||||
Spec::Matchers.generated_description.should == "should not be empty"
|
||||
end
|
||||
|
||||
it "should be true" do
|
||||
true.should be_true
|
||||
Spec::Matchers.generated_description.should == "should be true"
|
||||
end
|
||||
|
||||
it "should be false" do
|
||||
false.should be_false
|
||||
Spec::Matchers.generated_description.should == "should be false"
|
||||
end
|
||||
|
||||
it "should be nil" do
|
||||
nil.should be_nil
|
||||
Spec::Matchers.generated_description.should == "should be nil"
|
||||
end
|
||||
|
||||
it "should be > n" do
|
||||
5.should be > 3
|
||||
Spec::Matchers.generated_description.should == "should be > 3"
|
||||
end
|
||||
|
||||
it "should be predicate arg1, arg2 and arg3" do
|
||||
5.0.should be_between(0,10)
|
||||
Spec::Matchers.generated_description.should == "should be between 0 and 10"
|
||||
end
|
||||
|
||||
it "should be_few_words predicate should be transformed to 'be few words'" do
|
||||
5.should be_kind_of(Fixnum)
|
||||
Spec::Matchers.generated_description.should == "should be kind of Fixnum"
|
||||
end
|
||||
|
||||
it "should preserve a proper prefix for be predicate" do
|
||||
5.should be_a_kind_of(Fixnum)
|
||||
Spec::Matchers.generated_description.should == "should be a kind of Fixnum"
|
||||
5.should be_an_instance_of(Fixnum)
|
||||
Spec::Matchers.generated_description.should == "should be an instance of Fixnum"
|
||||
end
|
||||
|
||||
it "should equal" do
|
||||
expected = "expected"
|
||||
expected.should equal(expected)
|
||||
Spec::Matchers.generated_description.should == "should equal \"expected\""
|
||||
end
|
||||
|
||||
it "should_not equal" do
|
||||
5.should_not equal(37)
|
||||
Spec::Matchers.generated_description.should == "should not equal 37"
|
||||
end
|
||||
|
||||
it "should eql" do
|
||||
"string".should eql("string")
|
||||
Spec::Matchers.generated_description.should == "should eql \"string\""
|
||||
end
|
||||
|
||||
it "should not eql" do
|
||||
"a".should_not eql(:a)
|
||||
Spec::Matchers.generated_description.should == "should not eql :a"
|
||||
end
|
||||
|
||||
it "should have_key" do
|
||||
{:a => "a"}.should have_key(:a)
|
||||
Spec::Matchers.generated_description.should == "should have key :a"
|
||||
end
|
||||
|
||||
it "should have n items" do
|
||||
team.should have(3).players
|
||||
Spec::Matchers.generated_description.should == "should have 3 players"
|
||||
end
|
||||
|
||||
it "should have at least n items" do
|
||||
team.should have_at_least(2).players
|
||||
Spec::Matchers.generated_description.should == "should have at least 2 players"
|
||||
end
|
||||
|
||||
it "should have at most n items" do
|
||||
team.should have_at_most(4).players
|
||||
Spec::Matchers.generated_description.should == "should have at most 4 players"
|
||||
end
|
||||
|
||||
it "should include" do
|
||||
[1,2,3].should include(3)
|
||||
Spec::Matchers.generated_description.should == "should include 3"
|
||||
end
|
||||
|
||||
it "should match" do
|
||||
"this string".should match(/this string/)
|
||||
Spec::Matchers.generated_description.should == "should match /this string/"
|
||||
end
|
||||
|
||||
it "should raise_error" do
|
||||
lambda { raise }.should raise_error
|
||||
Spec::Matchers.generated_description.should == "should raise Exception"
|
||||
end
|
||||
|
||||
it "should raise_error with type" do
|
||||
lambda { raise }.should raise_error(RuntimeError)
|
||||
Spec::Matchers.generated_description.should == "should raise RuntimeError"
|
||||
end
|
||||
|
||||
it "should raise_error with type and message" do
|
||||
lambda { raise "there was an error" }.should raise_error(RuntimeError, "there was an error")
|
||||
Spec::Matchers.generated_description.should == "should raise RuntimeError with \"there was an error\""
|
||||
end
|
||||
|
||||
it "should respond_to" do
|
||||
[].should respond_to(:insert)
|
||||
Spec::Matchers.generated_description.should == "should respond to #insert"
|
||||
end
|
||||
|
||||
it "should throw symbol" do
|
||||
lambda { throw :what_a_mess }.should throw_symbol
|
||||
Spec::Matchers.generated_description.should == "should throw a Symbol"
|
||||
end
|
||||
|
||||
it "should throw symbol (with named symbol)" do
|
||||
lambda { throw :what_a_mess }.should throw_symbol(:what_a_mess)
|
||||
Spec::Matchers.generated_description.should == "should throw :what_a_mess"
|
||||
end
|
||||
|
||||
def team
|
||||
Class.new do
|
||||
def players
|
||||
[1,2,3]
|
||||
end
|
||||
end.new
|
||||
end
|
||||
end
|
||||
28
vendor/plugins/rspec/spec/spec/matchers/eql_spec.rb
vendored
Normal file
28
vendor/plugins/rspec/spec/spec/matchers/eql_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Matchers
|
||||
describe Eql do
|
||||
it "should match when actual.eql?(expected)" do
|
||||
Eql.new(1).matches?(1).should be_true
|
||||
end
|
||||
it "should not match when !actual.eql?(expected)" do
|
||||
Eql.new(1).matches?(2).should be_false
|
||||
end
|
||||
it "should describe itself" do
|
||||
matcher = Eql.new(1)
|
||||
matcher.description.should == "eql 1"
|
||||
end
|
||||
it "should provide message, expected and actual on #failure_message" do
|
||||
matcher = Eql.new("1")
|
||||
matcher.matches?(1)
|
||||
matcher.failure_message.should == ["expected \"1\", got 1 (using .eql?)", "1", 1]
|
||||
end
|
||||
it "should provide message, expected and actual on #negative_failure_message" do
|
||||
matcher = Eql.new(1)
|
||||
matcher.matches?(1)
|
||||
matcher.negative_failure_message.should == ["expected 1 not to equal 1 (using .eql?)", 1, 1]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
28
vendor/plugins/rspec/spec/spec/matchers/equal_spec.rb
vendored
Normal file
28
vendor/plugins/rspec/spec/spec/matchers/equal_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Matchers
|
||||
describe Equal do
|
||||
it "should match when actual.equal?(expected)" do
|
||||
Equal.new(1).matches?(1).should be_true
|
||||
end
|
||||
it "should not match when !actual.equal?(expected)" do
|
||||
Equal.new("1").matches?("1").should be_false
|
||||
end
|
||||
it "should describe itself" do
|
||||
matcher = Equal.new(1)
|
||||
matcher.description.should == "equal 1"
|
||||
end
|
||||
it "should provide message, expected and actual on #failure_message" do
|
||||
matcher = Equal.new("1")
|
||||
matcher.matches?(1)
|
||||
matcher.failure_message.should == ["expected \"1\", got 1 (using .equal?)", "1", 1]
|
||||
end
|
||||
it "should provide message, expected and actual on #negative_failure_message" do
|
||||
matcher = Equal.new(1)
|
||||
matcher.matches?(1)
|
||||
matcher.negative_failure_message.should == ["expected 1 not to equal 1 (using .equal?)", 1, 1]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
57
vendor/plugins/rspec/spec/spec/matchers/exist_spec.rb
vendored
Normal file
57
vendor/plugins/rspec/spec/spec/matchers/exist_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
class Substance
|
||||
def initialize exists, description
|
||||
@exists = exists
|
||||
@description = description
|
||||
end
|
||||
def exist?
|
||||
@exists
|
||||
end
|
||||
def inspect
|
||||
@description
|
||||
end
|
||||
end
|
||||
|
||||
class SubstanceTester
|
||||
include Spec::Matchers
|
||||
def initialize substance
|
||||
@substance = substance
|
||||
end
|
||||
def should_exist
|
||||
@substance.should exist
|
||||
end
|
||||
end
|
||||
|
||||
describe "should exist," do
|
||||
|
||||
before(:each) do
|
||||
@real = Substance.new true, 'something real'
|
||||
@imaginary = Substance.new false, 'something imaginary'
|
||||
end
|
||||
|
||||
describe "within an example group" do
|
||||
|
||||
it "should pass if target exists" do
|
||||
@real.should exist
|
||||
end
|
||||
|
||||
it "should fail if target does not exist" do
|
||||
lambda { @imaginary.should exist }.should fail
|
||||
end
|
||||
|
||||
it "should pass if target doesn't exist" do
|
||||
lambda { @real.should_not exist }.should fail
|
||||
end
|
||||
end
|
||||
|
||||
describe "outside of an example group" do
|
||||
|
||||
it "should pass if target exists" do
|
||||
real_tester = SubstanceTester.new @real
|
||||
real_tester.should_exist
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
129
vendor/plugins/rspec/spec/spec/matchers/handler_spec.rb
vendored
Normal file
129
vendor/plugins/rspec/spec/spec/matchers/handler_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module ExampleExpectations
|
||||
|
||||
class ArbitraryMatcher
|
||||
def initialize(*args, &block)
|
||||
if args.last.is_a? Hash
|
||||
@expected = args.last[:expected]
|
||||
end
|
||||
if block_given?
|
||||
@expected = block.call
|
||||
end
|
||||
@block = block
|
||||
end
|
||||
|
||||
def matches?(target)
|
||||
@target = target
|
||||
return @expected == target
|
||||
end
|
||||
|
||||
def with(new_value)
|
||||
@expected = new_value
|
||||
self
|
||||
end
|
||||
|
||||
def failure_message
|
||||
"expected #{@expected}, got #{@target}"
|
||||
end
|
||||
|
||||
def negative_failure_message
|
||||
"expected not #{@expected}, got #{@target}"
|
||||
end
|
||||
end
|
||||
|
||||
class PositiveOnlyMatcher < ArbitraryMatcher
|
||||
undef negative_failure_message rescue nil
|
||||
end
|
||||
|
||||
def arbitrary_matcher(*args, &block)
|
||||
ArbitraryMatcher.new(*args, &block)
|
||||
end
|
||||
|
||||
def positive_only_matcher(*args, &block)
|
||||
PositiveOnlyMatcher.new(*args, &block)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
module Spec
|
||||
module Expectations
|
||||
describe ExpectationMatcherHandler, ".handle_matcher" do
|
||||
it "should ask the matcher if it matches" do
|
||||
matcher = mock("matcher")
|
||||
actual = Object.new
|
||||
matcher.should_receive(:matches?).with(actual).and_return(true)
|
||||
ExpectationMatcherHandler.handle_matcher(actual, matcher)
|
||||
end
|
||||
|
||||
it "should explain when the matcher parameter is not a matcher" do
|
||||
begin
|
||||
nonmatcher = mock("nonmatcher")
|
||||
actual = Object.new
|
||||
ExpectationMatcherHandler.handle_matcher(actual, nonmatcher)
|
||||
rescue Spec::Expectations::InvalidMatcherError => e
|
||||
end
|
||||
|
||||
e.message.should =~ /^Expected a matcher, got /
|
||||
end
|
||||
end
|
||||
|
||||
describe NegativeExpectationMatcherHandler, ".handle_matcher" do
|
||||
it "should explain when matcher does not support should_not" do
|
||||
matcher = mock("matcher")
|
||||
matcher.stub!(:matches?)
|
||||
actual = Object.new
|
||||
lambda {
|
||||
NegativeExpectationMatcherHandler.handle_matcher(actual, matcher)
|
||||
}.should fail_with(/Matcher does not support should_not.\n/)
|
||||
end
|
||||
|
||||
it "should ask the matcher if it matches" do
|
||||
matcher = mock("matcher")
|
||||
actual = Object.new
|
||||
matcher.stub!(:negative_failure_message)
|
||||
matcher.should_receive(:matches?).with(actual).and_return(false)
|
||||
NegativeExpectationMatcherHandler.handle_matcher(actual, matcher)
|
||||
end
|
||||
|
||||
it "should explain when the matcher parameter is not a matcher" do
|
||||
begin
|
||||
nonmatcher = mock("nonmatcher")
|
||||
actual = Object.new
|
||||
NegativeExpectationMatcherHandler.handle_matcher(actual, nonmatcher)
|
||||
rescue Spec::Expectations::InvalidMatcherError => e
|
||||
end
|
||||
|
||||
e.message.should =~ /^Expected a matcher, got /
|
||||
end
|
||||
end
|
||||
|
||||
describe ExpectationMatcherHandler do
|
||||
include ExampleExpectations
|
||||
|
||||
it "should handle submitted args" do
|
||||
5.should arbitrary_matcher(:expected => 5)
|
||||
5.should arbitrary_matcher(:expected => "wrong").with(5)
|
||||
lambda { 5.should arbitrary_matcher(:expected => 4) }.should fail_with("expected 4, got 5")
|
||||
lambda { 5.should arbitrary_matcher(:expected => 5).with(4) }.should fail_with("expected 4, got 5")
|
||||
5.should_not arbitrary_matcher(:expected => 4)
|
||||
5.should_not arbitrary_matcher(:expected => 5).with(4)
|
||||
lambda { 5.should_not arbitrary_matcher(:expected => 5) }.should fail_with("expected not 5, got 5")
|
||||
lambda { 5.should_not arbitrary_matcher(:expected => 4).with(5) }.should fail_with("expected not 5, got 5")
|
||||
end
|
||||
|
||||
it "should handle the submitted block" do
|
||||
5.should arbitrary_matcher { 5 }
|
||||
5.should arbitrary_matcher(:expected => 4) { 5 }
|
||||
5.should arbitrary_matcher(:expected => 4).with(5) { 3 }
|
||||
end
|
||||
|
||||
it "should explain when matcher does not support should_not" do
|
||||
lambda {
|
||||
5.should_not positive_only_matcher(:expected => 5)
|
||||
}.should fail_with(/Matcher does not support should_not.\n/)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
53
vendor/plugins/rspec/spec/spec/matchers/has_spec.rb
vendored
Normal file
53
vendor/plugins/rspec/spec/spec/matchers/has_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
describe "should have_sym(*args)" do
|
||||
it "should pass if #has_sym?(*args) returns true" do
|
||||
{:a => "A"}.should have_key(:a)
|
||||
end
|
||||
|
||||
it "should fail if #has_sym?(*args) returns false" do
|
||||
lambda {
|
||||
{:b => "B"}.should have_key(:a)
|
||||
}.should fail_with("expected #has_key?(:a) to return true, got false")
|
||||
end
|
||||
|
||||
it "should fail if target does not respond to #has_sym?" do
|
||||
lambda {
|
||||
Object.new.should have_key(:a)
|
||||
}.should raise_error(NoMethodError)
|
||||
end
|
||||
|
||||
it "should reraise an exception thrown in #has_sym?(*args)" do
|
||||
o = Object.new
|
||||
def o.has_sym?(*args)
|
||||
raise "Funky exception"
|
||||
end
|
||||
lambda { o.should have_sym(:foo) }.should raise_error("Funky exception")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should_not have_sym(*args)" do
|
||||
it "should pass if #has_sym?(*args) returns false" do
|
||||
{:a => "A"}.should_not have_key(:b)
|
||||
end
|
||||
|
||||
it "should fail if #has_sym?(*args) returns true" do
|
||||
lambda {
|
||||
{:a => "A"}.should_not have_key(:a)
|
||||
}.should fail_with("expected #has_key?(:a) to return false, got true")
|
||||
end
|
||||
|
||||
it "should fail if target does not respond to #has_sym?" do
|
||||
lambda {
|
||||
Object.new.should have_key(:a)
|
||||
}.should raise_error(NoMethodError)
|
||||
end
|
||||
|
||||
it "should reraise an exception thrown in #has_sym?(*args)" do
|
||||
o = Object.new
|
||||
def o.has_sym?(*args)
|
||||
raise "Funky exception"
|
||||
end
|
||||
lambda { o.should_not have_sym(:foo) }.should raise_error("Funky exception")
|
||||
end
|
||||
end
|
||||
293
vendor/plugins/rspec/spec/spec/matchers/have_spec.rb
vendored
Normal file
293
vendor/plugins/rspec/spec/spec/matchers/have_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,293 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module HaveSpecHelper
|
||||
def create_collection_owner_with(n)
|
||||
owner = Spec::Expectations::Helper::CollectionOwner.new
|
||||
(1..n).each do |n|
|
||||
owner.add_to_collection_with_length_method(n)
|
||||
owner.add_to_collection_with_size_method(n)
|
||||
end
|
||||
owner
|
||||
end
|
||||
end
|
||||
|
||||
describe "should have(n).items" do
|
||||
include HaveSpecHelper
|
||||
|
||||
it "should pass if target has a collection of items with n members" do
|
||||
owner = create_collection_owner_with(3)
|
||||
owner.should have(3).items_in_collection_with_length_method
|
||||
owner.should have(3).items_in_collection_with_size_method
|
||||
end
|
||||
|
||||
it "should convert :no to 0" do
|
||||
owner = create_collection_owner_with(0)
|
||||
owner.should have(:no).items_in_collection_with_length_method
|
||||
owner.should have(:no).items_in_collection_with_size_method
|
||||
end
|
||||
|
||||
it "should fail if target has a collection of items with < n members" do
|
||||
owner = create_collection_owner_with(3)
|
||||
lambda {
|
||||
owner.should have(4).items_in_collection_with_length_method
|
||||
}.should fail_with("expected 4 items_in_collection_with_length_method, got 3")
|
||||
lambda {
|
||||
owner.should have(4).items_in_collection_with_size_method
|
||||
}.should fail_with("expected 4 items_in_collection_with_size_method, got 3")
|
||||
end
|
||||
|
||||
it "should fail if target has a collection of items with > n members" do
|
||||
owner = create_collection_owner_with(3)
|
||||
lambda {
|
||||
owner.should have(2).items_in_collection_with_length_method
|
||||
}.should fail_with("expected 2 items_in_collection_with_length_method, got 3")
|
||||
lambda {
|
||||
owner.should have(2).items_in_collection_with_size_method
|
||||
}.should fail_with("expected 2 items_in_collection_with_size_method, got 3")
|
||||
end
|
||||
end
|
||||
|
||||
describe 'should have(1).item when ActiveSupport::Inflector is defined' do
|
||||
include HaveSpecHelper
|
||||
|
||||
before do
|
||||
unless defined?(ActiveSupport::Inflector)
|
||||
module ActiveSupport
|
||||
class Inflector
|
||||
def self.pluralize(string)
|
||||
string.to_s + 's'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
it 'should pluralize the collection name' do
|
||||
owner = create_collection_owner_with(1)
|
||||
owner.should have(1).item
|
||||
end
|
||||
end
|
||||
|
||||
describe "should have(n).items where result responds to items but returns something other than a collection" do
|
||||
it "should provide a meaningful error" do
|
||||
owner = Class.new do
|
||||
def items
|
||||
Object.new
|
||||
end
|
||||
end.new
|
||||
lambda do
|
||||
owner.should have(3).items
|
||||
end.should raise_error("expected items to be a collection but it does not respond to #length or #size")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should_not have(n).items" do
|
||||
include HaveSpecHelper
|
||||
|
||||
it "should pass if target has a collection of items with < n members" do
|
||||
owner = create_collection_owner_with(3)
|
||||
owner.should_not have(4).items_in_collection_with_length_method
|
||||
owner.should_not have(4).items_in_collection_with_size_method
|
||||
end
|
||||
|
||||
it "should pass if target has a collection of items with > n members" do
|
||||
owner = create_collection_owner_with(3)
|
||||
owner.should_not have(2).items_in_collection_with_length_method
|
||||
owner.should_not have(2).items_in_collection_with_size_method
|
||||
end
|
||||
|
||||
it "should fail if target has a collection of items with n members" do
|
||||
owner = create_collection_owner_with(3)
|
||||
lambda {
|
||||
owner.should_not have(3).items_in_collection_with_length_method
|
||||
}.should fail_with("expected target not to have 3 items_in_collection_with_length_method, got 3")
|
||||
lambda {
|
||||
owner.should_not have(3).items_in_collection_with_size_method
|
||||
}.should fail_with("expected target not to have 3 items_in_collection_with_size_method, got 3")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should have_exactly(n).items" do
|
||||
include HaveSpecHelper
|
||||
|
||||
it "should pass if target has a collection of items with n members" do
|
||||
owner = create_collection_owner_with(3)
|
||||
owner.should have_exactly(3).items_in_collection_with_length_method
|
||||
owner.should have_exactly(3).items_in_collection_with_size_method
|
||||
end
|
||||
|
||||
it "should convert :no to 0" do
|
||||
owner = create_collection_owner_with(0)
|
||||
owner.should have_exactly(:no).items_in_collection_with_length_method
|
||||
owner.should have_exactly(:no).items_in_collection_with_size_method
|
||||
end
|
||||
|
||||
it "should fail if target has a collection of items with < n members" do
|
||||
owner = create_collection_owner_with(3)
|
||||
lambda {
|
||||
owner.should have_exactly(4).items_in_collection_with_length_method
|
||||
}.should fail_with("expected 4 items_in_collection_with_length_method, got 3")
|
||||
lambda {
|
||||
owner.should have_exactly(4).items_in_collection_with_size_method
|
||||
}.should fail_with("expected 4 items_in_collection_with_size_method, got 3")
|
||||
end
|
||||
|
||||
it "should fail if target has a collection of items with > n members" do
|
||||
owner = create_collection_owner_with(3)
|
||||
lambda {
|
||||
owner.should have_exactly(2).items_in_collection_with_length_method
|
||||
}.should fail_with("expected 2 items_in_collection_with_length_method, got 3")
|
||||
lambda {
|
||||
owner.should have_exactly(2).items_in_collection_with_size_method
|
||||
}.should fail_with("expected 2 items_in_collection_with_size_method, got 3")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should have_at_least(n).items" do
|
||||
include HaveSpecHelper
|
||||
|
||||
it "should pass if target has a collection of items with n members" do
|
||||
owner = create_collection_owner_with(3)
|
||||
owner.should have_at_least(3).items_in_collection_with_length_method
|
||||
owner.should have_at_least(3).items_in_collection_with_size_method
|
||||
end
|
||||
|
||||
it "should pass if target has a collection of items with > n members" do
|
||||
owner = create_collection_owner_with(3)
|
||||
owner.should have_at_least(2).items_in_collection_with_length_method
|
||||
owner.should have_at_least(2).items_in_collection_with_size_method
|
||||
end
|
||||
|
||||
it "should fail if target has a collection of items with < n members" do
|
||||
owner = create_collection_owner_with(3)
|
||||
lambda {
|
||||
owner.should have_at_least(4).items_in_collection_with_length_method
|
||||
}.should fail_with("expected at least 4 items_in_collection_with_length_method, got 3")
|
||||
lambda {
|
||||
owner.should have_at_least(4).items_in_collection_with_size_method
|
||||
}.should fail_with("expected at least 4 items_in_collection_with_size_method, got 3")
|
||||
end
|
||||
|
||||
it "should provide educational negative failure messages" do
|
||||
#given
|
||||
owner = create_collection_owner_with(3)
|
||||
length_matcher = have_at_least(3).items_in_collection_with_length_method
|
||||
size_matcher = have_at_least(3).items_in_collection_with_size_method
|
||||
|
||||
#when
|
||||
length_matcher.matches?(owner)
|
||||
size_matcher.matches?(owner)
|
||||
|
||||
#then
|
||||
length_matcher.negative_failure_message.should == <<-EOF
|
||||
Isn't life confusing enough?
|
||||
Instead of having to figure out the meaning of this:
|
||||
should_not have_at_least(3).items_in_collection_with_length_method
|
||||
We recommend that you use this instead:
|
||||
should have_at_most(2).items_in_collection_with_length_method
|
||||
EOF
|
||||
|
||||
size_matcher.negative_failure_message.should == <<-EOF
|
||||
Isn't life confusing enough?
|
||||
Instead of having to figure out the meaning of this:
|
||||
should_not have_at_least(3).items_in_collection_with_size_method
|
||||
We recommend that you use this instead:
|
||||
should have_at_most(2).items_in_collection_with_size_method
|
||||
EOF
|
||||
end
|
||||
end
|
||||
|
||||
describe "should have_at_most(n).items" do
|
||||
include HaveSpecHelper
|
||||
|
||||
it "should pass if target has a collection of items with n members" do
|
||||
owner = create_collection_owner_with(3)
|
||||
owner.should have_at_most(3).items_in_collection_with_length_method
|
||||
owner.should have_at_most(3).items_in_collection_with_size_method
|
||||
end
|
||||
|
||||
it "should fail if target has a collection of items with > n members" do
|
||||
owner = create_collection_owner_with(3)
|
||||
lambda {
|
||||
owner.should have_at_most(2).items_in_collection_with_length_method
|
||||
}.should fail_with("expected at most 2 items_in_collection_with_length_method, got 3")
|
||||
lambda {
|
||||
owner.should have_at_most(2).items_in_collection_with_size_method
|
||||
}.should fail_with("expected at most 2 items_in_collection_with_size_method, got 3")
|
||||
end
|
||||
|
||||
it "should pass if target has a collection of items with < n members" do
|
||||
owner = create_collection_owner_with(3)
|
||||
owner.should have_at_most(4).items_in_collection_with_length_method
|
||||
owner.should have_at_most(4).items_in_collection_with_size_method
|
||||
end
|
||||
|
||||
it "should provide educational negative failure messages" do
|
||||
#given
|
||||
owner = create_collection_owner_with(3)
|
||||
length_matcher = have_at_most(3).items_in_collection_with_length_method
|
||||
size_matcher = have_at_most(3).items_in_collection_with_size_method
|
||||
|
||||
#when
|
||||
length_matcher.matches?(owner)
|
||||
size_matcher.matches?(owner)
|
||||
|
||||
#then
|
||||
length_matcher.negative_failure_message.should == <<-EOF
|
||||
Isn't life confusing enough?
|
||||
Instead of having to figure out the meaning of this:
|
||||
should_not have_at_most(3).items_in_collection_with_length_method
|
||||
We recommend that you use this instead:
|
||||
should have_at_least(4).items_in_collection_with_length_method
|
||||
EOF
|
||||
|
||||
size_matcher.negative_failure_message.should == <<-EOF
|
||||
Isn't life confusing enough?
|
||||
Instead of having to figure out the meaning of this:
|
||||
should_not have_at_most(3).items_in_collection_with_size_method
|
||||
We recommend that you use this instead:
|
||||
should have_at_least(4).items_in_collection_with_size_method
|
||||
EOF
|
||||
end
|
||||
end
|
||||
|
||||
describe "have(n).items(args, block)" do
|
||||
it "should pass args to target" do
|
||||
target = mock("target")
|
||||
target.should_receive(:items).with("arg1","arg2").and_return([1,2,3])
|
||||
target.should have(3).items("arg1","arg2")
|
||||
end
|
||||
|
||||
it "should pass block to target" do
|
||||
target = mock("target")
|
||||
block = lambda { 5 }
|
||||
target.should_receive(:items).with("arg1","arg2", block).and_return([1,2,3])
|
||||
target.should have(3).items("arg1","arg2", block)
|
||||
end
|
||||
end
|
||||
|
||||
describe "have(n).items where target IS a collection" do
|
||||
it "should reference the number of items IN the collection" do
|
||||
[1,2,3].should have(3).items
|
||||
end
|
||||
|
||||
it "should fail when the number of items IN the collection is not as expected" do
|
||||
lambda { [1,2,3].should have(7).items }.should fail_with("expected 7 items, got 3")
|
||||
end
|
||||
end
|
||||
|
||||
describe "have(n).characters where target IS a String" do
|
||||
it "should pass if the length is correct" do
|
||||
"this string".should have(11).characters
|
||||
end
|
||||
|
||||
it "should fail if the length is incorrect" do
|
||||
lambda { "this string".should have(12).characters }.should fail_with("expected 12 characters, got 11")
|
||||
end
|
||||
end
|
||||
|
||||
describe "have(n).things on an object which is not a collection nor contains one" do
|
||||
it "should fail" do
|
||||
lambda { Object.new.should have(2).things }.should raise_error(NoMethodError, /undefined method `things' for #<Object:/)
|
||||
end
|
||||
end
|
||||
45
vendor/plugins/rspec/spec/spec/matchers/include_spec.rb
vendored
Normal file
45
vendor/plugins/rspec/spec/spec/matchers/include_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
describe "should include(expected)" do
|
||||
it "should pass if target includes expected" do
|
||||
[1,2,3].should include(3)
|
||||
"abc".should include("a")
|
||||
end
|
||||
|
||||
it "should fail if target does not include expected" do
|
||||
lambda {
|
||||
[1,2,3].should include(4)
|
||||
}.should fail_with("expected [1, 2, 3] to include 4")
|
||||
lambda {
|
||||
"abc".should include("d")
|
||||
}.should fail_with("expected \"abc\" to include \"d\"")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should include(with, multiple, args)" do
|
||||
it "should pass if target includes all items" do
|
||||
[1,2,3].should include(1,2,3)
|
||||
end
|
||||
|
||||
it "should fail if target does not include any one of the items" do
|
||||
lambda {
|
||||
[1,2,3].should include(1,2,4)
|
||||
}.should fail_with("expected [1, 2, 3] to include 1, 2 and 4")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should_not include(expected)" do
|
||||
it "should pass if target does not include expected" do
|
||||
[1,2,3].should_not include(4)
|
||||
"abc".should_not include("d")
|
||||
end
|
||||
|
||||
it "should fail if target includes expected" do
|
||||
lambda {
|
||||
[1,2,3].should_not include(3)
|
||||
}.should fail_with("expected [1, 2, 3] not to include 3")
|
||||
lambda {
|
||||
"abc".should_not include("c")
|
||||
}.should fail_with("expected \"abc\" not to include \"c\"")
|
||||
end
|
||||
end
|
||||
37
vendor/plugins/rspec/spec/spec/matchers/match_spec.rb
vendored
Normal file
37
vendor/plugins/rspec/spec/spec/matchers/match_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
describe "should match(expected)" do
|
||||
it "should pass when target (String) matches expected (Regexp)" do
|
||||
"string".should match(/tri/)
|
||||
end
|
||||
|
||||
it "should fail when target (String) does not match expected (Regexp)" do
|
||||
lambda {
|
||||
"string".should match(/rings/)
|
||||
}.should fail
|
||||
end
|
||||
|
||||
it "should provide message, expected and actual on failure" do
|
||||
matcher = match(/rings/)
|
||||
matcher.matches?("string")
|
||||
matcher.failure_message.should == ["expected \"string\" to match /rings/", /rings/, "string"]
|
||||
end
|
||||
end
|
||||
|
||||
describe "should_not match(expected)" do
|
||||
it "should pass when target (String) matches does not match (Regexp)" do
|
||||
"string".should_not match(/rings/)
|
||||
end
|
||||
|
||||
it "should fail when target (String) matches expected (Regexp)" do
|
||||
lambda {
|
||||
"string".should_not match(/tri/)
|
||||
}.should fail
|
||||
end
|
||||
|
||||
it "should provide message, expected and actual on failure" do
|
||||
matcher = match(/tri/)
|
||||
matcher.matches?("string")
|
||||
matcher.negative_failure_message.should == ["expected \"string\" not to match /tri/", /tri/, "string"]
|
||||
end
|
||||
end
|
||||
78
vendor/plugins/rspec/spec/spec/matchers/matcher_methods_spec.rb
vendored
Normal file
78
vendor/plugins/rspec/spec/spec/matchers/matcher_methods_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Matchers
|
||||
context %Q{The Spec::Matchers module gets included in the execution context of every spec.
|
||||
This module should provide the following methods, each of which returns a Matcher object.} do
|
||||
it "be_true" do
|
||||
be_true.should be_an_instance_of(Be)
|
||||
end
|
||||
it "be_false" do
|
||||
be_false.should be_an_instance_of(Be)
|
||||
end
|
||||
it "be_nil" do
|
||||
be_nil.should be_an_instance_of(Be)
|
||||
end
|
||||
it "be_arbitrary_predicate" do
|
||||
be_arbitrary_predicate.should be_an_instance_of(Be)
|
||||
end
|
||||
it "be_close" do
|
||||
be_close(1,2).should be_an_instance_of(BeClose)
|
||||
end
|
||||
it "change" do
|
||||
change("target", :message).should be_an_instance_of(Change)
|
||||
end
|
||||
it "eql" do
|
||||
eql(:expected).should be_an_instance_of(Eql)
|
||||
end
|
||||
it "equal" do
|
||||
equal(:expected).should be_an_instance_of(Equal)
|
||||
end
|
||||
it "have" do
|
||||
have(0).should be_an_instance_of(Have)
|
||||
end
|
||||
it "have_exactly" do
|
||||
have_exactly(0).should be_an_instance_of(Have)
|
||||
end
|
||||
it "have_at_least" do
|
||||
have_at_least(0).should be_an_instance_of(Have)
|
||||
end
|
||||
it "have_at_most" do
|
||||
have_at_most(0).should be_an_instance_of(Have)
|
||||
end
|
||||
it "include" do
|
||||
include(:value).should be_an_instance_of(Include)
|
||||
end
|
||||
it "match" do
|
||||
match(:value).should be_an_instance_of(Match)
|
||||
end
|
||||
it "raise_error" do
|
||||
raise_error.should be_an_instance_of(RaiseError)
|
||||
raise_error(NoMethodError).should be_an_instance_of(RaiseError)
|
||||
raise_error(NoMethodError, "message").should be_an_instance_of(RaiseError)
|
||||
end
|
||||
it "satisfy" do
|
||||
satisfy{}.should be_an_instance_of(Satisfy)
|
||||
end
|
||||
it "throw_symbol" do
|
||||
throw_symbol.should be_an_instance_of(ThrowSymbol)
|
||||
throw_symbol(:sym).should be_an_instance_of(ThrowSymbol)
|
||||
end
|
||||
it "respond_to" do
|
||||
respond_to(:sym).should be_an_instance_of(RespondTo)
|
||||
end
|
||||
end
|
||||
|
||||
describe "Spec::Matchers#method_missing" do
|
||||
it "should convert be_xyz to Be(:be_xyz)" do
|
||||
Be.should_receive(:new).with(:be_whatever)
|
||||
be_whatever
|
||||
end
|
||||
|
||||
it "should convert have_xyz to Has(:have_xyz)" do
|
||||
Has.should_receive(:new).with(:have_whatever)
|
||||
have_whatever
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
24
vendor/plugins/rspec/spec/spec/matchers/mock_constraint_matchers_spec.rb
vendored
Normal file
24
vendor/plugins/rspec/spec/spec/matchers/mock_constraint_matchers_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
describe "The anything() mock argument constraint matcher" do
|
||||
specify { anything.should == Object.new }
|
||||
specify { anything.should == Class }
|
||||
specify { anything.should == 1 }
|
||||
specify { anything.should == "a string" }
|
||||
specify { anything.should == :a_symbol }
|
||||
end
|
||||
|
||||
describe "The boolean() mock argument constraint matcher" do
|
||||
specify { boolean.should == true }
|
||||
specify { boolean.should == false }
|
||||
specify { boolean.should_not == Object.new }
|
||||
specify { boolean.should_not == Class }
|
||||
specify { boolean.should_not == 1 }
|
||||
specify { boolean.should_not == "a string" }
|
||||
specify { boolean.should_not == :a_symbol }
|
||||
end
|
||||
|
||||
describe "The an_instance_of() mock argument constraint matcher" do
|
||||
# NOTE - this is implemented as a predicate_matcher - see example_group_methods.rb
|
||||
specify { an_instance_of(String).should == "string" }
|
||||
end
|
||||
158
vendor/plugins/rspec/spec/spec/matchers/operator_matcher_spec.rb
vendored
Normal file
158
vendor/plugins/rspec/spec/spec/matchers/operator_matcher_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,158 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
require 'spec/expectations/differs/default'
|
||||
|
||||
describe "should ==" do
|
||||
|
||||
it "should delegate message to target" do
|
||||
subject = "apple"
|
||||
subject.should_receive(:==).with("apple").and_return(true)
|
||||
subject.should == "apple"
|
||||
end
|
||||
|
||||
it "should fail when target.==(actual) returns false" do
|
||||
subject = "apple"
|
||||
Spec::Expectations.should_receive(:fail_with).with(%[expected: "orange",\n got: "apple" (using ==)], "orange", "apple")
|
||||
subject.should == "orange"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "should_not ==" do
|
||||
|
||||
it "should delegate message to target" do
|
||||
subject = "orange"
|
||||
subject.should_receive(:==).with("apple").and_return(false)
|
||||
subject.should_not == "apple"
|
||||
end
|
||||
|
||||
it "should fail when target.==(actual) returns false" do
|
||||
subject = "apple"
|
||||
Spec::Expectations.should_receive(:fail_with).with(%[expected not: == "apple",\n got: "apple"], "apple", "apple")
|
||||
subject.should_not == "apple"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "should ===" do
|
||||
|
||||
it "should delegate message to target" do
|
||||
subject = "apple"
|
||||
subject.should_receive(:===).with("apple").and_return(true)
|
||||
subject.should === "apple"
|
||||
end
|
||||
|
||||
it "should fail when target.===(actual) returns false" do
|
||||
subject = "apple"
|
||||
subject.should_receive(:===).with("orange").and_return(false)
|
||||
Spec::Expectations.should_receive(:fail_with).with(%[expected: "orange",\n got: "apple" (using ===)], "orange", "apple")
|
||||
subject.should === "orange"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "should_not ===" do
|
||||
|
||||
it "should delegate message to target" do
|
||||
subject = "orange"
|
||||
subject.should_receive(:===).with("apple").and_return(false)
|
||||
subject.should_not === "apple"
|
||||
end
|
||||
|
||||
it "should fail when target.===(actual) returns false" do
|
||||
subject = "apple"
|
||||
subject.should_receive(:===).with("apple").and_return(true)
|
||||
Spec::Expectations.should_receive(:fail_with).with(%[expected not: === "apple",\n got: "apple"], "apple", "apple")
|
||||
subject.should_not === "apple"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "should =~" do
|
||||
|
||||
it "should delegate message to target" do
|
||||
subject = "foo"
|
||||
subject.should_receive(:=~).with(/oo/).and_return(true)
|
||||
subject.should =~ /oo/
|
||||
end
|
||||
|
||||
it "should fail when target.=~(actual) returns false" do
|
||||
subject = "fu"
|
||||
subject.should_receive(:=~).with(/oo/).and_return(false)
|
||||
Spec::Expectations.should_receive(:fail_with).with(%[expected: /oo/,\n got: "fu" (using =~)], /oo/, "fu")
|
||||
subject.should =~ /oo/
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "should_not =~" do
|
||||
|
||||
it "should delegate message to target" do
|
||||
subject = "fu"
|
||||
subject.should_receive(:=~).with(/oo/).and_return(false)
|
||||
subject.should_not =~ /oo/
|
||||
end
|
||||
|
||||
it "should fail when target.=~(actual) returns false" do
|
||||
subject = "foo"
|
||||
subject.should_receive(:=~).with(/oo/).and_return(true)
|
||||
Spec::Expectations.should_receive(:fail_with).with(%[expected not: =~ /oo/,\n got: "foo"], /oo/, "foo")
|
||||
subject.should_not =~ /oo/
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "should >" do
|
||||
|
||||
it "should pass if > passes" do
|
||||
4.should > 3
|
||||
end
|
||||
|
||||
it "should fail if > fails" do
|
||||
Spec::Expectations.should_receive(:fail_with).with(%[expected: > 5,\n got: 4], 5, 4)
|
||||
4.should > 5
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "should >=" do
|
||||
|
||||
it "should pass if >= passes" do
|
||||
4.should > 3
|
||||
4.should >= 4
|
||||
end
|
||||
|
||||
it "should fail if > fails" do
|
||||
Spec::Expectations.should_receive(:fail_with).with(%[expected: >= 5,\n got: 4], 5, 4)
|
||||
4.should >= 5
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "should <" do
|
||||
|
||||
it "should pass if < passes" do
|
||||
4.should < 5
|
||||
end
|
||||
|
||||
it "should fail if > fails" do
|
||||
Spec::Expectations.should_receive(:fail_with).with(%[expected: < 3,\n got: 4], 3, 4)
|
||||
4.should < 3
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "should <=" do
|
||||
|
||||
it "should pass if <= passes" do
|
||||
4.should <= 5
|
||||
4.should <= 4
|
||||
end
|
||||
|
||||
it "should fail if > fails" do
|
||||
Spec::Expectations.should_receive(:fail_with).with(%[expected: <= 3,\n got: 4], 3, 4)
|
||||
4.should <= 3
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
315
vendor/plugins/rspec/spec/spec/matchers/raise_error_spec.rb
vendored
Normal file
315
vendor/plugins/rspec/spec/spec/matchers/raise_error_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,315 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
describe "should raise_error" do
|
||||
it "should pass if anything is raised" do
|
||||
lambda {raise}.should raise_error
|
||||
end
|
||||
|
||||
it "should fail if nothing is raised" do
|
||||
lambda {
|
||||
lambda {}.should raise_error
|
||||
}.should fail_with("expected Exception but nothing was raised")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should_not raise_error" do
|
||||
it "should pass if nothing is raised" do
|
||||
lambda {}.should_not raise_error
|
||||
end
|
||||
|
||||
it "should fail if anything is raised" do
|
||||
lambda {
|
||||
lambda {raise}.should_not raise_error
|
||||
}.should fail_with("expected no Exception, got RuntimeError")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should raise_error(message)" do
|
||||
it "should pass if RuntimeError is raised with the right message" do
|
||||
lambda {raise 'blah'}.should raise_error('blah')
|
||||
end
|
||||
it "should pass if RuntimeError is raised with a matching message" do
|
||||
lambda {raise 'blah'}.should raise_error(/blah/)
|
||||
end
|
||||
it "should pass if any other error is raised with the right message" do
|
||||
lambda {raise NameError.new('blah')}.should raise_error('blah')
|
||||
end
|
||||
it "should fail if RuntimeError error is raised with the wrong message" do
|
||||
lambda do
|
||||
lambda {raise 'blarg'}.should raise_error('blah')
|
||||
end.should fail_with("expected Exception with \"blah\", got #<RuntimeError: blarg>")
|
||||
end
|
||||
it "should fail if any other error is raised with the wrong message" do
|
||||
lambda do
|
||||
lambda {raise NameError.new('blarg')}.should raise_error('blah')
|
||||
end.should fail_with("expected Exception with \"blah\", got #<NameError: blarg>")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should_not raise_error(message)" do
|
||||
it "should pass if RuntimeError error is raised with the different message" do
|
||||
lambda {raise 'blarg'}.should_not raise_error('blah')
|
||||
end
|
||||
it "should pass if any other error is raised with the wrong message" do
|
||||
lambda {raise NameError.new('blarg')}.should_not raise_error('blah')
|
||||
end
|
||||
it "should fail if RuntimeError is raised with message" do
|
||||
lambda do
|
||||
lambda {raise 'blah'}.should_not raise_error('blah')
|
||||
end.should fail_with(%Q|expected no Exception with "blah", got #<RuntimeError: blah>|)
|
||||
end
|
||||
it "should fail if any other error is raised with message" do
|
||||
lambda do
|
||||
lambda {raise NameError.new('blah')}.should_not raise_error('blah')
|
||||
end.should fail_with(%Q|expected no Exception with "blah", got #<NameError: blah>|)
|
||||
end
|
||||
end
|
||||
|
||||
describe "should raise_error(NamedError)" do
|
||||
it "should pass if named error is raised" do
|
||||
lambda { non_existent_method }.should raise_error(NameError)
|
||||
end
|
||||
|
||||
it "should fail if nothing is raised" do
|
||||
lambda {
|
||||
lambda { }.should raise_error(NameError)
|
||||
}.should fail_with("expected NameError but nothing was raised")
|
||||
end
|
||||
|
||||
it "should fail if another error is raised (NameError)" do
|
||||
lambda {
|
||||
lambda { raise }.should raise_error(NameError)
|
||||
}.should fail_with("expected NameError, got RuntimeError")
|
||||
end
|
||||
|
||||
it "should fail if another error is raised (NameError)" do
|
||||
lambda {
|
||||
lambda { load "non/existent/file" }.should raise_error(NameError)
|
||||
}.should fail_with(/expected NameError, got #<LoadError/)
|
||||
end
|
||||
end
|
||||
|
||||
describe "should_not raise_error(NamedError)" do
|
||||
it "should pass if nothing is raised" do
|
||||
lambda { }.should_not raise_error(NameError)
|
||||
end
|
||||
|
||||
it "should pass if another error is raised" do
|
||||
lambda { raise }.should_not raise_error(NameError)
|
||||
end
|
||||
|
||||
it "should fail if named error is raised" do
|
||||
lambda {
|
||||
lambda { non_existent_method }.should_not raise_error(NameError)
|
||||
}.should fail_with(/expected no NameError, got #<NameError: undefined/)
|
||||
end
|
||||
end
|
||||
|
||||
describe "should raise_error(NamedError, error_message) with String" do
|
||||
it "should pass if named error is raised with same message" do
|
||||
lambda { raise "example message" }.should raise_error(RuntimeError, "example message")
|
||||
end
|
||||
|
||||
it "should fail if nothing is raised" do
|
||||
lambda {
|
||||
lambda {}.should raise_error(RuntimeError, "example message")
|
||||
}.should fail_with("expected RuntimeError with \"example message\" but nothing was raised")
|
||||
end
|
||||
|
||||
it "should fail if incorrect error is raised" do
|
||||
lambda {
|
||||
lambda { raise }.should raise_error(NameError, "example message")
|
||||
}.should fail_with("expected NameError with \"example message\", got RuntimeError")
|
||||
end
|
||||
|
||||
it "should fail if correct error is raised with incorrect message" do
|
||||
lambda {
|
||||
lambda { raise RuntimeError.new("not the example message") }.should raise_error(RuntimeError, "example message")
|
||||
}.should fail_with(/expected RuntimeError with \"example message\", got #<RuntimeError: not the example message/)
|
||||
end
|
||||
end
|
||||
|
||||
describe "should raise_error(NamedError, error_message) { |err| ... }" do
|
||||
it "should yield exception if named error is raised with same message" do
|
||||
ran = false
|
||||
|
||||
lambda {
|
||||
raise "example message"
|
||||
}.should raise_error(RuntimeError, "example message") { |err|
|
||||
ran = true
|
||||
err.class.should == RuntimeError
|
||||
err.message.should == "example message"
|
||||
}
|
||||
|
||||
ran.should == true
|
||||
end
|
||||
|
||||
it "yielded block should be able to fail on it's own right" do
|
||||
ran, passed = false, false
|
||||
|
||||
lambda {
|
||||
lambda {
|
||||
raise "example message"
|
||||
}.should raise_error(RuntimeError, "example message") { |err|
|
||||
ran = true
|
||||
5.should == 4
|
||||
passed = true
|
||||
}
|
||||
}.should fail_with(/expected: 4/m)
|
||||
|
||||
ran.should == true
|
||||
passed.should == false
|
||||
end
|
||||
|
||||
it "should NOT yield exception if no error was thrown" do
|
||||
ran = false
|
||||
|
||||
lambda {
|
||||
lambda {}.should raise_error(RuntimeError, "example message") { |err|
|
||||
ran = true
|
||||
}
|
||||
}.should fail_with("expected RuntimeError with \"example message\" but nothing was raised")
|
||||
|
||||
ran.should == false
|
||||
end
|
||||
|
||||
it "should not yield exception if error class is not matched" do
|
||||
ran = false
|
||||
|
||||
lambda {
|
||||
lambda {
|
||||
raise "example message"
|
||||
}.should raise_error(SyntaxError, "example message") { |err|
|
||||
ran = true
|
||||
}
|
||||
}.should fail_with("expected SyntaxError with \"example message\", got #<RuntimeError: example message>")
|
||||
|
||||
ran.should == false
|
||||
end
|
||||
|
||||
it "should NOT yield exception if error message is not matched" do
|
||||
ran = false
|
||||
|
||||
lambda {
|
||||
lambda {
|
||||
raise "example message"
|
||||
}.should raise_error(RuntimeError, "different message") { |err|
|
||||
ran = true
|
||||
}
|
||||
}.should fail_with("expected RuntimeError with \"different message\", got #<RuntimeError: example message>")
|
||||
|
||||
ran.should == false
|
||||
end
|
||||
end
|
||||
|
||||
describe "should_not raise_error(NamedError, error_message) { |err| ... }" do
|
||||
it "should pass if nothing is raised" do
|
||||
ran = false
|
||||
|
||||
lambda {}.should_not raise_error(RuntimeError, "example message") { |err|
|
||||
ran = true
|
||||
}
|
||||
|
||||
ran.should == false
|
||||
end
|
||||
|
||||
it "should pass if a different error is raised" do
|
||||
ran = false
|
||||
|
||||
lambda { raise }.should_not raise_error(NameError, "example message") { |err|
|
||||
ran = true
|
||||
}
|
||||
|
||||
ran.should == false
|
||||
end
|
||||
|
||||
it "should pass if same error is raised with different message" do
|
||||
ran = false
|
||||
|
||||
lambda {
|
||||
raise RuntimeError.new("not the example message")
|
||||
}.should_not raise_error(RuntimeError, "example message") { |err|
|
||||
ran = true
|
||||
}
|
||||
|
||||
ran.should == false
|
||||
end
|
||||
|
||||
it "should fail if named error is raised with same message" do
|
||||
ran = false
|
||||
|
||||
lambda {
|
||||
lambda {
|
||||
raise "example message"
|
||||
}.should_not raise_error(RuntimeError, "example message") { |err|
|
||||
ran = true
|
||||
}
|
||||
}.should fail_with("expected no RuntimeError with \"example message\", got #<RuntimeError: example message>")
|
||||
|
||||
ran.should == false
|
||||
end
|
||||
end
|
||||
|
||||
describe "should_not raise_error(NamedError, error_message) with String" do
|
||||
it "should pass if nothing is raised" do
|
||||
lambda {}.should_not raise_error(RuntimeError, "example message")
|
||||
end
|
||||
|
||||
it "should pass if a different error is raised" do
|
||||
lambda { raise }.should_not raise_error(NameError, "example message")
|
||||
end
|
||||
|
||||
it "should pass if same error is raised with different message" do
|
||||
lambda { raise RuntimeError.new("not the example message") }.should_not raise_error(RuntimeError, "example message")
|
||||
end
|
||||
|
||||
it "should fail if named error is raised with same message" do
|
||||
lambda {
|
||||
lambda { raise "example message" }.should_not raise_error(RuntimeError, "example message")
|
||||
}.should fail_with("expected no RuntimeError with \"example message\", got #<RuntimeError: example message>")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should raise_error(NamedError, error_message) with Regexp" do
|
||||
it "should pass if named error is raised with matching message" do
|
||||
lambda { raise "example message" }.should raise_error(RuntimeError, /ample mess/)
|
||||
end
|
||||
|
||||
it "should fail if nothing is raised" do
|
||||
lambda {
|
||||
lambda {}.should raise_error(RuntimeError, /ample mess/)
|
||||
}.should fail_with("expected RuntimeError with message matching /ample mess/ but nothing was raised")
|
||||
end
|
||||
|
||||
it "should fail if incorrect error is raised" do
|
||||
lambda {
|
||||
lambda { raise }.should raise_error(NameError, /ample mess/)
|
||||
}.should fail_with("expected NameError with message matching /ample mess/, got RuntimeError")
|
||||
end
|
||||
|
||||
it "should fail if correct error is raised with incorrect message" do
|
||||
lambda {
|
||||
lambda { raise RuntimeError.new("not the example message") }.should raise_error(RuntimeError, /less than ample mess/)
|
||||
}.should fail_with("expected RuntimeError with message matching /less than ample mess/, got #<RuntimeError: not the example message>")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should_not raise_error(NamedError, error_message) with Regexp" do
|
||||
it "should pass if nothing is raised" do
|
||||
lambda {}.should_not raise_error(RuntimeError, /ample mess/)
|
||||
end
|
||||
|
||||
it "should pass if a different error is raised" do
|
||||
lambda { raise }.should_not raise_error(NameError, /ample mess/)
|
||||
end
|
||||
|
||||
it "should pass if same error is raised with non-matching message" do
|
||||
lambda { raise RuntimeError.new("non matching message") }.should_not raise_error(RuntimeError, /ample mess/)
|
||||
end
|
||||
|
||||
it "should fail if named error is raised with matching message" do
|
||||
lambda {
|
||||
lambda { raise "example message" }.should_not raise_error(RuntimeError, /ample mess/)
|
||||
}.should fail_with("expected no RuntimeError with message matching /ample mess/, got #<RuntimeError: example message>")
|
||||
end
|
||||
end
|
||||
54
vendor/plugins/rspec/spec/spec/matchers/respond_to_spec.rb
vendored
Normal file
54
vendor/plugins/rspec/spec/spec/matchers/respond_to_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
describe "should respond_to(:sym)" do
|
||||
|
||||
it "should pass if target responds to :sym" do
|
||||
Object.new.should respond_to(:methods)
|
||||
end
|
||||
|
||||
it "should fail target does not respond to :sym" do
|
||||
lambda {
|
||||
Object.new.should respond_to(:some_method)
|
||||
}.should fail_with("expected target to respond to :some_method")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "should respond_to(message1, message2)" do
|
||||
|
||||
it "should pass if target responds to both messages" do
|
||||
Object.new.should respond_to('methods', 'inspect')
|
||||
end
|
||||
|
||||
it "should fail target does not respond to first message" do
|
||||
lambda {
|
||||
Object.new.should respond_to('method_one', 'inspect')
|
||||
}.should fail_with('expected target to respond to "method_one"')
|
||||
end
|
||||
|
||||
it "should fail target does not respond to second message" do
|
||||
lambda {
|
||||
Object.new.should respond_to('inspect', 'method_one')
|
||||
}.should fail_with('expected target to respond to "method_one"')
|
||||
end
|
||||
|
||||
it "should fail target does not respond to either message" do
|
||||
lambda {
|
||||
Object.new.should respond_to('method_one', 'method_two')
|
||||
}.should fail_with('expected target to respond to "method_one", "method_two"')
|
||||
end
|
||||
end
|
||||
|
||||
describe "should_not respond_to(:sym)" do
|
||||
|
||||
it "should pass if target does not respond to :sym" do
|
||||
Object.new.should_not respond_to(:some_method)
|
||||
end
|
||||
|
||||
it "should fail target responds to :sym" do
|
||||
lambda {
|
||||
Object.new.should_not respond_to(:methods)
|
||||
}.should fail_with("expected target not to respond to :methods")
|
||||
end
|
||||
|
||||
end
|
||||
36
vendor/plugins/rspec/spec/spec/matchers/satisfy_spec.rb
vendored
Normal file
36
vendor/plugins/rspec/spec/spec/matchers/satisfy_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
describe "should satisfy { block }" do
|
||||
it "should pass if block returns true" do
|
||||
true.should satisfy { |val| val }
|
||||
true.should satisfy do |val|
|
||||
val
|
||||
end
|
||||
end
|
||||
|
||||
it "should fail if block returns false" do
|
||||
lambda {
|
||||
false.should satisfy { |val| val }
|
||||
}.should fail_with("expected false to satisfy block")
|
||||
lambda do
|
||||
false.should satisfy do |val|
|
||||
val
|
||||
end
|
||||
end.should fail_with("expected false to satisfy block")
|
||||
end
|
||||
end
|
||||
|
||||
describe "should_not satisfy { block }" do
|
||||
it "should pass if block returns false" do
|
||||
false.should_not satisfy { |val| val }
|
||||
false.should_not satisfy do |val|
|
||||
val
|
||||
end
|
||||
end
|
||||
|
||||
it "should fail if block returns true" do
|
||||
lambda {
|
||||
true.should_not satisfy { |val| val }
|
||||
}.should fail_with("expected true not to satisfy block")
|
||||
end
|
||||
end
|
||||
31
vendor/plugins/rspec/spec/spec/matchers/simple_matcher_spec.rb
vendored
Normal file
31
vendor/plugins/rspec/spec/spec/matchers/simple_matcher_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
module Spec
|
||||
module Matchers
|
||||
describe SimpleMatcher do
|
||||
it "should match pass match arg to block" do
|
||||
actual = nil
|
||||
matcher = simple_matcher("message") do |given| actual = given end
|
||||
matcher.matches?("foo")
|
||||
actual.should == "foo"
|
||||
end
|
||||
|
||||
it "should provide a stock failure message" do
|
||||
matcher = simple_matcher("thing") do end
|
||||
matcher.matches?("other")
|
||||
matcher.failure_message.should =~ /expected \"thing\" but got \"other\"/
|
||||
end
|
||||
|
||||
it "should provide a stock negative failure message" do
|
||||
matcher = simple_matcher("thing") do end
|
||||
matcher.matches?("other")
|
||||
matcher.negative_failure_message.should =~ /expected not to get \"thing\", but got \"other\"/
|
||||
end
|
||||
|
||||
it "should provide a description" do
|
||||
matcher = simple_matcher("thing") do end
|
||||
matcher.description.should =="thing"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
54
vendor/plugins/rspec/spec/spec/matchers/throw_symbol_spec.rb
vendored
Normal file
54
vendor/plugins/rspec/spec/spec/matchers/throw_symbol_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Matchers
|
||||
describe ThrowSymbol, "(constructed with no Symbol)" do
|
||||
before(:each) { @matcher = ThrowSymbol.new }
|
||||
|
||||
it "should match if any Symbol is thrown" do
|
||||
@matcher.matches?(lambda{ throw :sym }).should be_true
|
||||
end
|
||||
it "should not match if no Symbol is thrown" do
|
||||
@matcher.matches?(lambda{ }).should be_false
|
||||
end
|
||||
it "should provide a failure message" do
|
||||
@matcher.matches?(lambda{})
|
||||
@matcher.failure_message.should == "expected a Symbol but nothing was thrown"
|
||||
end
|
||||
it "should provide a negative failure message" do
|
||||
@matcher.matches?(lambda{ throw :sym})
|
||||
@matcher.negative_failure_message.should == "expected no Symbol, got :sym"
|
||||
end
|
||||
end
|
||||
|
||||
describe ThrowSymbol, "(constructed with a Symbol)" do
|
||||
before(:each) { @matcher = ThrowSymbol.new(:sym) }
|
||||
|
||||
it "should match if correct Symbol is thrown" do
|
||||
@matcher.matches?(lambda{ throw :sym }).should be_true
|
||||
end
|
||||
it "should not match if no Symbol is thrown" do
|
||||
@matcher.matches?(lambda{ }).should be_false
|
||||
end
|
||||
it "should not match if correct Symbol is thrown" do
|
||||
@matcher.matches?(lambda{ throw :other_sym }).should be_false
|
||||
@matcher.failure_message.should == "expected :sym, got :other_sym"
|
||||
end
|
||||
it "should provide a failure message when no Symbol is thrown" do
|
||||
@matcher.matches?(lambda{})
|
||||
@matcher.failure_message.should == "expected :sym but nothing was thrown"
|
||||
end
|
||||
it "should provide a failure message when wrong Symbol is thrown" do
|
||||
@matcher.matches?(lambda{ throw :other_sym })
|
||||
@matcher.failure_message.should == "expected :sym, got :other_sym"
|
||||
end
|
||||
it "should provide a negative failure message" do
|
||||
@matcher.matches?(lambda{ throw :sym })
|
||||
@matcher.negative_failure_message.should == "expected :sym not to be thrown"
|
||||
end
|
||||
it "should only match NameErrors raised by uncaught throws" do
|
||||
@matcher.matches?(lambda{ sym }).should be_false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
29
vendor/plugins/rspec/spec/spec/mocks/any_number_of_times_spec.rb
vendored
Normal file
29
vendor/plugins/rspec/spec/spec/mocks/any_number_of_times_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
|
||||
describe "AnyNumberOfTimes" do
|
||||
before(:each) do
|
||||
@mock = Mock.new("test mock")
|
||||
end
|
||||
|
||||
it "should pass if any number of times method is called many times" do
|
||||
@mock.should_receive(:random_call).any_number_of_times
|
||||
(1..10).each do
|
||||
@mock.random_call
|
||||
end
|
||||
end
|
||||
|
||||
it "should pass if any number of times method is called once" do
|
||||
@mock.should_receive(:random_call).any_number_of_times
|
||||
@mock.random_call
|
||||
end
|
||||
|
||||
it "should pass if any number of times method is not called" do
|
||||
@mock.should_receive(:random_call).any_number_of_times
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
23
vendor/plugins/rspec/spec/spec/mocks/argument_expectation_spec.rb
vendored
Normal file
23
vendor/plugins/rspec/spec/spec/mocks/argument_expectation_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
describe ArgumentExpectation do
|
||||
it "should consider an object that responds to #matches? and #description to be a matcher" do
|
||||
argument_expecatation = Spec::Mocks::ArgumentExpectation.new([])
|
||||
obj = mock("matcher")
|
||||
obj.should_receive(:respond_to?).with(:matches?).and_return(true)
|
||||
obj.should_receive(:respond_to?).with(:description).and_return(true)
|
||||
argument_expecatation.is_matcher?(obj).should be_true
|
||||
end
|
||||
|
||||
it "should NOT consider an object that only responds to #matches? to be a matcher" do
|
||||
argument_expecatation = Spec::Mocks::ArgumentExpectation.new([])
|
||||
obj = mock("matcher")
|
||||
obj.should_receive(:respond_to?).with(:matches?).and_return(true)
|
||||
obj.should_receive(:respond_to?).with(:description).and_return(false)
|
||||
argument_expecatation.is_matcher?(obj).should be_false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
97
vendor/plugins/rspec/spec/spec/mocks/at_least_spec.rb
vendored
Normal file
97
vendor/plugins/rspec/spec/spec/mocks/at_least_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
describe "at_least" do
|
||||
before(:each) do
|
||||
@mock = Mock.new("test mock")
|
||||
end
|
||||
|
||||
it "should fail if method is never called" do
|
||||
@mock.should_receive(:random_call).at_least(4).times
|
||||
lambda do
|
||||
@mock.rspec_verify
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should fail when called less than n times" do
|
||||
@mock.should_receive(:random_call).at_least(4).times
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
lambda do
|
||||
@mock.rspec_verify
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should fail when at least once method is never called" do
|
||||
@mock.should_receive(:random_call).at_least(:once)
|
||||
lambda do
|
||||
@mock.rspec_verify
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should fail when at least twice method is called once" do
|
||||
@mock.should_receive(:random_call).at_least(:twice)
|
||||
@mock.random_call
|
||||
lambda do
|
||||
@mock.rspec_verify
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should fail when at least twice method is never called" do
|
||||
@mock.should_receive(:random_call).at_least(:twice)
|
||||
lambda do
|
||||
@mock.rspec_verify
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should pass when at least n times method is called exactly n times" do
|
||||
@mock.should_receive(:random_call).at_least(4).times
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should pass when at least n times method is called n plus 1 times" do
|
||||
@mock.should_receive(:random_call).at_least(4).times
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should pass when at least once method is called once" do
|
||||
@mock.should_receive(:random_call).at_least(:once)
|
||||
@mock.random_call
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should pass when at least once method is called twice" do
|
||||
@mock.should_receive(:random_call).at_least(:once)
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should pass when at least twice method is called three times" do
|
||||
@mock.should_receive(:random_call).at_least(:twice)
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should pass when at least twice method is called twice" do
|
||||
@mock.should_receive(:random_call).at_least(:twice)
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.rspec_verify
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
93
vendor/plugins/rspec/spec/spec/mocks/at_most_spec.rb
vendored
Normal file
93
vendor/plugins/rspec/spec/spec/mocks/at_most_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
describe "at_most" do
|
||||
before(:each) do
|
||||
@mock = Mock.new("test mock")
|
||||
end
|
||||
|
||||
it "should fail when at most n times method is called n plus 1 times" do
|
||||
@mock.should_receive(:random_call).at_most(4).times
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
lambda do
|
||||
@mock.rspec_verify
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should fail when at most once method is called twice" do
|
||||
@mock.should_receive(:random_call).at_most(:once)
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
lambda do
|
||||
@mock.rspec_verify
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should fail when at most twice method is called three times" do
|
||||
@mock.should_receive(:random_call).at_most(:twice)
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
lambda do
|
||||
@mock.rspec_verify
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should pass when at most n times method is called exactly n times" do
|
||||
@mock.should_receive(:random_call).at_most(4).times
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should pass when at most n times method is called less than n times" do
|
||||
@mock.should_receive(:random_call).at_most(4).times
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should pass when at most n times method is never called" do
|
||||
@mock.should_receive(:random_call).at_most(4).times
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should pass when at most once method is called once" do
|
||||
@mock.should_receive(:random_call).at_most(:once)
|
||||
@mock.random_call
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should pass when at most once method is never called" do
|
||||
@mock.should_receive(:random_call).at_most(:once)
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should pass when at most twice method is called once" do
|
||||
@mock.should_receive(:random_call).at_most(:twice)
|
||||
@mock.random_call
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should pass when at most twice method is called twice" do
|
||||
@mock.should_receive(:random_call).at_most(:twice)
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should pass when at most twice method is never called" do
|
||||
@mock.should_receive(:random_call).at_most(:twice)
|
||||
@mock.rspec_verify
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
8
vendor/plugins/rspec/spec/spec/mocks/bug_report_10260_spec.rb
vendored
Normal file
8
vendor/plugins/rspec/spec/spec/mocks/bug_report_10260_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
describe "An RSpec Mock" do
|
||||
it "should hide internals in its inspect representation" do
|
||||
m = mock('cup')
|
||||
m.inspect.should =~ /#<Spec::Mocks::Mock:0x[a-f0-9.]+ @name="cup">/
|
||||
end
|
||||
end
|
||||
24
vendor/plugins/rspec/spec/spec/mocks/bug_report_10263_spec.rb
vendored
Normal file
24
vendor/plugins/rspec/spec/spec/mocks/bug_report_10263_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
describe "Mock" do
|
||||
before do
|
||||
@mock = mock("test mock")
|
||||
end
|
||||
|
||||
specify "when one example has an expectation (non-mock) inside the block passed to the mock" do
|
||||
@mock.should_receive(:msg) do |b|
|
||||
b.should be_true #this call exposes the problem
|
||||
end
|
||||
@mock.msg(false) rescue nil
|
||||
end
|
||||
|
||||
specify "then the next example should behave as expected instead of saying" do
|
||||
@mock.should_receive(:foobar)
|
||||
@mock.foobar
|
||||
@mock.rspec_verify
|
||||
begin
|
||||
@mock.foobar
|
||||
rescue Exception => e
|
||||
e.message.should == "Mock 'test mock' received unexpected message :foobar with (no args)"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
33
vendor/plugins/rspec/spec/spec/mocks/bug_report_11545_spec.rb
vendored
Normal file
33
vendor/plugins/rspec/spec/spec/mocks/bug_report_11545_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
class LiarLiarPantsOnFire
|
||||
include Spec::MetaClass
|
||||
extend Spec::MetaClass
|
||||
def respond_to?(sym)
|
||||
true
|
||||
end
|
||||
|
||||
def self.respond_to?(sym)
|
||||
true
|
||||
end
|
||||
end
|
||||
|
||||
describe 'should_receive' do
|
||||
before(:each) do
|
||||
@liar = LiarLiarPantsOnFire.new
|
||||
end
|
||||
|
||||
it "should work when object lies about responding to a method" do
|
||||
@liar.should_receive(:something)
|
||||
@liar.something
|
||||
end
|
||||
|
||||
it 'should work when class lies about responding to a method' do
|
||||
LiarLiarPantsOnFire.should_receive(:something)
|
||||
LiarLiarPantsOnFire.something
|
||||
end
|
||||
|
||||
it 'should cleanup after itself' do
|
||||
LiarLiarPantsOnFire.metaclass.instance_methods.should_not include("something")
|
||||
end
|
||||
end
|
||||
30
vendor/plugins/rspec/spec/spec/mocks/bug_report_15719_spec.rb
vendored
Normal file
30
vendor/plugins/rspec/spec/spec/mocks/bug_report_15719_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
describe "mock failure" do
|
||||
|
||||
it "should tell you when it receives the right message with the wrong args" do
|
||||
m = mock("foo")
|
||||
m.should_receive(:bar).with("message")
|
||||
lambda {
|
||||
m.bar("different message")
|
||||
}.should raise_error(Spec::Mocks::MockExpectationError, %Q{Mock 'foo' expected :bar with ("message") but received it with ("different message")})
|
||||
m.bar("message") # allows the spec to pass
|
||||
end
|
||||
|
||||
it "should tell you when it receives the right message with the wrong args if you stub the method" do
|
||||
pending("fix bug 15719")
|
||||
# NOTE - for whatever reason, if you use a the block style of pending here,
|
||||
# rcov gets unhappy. Don't know why yet.
|
||||
m = mock("foo")
|
||||
m.stub!(:bar)
|
||||
m.should_receive(:bar).with("message")
|
||||
lambda {
|
||||
m.bar("different message")
|
||||
}.should raise_error(Spec::Mocks::MockExpectationError, %Q{Mock 'foo' expected :bar with ("message") but received it with ("different message")})
|
||||
m.bar("message") # allows the spec to pass
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
19
vendor/plugins/rspec/spec/spec/mocks/bug_report_7611_spec.rb
vendored
Normal file
19
vendor/plugins/rspec/spec/spec/mocks/bug_report_7611_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Bug7611
|
||||
class Foo
|
||||
end
|
||||
|
||||
class Bar < Foo
|
||||
end
|
||||
|
||||
describe "A Partial Mock" do
|
||||
it "should respect subclasses" do
|
||||
Foo.stub!(:new).and_return(Object.new)
|
||||
end
|
||||
|
||||
it "should" do
|
||||
Bar.new.class.should == Bar
|
||||
end
|
||||
end
|
||||
end
|
||||
22
vendor/plugins/rspec/spec/spec/mocks/bug_report_7805_spec.rb
vendored
Normal file
22
vendor/plugins/rspec/spec/spec/mocks/bug_report_7805_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Bug7805
|
||||
#This is really a duplicate of 8302
|
||||
|
||||
describe "Stubs should correctly restore module methods" do
|
||||
it "1 - stub the open method" do
|
||||
File.stub!(:open).and_return("something")
|
||||
File.open.should == "something"
|
||||
end
|
||||
it "2 - use File.open to create example.txt" do
|
||||
filename = "#{File.dirname(__FILE__)}/example-#{Time.new.to_i}.txt"
|
||||
File.exist?(filename).should be_false
|
||||
file = File.open(filename,'w')
|
||||
file.close
|
||||
File.exist?(filename).should be_true
|
||||
File.delete(filename)
|
||||
File.exist?(filename).should be_false
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
31
vendor/plugins/rspec/spec/spec/mocks/bug_report_8165_spec.rb
vendored
Normal file
31
vendor/plugins/rspec/spec/spec/mocks/bug_report_8165_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
describe "An object where respond_to? is true and does not have method" do
|
||||
# When should_receive(:sym) is sent to any object, the Proxy sends
|
||||
# respond_to?(:sym) to that object to see if the method should be proxied.
|
||||
#
|
||||
# If respond_to? itself is proxied, then when the Proxy sends respond_to?
|
||||
# to the object, the proxy is invoked and responds yes (if so set in the spec).
|
||||
# When the object does NOT actually respond to :sym, an exception is thrown
|
||||
# when trying to proxy it.
|
||||
#
|
||||
# The fix was to keep track of whether :respond_to? had been proxied and, if
|
||||
# so, call the munged copy of :respond_to? on the object.
|
||||
|
||||
it "should not raise an exception for Object" do
|
||||
obj = Object.new
|
||||
obj.should_receive(:respond_to?).with(:foobar).and_return(true)
|
||||
obj.should_receive(:foobar).and_return(:baz)
|
||||
obj.respond_to?(:foobar).should be_true
|
||||
obj.foobar.should == :baz
|
||||
end
|
||||
|
||||
it "should not raise an exception for mock" do
|
||||
obj = mock("obj")
|
||||
obj.should_receive(:respond_to?).with(:foobar).and_return(true)
|
||||
obj.should_receive(:foobar).and_return(:baz)
|
||||
obj.respond_to?(:foobar).should be_true
|
||||
obj.foobar.should == :baz
|
||||
end
|
||||
|
||||
end
|
||||
26
vendor/plugins/rspec/spec/spec/mocks/bug_report_8302_spec.rb
vendored
Normal file
26
vendor/plugins/rspec/spec/spec/mocks/bug_report_8302_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Bug8302
|
||||
class Foo
|
||||
def Foo.class_method(arg)
|
||||
end
|
||||
|
||||
def instance_bar(arg)
|
||||
end
|
||||
end
|
||||
|
||||
describe "Bug report 8302:" do
|
||||
it "class method is not restored correctly when proxied" do
|
||||
Foo.should_not_receive(:class_method).with(Array.new)
|
||||
Foo.rspec_verify
|
||||
Foo.class_method(Array.new)
|
||||
end
|
||||
|
||||
it "instance method is not restored correctly when proxied" do
|
||||
foo = Foo.new
|
||||
foo.should_not_receive(:instance_bar).with(Array.new)
|
||||
foo.rspec_verify
|
||||
foo.instance_bar(Array.new)
|
||||
end
|
||||
end
|
||||
end
|
||||
130
vendor/plugins/rspec/spec/spec/mocks/failing_mock_argument_constraints_spec.rb
vendored
Normal file
130
vendor/plugins/rspec/spec/spec/mocks/failing_mock_argument_constraints_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
describe "failing MockArgumentConstraints" do
|
||||
before(:each) do
|
||||
@mock = mock("test mock")
|
||||
@reporter = Mock.new("reporter", :null_object => true)
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
@mock.rspec_reset
|
||||
end
|
||||
|
||||
it "should reject non boolean" do
|
||||
@mock.should_receive(:random_call).with(boolean())
|
||||
lambda do
|
||||
@mock.random_call("false")
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should reject non numeric" do
|
||||
@mock.should_receive(:random_call).with(an_instance_of(Numeric))
|
||||
lambda do
|
||||
@mock.random_call("1")
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should reject non string" do
|
||||
@mock.should_receive(:random_call).with(an_instance_of(String))
|
||||
lambda do
|
||||
@mock.random_call(123)
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should reject goose when expecting a duck" do
|
||||
@mock.should_receive(:random_call).with(duck_type(:abs, :div))
|
||||
lambda { @mock.random_call("I don't respond to :abs or :div") }.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should fail if regexp does not match submitted string" do
|
||||
@mock.should_receive(:random_call).with(/bcd/)
|
||||
lambda { @mock.random_call("abc") }.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should fail if regexp does not match submitted regexp" do
|
||||
@mock.should_receive(:random_call).with(/bcd/)
|
||||
lambda { @mock.random_call(/bcde/) }.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should fail for a hash w/ wrong values" do
|
||||
@mock.should_receive(:random_call).with(:a => "b", :c => "d")
|
||||
lambda do
|
||||
@mock.random_call(:a => "b", :c => "e")
|
||||
end.should raise_error(MockExpectationError, /Mock 'test mock' expected :random_call with \(\{(:a=>\"b\", :c=>\"d\"|:c=>\"d\", :a=>\"b\")\}\) but received it with \(\{(:a=>\"b\", :c=>\"e\"|:c=>\"e\", :a=>\"b\")\}\)/)
|
||||
end
|
||||
|
||||
it "should fail for a hash w/ wrong keys" do
|
||||
@mock.should_receive(:random_call).with(:a => "b", :c => "d")
|
||||
lambda do
|
||||
@mock.random_call("a" => "b", "c" => "d")
|
||||
end.should raise_error(MockExpectationError, /Mock 'test mock' expected :random_call with \(\{(:a=>\"b\", :c=>\"d\"|:c=>\"d\", :a=>\"b\")\}\) but received it with \(\{(\"a\"=>\"b\", \"c\"=>\"d\"|\"c\"=>\"d\", \"a\"=>\"b\")\}\)/)
|
||||
end
|
||||
|
||||
it "should match against a Matcher" do
|
||||
lambda do
|
||||
@mock.should_receive(:msg).with(equal(3))
|
||||
@mock.msg(37)
|
||||
end.should raise_error(MockExpectationError, "Mock 'test mock' expected :msg with (equal 3) but received it with (37)")
|
||||
end
|
||||
|
||||
it "should fail no_args with one arg" do
|
||||
lambda do
|
||||
@mock.should_receive(:msg).with(no_args)
|
||||
@mock.msg(37)
|
||||
end.should raise_error(MockExpectationError, "Mock 'test mock' expected :msg with (no args) but received it with (37)")
|
||||
end
|
||||
|
||||
it "should fail hash_including with missing key" do
|
||||
lambda do
|
||||
@mock.should_receive(:msg).with(hash_including(:a => 1))
|
||||
@mock.msg({})
|
||||
end.should raise_error(MockExpectationError, "Mock 'test mock' expected :msg with (hash_including(:a=>1)) but received it with ({})")
|
||||
end
|
||||
|
||||
it "should fail with block constraints" do
|
||||
lambda do
|
||||
@mock.should_receive(:msg).with {|arg| arg.should == :received }
|
||||
@mock.msg :no_msg_for_you
|
||||
end.should raise_error(Spec::Expectations::ExpectationNotMetError, /expected: :received.*\s*.*got: :no_msg_for_you/)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "failing deprecated MockArgumentConstraints" do
|
||||
before(:each) do
|
||||
@mock = mock("test mock")
|
||||
@reporter = Mock.new("reporter", :null_object => true)
|
||||
Kernel.stub!(:warn)
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
@mock.rspec_reset
|
||||
end
|
||||
|
||||
it "should reject non boolean" do
|
||||
@mock.should_receive(:random_call).with(:boolean)
|
||||
lambda do
|
||||
@mock.random_call("false")
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should reject non numeric" do
|
||||
@mock.should_receive(:random_call).with(:numeric)
|
||||
lambda do
|
||||
@mock.random_call("1")
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should reject non string" do
|
||||
@mock.should_receive(:random_call).with(:string)
|
||||
lambda do
|
||||
@mock.random_call(123)
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
32
vendor/plugins/rspec/spec/spec/mocks/hash_including_matcher_spec.rb
vendored
Normal file
32
vendor/plugins/rspec/spec/spec/mocks/hash_including_matcher_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
describe HashIncludingConstraint do
|
||||
|
||||
it "should match the same hash" do
|
||||
hash_including(:a => 1).matches?(:a => 1).should be_true
|
||||
end
|
||||
|
||||
it "should not match a non-hash" do
|
||||
hash_including(:a => 1).matches?(1).should_not be_true
|
||||
end
|
||||
|
||||
it "should match a hash with extra stuff" do
|
||||
hash_including(:a => 1).matches?(:a => 1, :b => 2).should be_true
|
||||
end
|
||||
|
||||
it "should not match a hash with a missing key" do
|
||||
hash_including(:a => 1).matches?(:b => 2).should_not be_true
|
||||
end
|
||||
|
||||
it "should not match a hash with an incorrect value" do
|
||||
hash_including(:a => 1, :b => 2).matches?(:a => 1, :b => 3).should_not be_true
|
||||
end
|
||||
|
||||
it "should describe itself properly" do
|
||||
HashIncludingConstraint.new(:a => 1).description.should == "hash_including(:a=>1)"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
84
vendor/plugins/rspec/spec/spec/mocks/mock_ordering_spec.rb
vendored
Normal file
84
vendor/plugins/rspec/spec/spec/mocks/mock_ordering_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
|
||||
describe "Mock ordering" do
|
||||
|
||||
before do
|
||||
@mock = mock("test mock")
|
||||
end
|
||||
|
||||
after do
|
||||
@mock.rspec_reset
|
||||
end
|
||||
|
||||
it "should pass two calls in order" do
|
||||
@mock.should_receive(:one).ordered
|
||||
@mock.should_receive(:two).ordered
|
||||
@mock.one
|
||||
@mock.two
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should pass three calls in order" do
|
||||
@mock.should_receive(:one).ordered
|
||||
@mock.should_receive(:two).ordered
|
||||
@mock.should_receive(:three).ordered
|
||||
@mock.one
|
||||
@mock.two
|
||||
@mock.three
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should fail if second call comes first" do
|
||||
@mock.should_receive(:one).ordered
|
||||
@mock.should_receive(:two).ordered
|
||||
lambda do
|
||||
@mock.two
|
||||
end.should raise_error(MockExpectationError, "Mock 'test mock' received :two out of order")
|
||||
end
|
||||
|
||||
it "should fail if third call comes first" do
|
||||
@mock.should_receive(:one).ordered
|
||||
@mock.should_receive(:two).ordered
|
||||
@mock.should_receive(:three).ordered
|
||||
@mock.one
|
||||
lambda do
|
||||
@mock.three
|
||||
end.should raise_error(MockExpectationError, "Mock 'test mock' received :three out of order")
|
||||
end
|
||||
|
||||
it "should fail if third call comes second" do
|
||||
@mock.should_receive(:one).ordered
|
||||
@mock.should_receive(:two).ordered
|
||||
@mock.should_receive(:three).ordered
|
||||
@mock.one
|
||||
lambda do
|
||||
@mock.three
|
||||
end.should raise_error(MockExpectationError, "Mock 'test mock' received :three out of order")
|
||||
end
|
||||
|
||||
it "should ignore order of non ordered calls" do
|
||||
@mock.should_receive(:ignored_0)
|
||||
@mock.should_receive(:ordered_1).ordered
|
||||
@mock.should_receive(:ignored_1)
|
||||
@mock.should_receive(:ordered_2).ordered
|
||||
@mock.should_receive(:ignored_2)
|
||||
@mock.should_receive(:ignored_3)
|
||||
@mock.should_receive(:ordered_3).ordered
|
||||
@mock.should_receive(:ignored_4)
|
||||
@mock.ignored_3
|
||||
@mock.ordered_1
|
||||
@mock.ignored_0
|
||||
@mock.ordered_2
|
||||
@mock.ignored_4
|
||||
@mock.ignored_2
|
||||
@mock.ordered_3
|
||||
@mock.ignored_1
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
54
vendor/plugins/rspec/spec/spec/mocks/mock_space_spec.rb
vendored
Normal file
54
vendor/plugins/rspec/spec/spec/mocks/mock_space_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
require 'spec/mocks'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
describe Space do
|
||||
before :each do
|
||||
@space = Space.new
|
||||
klazz = Class.new do
|
||||
def rspec_verify
|
||||
@verified = true
|
||||
end
|
||||
def verified?
|
||||
@verified
|
||||
end
|
||||
def rspec_reset
|
||||
@reset = true
|
||||
end
|
||||
def reset?
|
||||
@reset
|
||||
end
|
||||
end
|
||||
@m1 = klazz.new
|
||||
@m2 = klazz.new
|
||||
end
|
||||
it "should verify all mocks within" do
|
||||
@space.add(@m1)
|
||||
@space.add(@m2)
|
||||
@space.verify_all
|
||||
@m1.should be_verified
|
||||
@m2.should be_verified
|
||||
end
|
||||
it "should reset all mocks within" do
|
||||
@space.add(m1 = mock("mock1"))
|
||||
@space.add(m2 = mock("mock2"))
|
||||
m1.should_receive(:rspec_reset)
|
||||
m2.should_receive(:rspec_reset)
|
||||
@space.reset_all
|
||||
end
|
||||
it "should clear internal mocks on reset_all" do
|
||||
@space.add(m = mock("mock"))
|
||||
@space.reset_all
|
||||
@space.instance_eval { mocks.empty? }.should be_true
|
||||
end
|
||||
it "should only add an instance once" do
|
||||
@space.add(m1 = mock("mock1"))
|
||||
@space.add(m1)
|
||||
m1.should_receive(:rspec_verify)
|
||||
@space.verify_all
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
494
vendor/plugins/rspec/spec/spec/mocks/mock_spec.rb
vendored
Normal file
494
vendor/plugins/rspec/spec/spec/mocks/mock_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,494 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
describe Mock do
|
||||
|
||||
before(:each) do
|
||||
@mock = mock("test mock")
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
@mock.rspec_reset
|
||||
end
|
||||
|
||||
it "should report line number of expectation of unreceived message" do
|
||||
expected_error_line = __LINE__; @mock.should_receive(:wont_happen).with("x", 3)
|
||||
begin
|
||||
@mock.rspec_verify
|
||||
violated
|
||||
rescue MockExpectationError => e
|
||||
# NOTE - this regexp ended w/ $, but jruby adds extra info at the end of the line
|
||||
e.backtrace[0].should match(/#{File.basename(__FILE__)}:#{expected_error_line}/)
|
||||
end
|
||||
end
|
||||
|
||||
it "should pass when not receiving message specified as not to be received" do
|
||||
@mock.should_not_receive(:not_expected)
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should pass when receiving message specified as not to be received with different args" do
|
||||
@mock.should_not_receive(:message).with("unwanted text")
|
||||
@mock.should_receive(:message).with("other text")
|
||||
@mock.message "other text"
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should fail when receiving message specified as not to be received" do
|
||||
@mock.should_not_receive(:not_expected)
|
||||
lambda {
|
||||
@mock.not_expected
|
||||
violated
|
||||
}.should raise_error(MockExpectationError, "Mock 'test mock' expected :not_expected with (no args) 0 times, but received it once")
|
||||
end
|
||||
|
||||
it "should fail when receiving message specified as not to be received with args" do
|
||||
@mock.should_not_receive(:not_expected).with("unexpected text")
|
||||
lambda {
|
||||
@mock.not_expected("unexpected text")
|
||||
violated
|
||||
}.should raise_error(MockExpectationError, "Mock 'test mock' expected :not_expected with (\"unexpected text\") 0 times, but received it once")
|
||||
end
|
||||
|
||||
it "should pass when receiving message specified as not to be received with wrong args" do
|
||||
@mock.should_not_receive(:not_expected).with("unexpected text")
|
||||
@mock.not_expected "really unexpected text"
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should allow block to calculate return values" do
|
||||
@mock.should_receive(:something).with("a","b","c").and_return { |a,b,c| c+b+a }
|
||||
@mock.something("a","b","c").should == "cba"
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should allow parameter as return value" do
|
||||
@mock.should_receive(:something).with("a","b","c").and_return("booh")
|
||||
@mock.something("a","b","c").should == "booh"
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should return nil if no return value set" do
|
||||
@mock.should_receive(:something).with("a","b","c")
|
||||
@mock.something("a","b","c").should be_nil
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should raise exception if args don't match when method called" do
|
||||
@mock.should_receive(:something).with("a","b","c").and_return("booh")
|
||||
lambda {
|
||||
@mock.something("a","d","c")
|
||||
violated
|
||||
}.should raise_error(MockExpectationError, "Mock 'test mock' expected :something with (\"a\", \"b\", \"c\") but received it with (\"a\", \"d\", \"c\")")
|
||||
end
|
||||
|
||||
it "should raise exception if args don't match when method called even when the method is stubbed" do
|
||||
@mock.stub!(:something)
|
||||
@mock.should_receive(:something).with("a","b","c")
|
||||
lambda {
|
||||
@mock.something("a","d","c")
|
||||
@mock.rspec_verify
|
||||
}.should raise_error(MockExpectationError, "Mock 'test mock' expected :something with (\"a\", \"b\", \"c\") but received it with (\"a\", \"d\", \"c\")")
|
||||
end
|
||||
|
||||
it "should raise exception if args don't match when method called even when using null_object" do
|
||||
@mock = mock("test mock", :null_object => true)
|
||||
@mock.should_receive(:something).with("a","b","c")
|
||||
lambda {
|
||||
@mock.something("a","d","c")
|
||||
@mock.rspec_verify
|
||||
}.should raise_error(MockExpectationError, "Mock 'test mock' expected :something with (\"a\", \"b\", \"c\") but received it with (\"a\", \"d\", \"c\")")
|
||||
end
|
||||
|
||||
it "should fail if unexpected method called" do
|
||||
lambda {
|
||||
@mock.something("a","b","c")
|
||||
violated
|
||||
}.should raise_error(MockExpectationError, "Mock 'test mock' received unexpected message :something with (\"a\", \"b\", \"c\")")
|
||||
end
|
||||
|
||||
it "should use block for expectation if provided" do
|
||||
@mock.should_receive(:something) do | a, b |
|
||||
a.should == "a"
|
||||
b.should == "b"
|
||||
"booh"
|
||||
end
|
||||
@mock.something("a", "b").should == "booh"
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should fail if expectation block fails" do
|
||||
@mock.should_receive(:something) {| bool | bool.should be_true}
|
||||
lambda {
|
||||
@mock.something false
|
||||
}.should raise_error(MockExpectationError, /Mock 'test mock' received :something but passed block failed with: expected true, got false/)
|
||||
end
|
||||
|
||||
it "should fail right away when method defined as never is received" do
|
||||
@mock.should_receive(:not_expected).never
|
||||
lambda {
|
||||
@mock.not_expected
|
||||
}.should raise_error(MockExpectationError, "Mock 'test mock' expected :not_expected with (no args) 0 times, but received it once")
|
||||
end
|
||||
|
||||
it "should eventually fail when method defined as never is received" do
|
||||
@mock.should_receive(:not_expected).never
|
||||
lambda {
|
||||
@mock.not_expected
|
||||
}.should raise_error(MockExpectationError, "Mock 'test mock' expected :not_expected with (no args) 0 times, but received it once")
|
||||
end
|
||||
|
||||
it "should raise when told to" do
|
||||
@mock.should_receive(:something).and_raise(RuntimeError)
|
||||
lambda do
|
||||
@mock.something
|
||||
end.should raise_error(RuntimeError)
|
||||
end
|
||||
|
||||
it "should raise passed an Exception instance" do
|
||||
error = RuntimeError.new("error message")
|
||||
@mock.should_receive(:something).and_raise(error)
|
||||
lambda {
|
||||
@mock.something
|
||||
}.should raise_error(RuntimeError, "error message")
|
||||
end
|
||||
|
||||
it "should raise RuntimeError with passed message" do
|
||||
@mock.should_receive(:something).and_raise("error message")
|
||||
lambda {
|
||||
@mock.something
|
||||
}.should raise_error(RuntimeError, "error message")
|
||||
end
|
||||
|
||||
it "should not raise when told to if args dont match" do
|
||||
@mock.should_receive(:something).with(2).and_raise(RuntimeError)
|
||||
lambda {
|
||||
@mock.something 1
|
||||
}.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should throw when told to" do
|
||||
@mock.should_receive(:something).and_throw(:blech)
|
||||
lambda {
|
||||
@mock.something
|
||||
}.should throw_symbol(:blech)
|
||||
end
|
||||
|
||||
it "should raise when explicit return and block constrained" do
|
||||
lambda {
|
||||
@mock.should_receive(:fruit) do |colour|
|
||||
:strawberry
|
||||
end.and_return :apple
|
||||
}.should raise_error(AmbiguousReturnError)
|
||||
end
|
||||
|
||||
it "should ignore args on any args" do
|
||||
@mock.should_receive(:something).at_least(:once).with(any_args)
|
||||
@mock.something
|
||||
@mock.something 1
|
||||
@mock.something "a", 2
|
||||
@mock.something [], {}, "joe", 7
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should fail on no args if any args received" do
|
||||
@mock.should_receive(:something).with(no_args())
|
||||
lambda {
|
||||
@mock.something 1
|
||||
}.should raise_error(MockExpectationError, "Mock 'test mock' expected :something with (no args) but received it with (1)")
|
||||
end
|
||||
|
||||
it "should fail when args are expected but none are received" do
|
||||
@mock.should_receive(:something).with(1)
|
||||
lambda {
|
||||
@mock.something
|
||||
}.should raise_error(MockExpectationError, "Mock 'test mock' expected :something with (1) but received it with (no args)")
|
||||
end
|
||||
|
||||
it "should return value from block by default" do
|
||||
@mock.stub!(:method_that_yields).and_yield
|
||||
@mock.method_that_yields { :returned_obj }.should == :returned_obj
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should yield 0 args to blocks that take a variable number of arguments" do
|
||||
@mock.should_receive(:yield_back).with(no_args()).once.and_yield
|
||||
a = nil
|
||||
@mock.yield_back {|*a|}
|
||||
a.should == []
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should yield 0 args multiple times to blocks that take a variable number of arguments" do
|
||||
@mock.should_receive(:yield_back).once.with(no_args()).once.and_yield.
|
||||
and_yield
|
||||
a = nil
|
||||
b = []
|
||||
@mock.yield_back {|*a| b << a}
|
||||
b.should == [ [], [] ]
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should yield one arg to blocks that take a variable number of arguments" do
|
||||
@mock.should_receive(:yield_back).with(no_args()).once.and_yield(99)
|
||||
a = nil
|
||||
@mock.yield_back {|*a|}
|
||||
a.should == [99]
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should yield one arg 3 times consecutively to blocks that take a variable number of arguments" do
|
||||
@mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99).
|
||||
and_yield(43).
|
||||
and_yield("something fruity")
|
||||
a = nil
|
||||
b = []
|
||||
@mock.yield_back {|*a| b << a}
|
||||
b.should == [[99], [43], ["something fruity"]]
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should yield many args to blocks that take a variable number of arguments" do
|
||||
@mock.should_receive(:yield_back).with(no_args()).once.and_yield(99, 27, "go")
|
||||
a = nil
|
||||
@mock.yield_back {|*a|}
|
||||
a.should == [99, 27, "go"]
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should yield many args 3 times consecutively to blocks that take a variable number of arguments" do
|
||||
@mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99, :green, "go").
|
||||
and_yield("wait", :amber).
|
||||
and_yield("stop", 12, :red)
|
||||
a = nil
|
||||
b = []
|
||||
@mock.yield_back {|*a| b << a}
|
||||
b.should == [[99, :green, "go"], ["wait", :amber], ["stop", 12, :red]]
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should yield single value" do
|
||||
@mock.should_receive(:yield_back).with(no_args()).once.and_yield(99)
|
||||
a = nil
|
||||
@mock.yield_back {|a|}
|
||||
a.should == 99
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should yield single value 3 times consecutively" do
|
||||
@mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99).
|
||||
and_yield(43).
|
||||
and_yield("something fruity")
|
||||
a = nil
|
||||
b = []
|
||||
@mock.yield_back {|a| b << a}
|
||||
b.should == [99, 43, "something fruity"]
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should yield two values" do
|
||||
@mock.should_receive(:yield_back).with(no_args()).once.and_yield('wha', 'zup')
|
||||
a, b = nil
|
||||
@mock.yield_back {|a,b|}
|
||||
a.should == 'wha'
|
||||
b.should == 'zup'
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should yield two values 3 times consecutively" do
|
||||
@mock.should_receive(:yield_back).once.with(no_args()).once.and_yield('wha', 'zup').
|
||||
and_yield('not', 'down').
|
||||
and_yield(14, 65)
|
||||
a, b = nil
|
||||
c = []
|
||||
@mock.yield_back {|a,b| c << [a, b]}
|
||||
c.should == [['wha', 'zup'], ['not', 'down'], [14, 65]]
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should fail when calling yielding method with wrong arity" do
|
||||
@mock.should_receive(:yield_back).with(no_args()).once.and_yield('wha', 'zup')
|
||||
lambda {
|
||||
@mock.yield_back {|a|}
|
||||
}.should raise_error(MockExpectationError, "Mock 'test mock' yielded |\"wha\", \"zup\"| to block with arity of 1")
|
||||
end
|
||||
|
||||
it "should fail when calling yielding method consecutively with wrong arity" do
|
||||
@mock.should_receive(:yield_back).once.with(no_args()).once.and_yield('wha', 'zup').
|
||||
and_yield('down').
|
||||
and_yield(14, 65)
|
||||
lambda {
|
||||
a, b = nil
|
||||
c = []
|
||||
@mock.yield_back {|a,b| c << [a, b]}
|
||||
}.should raise_error(MockExpectationError, "Mock 'test mock' yielded |\"down\"| to block with arity of 2")
|
||||
end
|
||||
|
||||
it "should fail when calling yielding method without block" do
|
||||
@mock.should_receive(:yield_back).with(no_args()).once.and_yield('wha', 'zup')
|
||||
lambda {
|
||||
@mock.yield_back
|
||||
}.should raise_error(MockExpectationError, "Mock 'test mock' asked to yield |[\"wha\", \"zup\"]| but no block was passed")
|
||||
end
|
||||
|
||||
it "should be able to mock send" do
|
||||
@mock.should_receive(:send).with(any_args)
|
||||
@mock.send 'hi'
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should be able to raise from method calling yielding mock" do
|
||||
@mock.should_receive(:yield_me).and_yield 44
|
||||
|
||||
lambda {
|
||||
@mock.yield_me do |x|
|
||||
raise "Bang"
|
||||
end
|
||||
}.should raise_error(StandardError, "Bang")
|
||||
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should clear expectations after verify" do
|
||||
@mock.should_receive(:foobar)
|
||||
@mock.foobar
|
||||
@mock.rspec_verify
|
||||
lambda {
|
||||
@mock.foobar
|
||||
}.should raise_error(MockExpectationError, "Mock 'test mock' received unexpected message :foobar with (no args)")
|
||||
end
|
||||
|
||||
it "should restore objects to their original state on rspec_reset" do
|
||||
mock = mock("this is a mock")
|
||||
mock.should_receive(:blah)
|
||||
mock.rspec_reset
|
||||
mock.rspec_verify #should throw if reset didn't work
|
||||
end
|
||||
|
||||
it "should work even after method_missing starts raising NameErrors instead of NoMethodErrors" do
|
||||
# Object#method_missing throws either NameErrors or NoMethodErrors.
|
||||
#
|
||||
# On a fresh ruby program Object#method_missing:
|
||||
# * raises a NoMethodError when called directly
|
||||
# * raises a NameError when called indirectly
|
||||
#
|
||||
# Once Object#method_missing has been called at least once (on any object)
|
||||
# it starts behaving differently:
|
||||
# * raises a NameError when called directly
|
||||
# * raises a NameError when called indirectly
|
||||
#
|
||||
# There was a bug in Mock#method_missing that relied on the fact
|
||||
# that calling Object#method_missing directly raises a NoMethodError.
|
||||
# This example tests that the bug doesn't exist anymore.
|
||||
|
||||
|
||||
# Ensures that method_missing always raises NameErrors.
|
||||
a_method_that_doesnt_exist rescue
|
||||
|
||||
|
||||
@mock.should_receive(:foobar)
|
||||
@mock.foobar
|
||||
@mock.rspec_verify
|
||||
|
||||
lambda { @mock.foobar }.should_not raise_error(NameError)
|
||||
lambda { @mock.foobar }.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should temporarily replace a method stub on a mock" do
|
||||
@mock.stub!(:msg).and_return(:stub_value)
|
||||
@mock.should_receive(:msg).with(:arg).and_return(:mock_value)
|
||||
@mock.msg(:arg).should equal(:mock_value)
|
||||
@mock.msg.should equal(:stub_value)
|
||||
@mock.msg.should equal(:stub_value)
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should temporarily replace a method stub on a non-mock" do
|
||||
non_mock = Object.new
|
||||
non_mock.stub!(:msg).and_return(:stub_value)
|
||||
non_mock.should_receive(:msg).with(:arg).and_return(:mock_value)
|
||||
non_mock.msg(:arg).should equal(:mock_value)
|
||||
non_mock.msg.should equal(:stub_value)
|
||||
non_mock.msg.should equal(:stub_value)
|
||||
non_mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should assign stub return values" do
|
||||
mock = Mock.new('name', :message => :response)
|
||||
mock.message.should == :response
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "a mock message receiving a block" do
|
||||
before(:each) do
|
||||
@mock = mock("mock")
|
||||
@calls = 0
|
||||
end
|
||||
|
||||
def add_call
|
||||
@calls = @calls + 1
|
||||
end
|
||||
|
||||
it "should call the block after #should_receive" do
|
||||
@mock.should_receive(:foo) { add_call }
|
||||
|
||||
@mock.foo
|
||||
|
||||
@calls.should == 1
|
||||
end
|
||||
|
||||
it "should call the block after #once" do
|
||||
@mock.should_receive(:foo).once { add_call }
|
||||
|
||||
@mock.foo
|
||||
|
||||
@calls.should == 1
|
||||
end
|
||||
|
||||
it "should call the block after #twice" do
|
||||
@mock.should_receive(:foo).twice { add_call }
|
||||
|
||||
@mock.foo
|
||||
@mock.foo
|
||||
|
||||
@calls.should == 2
|
||||
end
|
||||
|
||||
it "should call the block after #times" do
|
||||
@mock.should_receive(:foo).exactly(10).times { add_call }
|
||||
|
||||
(1..10).each { @mock.foo }
|
||||
|
||||
@calls.should == 10
|
||||
end
|
||||
|
||||
it "should call the block after #any_number_of_times" do
|
||||
@mock.should_receive(:foo).any_number_of_times { add_call }
|
||||
|
||||
(1..7).each { @mock.foo }
|
||||
|
||||
@calls.should == 7
|
||||
end
|
||||
|
||||
it "should call the block after #ordered" do
|
||||
@mock.should_receive(:foo).ordered { add_call }
|
||||
@mock.should_receive(:bar).ordered { add_call }
|
||||
|
||||
@mock.foo
|
||||
@mock.bar
|
||||
|
||||
@calls.should == 2
|
||||
end
|
||||
end
|
||||
|
||||
describe 'string representation generated by #to_s' do
|
||||
it 'should not contain < because that might lead to invalid HTML in some situations' do
|
||||
mock = mock("Dog")
|
||||
valid_html_str = "#{mock}"
|
||||
valid_html_str.should_not include('<')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
113
vendor/plugins/rspec/spec/spec/mocks/multiple_return_value_spec.rb
vendored
Normal file
113
vendor/plugins/rspec/spec/spec/mocks/multiple_return_value_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
describe "a Mock expectation with multiple return values and no specified count" do
|
||||
before(:each) do
|
||||
@mock = Mock.new("mock")
|
||||
@return_values = ["1",2,Object.new]
|
||||
@mock.should_receive(:message).and_return(@return_values[0],@return_values[1],@return_values[2])
|
||||
end
|
||||
|
||||
it "should return values in order to consecutive calls" do
|
||||
@mock.message.should == @return_values[0]
|
||||
@mock.message.should == @return_values[1]
|
||||
@mock.message.should == @return_values[2]
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should complain when there are too few calls" do
|
||||
third = Object.new
|
||||
@mock.message.should == @return_values[0]
|
||||
@mock.message.should == @return_values[1]
|
||||
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (any args) 3 times, but received it twice")
|
||||
end
|
||||
|
||||
it "should complain when there are too many calls" do
|
||||
third = Object.new
|
||||
@mock.message.should == @return_values[0]
|
||||
@mock.message.should == @return_values[1]
|
||||
@mock.message.should == @return_values[2]
|
||||
@mock.message.should == @return_values[2]
|
||||
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (any args) 3 times, but received it 4 times")
|
||||
end
|
||||
end
|
||||
|
||||
describe "a Mock expectation with multiple return values with a specified count equal to the number of values" do
|
||||
before(:each) do
|
||||
@mock = Mock.new("mock")
|
||||
@return_values = ["1",2,Object.new]
|
||||
@mock.should_receive(:message).exactly(3).times.and_return(@return_values[0],@return_values[1],@return_values[2])
|
||||
end
|
||||
|
||||
it "should return values in order to consecutive calls" do
|
||||
@mock.message.should == @return_values[0]
|
||||
@mock.message.should == @return_values[1]
|
||||
@mock.message.should == @return_values[2]
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should complain when there are too few calls" do
|
||||
third = Object.new
|
||||
@mock.message.should == @return_values[0]
|
||||
@mock.message.should == @return_values[1]
|
||||
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (any args) 3 times, but received it twice")
|
||||
end
|
||||
|
||||
it "should complain when there are too many calls" do
|
||||
third = Object.new
|
||||
@mock.message.should == @return_values[0]
|
||||
@mock.message.should == @return_values[1]
|
||||
@mock.message.should == @return_values[2]
|
||||
@mock.message.should == @return_values[2]
|
||||
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (any args) 3 times, but received it 4 times")
|
||||
end
|
||||
end
|
||||
|
||||
describe "a Mock expectation with multiple return values specifying at_least less than the number of values" do
|
||||
before(:each) do
|
||||
@mock = Mock.new("mock")
|
||||
@mock.should_receive(:message).at_least(:twice).with(no_args).and_return(11, 22)
|
||||
end
|
||||
|
||||
it "should use last return value for subsequent calls" do
|
||||
@mock.message.should equal(11)
|
||||
@mock.message.should equal(22)
|
||||
@mock.message.should equal(22)
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should fail when called less than the specified number" do
|
||||
@mock.message.should equal(11)
|
||||
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (no args) twice, but received it once")
|
||||
end
|
||||
end
|
||||
describe "a Mock expectation with multiple return values with a specified count larger than the number of values" do
|
||||
before(:each) do
|
||||
@mock = Mock.new("mock")
|
||||
@mock.should_receive(:message).exactly(3).times.and_return(11, 22)
|
||||
end
|
||||
|
||||
it "should use last return value for subsequent calls" do
|
||||
@mock.message.should equal(11)
|
||||
@mock.message.should equal(22)
|
||||
@mock.message.should equal(22)
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should fail when called less than the specified number" do
|
||||
@mock.message.should equal(11)
|
||||
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (any args) 3 times, but received it once")
|
||||
end
|
||||
|
||||
it "should fail when called greater than the specified number" do
|
||||
@mock.message.should equal(11)
|
||||
@mock.message.should equal(22)
|
||||
@mock.message.should equal(22)
|
||||
@mock.message.should equal(22)
|
||||
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (any args) 3 times, but received it 4 times")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
40
vendor/plugins/rspec/spec/spec/mocks/null_object_mock_spec.rb
vendored
Normal file
40
vendor/plugins/rspec/spec/spec/mocks/null_object_mock_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
describe "a mock acting as a NullObject" do
|
||||
before(:each) do
|
||||
@mock = Mock.new("null_object", :null_object => true)
|
||||
end
|
||||
|
||||
it "should allow explicit expectation" do
|
||||
@mock.should_receive(:something)
|
||||
@mock.something
|
||||
end
|
||||
|
||||
it "should fail verification when explicit exception not met" do
|
||||
lambda do
|
||||
@mock.should_receive(:something)
|
||||
@mock.rspec_verify
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should ignore unexpected methods" do
|
||||
@mock.random_call("a", "d", "c")
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should expected message with different args first" do
|
||||
@mock.should_receive(:message).with(:expected_arg)
|
||||
@mock.message(:unexpected_arg)
|
||||
@mock.message(:expected_arg)
|
||||
end
|
||||
|
||||
it "should expected message with different args second" do
|
||||
@mock.should_receive(:message).with(:expected_arg)
|
||||
@mock.message(:expected_arg)
|
||||
@mock.message(:unexpected_arg)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
53
vendor/plugins/rspec/spec/spec/mocks/once_counts_spec.rb
vendored
Normal file
53
vendor/plugins/rspec/spec/spec/mocks/once_counts_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
describe "OnceCounts" do
|
||||
before(:each) do
|
||||
@mock = mock("test mock")
|
||||
end
|
||||
|
||||
it "once should fail when called once with wrong args" do
|
||||
@mock.should_receive(:random_call).once.with("a", "b", "c")
|
||||
lambda do
|
||||
@mock.random_call("d", "e", "f")
|
||||
end.should raise_error(MockExpectationError)
|
||||
@mock.rspec_reset
|
||||
end
|
||||
|
||||
it "once should fail when called twice" do
|
||||
@mock.should_receive(:random_call).once
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
lambda do
|
||||
@mock.rspec_verify
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "once should fail when not called" do
|
||||
@mock.should_receive(:random_call).once
|
||||
lambda do
|
||||
@mock.rspec_verify
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "once should pass when called once" do
|
||||
@mock.should_receive(:random_call).once
|
||||
@mock.random_call
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "once should pass when called once with specified args" do
|
||||
@mock.should_receive(:random_call).once.with("a", "b", "c")
|
||||
@mock.random_call("a", "b", "c")
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "once should pass when called once with unspecified args" do
|
||||
@mock.should_receive(:random_call).once
|
||||
@mock.random_call("a", "b", "c")
|
||||
@mock.rspec_verify
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
45
vendor/plugins/rspec/spec/spec/mocks/options_hash_spec.rb
vendored
Normal file
45
vendor/plugins/rspec/spec/spec/mocks/options_hash_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
describe "calling :should_receive with an options hash" do
|
||||
it_should_behave_like "sandboxed rspec_options"
|
||||
attr_reader :reporter, :example_group
|
||||
before do
|
||||
@reporter = ::Spec::Runner::Reporter.new(options)
|
||||
@example_group = Class.new(::Spec::Example::ExampleGroup) do
|
||||
plugin_mock_framework
|
||||
describe("Some Examples")
|
||||
end
|
||||
reporter.add_example_group example_group
|
||||
end
|
||||
|
||||
it "should report the file and line submitted with :expected_from" do
|
||||
example_definition = example_group.it "spec" do
|
||||
mock = Spec::Mocks::Mock.new("a mock")
|
||||
mock.should_receive(:message, :expected_from => "/path/to/blah.ext:37")
|
||||
mock.rspec_verify
|
||||
end
|
||||
example = example_group.new(example_definition)
|
||||
|
||||
reporter.should_receive(:example_finished) do |spec, error|
|
||||
error.backtrace.detect {|line| line =~ /\/path\/to\/blah.ext:37/}.should_not be_nil
|
||||
end
|
||||
example.execute(options, {})
|
||||
end
|
||||
|
||||
it "should use the message supplied with :message" do
|
||||
example_definition = @example_group.it "spec" do
|
||||
mock = Spec::Mocks::Mock.new("a mock")
|
||||
mock.should_receive(:message, :message => "recebi nada")
|
||||
mock.rspec_verify
|
||||
end
|
||||
example = @example_group.new(example_definition)
|
||||
@reporter.should_receive(:example_finished) do |spec, error|
|
||||
error.message.should == "recebi nada"
|
||||
end
|
||||
example.execute(@options, {})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
142
vendor/plugins/rspec/spec/spec/mocks/partial_mock_spec.rb
vendored
Normal file
142
vendor/plugins/rspec/spec/spec/mocks/partial_mock_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
describe "using a Partial Mock," do
|
||||
before(:each) do
|
||||
@object = Object.new
|
||||
end
|
||||
|
||||
it "should name the class in the failure message" do
|
||||
@object.should_receive(:foo)
|
||||
lambda do
|
||||
@object.rspec_verify
|
||||
end.should raise_error(Spec::Mocks::MockExpectationError, /Object/)
|
||||
end
|
||||
|
||||
it "should not conflict with @options in the object" do
|
||||
@object.instance_eval { @options = Object.new }
|
||||
@object.should_receive(:blah)
|
||||
@object.blah
|
||||
end
|
||||
|
||||
it "should_not_receive should mock out the method" do
|
||||
pending("example raises the expected error, yet fails")
|
||||
@object.should_not_receive(:fuhbar)
|
||||
lambda do
|
||||
@object.fuhbar
|
||||
end.should raise_error(MockExpectationError, "Mock 'Object' expected :fuhbar with (no args) 0 times, but received it once")
|
||||
end
|
||||
|
||||
it "should_not_receive should return a negative message expectation" do
|
||||
@object.should_not_receive(:foobar).should be_kind_of(NegativeMessageExpectation)
|
||||
end
|
||||
|
||||
it "should_receive should mock out the method" do
|
||||
@object.should_receive(:foobar).with(:test_param).and_return(1)
|
||||
@object.foobar(:test_param).should equal(1)
|
||||
end
|
||||
|
||||
it "should_receive should handle a hash" do
|
||||
@object.should_receive(:foobar).with(:key => "value").and_return(1)
|
||||
@object.foobar(:key => "value").should equal(1)
|
||||
end
|
||||
|
||||
it "should_receive should handle an inner hash" do
|
||||
hash = {:a => {:key => "value"}}
|
||||
@object.should_receive(:foobar).with(:key => "value").and_return(1)
|
||||
@object.foobar(hash[:a]).should equal(1)
|
||||
end
|
||||
|
||||
it "should_receive should return a message expectation" do
|
||||
@object.should_receive(:foobar).should be_kind_of(MessageExpectation)
|
||||
@object.foobar
|
||||
end
|
||||
|
||||
it "should_receive should verify method was called" do
|
||||
@object.should_receive(:foobar).with(:test_param).and_return(1)
|
||||
lambda do
|
||||
@object.rspec_verify
|
||||
end.should raise_error(Spec::Mocks::MockExpectationError)
|
||||
end
|
||||
|
||||
it "should_receive should also take a String argument" do
|
||||
@object.should_receive('foobar')
|
||||
@object.foobar
|
||||
end
|
||||
|
||||
it "should_not_receive should also take a String argument" do
|
||||
pending("example raises the expected error, yet fails")
|
||||
@object.should_not_receive('foobar')
|
||||
lambda do
|
||||
@object.foobar
|
||||
end.should raise_error(Spec::Mocks::MockExpectationError)
|
||||
end
|
||||
|
||||
it "should use report nil in the error message" do
|
||||
@this_will_resolve_to_nil.should_receive(:foobar)
|
||||
lambda do
|
||||
@this_will_resolve_to_nil.rspec_verify
|
||||
end.should raise_error(Spec::Mocks::MockExpectationError, /NilClass.*expected :foobar with/)
|
||||
end
|
||||
end
|
||||
|
||||
describe "Partially mocking an object that defines ==, after another mock has been defined" do
|
||||
before(:each) do
|
||||
stub("existing mock", :foo => :foo)
|
||||
end
|
||||
|
||||
class PartiallyMockedEquals
|
||||
attr_reader :val
|
||||
def initialize(val)
|
||||
@val = val
|
||||
end
|
||||
|
||||
def ==(other)
|
||||
@val == other.val
|
||||
end
|
||||
end
|
||||
|
||||
it "should not raise an error when stubbing the object" do
|
||||
o = PartiallyMockedEquals.new :foo
|
||||
lambda { o.stub!(:bar) }.should_not raise_error(NoMethodError)
|
||||
end
|
||||
end
|
||||
|
||||
describe "Method visibility when using partial mocks" do
|
||||
class MockableClass
|
||||
def public_method
|
||||
private_method
|
||||
protected_method
|
||||
end
|
||||
protected
|
||||
def protected_method; end
|
||||
private
|
||||
def private_method; end
|
||||
end
|
||||
|
||||
before(:each) do
|
||||
@object = MockableClass.new
|
||||
end
|
||||
|
||||
it 'should keep public methods public' do
|
||||
@object.should_receive(:public_method)
|
||||
@object.public_methods.should include('public_method')
|
||||
@object.public_method
|
||||
end
|
||||
|
||||
it 'should keep private methods private' do
|
||||
@object.should_receive(:private_method)
|
||||
@object.private_methods.should include('private_method')
|
||||
@object.public_method
|
||||
end
|
||||
|
||||
it 'should keep protected methods protected' do
|
||||
@object.should_receive(:protected_method)
|
||||
@object.protected_methods.should include('protected_method')
|
||||
@object.public_method
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
66
vendor/plugins/rspec/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb
vendored
Normal file
66
vendor/plugins/rspec/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
describe "PartialMockUsingMocksDirectly" do
|
||||
before(:each) do
|
||||
|
||||
klass=Class.new
|
||||
klass.class_eval do
|
||||
def existing_method
|
||||
:original_value
|
||||
end
|
||||
end
|
||||
@obj = klass.new
|
||||
|
||||
end
|
||||
|
||||
# See http://rubyforge.org/tracker/index.php?func=detail&aid=10263&group_id=797&atid=3149
|
||||
# specify "should clear expectations on verify" do
|
||||
# @obj.should_receive(:msg)
|
||||
# @obj.msg
|
||||
# @obj.rspec_verify
|
||||
# lambda do
|
||||
# @obj.msg
|
||||
# end.should raise_error(NoMethodError)
|
||||
#
|
||||
# end
|
||||
it "should fail when expected message is not received" do
|
||||
@obj.should_receive(:msg)
|
||||
lambda do
|
||||
@obj.rspec_verify
|
||||
end.should raise_error(MockExpectationError)
|
||||
|
||||
end
|
||||
it "should fail when message is received with incorrect args" do
|
||||
@obj.should_receive(:msg).with(:correct_arg)
|
||||
lambda do
|
||||
@obj.msg(:incorrect_arg)
|
||||
end.should raise_error(MockExpectationError)
|
||||
@obj.msg(:correct_arg)
|
||||
|
||||
end
|
||||
it "should pass when expected message is received" do
|
||||
@obj.should_receive(:msg)
|
||||
@obj.msg
|
||||
@obj.rspec_verify
|
||||
|
||||
end
|
||||
it "should pass when message is received with correct args" do
|
||||
@obj.should_receive(:msg).with(:correct_arg)
|
||||
@obj.msg(:correct_arg)
|
||||
@obj.rspec_verify
|
||||
|
||||
end
|
||||
it "should revert to original method if existed" do
|
||||
@obj.existing_method.should equal(:original_value)
|
||||
@obj.should_receive(:existing_method).and_return(:mock_value)
|
||||
@obj.existing_method.should equal(:mock_value)
|
||||
@obj.rspec_verify
|
||||
@obj.existing_method.should equal(:original_value)
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
175
vendor/plugins/rspec/spec/spec/mocks/passing_mock_argument_constraints_spec.rb
vendored
Normal file
175
vendor/plugins/rspec/spec/spec/mocks/passing_mock_argument_constraints_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,175 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
describe "mock argument constraints", :shared => true do
|
||||
before(:each) do
|
||||
@mock = Mock.new("test mock")
|
||||
Kernel.stub!(:warn)
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
@mock.rspec_verify
|
||||
end
|
||||
end
|
||||
|
||||
describe Methods, "handling argument constraints with DEPRECATED symbols" do
|
||||
it_should_behave_like "mock argument constraints"
|
||||
|
||||
it "should accept true as boolean" do
|
||||
@mock.should_receive(:random_call).with(:boolean)
|
||||
@mock.random_call(true)
|
||||
end
|
||||
|
||||
it "should accept false as boolean" do
|
||||
@mock.should_receive(:random_call).with(:boolean)
|
||||
@mock.random_call(false)
|
||||
end
|
||||
|
||||
it "should accept fixnum as numeric" do
|
||||
@mock.should_receive(:random_call).with(:numeric)
|
||||
@mock.random_call(1)
|
||||
end
|
||||
|
||||
it "should accept float as numeric" do
|
||||
@mock.should_receive(:random_call).with(:numeric)
|
||||
@mock.random_call(1.5)
|
||||
end
|
||||
|
||||
it "should accept string as anything" do
|
||||
@mock.should_receive(:random_call).with("a", :anything, "c")
|
||||
@mock.random_call("a", "whatever", "c")
|
||||
end
|
||||
|
||||
it "should match string" do
|
||||
@mock.should_receive(:random_call).with(:string)
|
||||
@mock.random_call("a string")
|
||||
end
|
||||
|
||||
it "should match no args against any_args" do
|
||||
@mock.should_receive(:random_call).with(:any_args)
|
||||
@mock.random_call("a string")
|
||||
end
|
||||
|
||||
it "should match no args against no_args" do
|
||||
@mock.should_receive(:random_call).with(:no_args)
|
||||
@mock.random_call
|
||||
end
|
||||
end
|
||||
|
||||
describe Methods, "handling argument constraints" do
|
||||
it_should_behave_like "mock argument constraints"
|
||||
|
||||
it "should accept true as boolean()" do
|
||||
@mock.should_receive(:random_call).with(boolean())
|
||||
@mock.random_call(true)
|
||||
end
|
||||
|
||||
it "should accept false as boolean()" do
|
||||
@mock.should_receive(:random_call).with(boolean())
|
||||
@mock.random_call(false)
|
||||
end
|
||||
|
||||
it "should accept fixnum as an_instance_of(Numeric)" do
|
||||
@mock.should_receive(:random_call).with(an_instance_of(Numeric))
|
||||
@mock.random_call(1)
|
||||
end
|
||||
|
||||
it "should accept float as an_instance_of(Numeric)" do
|
||||
@mock.should_receive(:random_call).with(an_instance_of(Numeric))
|
||||
@mock.random_call(1.5)
|
||||
end
|
||||
|
||||
it "should accept string as anything()" do
|
||||
@mock.should_receive(:random_call).with("a", anything(), "c")
|
||||
@mock.random_call("a", "whatever", "c")
|
||||
end
|
||||
|
||||
it "should match duck type with one method" do
|
||||
@mock.should_receive(:random_call).with(duck_type(:length))
|
||||
@mock.random_call([])
|
||||
end
|
||||
|
||||
it "should match duck type with two methods" do
|
||||
@mock.should_receive(:random_call).with(duck_type(:abs, :div))
|
||||
@mock.random_call(1)
|
||||
end
|
||||
|
||||
it "should match no args against any_args()" do
|
||||
@mock.should_receive(:random_call).with(any_args)
|
||||
@mock.random_call()
|
||||
end
|
||||
|
||||
it "should match one arg against any_args()" do
|
||||
@mock.should_receive(:random_call).with(any_args)
|
||||
@mock.random_call("a string")
|
||||
end
|
||||
|
||||
it "should match no args against no_args()" do
|
||||
@mock.should_receive(:random_call).with(no_args)
|
||||
@mock.random_call()
|
||||
end
|
||||
|
||||
it "should match hash with hash_including same hash" do
|
||||
@mock.should_receive(:random_call).with(hash_including(:a => 1))
|
||||
@mock.random_call(:a => 1)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe Methods, "handling block constraints" do
|
||||
it_should_behave_like "mock argument constraints"
|
||||
|
||||
it "should match arguments against RSpec expectations" do
|
||||
@mock.should_receive(:random_call).with {|arg1, arg2, arr, *rest|
|
||||
arg1.should == 5
|
||||
arg2.should have_at_least(3).characters
|
||||
arg2.should have_at_most(10).characters
|
||||
arr.map {|i| i * 2}.should == [2,4,6]
|
||||
rest.should == [:fee, "fi", 4]
|
||||
}
|
||||
@mock.random_call 5, "hello", [1,2,3], :fee, "fi", 4
|
||||
end
|
||||
end
|
||||
|
||||
describe Methods, "handling non-constraint arguments" do
|
||||
|
||||
it "should match non special symbol (can be removed when deprecated symbols are removed)" do
|
||||
@mock.should_receive(:random_call).with(:some_symbol)
|
||||
@mock.random_call(:some_symbol)
|
||||
end
|
||||
|
||||
it "should match string against regexp" do
|
||||
@mock.should_receive(:random_call).with(/bcd/)
|
||||
@mock.random_call("abcde")
|
||||
end
|
||||
|
||||
it "should match regexp against regexp" do
|
||||
@mock.should_receive(:random_call).with(/bcd/)
|
||||
@mock.random_call(/bcd/)
|
||||
end
|
||||
|
||||
it "should match against a hash submitted and received by value" do
|
||||
@mock.should_receive(:random_call).with(:a => "a", :b => "b")
|
||||
@mock.random_call(:a => "a", :b => "b")
|
||||
end
|
||||
|
||||
it "should match against a hash submitted by reference and received by value" do
|
||||
opts = {:a => "a", :b => "b"}
|
||||
@mock.should_receive(:random_call).with(opts)
|
||||
@mock.random_call(:a => "a", :b => "b")
|
||||
end
|
||||
|
||||
it "should match against a hash submitted by value and received by reference" do
|
||||
opts = {:a => "a", :b => "b"}
|
||||
@mock.should_receive(:random_call).with(:a => "a", :b => "b")
|
||||
@mock.random_call(opts)
|
||||
end
|
||||
|
||||
it "should match against a Matcher" do
|
||||
@mock.should_receive(:msg).with(equal(37))
|
||||
@mock.msg(37)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
52
vendor/plugins/rspec/spec/spec/mocks/precise_counts_spec.rb
vendored
Normal file
52
vendor/plugins/rspec/spec/spec/mocks/precise_counts_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
describe "PreciseCounts" do
|
||||
before(:each) do
|
||||
@mock = mock("test mock")
|
||||
end
|
||||
|
||||
it "should fail when exactly n times method is called less than n times" do
|
||||
@mock.should_receive(:random_call).exactly(3).times
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
lambda do
|
||||
@mock.rspec_verify
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should fail when exactly n times method is never called" do
|
||||
@mock.should_receive(:random_call).exactly(3).times
|
||||
lambda do
|
||||
@mock.rspec_verify
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "should pass if exactly n times method is called exactly n times" do
|
||||
@mock.should_receive(:random_call).exactly(3).times
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should pass multiple calls with different args and counts" do
|
||||
@mock.should_receive(:random_call).twice.with(1)
|
||||
@mock.should_receive(:random_call).once.with(2)
|
||||
@mock.random_call(1)
|
||||
@mock.random_call(2)
|
||||
@mock.random_call(1)
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "should pass mutiple calls with different args" do
|
||||
@mock.should_receive(:random_call).once.with(1)
|
||||
@mock.should_receive(:random_call).once.with(2)
|
||||
@mock.random_call(1)
|
||||
@mock.random_call(2)
|
||||
@mock.rspec_verify
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
26
vendor/plugins/rspec/spec/spec/mocks/record_messages_spec.rb
vendored
Normal file
26
vendor/plugins/rspec/spec/spec/mocks/record_messages_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
describe "a mock" do
|
||||
before(:each) do
|
||||
@mock = mock("mock", :null_object => true)
|
||||
end
|
||||
it "should answer false for received_message? when no messages received" do
|
||||
@mock.received_message?(:message).should be_false
|
||||
end
|
||||
it "should answer true for received_message? when message received" do
|
||||
@mock.message
|
||||
@mock.received_message?(:message).should be_true
|
||||
end
|
||||
it "should answer true for received_message? when message received with correct args" do
|
||||
@mock.message 1,2,3
|
||||
@mock.received_message?(:message, 1,2,3).should be_true
|
||||
end
|
||||
it "should answer false for received_message? when message received with incorrect args" do
|
||||
@mock.message 1,2,3
|
||||
@mock.received_message?(:message, 1,2).should be_false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
181
vendor/plugins/rspec/spec/spec/mocks/stub_spec.rb
vendored
Normal file
181
vendor/plugins/rspec/spec/spec/mocks/stub_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,181 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
describe "A method stub" do
|
||||
before(:each) do
|
||||
@class = Class.new do
|
||||
def self.existing_class_method
|
||||
:original_value
|
||||
end
|
||||
|
||||
def existing_instance_method
|
||||
:original_value
|
||||
end
|
||||
end
|
||||
@instance = @class.new
|
||||
end
|
||||
|
||||
it "should return expected value when expected message is received" do
|
||||
@instance.stub!(:msg).and_return(:return_value)
|
||||
@instance.msg.should equal(:return_value)
|
||||
@instance.rspec_verify
|
||||
end
|
||||
|
||||
it "should ignore when expected message is received" do
|
||||
@instance.stub!(:msg)
|
||||
@instance.msg
|
||||
lambda do
|
||||
@instance.rspec_verify
|
||||
end.should_not raise_error
|
||||
end
|
||||
|
||||
it "should ignore when message is received with args" do
|
||||
@instance.stub!(:msg)
|
||||
@instance.msg(:an_arg)
|
||||
lambda do
|
||||
@instance.rspec_verify
|
||||
end.should_not raise_error
|
||||
end
|
||||
|
||||
it "should ignore when expected message is not received" do
|
||||
@instance.stub!(:msg)
|
||||
lambda do
|
||||
@instance.rspec_verify
|
||||
end.should_not raise_error
|
||||
end
|
||||
|
||||
it "should clear itself when verified" do
|
||||
@instance.stub!(:this_should_go).and_return(:blah)
|
||||
@instance.this_should_go.should == :blah
|
||||
@instance.rspec_verify
|
||||
lambda do
|
||||
@instance.this_should_go
|
||||
end.should raise_error(NameError)
|
||||
end
|
||||
|
||||
it "should return values in order to consecutive calls" do
|
||||
return_values = ["1",2,Object.new]
|
||||
@instance.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
|
||||
@instance.msg.should == return_values[0]
|
||||
@instance.msg.should == return_values[1]
|
||||
@instance.msg.should == return_values[2]
|
||||
end
|
||||
|
||||
it "should keep returning last value in consecutive calls" do
|
||||
return_values = ["1",2,Object.new]
|
||||
@instance.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
|
||||
@instance.msg.should == return_values[0]
|
||||
@instance.msg.should == return_values[1]
|
||||
@instance.msg.should == return_values[2]
|
||||
@instance.msg.should == return_values[2]
|
||||
@instance.msg.should == return_values[2]
|
||||
end
|
||||
|
||||
it "should revert to original instance method if there is one" do
|
||||
@instance.existing_instance_method.should equal(:original_value)
|
||||
@instance.stub!(:existing_instance_method).and_return(:mock_value)
|
||||
@instance.existing_instance_method.should equal(:mock_value)
|
||||
@instance.rspec_verify
|
||||
@instance.existing_instance_method.should equal(:original_value)
|
||||
end
|
||||
|
||||
it "should revert to original class method if there is one" do
|
||||
@class.existing_class_method.should equal(:original_value)
|
||||
@class.stub!(:existing_class_method).and_return(:mock_value)
|
||||
@class.existing_class_method.should equal(:mock_value)
|
||||
@class.rspec_verify
|
||||
@class.existing_class_method.should equal(:original_value)
|
||||
end
|
||||
|
||||
it "should yield a specified object" do
|
||||
@instance.stub!(:method_that_yields).and_yield(:yielded_obj)
|
||||
current_value = :value_before
|
||||
@instance.method_that_yields {|val| current_value = val}
|
||||
current_value.should == :yielded_obj
|
||||
@instance.rspec_verify
|
||||
end
|
||||
|
||||
it "should yield multiple times with multiple calls to and_yield" do
|
||||
@instance.stub!(:method_that_yields_multiple_times).and_yield(:yielded_value).
|
||||
and_yield(:another_value)
|
||||
current_value = []
|
||||
@instance.method_that_yields_multiple_times {|val| current_value << val}
|
||||
current_value.should == [:yielded_value, :another_value]
|
||||
@instance.rspec_verify
|
||||
end
|
||||
|
||||
it "should yield a specified object and return another specified object" do
|
||||
yielded_obj = mock("my mock")
|
||||
yielded_obj.should_receive(:foo).with(:bar)
|
||||
@instance.stub!(:method_that_yields_and_returns).and_yield(yielded_obj).and_return(:baz)
|
||||
@instance.method_that_yields_and_returns { |o| o.foo :bar }.should == :baz
|
||||
end
|
||||
|
||||
it "should throw when told to" do
|
||||
@mock.stub!(:something).and_throw(:up)
|
||||
lambda do
|
||||
@mock.something
|
||||
end.should throw_symbol(:up)
|
||||
end
|
||||
|
||||
it "should override a pre-existing stub" do
|
||||
@stub.stub!(:existing_instance_method).and_return(:updated_stub_value)
|
||||
@stub.existing_instance_method.should == :updated_stub_value
|
||||
end
|
||||
|
||||
it "should limit " do
|
||||
@stub.stub!(:foo).with("bar")
|
||||
@stub.should_receive(:foo).with("baz")
|
||||
@stub.foo("bar")
|
||||
@stub.foo("baz")
|
||||
end
|
||||
end
|
||||
|
||||
describe "A method stub with args" do
|
||||
before(:each) do
|
||||
@stub = Object.new
|
||||
@stub.stub!(:foo).with("bar")
|
||||
end
|
||||
|
||||
it "should not complain if not called" do
|
||||
end
|
||||
|
||||
it "should not complain if called with arg" do
|
||||
@stub.foo("bar")
|
||||
end
|
||||
|
||||
it "should complain if called with no arg" do
|
||||
lambda do
|
||||
@stub.foo
|
||||
end.should raise_error
|
||||
end
|
||||
|
||||
it "should complain if called with other arg" do
|
||||
lambda do
|
||||
@stub.foo("other")
|
||||
end.should raise_error
|
||||
end
|
||||
|
||||
it "should not complain if also mocked w/ different args" do
|
||||
@stub.should_receive(:foo).with("baz")
|
||||
@stub.foo("bar")
|
||||
@stub.foo("baz")
|
||||
end
|
||||
|
||||
it "should complain if also mocked w/ different args AND called w/ a 3rd set of args" do
|
||||
@stub.should_receive(:foo).with("baz")
|
||||
@stub.foo("bar")
|
||||
@stub.foo("baz")
|
||||
lambda do
|
||||
@stub.foo("other")
|
||||
end.should raise_error
|
||||
end
|
||||
|
||||
it "should support options" do
|
||||
@stub.stub!(:foo, :expected_from => "bar")
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
67
vendor/plugins/rspec/spec/spec/mocks/twice_counts_spec.rb
vendored
Normal file
67
vendor/plugins/rspec/spec/spec/mocks/twice_counts_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Mocks
|
||||
describe "TwiceCounts" do
|
||||
before(:each) do
|
||||
@mock = mock("test mock")
|
||||
end
|
||||
|
||||
it "twice should fail when call count is higher than expected" do
|
||||
@mock.should_receive(:random_call).twice
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
lambda do
|
||||
@mock.rspec_verify
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "twice should fail when call count is lower than expected" do
|
||||
@mock.should_receive(:random_call).twice
|
||||
@mock.random_call
|
||||
lambda do
|
||||
@mock.rspec_verify
|
||||
end.should raise_error(MockExpectationError)
|
||||
end
|
||||
|
||||
it "twice should fail when called twice with wrong args on the first call" do
|
||||
@mock.should_receive(:random_call).twice.with("1", 1)
|
||||
lambda do
|
||||
@mock.random_call(1, "1")
|
||||
end.should raise_error(MockExpectationError)
|
||||
@mock.rspec_reset
|
||||
end
|
||||
|
||||
it "twice should fail when called twice with wrong args on the second call" do
|
||||
@mock.should_receive(:random_call).twice.with("1", 1)
|
||||
@mock.random_call("1", 1)
|
||||
lambda do
|
||||
@mock.random_call(1, "1")
|
||||
end.should raise_error(MockExpectationError)
|
||||
@mock.rspec_reset
|
||||
end
|
||||
|
||||
it "twice should pass when called twice" do
|
||||
@mock.should_receive(:random_call).twice
|
||||
@mock.random_call
|
||||
@mock.random_call
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "twice should pass when called twice with specified args" do
|
||||
@mock.should_receive(:random_call).twice.with("1", 1)
|
||||
@mock.random_call("1", 1)
|
||||
@mock.random_call("1", 1)
|
||||
@mock.rspec_verify
|
||||
end
|
||||
|
||||
it "twice should pass when called twice with unspecified args" do
|
||||
@mock.should_receive(:random_call).twice
|
||||
@mock.random_call("1")
|
||||
@mock.random_call(1)
|
||||
@mock.rspec_verify
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
14
vendor/plugins/rspec/spec/spec/package/bin_spec_spec.rb
vendored
Normal file
14
vendor/plugins/rspec/spec/spec/package/bin_spec_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
require File.dirname(__FILE__) + '/../../ruby_forker'
|
||||
|
||||
describe "The bin/spec script" do
|
||||
include RubyForker
|
||||
|
||||
it "should have no warnings" do
|
||||
pending "Hangs on JRuby" if PLATFORM =~ /java/
|
||||
spec_path = "#{File.dirname(__FILE__)}/../../../bin/spec"
|
||||
|
||||
output = ruby "-w #{spec_path} --help 2>&1"
|
||||
output.should_not =~ /warning/n
|
||||
end
|
||||
end
|
||||
23
vendor/plugins/rspec/spec/spec/runner/class_and_argument_parser_spec.rb
vendored
Normal file
23
vendor/plugins/rspec/spec/spec/runner/class_and_argument_parser_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Runner
|
||||
describe ClassAndArgumentsParser, ".parse" do
|
||||
|
||||
it "should use a single : to separate class names from arguments" do
|
||||
ClassAndArgumentsParser.parse('Foo').should == ['Foo', nil]
|
||||
ClassAndArgumentsParser.parse('Foo:arg').should == ['Foo', 'arg']
|
||||
ClassAndArgumentsParser.parse('Foo::Bar::Zap:arg').should == ['Foo::Bar::Zap', 'arg']
|
||||
ClassAndArgumentsParser.parse('Foo:arg1,arg2').should == ['Foo', 'arg1,arg2']
|
||||
ClassAndArgumentsParser.parse('Foo::Bar::Zap:arg1,arg2').should == ['Foo::Bar::Zap', 'arg1,arg2']
|
||||
ClassAndArgumentsParser.parse('Foo::Bar::Zap:drb://foo,drb://bar').should == ['Foo::Bar::Zap', 'drb://foo,drb://bar']
|
||||
end
|
||||
|
||||
it "should raise an error when passed an empty string" do
|
||||
lambda do
|
||||
ClassAndArgumentsParser.parse('')
|
||||
end.should raise_error("Couldn't parse \"\"")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
147
vendor/plugins/rspec/spec/spec/runner/command_line_spec.rb
vendored
Normal file
147
vendor/plugins/rspec/spec/spec/runner/command_line_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,147 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Runner
|
||||
describe CommandLine, ".run" do
|
||||
it_should_behave_like "sandboxed rspec_options"
|
||||
attr_reader :options, :err, :out
|
||||
before do
|
||||
@err = options.error_stream
|
||||
@out = options.output_stream
|
||||
end
|
||||
|
||||
it "should run directory" do
|
||||
file = File.dirname(__FILE__) + '/../../../examples/pure'
|
||||
Spec::Runner::CommandLine.run(OptionParser.parse([file,"-p","**/*.rb"], @err, @out))
|
||||
|
||||
@out.rewind
|
||||
@out.read.should =~ /\d+ examples, 0 failures, 3 pending/n
|
||||
end
|
||||
|
||||
it "should run file" do
|
||||
file = File.dirname(__FILE__) + '/../../../failing_examples/predicate_example.rb'
|
||||
Spec::Runner::CommandLine.run(OptionParser.parse([file], @err, @out))
|
||||
|
||||
@out.rewind
|
||||
@out.read.should =~ /2 examples, 1 failure/n
|
||||
end
|
||||
|
||||
it "should raise when file does not exist" do
|
||||
file = File.dirname(__FILE__) + '/doesntexist'
|
||||
|
||||
lambda {
|
||||
Spec::Runner::CommandLine.run(OptionParser.parse([file], @err, @out))
|
||||
}.should raise_error
|
||||
end
|
||||
|
||||
it "should return true when in --generate-options mode" do
|
||||
# NOTE - this used to say /dev/null but jruby hangs on that for some reason
|
||||
Spec::Runner::CommandLine.run(
|
||||
OptionParser.parse(['--generate-options', '/tmp/foo'], @err, @out)
|
||||
).should be_true
|
||||
end
|
||||
|
||||
it "should dump even if Interrupt exception is occurred" do
|
||||
example_group = Class.new(::Spec::Example::ExampleGroup) do
|
||||
describe("example_group")
|
||||
it "no error" do
|
||||
end
|
||||
|
||||
it "should interrupt" do
|
||||
raise Interrupt, "I'm interrupting"
|
||||
end
|
||||
end
|
||||
|
||||
options = ::Spec::Runner::Options.new(@err, @out)
|
||||
::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
|
||||
options.reporter.should_receive(:dump)
|
||||
options.add_example_group(example_group)
|
||||
|
||||
Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
|
||||
end
|
||||
|
||||
it "should heckle when options have heckle_runner" do
|
||||
example_group = Class.new(::Spec::Example::ExampleGroup).describe("example_group") do
|
||||
it "no error" do
|
||||
end
|
||||
end
|
||||
options = ::Spec::Runner::Options.new(@err, @out)
|
||||
::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
|
||||
options.add_example_group example_group
|
||||
|
||||
heckle_runner = mock("heckle_runner")
|
||||
heckle_runner.should_receive(:heckle_with)
|
||||
$rspec_mocks.__send__(:mocks).delete(heckle_runner)
|
||||
|
||||
options.heckle_runner = heckle_runner
|
||||
options.add_example_group(example_group)
|
||||
|
||||
Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
|
||||
heckle_runner.rspec_verify
|
||||
end
|
||||
|
||||
it "should run examples backwards if options.reverse is true" do
|
||||
options = ::Spec::Runner::Options.new(@err, @out)
|
||||
::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
|
||||
options.reverse = true
|
||||
|
||||
b1 = Class.new(Spec::Example::ExampleGroup)
|
||||
b2 = Class.new(Spec::Example::ExampleGroup)
|
||||
|
||||
b2.should_receive(:run).ordered
|
||||
b1.should_receive(:run).ordered
|
||||
|
||||
options.add_example_group(b1)
|
||||
options.add_example_group(b2)
|
||||
|
||||
Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
|
||||
end
|
||||
|
||||
it "should pass its ExampleGroup to the reporter" do
|
||||
example_group = Class.new(::Spec::Example::ExampleGroup).describe("example_group") do
|
||||
it "should" do
|
||||
end
|
||||
end
|
||||
options = ::Spec::Runner::Options.new(@err, @out)
|
||||
options.add_example_group(example_group)
|
||||
|
||||
::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
|
||||
options.reporter.should_receive(:add_example_group).with(example_group)
|
||||
|
||||
Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
|
||||
end
|
||||
|
||||
it "runs only selected Examples when options.examples is set" do
|
||||
options = ::Spec::Runner::Options.new(@err, @out)
|
||||
::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
|
||||
|
||||
options.examples << "example_group should"
|
||||
should_has_run = false
|
||||
should_not_has_run = false
|
||||
example_group = Class.new(::Spec::Example::ExampleGroup).describe("example_group") do
|
||||
it "should" do
|
||||
should_has_run = true
|
||||
end
|
||||
it "should not" do
|
||||
should_not_has_run = true
|
||||
end
|
||||
end
|
||||
|
||||
options.reporter.should_receive(:add_example_group).with(example_group)
|
||||
|
||||
options.add_example_group example_group
|
||||
Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
|
||||
|
||||
should_has_run.should be_true
|
||||
should_not_has_run.should be_false
|
||||
end
|
||||
|
||||
it "sets Spec.run to true" do
|
||||
::Spec.run = false
|
||||
::Spec.should_not be_run
|
||||
Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
|
||||
::Spec.should be_run
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
92
vendor/plugins/rspec/spec/spec/runner/drb_command_line_spec.rb
vendored
Normal file
92
vendor/plugins/rspec/spec/spec/runner/drb_command_line_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
module Spec
|
||||
module Runner
|
||||
describe DrbCommandLine, "without running local server" do
|
||||
unless Config::CONFIG['ruby_install_name'] == 'jruby'
|
||||
it "should print error when there is no running local server" do
|
||||
err = StringIO.new
|
||||
out = StringIO.new
|
||||
DrbCommandLine.run(OptionParser.parse(['--version'], err, out))
|
||||
|
||||
err.rewind
|
||||
err.read.should =~ /No server is running/
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class DrbCommandLineSpec < ::Spec::Example::ExampleGroup
|
||||
describe DrbCommandLine, "with local server"
|
||||
|
||||
class CommandLineForSpec
|
||||
def self.run(argv, stderr, stdout)
|
||||
exit Spec::Runner::CommandLine.run(OptionParser.parse(argv, stderr, stdout))
|
||||
end
|
||||
end
|
||||
|
||||
unless Config::CONFIG['ruby_install_name'] == 'jruby'
|
||||
before(:all) do
|
||||
DRb.start_service("druby://127.0.0.1:8989", CommandLineForSpec)
|
||||
@@drb_example_file_counter = 0
|
||||
end
|
||||
|
||||
before(:each) do
|
||||
create_dummy_spec_file
|
||||
@@drb_example_file_counter = @@drb_example_file_counter + 1
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
File.delete(@dummy_spec_filename)
|
||||
end
|
||||
|
||||
after(:all) do
|
||||
DRb.stop_service
|
||||
end
|
||||
|
||||
it "should run against local server" do
|
||||
out = run_spec_via_druby(['--version'])
|
||||
out.should =~ /RSpec/n
|
||||
end
|
||||
|
||||
it "should output green colorized text when running with --colour option" do
|
||||
out = run_spec_via_druby(["--colour", @dummy_spec_filename])
|
||||
out.should =~ /\e\[32m/n
|
||||
end
|
||||
|
||||
it "should output red colorized text when running with -c option" do
|
||||
out = run_spec_via_druby(["-c", @dummy_spec_filename])
|
||||
out.should =~ /\e\[31m/n
|
||||
end
|
||||
|
||||
def create_dummy_spec_file
|
||||
@dummy_spec_filename = File.expand_path(File.dirname(__FILE__)) + "/_dummy_spec#{@@drb_example_file_counter}.rb"
|
||||
File.open(@dummy_spec_filename, 'w') do |f|
|
||||
f.write %{
|
||||
describe "DUMMY CONTEXT for 'DrbCommandLine with -c option'" do
|
||||
it "should be output with green bar" do
|
||||
true.should be_true
|
||||
end
|
||||
|
||||
it "should be output with red bar" do
|
||||
violated("I want to see a red bar!")
|
||||
end
|
||||
end
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
def run_spec_via_druby(argv)
|
||||
err, out = StringIO.new, StringIO.new
|
||||
out.instance_eval do
|
||||
def tty?; true end
|
||||
end
|
||||
options = ::Spec::Runner::Options.new(err, out)
|
||||
options.argv = argv
|
||||
Spec::Runner::DrbCommandLine.run(options)
|
||||
out.rewind; out.read
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
0
vendor/plugins/rspec/spec/spec/runner/empty_file.txt
vendored
Normal file
0
vendor/plugins/rspec/spec/spec/runner/empty_file.txt
vendored
Normal file
2
vendor/plugins/rspec/spec/spec/runner/examples.txt
vendored
Normal file
2
vendor/plugins/rspec/spec/spec/runner/examples.txt
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
Sir, if you were my husband, I would poison your drink.
|
||||
Madam, if you were my wife, I would drink it.
|
||||
37
vendor/plugins/rspec/spec/spec/runner/execution_context_spec.rb
vendored
Normal file
37
vendor/plugins/rspec/spec/spec/runner/execution_context_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
||||
|
||||
describe "ExecutionContext" do
|
||||
|
||||
it "should provide duck_type()" do
|
||||
dt = duck_type(:length)
|
||||
dt.should be_an_instance_of(Spec::Mocks::DuckTypeArgConstraint)
|
||||
dt.matches?([]).should be_true
|
||||
end
|
||||
|
||||
it "should provide hash_including" do
|
||||
hi = hash_including(:a => 1)
|
||||
hi.should be_an_instance_of(Spec::Mocks::HashIncludingConstraint)
|
||||
hi.matches?(:a => 1).should be_true
|
||||
end
|
||||
|
||||
it "should violate when violated()" do
|
||||
lambda do
|
||||
violated
|
||||
end.should raise_error(Spec::Expectations::ExpectationNotMetError)
|
||||
end
|
||||
|
||||
it "should provide mock()" do
|
||||
mock("thing").should be_an_instance_of(Spec::Mocks::Mock)
|
||||
end
|
||||
|
||||
it "should provide stub()" do
|
||||
thing_stub = stub("thing").should be_an_instance_of(Spec::Mocks::Mock)
|
||||
end
|
||||
|
||||
it "should add method stubs to stub()" do
|
||||
thing_stub = stub("thing", :a => "A", :b => "B")
|
||||
thing_stub.a.should == "A"
|
||||
thing_stub.b.should == "B"
|
||||
end
|
||||
|
||||
end
|
||||
3
vendor/plugins/rspec/spec/spec/runner/failed.txt
vendored
Normal file
3
vendor/plugins/rspec/spec/spec/runner/failed.txt
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
heckler_spec.rb
|
||||
command_line_spec.rb
|
||||
reporter_spec.rb
|
||||
45
vendor/plugins/rspec/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb
vendored
Normal file
45
vendor/plugins/rspec/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
require File.dirname(__FILE__) + '/../../../spec_helper'
|
||||
require 'spec/runner/formatter/failing_example_groups_formatter'
|
||||
|
||||
module Spec
|
||||
module Runner
|
||||
module Formatter
|
||||
describe FailingExampleGroupsFormatter do
|
||||
attr_reader :example_group, :formatter, :io
|
||||
|
||||
before(:each) do
|
||||
@io = StringIO.new
|
||||
options = mock('options')
|
||||
@formatter = FailingExampleGroupsFormatter.new(options, io)
|
||||
@example_group = Class.new(::Spec::Example::ExampleGroup)
|
||||
end
|
||||
|
||||
it "should add example name for each failure" do
|
||||
formatter.add_example_group(Class.new(ExampleGroup).describe("b 1"))
|
||||
formatter.example_failed("e 1", nil, Reporter::Failure.new(nil, RuntimeError.new))
|
||||
formatter.add_example_group(Class.new(ExampleGroup).describe("b 2"))
|
||||
formatter.example_failed("e 2", nil, Reporter::Failure.new(nil, RuntimeError.new))
|
||||
formatter.example_failed("e 3", nil, Reporter::Failure.new(nil, RuntimeError.new))
|
||||
io.string.should include("b 1")
|
||||
io.string.should include("b 2")
|
||||
end
|
||||
|
||||
it "should delimit ExampleGroup superclass descriptions with :" do
|
||||
parent_example_group = Class.new(example_group).describe("Parent")
|
||||
child_example_group = Class.new(parent_example_group).describe("#child_method")
|
||||
grand_child_example_group = Class.new(child_example_group).describe("GrandChild")
|
||||
|
||||
formatter.add_example_group(grand_child_example_group)
|
||||
formatter.example_failed("failure", nil, Reporter::Failure.new(nil, RuntimeError.new))
|
||||
io.string.should == "Parent#child_method GrandChild\n"
|
||||
end
|
||||
|
||||
it "should remove druby url, which is used by Spec::Distributed" do
|
||||
@formatter.add_example_group(Class.new(ExampleGroup).describe("something something (druby://99.99.99.99:99)"))
|
||||
@formatter.example_failed("e 1", nil, Reporter::Failure.new(nil, RuntimeError.new))
|
||||
io.string.should == "something something\n"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
33
vendor/plugins/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb
vendored
Normal file
33
vendor/plugins/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
require File.dirname(__FILE__) + '/../../../spec_helper'
|
||||
require 'spec/runner/formatter/failing_examples_formatter'
|
||||
|
||||
module Spec
|
||||
module Runner
|
||||
module Formatter
|
||||
describe FailingExamplesFormatter do
|
||||
before(:each) do
|
||||
@io = StringIO.new
|
||||
options = mock('options')
|
||||
@formatter = FailingExamplesFormatter.new(options, @io)
|
||||
end
|
||||
|
||||
it "should add example name for each failure" do
|
||||
example_group_1 = Class.new(ExampleGroup).describe("A")
|
||||
example_group_2 = Class.new(example_group_1).describe("B")
|
||||
|
||||
@formatter.add_example_group(example_group_1)
|
||||
@formatter.example_failed(example_group_1.it("a1"){}, nil, Reporter::Failure.new(nil, RuntimeError.new))
|
||||
@formatter.add_example_group(example_group_2)
|
||||
@formatter.example_failed(example_group_2.it("b2"){}, nil, Reporter::Failure.new(nil, RuntimeError.new))
|
||||
@formatter.example_failed(example_group_2.it("b3"){}, nil, Reporter::Failure.new(nil, RuntimeError.new))
|
||||
@io.string.should eql(<<-EOF
|
||||
A a1
|
||||
A B b2
|
||||
A B b3
|
||||
EOF
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
365
vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.4.html
vendored
Normal file
365
vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.4.html
vendored
Normal file
|
|
@ -0,0 +1,365 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html
|
||||
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<title>RSpec results</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta http-equiv="Expires" content="-1" />
|
||||
<meta http-equiv="Pragma" content="no-cache" />
|
||||
<style type="text/css">
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: #fff;
|
||||
font-size: 80%;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="rspec-report">
|
||||
<script type="text/javascript">
|
||||
// <![CDATA[
|
||||
function moveProgressBar(percentDone) {
|
||||
document.getElementById("rspec-header").style.width = percentDone +"%";
|
||||
}
|
||||
function makeRed(element_id) {
|
||||
document.getElementById(element_id).style.background = '#C40D0D';
|
||||
document.getElementById(element_id).style.color = '#FFFFFF';
|
||||
}
|
||||
|
||||
function makeYellow(element_id) {
|
||||
if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
|
||||
{
|
||||
document.getElementById(element_id).style.background = '#FAF834';
|
||||
document.getElementById(element_id).style.color = '#000000';
|
||||
}
|
||||
else
|
||||
{
|
||||
document.getElementById(element_id).style.background = '#FAF834';
|
||||
document.getElementById(element_id).style.color = '#000000';
|
||||
}
|
||||
}
|
||||
|
||||
// ]]>
|
||||
</script>
|
||||
<style type="text/css">
|
||||
#rspec-header {
|
||||
background: #65C400; color: #fff;
|
||||
}
|
||||
|
||||
.rspec-report h1 {
|
||||
margin: 0px 10px 0px 10px;
|
||||
padding: 10px;
|
||||
font-family: "Lucida Grande", Helvetica, sans-serif;
|
||||
font-size: 1.8em;
|
||||
}
|
||||
|
||||
#summary {
|
||||
margin: 0; padding: 5px 10px;
|
||||
font-family: "Lucida Grande", Helvetica, sans-serif;
|
||||
text-align: right;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
#summary p {
|
||||
margin: 0 0 0 2px;
|
||||
}
|
||||
|
||||
#summary #totals {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.example_group {
|
||||
margin: 0 10px 5px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
dl {
|
||||
margin: 0; padding: 0 0 5px;
|
||||
font: normal 11px "Lucida Grande", Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
dt {
|
||||
padding: 3px;
|
||||
background: #65C400;
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin: 5px 0 5px 5px;
|
||||
padding: 3px 3px 3px 18px;
|
||||
}
|
||||
|
||||
dd.spec.passed {
|
||||
border-left: 5px solid #65C400;
|
||||
border-bottom: 1px solid #65C400;
|
||||
background: #DBFFB4; color: #3D7700;
|
||||
}
|
||||
|
||||
dd.spec.failed {
|
||||
border-left: 5px solid #C20000;
|
||||
border-bottom: 1px solid #C20000;
|
||||
color: #C20000; background: #FFFBD3;
|
||||
}
|
||||
|
||||
dd.spec.not_implemented {
|
||||
border-left: 5px solid #FAF834;
|
||||
border-bottom: 1px solid #FAF834;
|
||||
background: #FCFB98; color: #131313;
|
||||
}
|
||||
|
||||
dd.spec.pending_fixed {
|
||||
border-left: 5px solid #0000C2;
|
||||
border-bottom: 1px solid #0000C2;
|
||||
color: #0000C2; background: #D3FBFF;
|
||||
}
|
||||
|
||||
.backtrace {
|
||||
color: #000;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #BE5C00;
|
||||
}
|
||||
|
||||
/* Ruby code, style similar to vibrant ink */
|
||||
.ruby {
|
||||
font-size: 12px;
|
||||
font-family: monospace;
|
||||
color: white;
|
||||
background-color: black;
|
||||
padding: 0.1em 0 0.2em 0;
|
||||
}
|
||||
|
||||
.ruby .keyword { color: #FF6600; }
|
||||
.ruby .constant { color: #339999; }
|
||||
.ruby .attribute { color: white; }
|
||||
.ruby .global { color: white; }
|
||||
.ruby .module { color: white; }
|
||||
.ruby .class { color: white; }
|
||||
.ruby .string { color: #66FF00; }
|
||||
.ruby .ident { color: white; }
|
||||
.ruby .method { color: #FFCC00; }
|
||||
.ruby .number { color: white; }
|
||||
.ruby .char { color: white; }
|
||||
.ruby .comment { color: #9933CC; }
|
||||
.ruby .symbol { color: white; }
|
||||
.ruby .regex { color: #44B4CC; }
|
||||
.ruby .punct { color: white; }
|
||||
.ruby .escape { color: white; }
|
||||
.ruby .interp { color: white; }
|
||||
.ruby .expr { color: white; }
|
||||
|
||||
.ruby .offending { background-color: gray; }
|
||||
.ruby .linenum {
|
||||
width: 75px;
|
||||
padding: 0.1em 1em 0.2em 0;
|
||||
color: #000000;
|
||||
background-color: #FFFBD3;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div id="rspec-header">
|
||||
<h1>RSpec Results</h1>
|
||||
|
||||
<div id="summary">
|
||||
<p id="totals"> </p>
|
||||
<p id="duration"> </p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="results">
|
||||
<div class="example_group">
|
||||
<dl>
|
||||
<dt id="example_group_1">Mocker</dt>
|
||||
<script type="text/javascript">moveProgressBar('5.8');</script>
|
||||
<dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd>
|
||||
<script type="text/javascript">makeRed('rspec-header');</script>
|
||||
<script type="text/javascript">makeRed('example_group_1');</script>
|
||||
<script type="text/javascript">moveProgressBar('11.7');</script>
|
||||
<dd class="spec failed">
|
||||
<span class="failed_spec_name">should fail when expected message not received</span>
|
||||
<div class="failure" id="failure_1">
|
||||
<div class="message"><pre>Mock 'poke me' expected :poke with (any args) once, but received it 0 times</pre></div>
|
||||
<div class="backtrace"><pre>./failing_examples/mocking_example.rb:13:
|
||||
./spec/spec/runner/formatter/html_formatter_spec.rb:24:
|
||||
./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
|
||||
<pre class="ruby"><code><span class="linenum">11</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">should fail when expected message not received</span><span class="punct">"</span> <span class="keyword">do</span>
|
||||
<span class="linenum">12</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">poke me</span><span class="punct">")</span>
|
||||
<span class="offending"><span class="linenum">13</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:poke</span><span class="punct">)</span></span>
|
||||
<span class="linenum">14</span> <span class="keyword">end</span>
|
||||
<span class="linenum">15</span> </code></pre>
|
||||
</div>
|
||||
</dd>
|
||||
<script type="text/javascript">moveProgressBar('17.6');</script>
|
||||
<dd class="spec failed">
|
||||
<span class="failed_spec_name">should fail when messages are received out of order</span>
|
||||
<div class="failure" id="failure_2">
|
||||
<div class="message"><pre>Mock 'one two three' received :three out of order</pre></div>
|
||||
<div class="backtrace"><pre>./failing_examples/mocking_example.rb:22:
|
||||
./spec/spec/runner/formatter/html_formatter_spec.rb:24:
|
||||
./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
|
||||
<pre class="ruby"><code><span class="linenum">20</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:three</span><span class="punct">).</span><span class="ident">ordered</span>
|
||||
<span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span>
|
||||
<span class="offending"><span class="linenum">22</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span>
|
||||
<span class="linenum">23</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span>
|
||||
<span class="linenum">24</span> <span class="keyword">end</span></code></pre>
|
||||
</div>
|
||||
</dd>
|
||||
<script type="text/javascript">moveProgressBar('23.5');</script>
|
||||
<dd class="spec failed">
|
||||
<span class="failed_spec_name">should get yelled at when sending unexpected messages</span>
|
||||
<div class="failure" id="failure_3">
|
||||
<div class="message"><pre>Mock 'don't talk to me' expected :any_message_at_all with (any args) 0 times, but received it once</pre></div>
|
||||
<div class="backtrace"><pre>./failing_examples/mocking_example.rb:28:
|
||||
./spec/spec/runner/formatter/html_formatter_spec.rb:24:
|
||||
./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
|
||||
<pre class="ruby"><code><span class="linenum">26</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">should get yelled at when sending unexpected messages</span><span class="punct">"</span> <span class="keyword">do</span>
|
||||
<span class="linenum">27</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">don't talk to me</span><span class="punct">")</span>
|
||||
<span class="offending"><span class="linenum">28</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_not_receive</span><span class="punct">(</span><span class="symbol">:any_message_at_all</span><span class="punct">)</span></span>
|
||||
<span class="linenum">29</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span>
|
||||
<span class="linenum">30</span> <span class="keyword">end</span></code></pre>
|
||||
</div>
|
||||
</dd>
|
||||
<script type="text/javascript">moveProgressBar('29.4');</script>
|
||||
<dd class="spec pending_fixed">
|
||||
<span class="failed_spec_name">has a bug we need to fix</span>
|
||||
<div class="failure" id="failure_4">
|
||||
<div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div>
|
||||
<div class="backtrace"><pre>./failing_examples/mocking_example.rb:33:
|
||||
./spec/spec/runner/formatter/html_formatter_spec.rb:24:
|
||||
./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
|
||||
<pre class="ruby"><code><span class="linenum">31</span>
|
||||
<span class="linenum">32</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">has a bug we need to fix</span><span class="punct">"</span> <span class="keyword">do</span>
|
||||
<span class="offending"><span class="linenum">33</span> <span class="ident">pending</span> <span class="punct">"</span><span class="string">here is the bug</span><span class="punct">"</span> <span class="keyword">do</span></span>
|
||||
<span class="linenum">34</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span>
|
||||
<span class="linenum">35</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">Bug</span><span class="punct">")</span></code></pre>
|
||||
</div>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="example_group">
|
||||
<dl>
|
||||
<dt id="example_group_2">Running specs with --diff</dt>
|
||||
<script type="text/javascript">makeRed('example_group_2');</script>
|
||||
<script type="text/javascript">moveProgressBar('35.2');</script>
|
||||
<dd class="spec failed">
|
||||
<span class="failed_spec_name">should print diff of different strings</span>
|
||||
<div class="failure" id="failure_5">
|
||||
<div class="message"><pre>expected: "RSpec is a\nbehaviour driven development\nframework for Ruby\n",
|
||||
got: "RSpec is a\nbehavior driven development\nframework for Ruby\n" (using ==)
|
||||
Diff:
|
||||
@@ -1,4 +1,4 @@
|
||||
RSpec is a
|
||||
-behavior driven development
|
||||
+behaviour driven development
|
||||
framework for Ruby
|
||||
</pre></div>
|
||||
<div class="backtrace"><pre>./failing_examples/diffing_spec.rb:13:
|
||||
./spec/spec/runner/formatter/html_formatter_spec.rb:24:
|
||||
./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
|
||||
<pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span>
|
||||
<span class="linenum">12</span><span class="constant">EOF</span>
|
||||
<span class="offending"><span class="linenum">13</span> <span class="ident">usa</span><span class="punct">.</span><span class="ident">should</span> <span class="punct">==</span> <span class="ident">uk</span></span>
|
||||
<span class="linenum">14</span> <span class="keyword">end</span></code></pre>
|
||||
</div>
|
||||
</dd>
|
||||
<script type="text/javascript">moveProgressBar('41.1');</script>
|
||||
<dd class="spec failed">
|
||||
<span class="failed_spec_name">should print diff of different objects' pretty representation</span>
|
||||
<div class="failure" id="failure_6">
|
||||
<div class="message"><pre>expected <Animal
|
||||
name=bob,
|
||||
species=tortoise
|
||||
>
|
||||
, got <Animal
|
||||
name=bob,
|
||||
species=giraffe
|
||||
>
|
||||
(using .eql?)
|
||||
Diff:
|
||||
@@ -1,5 +1,5 @@
|
||||
<Animal
|
||||
name=bob,
|
||||
-species=giraffe
|
||||
+species=tortoise
|
||||
>
|
||||
</pre></div>
|
||||
<div class="backtrace"><pre>./failing_examples/diffing_spec.rb:34:
|
||||
./spec/spec/runner/formatter/html_formatter_spec.rb:24:
|
||||
./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
|
||||
<pre class="ruby"><code><span class="linenum">32</span> <span class="ident">expected</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">"</span><span class="string">bob</span><span class="punct">",</span> <span class="punct">"</span><span class="string">giraffe</span><span class="punct">"</span>
|
||||
<span class="linenum">33</span> <span class="ident">actual</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">"</span><span class="string">bob</span><span class="punct">",</span> <span class="punct">"</span><span class="string">tortoise</span><span class="punct">"</span>
|
||||
<span class="offending"><span class="linenum">34</span> <span class="ident">expected</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eql</span><span class="punct">(</span><span class="ident">actual</span><span class="punct">)</span></span>
|
||||
<span class="linenum">35</span> <span class="keyword">end</span>
|
||||
<span class="linenum">36</span><span class="keyword">end</span></code></pre>
|
||||
</div>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="example_group">
|
||||
<dl>
|
||||
<dt id="example_group_3">A consumer of a stub</dt>
|
||||
<script type="text/javascript">moveProgressBar('47.0');</script>
|
||||
<dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="example_group">
|
||||
<dl>
|
||||
<dt id="example_group_4">A stubbed method on a class</dt>
|
||||
<script type="text/javascript">moveProgressBar('52.9');</script>
|
||||
<dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd>
|
||||
<script type="text/javascript">moveProgressBar('58.8');</script>
|
||||
<dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
|
||||
<script type="text/javascript">moveProgressBar('64.7');</script>
|
||||
<dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="example_group">
|
||||
<dl>
|
||||
<dt id="example_group_5">A mock</dt>
|
||||
<script type="text/javascript">moveProgressBar('70.5');</script>
|
||||
<dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd>
|
||||
<script type="text/javascript">moveProgressBar('76.4');</script>
|
||||
<dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
|
||||
<script type="text/javascript">moveProgressBar('82.3');</script>
|
||||
<dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="example_group">
|
||||
<dl>
|
||||
<dt id="example_group_6">pending example (using pending method)</dt>
|
||||
<script type="text/javascript">makeYellow('example_group_6');</script>
|
||||
<script type="text/javascript">moveProgressBar('88.2');</script>
|
||||
<dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as "PENDING: for some reason" (PENDING: for some reason)</span></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="example_group">
|
||||
<dl>
|
||||
<dt id="example_group_7">pending example (with no block)</dt>
|
||||
<script type="text/javascript">makeYellow('example_group_7');</script>
|
||||
<script type="text/javascript">moveProgressBar('94.1');</script>
|
||||
<dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as "PENDING: Not Yet Implemented" (PENDING: Not Yet Implemented)</span></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="example_group">
|
||||
<dl>
|
||||
<dt id="example_group_8">pending example (with block for pending)</dt>
|
||||
<script type="text/javascript">makeYellow('example_group_8');</script>
|
||||
<script type="text/javascript">moveProgressBar('100.0');</script>
|
||||
<dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as "PENDING: for some reason" (PENDING: for some reason)</span></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
|
||||
<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
387
vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html
vendored
Normal file
387
vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html
vendored
Normal file
|
|
@ -0,0 +1,387 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html
|
||||
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<title>RSpec results</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta http-equiv="Expires" content="-1" />
|
||||
<meta http-equiv="Pragma" content="no-cache" />
|
||||
<style type="text/css">
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: #fff;
|
||||
font-size: 80%;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="rspec-report">
|
||||
<script type="text/javascript">
|
||||
// <![CDATA[
|
||||
function moveProgressBar(percentDone) {
|
||||
document.getElementById("rspec-header").style.width = percentDone +"%";
|
||||
}
|
||||
function makeRed(element_id) {
|
||||
document.getElementById(element_id).style.background = '#C40D0D';
|
||||
document.getElementById(element_id).style.color = '#FFFFFF';
|
||||
}
|
||||
|
||||
function makeYellow(element_id) {
|
||||
if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
|
||||
{
|
||||
document.getElementById(element_id).style.background = '#FAF834';
|
||||
document.getElementById(element_id).style.color = '#000000';
|
||||
}
|
||||
else
|
||||
{
|
||||
document.getElementById(element_id).style.background = '#FAF834';
|
||||
document.getElementById(element_id).style.color = '#000000';
|
||||
}
|
||||
}
|
||||
|
||||
// ]]>
|
||||
</script>
|
||||
<style type="text/css">
|
||||
#rspec-header {
|
||||
background: #65C400; color: #fff;
|
||||
}
|
||||
|
||||
.rspec-report h1 {
|
||||
margin: 0px 10px 0px 10px;
|
||||
padding: 10px;
|
||||
font-family: "Lucida Grande", Helvetica, sans-serif;
|
||||
font-size: 1.8em;
|
||||
}
|
||||
|
||||
#summary {
|
||||
margin: 0; padding: 5px 10px;
|
||||
font-family: "Lucida Grande", Helvetica, sans-serif;
|
||||
text-align: right;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
#summary p {
|
||||
margin: 0 0 0 2px;
|
||||
}
|
||||
|
||||
#summary #totals {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.example_group {
|
||||
margin: 0 10px 5px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
dl {
|
||||
margin: 0; padding: 0 0 5px;
|
||||
font: normal 11px "Lucida Grande", Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
dt {
|
||||
padding: 3px;
|
||||
background: #65C400;
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin: 5px 0 5px 5px;
|
||||
padding: 3px 3px 3px 18px;
|
||||
}
|
||||
|
||||
dd.spec.passed {
|
||||
border-left: 5px solid #65C400;
|
||||
border-bottom: 1px solid #65C400;
|
||||
background: #DBFFB4; color: #3D7700;
|
||||
}
|
||||
|
||||
dd.spec.failed {
|
||||
border-left: 5px solid #C20000;
|
||||
border-bottom: 1px solid #C20000;
|
||||
color: #C20000; background: #FFFBD3;
|
||||
}
|
||||
|
||||
dd.spec.not_implemented {
|
||||
border-left: 5px solid #FAF834;
|
||||
border-bottom: 1px solid #FAF834;
|
||||
background: #FCFB98; color: #131313;
|
||||
}
|
||||
|
||||
dd.spec.pending_fixed {
|
||||
border-left: 5px solid #0000C2;
|
||||
border-bottom: 1px solid #0000C2;
|
||||
color: #0000C2; background: #D3FBFF;
|
||||
}
|
||||
|
||||
.backtrace {
|
||||
color: #000;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #BE5C00;
|
||||
}
|
||||
|
||||
/* Ruby code, style similar to vibrant ink */
|
||||
.ruby {
|
||||
font-size: 12px;
|
||||
font-family: monospace;
|
||||
color: white;
|
||||
background-color: black;
|
||||
padding: 0.1em 0 0.2em 0;
|
||||
}
|
||||
|
||||
.ruby .keyword { color: #FF6600; }
|
||||
.ruby .constant { color: #339999; }
|
||||
.ruby .attribute { color: white; }
|
||||
.ruby .global { color: white; }
|
||||
.ruby .module { color: white; }
|
||||
.ruby .class { color: white; }
|
||||
.ruby .string { color: #66FF00; }
|
||||
.ruby .ident { color: white; }
|
||||
.ruby .method { color: #FFCC00; }
|
||||
.ruby .number { color: white; }
|
||||
.ruby .char { color: white; }
|
||||
.ruby .comment { color: #9933CC; }
|
||||
.ruby .symbol { color: white; }
|
||||
.ruby .regex { color: #44B4CC; }
|
||||
.ruby .punct { color: white; }
|
||||
.ruby .escape { color: white; }
|
||||
.ruby .interp { color: white; }
|
||||
.ruby .expr { color: white; }
|
||||
|
||||
.ruby .offending { background-color: gray; }
|
||||
.ruby .linenum {
|
||||
width: 75px;
|
||||
padding: 0.1em 1em 0.2em 0;
|
||||
color: #000000;
|
||||
background-color: #FFFBD3;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div id="rspec-header">
|
||||
<h1>RSpec Results</h1>
|
||||
|
||||
<div id="summary">
|
||||
<p id="totals"> </p>
|
||||
<p id="duration"> </p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="results">
|
||||
<div class="example_group">
|
||||
<dl>
|
||||
<dt id="example_group_1">Mocker</dt>
|
||||
<script type="text/javascript">moveProgressBar('5.8');</script>
|
||||
<dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd>
|
||||
<script type="text/javascript">makeRed('rspec-header');</script>
|
||||
<script type="text/javascript">makeRed('example_group_1');</script>
|
||||
<script type="text/javascript">moveProgressBar('11.7');</script>
|
||||
<dd class="spec failed">
|
||||
<span class="failed_spec_name">should fail when expected message not received</span>
|
||||
<div class="failure" id="failure_1">
|
||||
<div class="message"><pre>Mock 'poke me' expected :poke with (any args) once, but received it 0 times</pre></div>
|
||||
<div class="backtrace"><pre>/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:13:in `should_receive'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:24:in `run'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `instance_eval'</pre></div>
|
||||
<pre class="ruby"><code><span class="linenum">11</span> it "should fail when expected message not received" do
|
||||
<span class="linenum">12</span> mock = mock("poke me")
|
||||
<span class="offending"><span class="linenum">13</span> mock.should_receive(:poke)</span>
|
||||
<span class="linenum">14</span> end
|
||||
<span class="linenum">15</span>
|
||||
<span class="linenum">16</span><span class="comment"># gem install syntax to get syntax highlighting</span></code></pre>
|
||||
</div>
|
||||
</dd>
|
||||
<script type="text/javascript">moveProgressBar('17.6');</script>
|
||||
<dd class="spec failed">
|
||||
<span class="failed_spec_name">should fail when messages are received out of order</span>
|
||||
<div class="failure" id="failure_2">
|
||||
<div class="message"><pre>Mock 'one two three' received :three out of order</pre></div>
|
||||
<div class="backtrace"><pre>/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:22:in `three'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:16:in `instance_eval'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:24:in `run'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `instance_eval'</pre></div>
|
||||
<pre class="ruby"><code><span class="linenum">20</span> mock.should_receive(:three).ordered
|
||||
<span class="linenum">21</span> mock.one
|
||||
<span class="offending"><span class="linenum">22</span> mock.three</span>
|
||||
<span class="linenum">23</span> mock.two
|
||||
<span class="linenum">24</span> end
|
||||
<span class="linenum">25</span><span class="comment"># gem install syntax to get syntax highlighting</span></code></pre>
|
||||
</div>
|
||||
</dd>
|
||||
<script type="text/javascript">moveProgressBar('23.5');</script>
|
||||
<dd class="spec failed">
|
||||
<span class="failed_spec_name">should get yelled at when sending unexpected messages</span>
|
||||
<div class="failure" id="failure_3">
|
||||
<div class="message"><pre>Mock 'don't talk to me' expected :any_message_at_all with (any args) 0 times, but received it once</pre></div>
|
||||
<div class="backtrace"><pre>/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:28:in `should_not_receive'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:24:in `run'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `instance_eval'</pre></div>
|
||||
<pre class="ruby"><code><span class="linenum">26</span> it "should get yelled at when sending unexpected messages" do
|
||||
<span class="linenum">27</span> mock = mock("don't talk to me")
|
||||
<span class="offending"><span class="linenum">28</span> mock.should_not_receive(:any_message_at_all)</span>
|
||||
<span class="linenum">29</span> mock.any_message_at_all
|
||||
<span class="linenum">30</span> end
|
||||
<span class="linenum">31</span><span class="comment"># gem install syntax to get syntax highlighting</span></code></pre>
|
||||
</div>
|
||||
</dd>
|
||||
<script type="text/javascript">moveProgressBar('29.4');</script>
|
||||
<dd class="spec pending_fixed">
|
||||
<span class="failed_spec_name">has a bug we need to fix</span>
|
||||
<div class="failure" id="failure_4">
|
||||
<div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div>
|
||||
<div class="backtrace"><pre>/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:33:in `pending'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:33:in `instance_eval'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:24:in `run'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `instance_eval'</pre></div>
|
||||
<pre class="ruby"><code><span class="linenum">31</span>
|
||||
<span class="linenum">32</span> it "has a bug we need to fix" do
|
||||
<span class="offending"><span class="linenum">33</span> pending "here is the bug" do</span>
|
||||
<span class="linenum">34</span> # Actually, no. It's fixed. This will fail because it passes :-)
|
||||
<span class="linenum">35</span> mock = mock("Bug")
|
||||
<span class="linenum">36</span><span class="comment"># gem install syntax to get syntax highlighting</span></code></pre>
|
||||
</div>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="example_group">
|
||||
<dl>
|
||||
<dt id="example_group_2">Running specs with --diff</dt>
|
||||
<script type="text/javascript">makeRed('example_group_2');</script>
|
||||
<script type="text/javascript">moveProgressBar('35.2');</script>
|
||||
<dd class="spec failed">
|
||||
<span class="failed_spec_name">should print diff of different strings</span>
|
||||
<div class="failure" id="failure_5">
|
||||
<div class="message"><pre>expected: "RSpec is a\nbehaviour driven development\nframework for Ruby\n",
|
||||
got: "RSpec is a\nbehavior driven development\nframework for Ruby\n" (using ==)
|
||||
Diff:
|
||||
@@ -1,4 +1,4 @@
|
||||
RSpec is a
|
||||
-behavior driven development
|
||||
+behaviour driven development
|
||||
framework for Ruby
|
||||
</pre></div>
|
||||
<div class="backtrace"><pre>/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/diffing_spec.rb:13:in `=='
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:24:in `run'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `instance_eval'</pre></div>
|
||||
<pre class="ruby"><code><span class="linenum">11</span>framework for Ruby
|
||||
<span class="linenum">12</span>EOF
|
||||
<span class="offending"><span class="linenum">13</span> usa.should == uk</span>
|
||||
<span class="linenum">14</span> end
|
||||
<span class="linenum">15</span>
|
||||
<span class="linenum">16</span><span class="comment"># gem install syntax to get syntax highlighting</span></code></pre>
|
||||
</div>
|
||||
</dd>
|
||||
<script type="text/javascript">moveProgressBar('41.1');</script>
|
||||
<dd class="spec failed">
|
||||
<span class="failed_spec_name">should print diff of different objects' pretty representation</span>
|
||||
<div class="failure" id="failure_6">
|
||||
<div class="message"><pre>expected <Animal
|
||||
name=bob,
|
||||
species=tortoise
|
||||
>
|
||||
, got <Animal
|
||||
name=bob,
|
||||
species=giraffe
|
||||
>
|
||||
(using .eql?)
|
||||
Diff:
|
||||
@@ -1,5 +1,5 @@
|
||||
<Animal
|
||||
name=bob,
|
||||
-species=giraffe
|
||||
+species=tortoise
|
||||
>
|
||||
</pre></div>
|
||||
<div class="backtrace"><pre>/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/diffing_spec.rb:34:in `should'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/diffing_spec.rb:31:in `instance_eval'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:24:in `run'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
|
||||
/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `instance_eval'</pre></div>
|
||||
<pre class="ruby"><code><span class="linenum">32</span> expected = Animal.new "bob", "giraffe"
|
||||
<span class="linenum">33</span> actual = Animal.new "bob", "tortoise"
|
||||
<span class="offending"><span class="linenum">34</span> expected.should eql(actual)</span>
|
||||
<span class="linenum">35</span> end
|
||||
<span class="linenum">36</span>end
|
||||
<span class="linenum">37</span><span class="comment"># gem install syntax to get syntax highlighting</span></code></pre>
|
||||
</div>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="example_group">
|
||||
<dl>
|
||||
<dt id="example_group_3">A consumer of a stub</dt>
|
||||
<script type="text/javascript">moveProgressBar('47.0');</script>
|
||||
<dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="example_group">
|
||||
<dl>
|
||||
<dt id="example_group_4">A stubbed method on a class</dt>
|
||||
<script type="text/javascript">moveProgressBar('52.9');</script>
|
||||
<dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd>
|
||||
<script type="text/javascript">moveProgressBar('58.8');</script>
|
||||
<dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
|
||||
<script type="text/javascript">moveProgressBar('64.7');</script>
|
||||
<dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="example_group">
|
||||
<dl>
|
||||
<dt id="example_group_5">A mock</dt>
|
||||
<script type="text/javascript">moveProgressBar('70.5');</script>
|
||||
<dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd>
|
||||
<script type="text/javascript">moveProgressBar('76.4');</script>
|
||||
<dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
|
||||
<script type="text/javascript">moveProgressBar('82.3');</script>
|
||||
<dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="example_group">
|
||||
<dl>
|
||||
<dt id="example_group_6">pending example (using pending method)</dt>
|
||||
<script type="text/javascript">makeYellow('example_group_6');</script>
|
||||
<script type="text/javascript">moveProgressBar('88.2');</script>
|
||||
<dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as "PENDING: for some reason" (PENDING: for some reason)</span></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="example_group">
|
||||
<dl>
|
||||
<dt id="example_group_7">pending example (with no block)</dt>
|
||||
<script type="text/javascript">makeYellow('example_group_7');</script>
|
||||
<script type="text/javascript">moveProgressBar('94.1');</script>
|
||||
<dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as "PENDING: Not Yet Implemented" (PENDING: Not Yet Implemented)</span></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="example_group">
|
||||
<dl>
|
||||
<dt id="example_group_8">pending example (with block for pending)</dt>
|
||||
<script type="text/javascript">makeYellow('example_group_8');</script>
|
||||
<script type="text/javascript">moveProgressBar('100.0');</script>
|
||||
<dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as "PENDING: for some reason" (PENDING: for some reason)</span></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
|
||||
<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue