rspec-core 2.0.0.beta.9 → 2.0.0.beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. data/VERSION +1 -1
  2. data/features/configuration/custom_settings.feature +86 -0
  3. data/features/formatters/custom_formatter.feature +1 -1
  4. data/lib/rspec/core.rb +6 -1
  5. data/lib/rspec/core/backward_compatibility.rb +3 -5
  6. data/lib/rspec/core/command_line.rb +52 -0
  7. data/lib/rspec/core/configuration.rb +106 -118
  8. data/lib/rspec/core/configuration_options.rb +30 -88
  9. data/lib/rspec/core/deprecation.rb +3 -4
  10. data/lib/rspec/core/drb_command_line.rb +29 -0
  11. data/lib/rspec/core/formatters/base_formatter.rb +3 -8
  12. data/lib/rspec/core/formatters/base_text_formatter.rb +2 -2
  13. data/lib/rspec/core/formatters/documentation_formatter.rb +2 -2
  14. data/lib/rspec/core/kernel_extensions.rb +1 -1
  15. data/lib/rspec/core/metadata.rb +11 -11
  16. data/lib/rspec/core/option_parser.rb +84 -0
  17. data/lib/rspec/core/runner.rb +17 -42
  18. data/lib/rspec/core/world.rb +2 -2
  19. data/lib/rspec/monkey.rb +1 -0
  20. data/lib/rspec/monkey/spork/test_framework/rspec.rb +7 -0
  21. data/rspec-core.gemspec +18 -59
  22. data/spec/rspec/core/configuration_options_spec.rb +91 -7
  23. data/spec/rspec/core/configuration_spec.rb +52 -18
  24. data/spec/rspec/core/deprecations_spec.rb +4 -2
  25. data/spec/rspec/core/drb_command_line_spec.rb +151 -0
  26. data/spec/rspec/core/formatters/base_formatter_spec.rb +2 -1
  27. data/spec/rspec/core/formatters/base_text_formatter_spec.rb +1 -2
  28. data/spec/rspec/core/formatters/documentation_formatter_spec.rb +1 -2
  29. data/spec/rspec/core/formatters/progress_formatter_spec.rb +1 -2
  30. data/spec/rspec/core/resources/a_spec.rb +1 -1
  31. data/spec/rspec/core/runner_spec.rb +38 -27
  32. data/spec/rspec/core/shared_example_group_spec.rb +1 -1
  33. data/spec/spec_helper.rb +56 -41
  34. metadata +17 -58
  35. data/example_specs/failing/README.txt +0 -7
  36. data/example_specs/failing/diffing_spec.rb +0 -38
  37. data/example_specs/failing/failing_implicit_docstrings_example.rb +0 -19
  38. data/example_specs/failing/failure_in_after.rb +0 -10
  39. data/example_specs/failing/failure_in_before.rb +0 -10
  40. data/example_specs/failing/mocking_example.rb +0 -40
  41. data/example_specs/failing/mocking_with_flexmock.rb +0 -26
  42. data/example_specs/failing/mocking_with_mocha.rb +0 -25
  43. data/example_specs/failing/mocking_with_rr.rb +0 -27
  44. data/example_specs/failing/partial_mock_example.rb +0 -20
  45. data/example_specs/failing/pending_example.rb +0 -9
  46. data/example_specs/failing/predicate_example.rb +0 -34
  47. data/example_specs/failing/raising_example.rb +0 -47
  48. data/example_specs/failing/spec_helper.rb +0 -1
  49. data/example_specs/failing/syntax_error_example.rb +0 -7
  50. data/example_specs/failing/team_spec.rb +0 -43
  51. data/example_specs/failing/timeout_behaviour.rb +0 -7
  52. data/example_specs/passing/custom_formatter.rb +0 -12
  53. data/example_specs/passing/custom_matchers.rb +0 -54
  54. data/example_specs/passing/dynamic_spec.rb +0 -9
  55. data/example_specs/passing/file_accessor.rb +0 -19
  56. data/example_specs/passing/file_accessor_spec.rb +0 -38
  57. data/example_specs/passing/filtered_formatter.rb +0 -18
  58. data/example_specs/passing/filtered_formatter_example.rb +0 -31
  59. data/example_specs/passing/greeter_spec.rb +0 -31
  60. data/example_specs/passing/helper_method_example.rb +0 -14
  61. data/example_specs/passing/implicit_docstrings_example.rb +0 -18
  62. data/example_specs/passing/io_processor.rb +0 -8
  63. data/example_specs/passing/io_processor_spec.rb +0 -21
  64. data/example_specs/passing/mocking_example.rb +0 -27
  65. data/example_specs/passing/multi_threaded_example_group_runner.rb +0 -26
  66. data/example_specs/passing/nested_classes_example.rb +0 -36
  67. data/example_specs/passing/options_example.rb +0 -31
  68. data/example_specs/passing/options_formatter.rb +0 -20
  69. data/example_specs/passing/partial_mock_example.rb +0 -29
  70. data/example_specs/passing/pending_example.rb +0 -20
  71. data/example_specs/passing/predicate_example.rb +0 -27
  72. data/example_specs/passing/shared_example_group_example.rb +0 -81
  73. data/example_specs/passing/shared_stack_examples.rb +0 -36
  74. data/example_specs/passing/spec_helper.rb +0 -1
  75. data/example_specs/passing/stack.rb +0 -36
  76. data/example_specs/passing/stack_spec.rb +0 -64
  77. data/example_specs/passing/stack_spec_with_nested_example_groups.rb +0 -67
  78. data/example_specs/passing/stubbing_example.rb +0 -69
  79. data/example_specs/passing/subject_example.rb +0 -45
  80. data/example_specs/passing/yielding_example.rb +0 -33
  81. data/example_specs/ruby1.9.compatibility/access_to_constants_spec.rb +0 -85
  82. data/example_specs/spec_helper.rb +0 -10
  83. data/features/configuration/custom_options.feature +0 -71
@@ -1,9 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- describe "The square root" do
4
- (1..10).each do |n|
5
- it "of #{n*n} should be #{n}" do
6
- Math.sqrt(n*n).should == n
7
- end
8
- end
9
- end
@@ -1,19 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
- class FileAccessor
3
- def open_and_handle_with(pathname, processor)
4
- pathname.open do |io|
5
- processor.process(io)
6
- end
7
- end
8
- end
9
-
10
- if __FILE__ == $0
11
- require File.dirname(__FILE__) + '/io_processor'
12
- require 'pathname'
13
-
14
- accessor = FileAccessor.new
15
- io_processor = IoProcessor.new
16
- file = Pathname.new ARGV[0]
17
-
18
- accessor.open_and_handle_with(file, io_processor)
19
- end
@@ -1,38 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
- require File.dirname(__FILE__) + '/file_accessor'
3
- require 'stringio'
4
-
5
- describe "A FileAccessor" do
6
- # This sequence diagram illustrates what this spec specifies.
7
- #
8
- # +--------------+ +----------+ +-------------+
9
- # | FileAccessor | | Pathname | | IoProcessor |
10
- # +--------------+ +----------+ +-------------+
11
- # | | |
12
- # open_and_handle_with | | |
13
- # -------------------->| | open | |
14
- # | |--------------->| | |
15
- # | | io | | |
16
- # | |<...............| | |
17
- # | | | process(io) |
18
- # | |---------------------------------->| |
19
- # | | | | |
20
- # | |<..................................| |
21
- # | | |
22
- #
23
- it "should open a file and pass it to the processor's process method" do
24
- # This is the primary actor
25
- accessor = FileAccessor.new
26
-
27
- # These are the primary actor's neighbours, which we mock.
28
- file = mock "Pathname"
29
- io_processor = mock "IoProcessor"
30
-
31
- io = StringIO.new "whatever"
32
- file.should_receive(:open).and_yield io
33
- io_processor.should_receive(:process).with(io)
34
-
35
- accessor.open_and_handle_with(file, io_processor)
36
- end
37
-
38
- end
@@ -1,18 +0,0 @@
1
- $:.unshift File.join(File.dirname(__FILE__), "/../../lib")
2
- require 'spec/runner/formatter/nested_text_formatter'
3
-
4
- class FilteredFormatter < Spec::Runner::Formatter::NestedTextFormatter
5
- def add_example_group(example_group)
6
- if example_group.options[:show] == false
7
- @showing = false
8
- else
9
- @showing = true
10
- puts example_group.description
11
- end
12
- end
13
-
14
- def example_passed(example)
15
- puts " " << example.description if @showing unless example.options[:show] == false
16
- end
17
- end
18
-
@@ -1,31 +0,0 @@
1
- # This demonstrates how you can write custom formatters to handle arbitrary
2
- # options passed to the +describe+ and +it+ methods. To see it in action, stand
3
- # in the project root and say:
4
- #
5
- # bin/spec -r examples/passing/filtered_formatter.rb examples/passing/filtered_formatter_example.rb -f FilteredFormatter
6
- #
7
- # You should only see the examples and groups below that are not explicitly
8
- # marked :show => false
9
- #
10
- # group 1
11
- # example 1 a
12
- # group 3
13
- # example 3
14
-
15
-
16
- describe "group 1", :show => true do
17
- it "example 1 a", :show => true do
18
- end
19
- it "example 1 b", :show => false do
20
- end
21
- end
22
-
23
- describe "group 2", :show => false do
24
- it "example 2" do
25
- end
26
- end
27
-
28
- describe "group 3" do
29
- it "example 3" do
30
- end
31
- end
@@ -1,31 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
- # greeter.rb
3
- #
4
- # Based on http://glu.ttono.us/articles/2006/12/19/tormenting-your-tests-with-heckle
5
- #
6
- # Run with:
7
- #
8
- # spec greeter_spec.rb --heckle Greeter
9
- #
10
- class Greeter
11
- def initialize(person = nil)
12
- @person = person
13
- end
14
-
15
- def greet
16
- @person.nil? ? "Hi there!" : "Hi #{@person}!"
17
- end
18
- end
19
-
20
- describe "Greeter" do
21
- it "should say Hi to person" do
22
- greeter = Greeter.new("Kevin")
23
- greeter.greet.should == "Hi Kevin!"
24
- end
25
-
26
- it "should say Hi to nobody" do
27
- greeter = Greeter.new
28
- # Uncomment the next line to make Heckle happy
29
- #greeter.greet.should == "Hi there!"
30
- end
31
- end
@@ -1,14 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- module HelperMethodExample
4
- describe "an example group with helper a method" do
5
- def helper_method
6
- "received call"
7
- end
8
-
9
- it "should make that method available to specs" do
10
- helper_method.should == "received call"
11
- end
12
- end
13
- end
14
-
@@ -1,18 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- # Run "spec implicit_docstrings_example.rb --format specdoc" to see the output of this file
4
-
5
- describe "Examples with no docstrings generate their own:" do
6
-
7
- specify { 3.should be < 5 }
8
-
9
- specify { ["a"].should include("a") }
10
-
11
- specify { [1,2,3].should respond_to(:size) }
12
-
13
- end
14
-
15
- describe 1 do
16
- it { should == 1 }
17
- it { should be < 2}
18
- end
@@ -1,8 +0,0 @@
1
- class DataTooShort < StandardError; end
2
-
3
- class IoProcessor
4
- # Does some fancy stuff unless the length of +io+ is shorter than 32
5
- def process(io)
6
- raise DataTooShort if io.read.length < 32
7
- end
8
- end
@@ -1,21 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
- require File.dirname(__FILE__) + '/io_processor'
3
- require 'stringio'
4
-
5
- describe "An IoProcessor" do
6
- before(:each) do
7
- @processor = IoProcessor.new
8
- end
9
-
10
- it "should raise nothing when the file is exactly 32 bytes" do
11
- lambda {
12
- @processor.process(StringIO.new("z"*32))
13
- }.should_not raise_error
14
- end
15
-
16
- it "should raise an exception when the file length is less than 32 bytes" do
17
- lambda {
18
- @processor.process(StringIO.new("z"*31))
19
- }.should raise_error(DataTooShort)
20
- end
21
- end
@@ -1,27 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- describe "A consumer of a mock" do
4
- it "should be able to send messages to the mock" do
5
- mock = mock("poke me")
6
- mock.should_receive(:poke)
7
- mock.poke
8
- end
9
- end
10
-
11
- describe "a mock" do
12
- it "should be able to mock the same message twice w/ different args" do
13
- mock = mock("mock")
14
- mock.should_receive(:msg).with(:arg1).and_return(:val1)
15
- mock.should_receive(:msg).with(:arg2).and_return(:val2)
16
- mock.msg(:arg1).should eql(:val1)
17
- mock.msg(:arg2).should eql(:val2)
18
- end
19
-
20
- it "should be able to mock the same message twice w/ different args in reverse order" do
21
- mock = mock("mock")
22
- mock.should_receive(:msg).with(:arg1).and_return(:val1)
23
- mock.should_receive(:msg).with(:arg2).and_return(:val2)
24
- mock.msg(:arg2).should eql(:val2)
25
- mock.msg(:arg1).should eql(:val1)
26
- end
27
- end
@@ -1,26 +0,0 @@
1
- class MultiThreadedExampleGroupRunner < Spec::Runner::ExampleGroupRunner
2
- def initialize(options, arg)
3
- super(options)
4
- # configure these
5
- @thread_count = 4
6
- @thread_wait = 0
7
- end
8
-
9
- def run
10
- @threads = []
11
- q = Queue.new
12
- example_groups.each { |b| q << b}
13
- success = true
14
- @thread_count.times do
15
- @threads << Thread.new(q) do |queue|
16
- while not queue.empty?
17
- example_group = queue.pop
18
- success &= example_group.suite.run(nil)
19
- end
20
- end
21
- sleep @thread_wait
22
- end
23
- @threads.each {|t| t.join}
24
- success
25
- end
26
- end
@@ -1,36 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
- require File.dirname(__FILE__) + '/stack'
3
-
4
- class StackExamples < Spec::ExampleGroup
5
- describe(Stack)
6
- before(:each) do
7
- @stack = Stack.new
8
- end
9
- end
10
-
11
- class EmptyStackExamples < StackExamples
12
- describe("when empty")
13
- it "should be empty" do
14
- @stack.should be_empty
15
- end
16
- end
17
-
18
- class AlmostFullStackExamples < StackExamples
19
- describe("when almost full")
20
- before(:each) do
21
- (1..9).each {|n| @stack.push n}
22
- end
23
- it "should be full" do
24
- @stack.should_not be_full
25
- end
26
- end
27
-
28
- class FullStackExamples < StackExamples
29
- describe("when full")
30
- before(:each) do
31
- (1..10).each {|n| @stack.push n}
32
- end
33
- it "should be full" do
34
- @stack.should be_full
35
- end
36
- end
@@ -1,31 +0,0 @@
1
- # This demonstrates the use of the options hash to support custom reporting.
2
- # To see the result, run this command from the project root:
3
- #
4
- # bin/spec --require examples/passing/options_formatter.rb examples/passing/options_example.rb \
5
- # --format OptionsFormatter
6
-
7
- require File.dirname(__FILE__) + '/spec_helper'
8
-
9
- describe "this group will be reported", :report => true do
10
- it "this example will be reported", :report => true do
11
- # no-op
12
- end
13
-
14
- it "this example will not be reported", :report => false do
15
- # no-op
16
- end
17
-
18
- it "this example will also not be reported", :foo => 'bar' do
19
- # no-op
20
- end
21
-
22
- it "this example will also also not be reported" do
23
- # no-op
24
- end
25
- end
26
-
27
- describe "this group will not be reported", :report => false do
28
- it "though this example will", :report => true do
29
- # no-op
30
- end
31
- end
@@ -1,20 +0,0 @@
1
- # This is an example of how you can use a custom formatter to do custom
2
- # reporting. This formatter will only report example groups and examples that
3
- # have :report => true (or anything truthy) in the declaration. See
4
- # options_example.rb in this directory.
5
-
6
- require 'spec/runner/formatter/base_text_formatter'
7
-
8
- class OptionsFormatter < Spec::Runner::Formatter::BaseTextFormatter
9
- def example_started(proxy)
10
- if proxy.options[:report]
11
- puts proxy.description
12
- end
13
- end
14
-
15
- def example_group_started(proxy)
16
- if proxy.options[:report]
17
- puts proxy.description
18
- end
19
- end
20
- end
@@ -1,29 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- class MockableClass
4
- def self.find id
5
- return :original_return
6
- end
7
- end
8
-
9
- describe "A partial mock" do
10
-
11
- it "should work at the class level" do
12
- MockableClass.should_receive(:find).with(1).and_return {:stub_return}
13
- MockableClass.find(1).should equal(:stub_return)
14
- end
15
-
16
- it "should revert to the original after each spec" do
17
- MockableClass.find(1).should equal(:original_return)
18
- end
19
-
20
- it "can be mocked w/ ordering" do
21
- MockableClass.should_receive(:msg_1).ordered
22
- MockableClass.should_receive(:msg_2).ordered
23
- MockableClass.should_receive(:msg_3).ordered
24
- MockableClass.msg_1
25
- MockableClass.msg_2
26
- MockableClass.msg_3
27
- end
28
-
29
- end
@@ -1,20 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- describe "pending example (using pending method)" do
4
- it %Q|should be reported as "PENDING: for some reason"| do
5
- pending("for some reason")
6
- end
7
- end
8
-
9
- describe "pending example (with no block)" do
10
- it %Q|should be reported as "PENDING: Not Yet Implemented"|
11
- end
12
-
13
- describe "pending example (with block for pending)" do
14
- it %Q|should have a failing block, passed to pending, reported as "PENDING: for some reason"| do
15
- pending("for some reason") do
16
- raise "some reason"
17
- end
18
- end
19
- end
20
-
@@ -1,27 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- class BddFramework
4
- def intuitive?
5
- true
6
- end
7
-
8
- def adopted_quickly?
9
- true
10
- end
11
- end
12
-
13
- describe "BDD framework" do
14
-
15
- before(:each) do
16
- @bdd_framework = BddFramework.new
17
- end
18
-
19
- it "should be adopted quickly" do
20
- @bdd_framework.should be_adopted_quickly
21
- end
22
-
23
- it "should be intuitive" do
24
- @bdd_framework.should be_intuitive
25
- end
26
-
27
- end