rspec 1.0.5 → 1.0.6

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 (87) hide show
  1. data/CHANGES +78 -1
  2. data/EXAMPLES.rd +8 -5
  3. data/README +1 -0
  4. data/Rakefile +1 -1
  5. data/examples/pending_example.rb +20 -0
  6. data/lib/autotest/rspec.rb +46 -18
  7. data/lib/spec/dsl.rb +1 -0
  8. data/lib/spec/dsl/behaviour.rb +37 -27
  9. data/lib/spec/dsl/behaviour_callbacks.rb +4 -0
  10. data/lib/spec/dsl/behaviour_eval.rb +27 -16
  11. data/lib/spec/dsl/behaviour_factory.rb +2 -2
  12. data/lib/spec/dsl/composite_proc_builder.rb +9 -4
  13. data/lib/spec/dsl/configuration.rb +20 -4
  14. data/lib/spec/dsl/description.rb +7 -0
  15. data/lib/spec/dsl/errors.rb +9 -0
  16. data/lib/spec/dsl/example.rb +18 -10
  17. data/lib/spec/matchers/have.rb +10 -13
  18. data/lib/spec/matchers/operator_matcher.rb +3 -3
  19. data/lib/spec/matchers/raise_error.rb +8 -3
  20. data/lib/spec/mocks/error_generator.rb +1 -1
  21. data/lib/spec/mocks/message_expectation.rb +11 -0
  22. data/lib/spec/mocks/methods.rb +9 -5
  23. data/lib/spec/mocks/proxy.rb +13 -9
  24. data/lib/spec/rake/spectask.rb +80 -38
  25. data/lib/spec/runner/backtrace_tweaker.rb +2 -1
  26. data/lib/spec/runner/behaviour_runner.rb +37 -16
  27. data/lib/spec/runner/formatter/base_formatter.rb +23 -15
  28. data/lib/spec/runner/formatter/base_text_formatter.rb +39 -11
  29. data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +7 -3
  30. data/lib/spec/runner/formatter/failing_examples_formatter.rb +3 -3
  31. data/lib/spec/runner/formatter/html_formatter.rb +32 -25
  32. data/lib/spec/runner/formatter/progress_bar_formatter.rb +6 -5
  33. data/lib/spec/runner/formatter/rdoc_formatter.rb +6 -6
  34. data/lib/spec/runner/formatter/specdoc_formatter.rb +7 -6
  35. data/lib/spec/runner/option_parser.rb +6 -5
  36. data/lib/spec/runner/options.rb +60 -43
  37. data/lib/spec/runner/reporter.rb +17 -6
  38. data/lib/spec/runner/spec_parser.rb +1 -1
  39. data/lib/spec/translator.rb +8 -0
  40. data/lib/spec/version.rb +3 -3
  41. data/plugins/mock_frameworks/flexmock.rb +14 -18
  42. data/plugins/mock_frameworks/mocha.rb +0 -2
  43. data/plugins/mock_frameworks/rr.rb +21 -0
  44. data/spec/autotest/discover_spec.rb +19 -0
  45. data/spec/autotest/rspec_spec.rb +257 -0
  46. data/spec/autotest_helper.rb +4 -0
  47. data/spec/spec/dsl/behaviour_eval_spec.rb +30 -0
  48. data/spec/spec/dsl/behaviour_factory_spec.rb +18 -0
  49. data/spec/spec/dsl/behaviour_spec.rb +95 -58
  50. data/spec/spec/dsl/composite_proc_builder_spec.rb +0 -13
  51. data/spec/spec/dsl/configuration_spec.rb +6 -1
  52. data/spec/spec/dsl/description_spec.rb +9 -1
  53. data/spec/spec/dsl/example_class_spec.rb +3 -3
  54. data/spec/spec/dsl/example_instance_spec.rb +26 -28
  55. data/spec/spec/dsl/example_matcher_spec.rb +91 -0
  56. data/spec/spec/dsl/shared_behaviour_spec.rb +24 -0
  57. data/spec/spec/expectations/extensions/object_spec.rb +2 -2
  58. data/spec/spec/expectations/fail_with_spec.rb +2 -2
  59. data/spec/spec/matchers/have_spec.rb +1 -1
  60. data/spec/spec/matchers/operator_matcher_spec.rb +10 -10
  61. data/spec/spec/matchers/raise_error_spec.rb +38 -0
  62. data/spec/spec/mocks/argument_expectation_spec.rb +18 -14
  63. data/spec/spec/mocks/at_most_spec.rb +1 -1
  64. data/spec/spec/mocks/bug_report_11545_spec.rb +31 -0
  65. data/spec/spec/mocks/partial_mock_spec.rb +33 -1
  66. data/spec/spec/runner/behaviour_runner_spec.rb +72 -49
  67. data/spec/spec/runner/command_line_spec.rb +1 -1
  68. data/spec/spec/runner/context_matching_spec.rb +10 -10
  69. data/spec/spec/runner/drb_command_line_spec.rb +62 -59
  70. data/spec/spec/runner/extensions/bug_report_10577_spec.rb +35 -0
  71. data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +15 -2
  72. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +3 -3
  73. data/spec/spec/runner/formatter/html_formatter_spec.rb +1 -1
  74. data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +14 -15
  75. data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +1 -1
  76. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +42 -9
  77. data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +40 -40
  78. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +55 -49
  79. data/spec/spec/runner/option_parser_spec.rb +16 -15
  80. data/spec/spec/runner/options_spec.rb +64 -31
  81. data/spec/spec/runner/reporter_spec.rb +67 -15
  82. data/spec/spec/spec_classes.rb +9 -1
  83. data/spec/spec/translator_spec.rb +48 -0
  84. data/spec/spec_helper.rb +5 -2
  85. metadata +13 -6
  86. data/examples/not_yet_implemented_spec.rb +0 -12
  87. data/spec/spec/runner/example_matcher_spec.rb +0 -127
@@ -0,0 +1,257 @@
1
+ require File.dirname(__FILE__) + "/../autotest_helper"
2
+
3
+ class Autotest
4
+
5
+ module AutotestHelper
6
+ def rspec_output
7
+ <<-HERE
8
+ .............PPF
9
+
10
+ 1)
11
+ 'false should be false' FAILED
12
+ expected: true,
13
+ got: false (using ==)
14
+ ./spec/autotest/rspec_spec.rb:203:
15
+
16
+ Finished in 0.158674 seconds
17
+
18
+ 16 examples, 1 failure, 2 pending
19
+
20
+ Pending:
21
+ Autotest::Rspec handling failed results should return an array of failed examples and errors (TODO)
22
+ Autotest::Rspec tests/specs for a given file should find all the specs for a given file (TODO)
23
+ HERE
24
+ end
25
+
26
+
27
+ def common_setup
28
+ @proc = mock Proc
29
+ @kernel = mock Kernel
30
+ @kernel.stub!(:proc).and_return @proc
31
+
32
+ File.stub!(:exists).and_return true
33
+ @windows_alt_separator = "\\"
34
+ @posix_separator = '/'
35
+
36
+ @rspec_output = rspec_output
37
+ end
38
+ end
39
+
40
+ describe Rspec, "rspec_commands" do
41
+ it "should contain the various commands, ordered by preference" do
42
+ Rspec.new.spec_commands.should == ["bin/spec", "#{Config::CONFIG['bindir']}/spec"]
43
+ end
44
+ end
45
+
46
+ describe Rspec, "selection of rspec command" do
47
+ include AutotestHelper
48
+
49
+ before :each do
50
+ common_setup
51
+ @rspec_autotest = Rspec.new(@kernel)
52
+ end
53
+
54
+ it "should try to find the spec command if it exists in ./bin and use it above everything else" do
55
+ File.stub!(:exists?).and_return true
56
+
57
+ File.should_receive(:exists?).with("bin/spec").and_return true
58
+ @rspec_autotest.spec_command.should == "bin/spec"
59
+ end
60
+
61
+ it "should otherwise select the default spec command in gem_dir/bin/spec" do
62
+ @rspec_autotest.stub!(:spec_commands).and_return ["/opt/local/bin/spec"]
63
+ Config::CONFIG.stub!(:[]).and_return "/opt/local/bin"
64
+
65
+ @rspec_autotest.spec_command.should == "#{Config::CONFIG['bindir']}/spec"
66
+ end
67
+
68
+ it "should raise an error if no spec command is found at all" do
69
+ File.stub!(:exists?).and_return false
70
+
71
+ lambda {
72
+ @rspec_autotest.spec_command
73
+ }.should raise_error(RspecCommandError, "No spec command could be found!")
74
+ end
75
+
76
+ end
77
+
78
+ describe Rspec, "selection of rspec command (windows compatibility issues)" do
79
+ include AutotestHelper
80
+
81
+ before :each do
82
+ common_setup
83
+ end
84
+
85
+ it "should use the ALT_SEPARATOR if it is non-nil" do
86
+ @rspec_autotest = Rspec.new(@kernel, @posix_separator, @windows_alt_separator)
87
+ @rspec_autotest.stub!(:spec_commands).and_return [File.join('bin', 'spec')]
88
+ @rspec_autotest.spec_command.should == "bin\\spec"
89
+ end
90
+
91
+ it "should not use the ALT_SEPATOR if it is nil" do
92
+ @windows_alt_separator = nil
93
+ @rspec_autotest = Rspec.new(@kernel, @posix_separator, @windows_alt_separator)
94
+ @rspec_autotest.stub!(:spec_commands).and_return [File.join('bin', 'spec')]
95
+ @rspec_autotest.spec_command.should == "bin/spec"
96
+ end
97
+ end
98
+
99
+ describe Rspec, "adding spec.opts --options" do
100
+ before :each do
101
+ @rspec_autotest = Rspec.new
102
+ end
103
+
104
+ it "should return the command line option to add spec.opts if the options file exists" do
105
+ File.stub!(:exist?).and_return true
106
+ @rspec_autotest.add_options_if_present.should == "-O spec/spec.opts "
107
+ end
108
+
109
+ it "should return an empty string if no spec.opts exists" do
110
+ File.stub!(:exist?).and_return false
111
+ Rspec.new.add_options_if_present.should == ""
112
+ end
113
+ end
114
+
115
+ describe Rspec do
116
+ before :each do
117
+ @rspec_autotest = Rspec.new
118
+ @rspec_autotest.stub!(:ruby).and_return "ruby"
119
+ @rspec_autotest.stub!(:add_options_if_present).and_return "-O spec/spec.opts"
120
+
121
+ @ruby = @rspec_autotest.ruby
122
+ @spec_command = @rspec_autotest.spec_command
123
+ @options = @rspec_autotest.add_options_if_present
124
+ @files_to_test = {
125
+ :spec => ["file_one", "file_two"]
126
+ }
127
+ # this is not the inner representation of Autotest!
128
+ @rspec_autotest.stub!(:files_to_test).and_return @files_to_test
129
+ @files_to_test.stub!(:keys).and_return @files_to_test[:spec]
130
+ @to_test = @files_to_test.keys.flatten.join ' '
131
+ end
132
+
133
+ it "should make the apropriate test command" do
134
+ @rspec_autotest.make_test_cmd(@files_to_test).should == "#{@ruby} -S #{@spec_command} #{@options} #{@to_test}"
135
+ end
136
+ end
137
+
138
+ describe Rspec, "test mappings" do
139
+ before :each do
140
+ @proc = mock Proc
141
+ @kernel = mock Kernel
142
+ @kernel.stub!(:proc).and_return @proc
143
+ @rspec_autotest = Rspec.new(@kernel)
144
+ end
145
+
146
+ it "should map all filenames in spec/ which end in .rb" do
147
+ @rspec_autotest.test_mappings[%r%^spec/.*\.rb$%].should == @proc
148
+ end
149
+
150
+ it "should map all names in lib which end in .rb to the corresponding ones in spec/" do
151
+ @rspec_autotest.test_mappings[%r%^lib/(.*)\.rb$%].should == @proc
152
+ end
153
+
154
+ it "should find all files in spec/shares/* and the spec helper in spec/spec_helper" do
155
+ @rspec_autotest.test_mappings[%r%^spec/(spec_helper|shared/.*)\.rb$%].should == @proc
156
+ end
157
+ end
158
+
159
+ describe Rspec, "handling results" do
160
+ include AutotestHelper
161
+
162
+ before :each do
163
+ common_setup
164
+ @rspec_autotest = Rspec.new(@kernel, @posix_separator, @windows_alt_separator)
165
+ @rspec_autotest.stub!(:hook)
166
+
167
+ @results = mock String
168
+ @results.stub!(:scan).and_return ""
169
+ end
170
+
171
+ it "should call hook(:red) if there are failures" do
172
+ @rspec_autotest.stub!(:consolidate_failures).and_return ["spec/some_spec.rb"]
173
+
174
+ @rspec_autotest.should_receive(:hook).with(:red)
175
+ @rspec_autotest.handle_results(@results)
176
+ end
177
+
178
+ it "should call hook(:green) if there are no failures" do
179
+ @rspec_autotest.stub!(:consolidate_failures).and_return []
180
+ @rspec_autotest.should_receive(:hook).with(:green)
181
+ @rspec_autotest.handle_results(@results)
182
+ end
183
+ end
184
+
185
+ describe Rspec, "handling failed results" do
186
+ include AutotestHelper
187
+
188
+ before :each do
189
+ common_setup
190
+ end
191
+
192
+ it %(should scan the output into a multi-dimensional array,
193
+ consisting of the failing spec's name as the first element,
194
+ and the failure as the second) do
195
+ @rspec_autotest = Rspec.new
196
+ @rspec_autotest.failed_results(@rspec_output).should == [
197
+ [
198
+ "false should be false",
199
+ "expected: true,\n got: false (using ==)\n./spec/autotest/rspec_spec.rb:203:"
200
+ ]
201
+ ]
202
+ end
203
+ end
204
+
205
+ describe Rspec, "specs for a given file" do
206
+ before :each do
207
+ @lib_file = "lib/something.rb"
208
+ @spec_file = "spec/something_spec.rb"
209
+ @rspec_autotest = Rspec.new
210
+
211
+ @rspec_autotest.instance_variable_set("@files", {@lib_file => Time.now, @spec_file => Time.now})
212
+ @rspec_autotest.stub!(:find_files_to_test).and_return true
213
+ end
214
+
215
+ it "should find the spec file for a given lib file" do
216
+ @rspec_autotest.specs_for_file(@lib_file).should == [@spec_file]
217
+ end
218
+
219
+ it "should find the spec file if given a spec file" do
220
+ @rspec_autotest.specs_for_file(@spec_file).should == [@spec_file]
221
+ end
222
+
223
+ it "should only find the file if the file is being tracked (in @file)" do
224
+ @other_file = "lib/some_non_tracked_file"
225
+ @rspec_autotest.specs_for_file(@other_file).should == []
226
+ end
227
+ end
228
+
229
+ describe Rspec, "consolidating failures" do
230
+ include AutotestHelper
231
+
232
+ before :each do
233
+ common_setup
234
+ @rspec_autotest = Rspec.new
235
+
236
+ @spec_file = "./spec/autotest/rspec_spec.rb"
237
+ @rspec_autotest.instance_variable_set("@files", {@spec_file => Time.now})
238
+ @rspec_autotest.stub!(:find_files_to_test).and_return true
239
+ end
240
+
241
+ it "should return no failures if no failures were given in the output" do
242
+ @rspec_autotest.stub!(:failed_results).and_return [[]]
243
+ @rspec_autotest.consolidate_failures(@rspec_autotest.failed_results).should == {}
244
+ end
245
+
246
+ it "should return a hash with the spec filename => spec name for each failure or error" do
247
+ @rspec_autotest.stub!(:failed_results).and_return([
248
+ [
249
+ "false should be false",
250
+ "expected: true,\n got: false (using ==)\n./spec/autotest/rspec_spec.rb:203:"
251
+ ]
252
+ ])
253
+ @rspec_autotest.consolidate_failures(@rspec_autotest.failed_results).should == {@spec_file => ["false should be false"]}
254
+ end
255
+
256
+ end
257
+ end
@@ -0,0 +1,4 @@
1
+ require 'autotest'
2
+ require File.dirname(__FILE__) + "/../lib/autotest/rspec"
3
+
4
+
@@ -45,5 +45,35 @@ module Spec
45
45
  count.should == 8
46
46
  end
47
47
  end
48
+
49
+ describe BehaviourEval, "instance methods" do
50
+ it "should support pending" do
51
+ lambda {
52
+ pending("something")
53
+ }.should raise_error(Spec::DSL::ExamplePendingError, "something")
54
+ end
55
+
56
+ it "should have #pending raise a Pending error when its block fails" do
57
+ block_ran = false
58
+ lambda {
59
+ pending("something") do
60
+ block_ran = true
61
+ raise "something wrong with my example"
62
+ end
63
+ }.should raise_error(Spec::DSL::ExamplePendingError, "something")
64
+ block_ran.should == true
65
+ end
66
+
67
+ it "should have #pending raise Spec::DSL::PendingFixedError when its block does not fail" do
68
+ block_ran = false
69
+ lambda {
70
+ pending("something") do
71
+ block_ran = true
72
+ end
73
+ }.should raise_error(Spec::DSL::PendingFixedError, "Expected pending 'something' to fail. No Error was raised.")
74
+ block_ran.should == true
75
+ end
76
+
77
+ end
48
78
  end
49
79
  end
@@ -22,6 +22,24 @@ module Spec
22
22
  }.should be_an_instance_of(behaviour_class)
23
23
  end
24
24
 
25
+ it "should type indicated by spec_path" do
26
+ behaviour_class = Class.new do
27
+ def initialize(*args, &block); end
28
+ end
29
+ Spec::DSL::BehaviourFactory.add_behaviour_class(:something_other_than_default, behaviour_class)
30
+ Spec::DSL::BehaviourFactory.create("behaviour", :spec_path => "./spec/something_other_than_default/some_spec.rb") {
31
+ }.should be_an_instance_of(behaviour_class)
32
+ end
33
+
34
+ it "should type indicated by spec_path (with spec_path generated by caller on windows)" do
35
+ behaviour_class = Class.new do
36
+ def initialize(*args, &block); end
37
+ end
38
+ Spec::DSL::BehaviourFactory.add_behaviour_class(:something_other_than_default, behaviour_class)
39
+ Spec::DSL::BehaviourFactory.create("behaviour", :spec_path => "./spec\\something_other_than_default\\some_spec.rb") {
40
+ }.should be_an_instance_of(behaviour_class)
41
+ end
42
+
25
43
  after(:each) do
26
44
  Spec::DSL::BehaviourFactory.remove_behaviour_class(:something_other_than_default)
27
45
  end
@@ -8,7 +8,7 @@ module Spec
8
8
  @added_behaviour = description
9
9
  end
10
10
  end
11
-
11
+
12
12
  describe Behaviour, "class methods" do
13
13
  before :each do
14
14
  @reporter = FakeReporter.new(mock("formatter", :null_object => true), mock("backtrace_tweaker", :null_object => true))
@@ -32,7 +32,7 @@ module Spec
32
32
 
33
33
  it "should not run any example if before(:all) fails" do
34
34
  spec_ran = false
35
- Behaviour.before(:all) { raise "help" }
35
+ Behaviour.before(:all) { raise NonStandardError }
36
36
  @behaviour.it("test") {spec_ran = true}
37
37
  @behaviour.run(@reporter)
38
38
  spec_ran.should be_false
@@ -40,7 +40,7 @@ module Spec
40
40
 
41
41
  it "should run after(:all) if before(:all) fails" do
42
42
  after_all_ran = false
43
- Behaviour.before(:all) { raise }
43
+ Behaviour.before(:all) { raise NonStandardError }
44
44
  Behaviour.after(:all) { after_all_ran = true }
45
45
  @behaviour.run(@reporter)
46
46
  after_all_ran.should be_true
@@ -48,7 +48,7 @@ module Spec
48
48
 
49
49
  it "should run after(:all) if before(:each) fails" do
50
50
  after_all_ran = false
51
- Behaviour.before(:each) { raise }
51
+ Behaviour.before(:each) { raise NonStandardError }
52
52
  Behaviour.after(:all) { after_all_ran = true }
53
53
  @behaviour.run(@reporter)
54
54
  after_all_ran.should be_true
@@ -56,32 +56,95 @@ module Spec
56
56
 
57
57
  it "should run after(:all) if any example fails" do
58
58
  after_all_ran = false
59
- @behaviour.it("should") { raise "before all error" }
59
+ @behaviour.it("should") { raise NonStandardError }
60
60
  Behaviour.after(:all) { after_all_ran = true }
61
61
  @behaviour.run(@reporter)
62
62
  after_all_ran.should be_true
63
63
  end
64
64
 
65
+
66
+ it "should unregister a given after(:each) block" do
67
+ after_all_ran = false
68
+ @behaviour.it("example") {}
69
+ proc = Proc.new { after_all_ran = true }
70
+ Behaviour.after(:each, &proc)
71
+ @behaviour.run(@reporter)
72
+ after_all_ran.should be_true
73
+
74
+ after_all_ran = false
75
+ Behaviour.remove_after(:each, &proc)
76
+ @behaviour.run(@reporter)
77
+ after_all_ran.should be_false
78
+ end
79
+
80
+ it "should run second after(:each) block even if the first one fails" do
81
+ example = @behaviour.it("example") {}
82
+ second_after_ran = false
83
+ @behaviour.after(:each) do
84
+ second_after_ran = true
85
+ raise "second"
86
+ end
87
+ first_after_ran = false
88
+ @behaviour.after(:each) do
89
+ first_after_ran = true
90
+ raise "first"
91
+ end
92
+
93
+ @reporter.should_receive(:example_finished) do |example, error, location, example_not_implemented|
94
+ example.should equal(example)
95
+ error.message.should eql("first")
96
+ location.should eql("after(:each)")
97
+ example_not_implemented.should be_false
98
+ end
99
+ @behaviour.run(@reporter)
100
+ first_after_ran.should be_true
101
+ second_after_ran.should be_true
102
+ end
103
+
104
+ it "should not run second before(:each) if the first one fails" do
105
+ @behaviour.it("example") {}
106
+ first_before_ran = false
107
+ @behaviour.before(:each) do
108
+ first_before_ran = true
109
+ raise "first"
110
+ end
111
+ second_before_ran = false
112
+ @behaviour.before(:each) do
113
+ second_before_ran = true
114
+ raise "second"
115
+ end
116
+
117
+ @reporter.should_receive(:example_finished) do |name, error, location, example_not_implemented|
118
+ name.should eql("example")
119
+ error.message.should eql("first")
120
+ location.should eql("before(:each)")
121
+ example_not_implemented.should be_false
122
+ end
123
+ @behaviour.run(@reporter)
124
+ first_before_ran.should be_true
125
+ second_before_ran.should be_false
126
+ end
127
+
65
128
  it "should supply before(:all) as description if failure in before(:all)" do
66
- @reporter.should_receive(:example_finished) do |name, error, location|
67
- name.should eql("before(:all)")
68
- error.message.should eql("in before(:all)")
129
+ @reporter.should_receive(:example_finished) do |example, error, location|
130
+ example.description.should eql("before(:all)")
131
+ error.message.should == "in before(:all)"
69
132
  location.should eql("before(:all)")
70
133
  end
71
134
 
72
- Behaviour.before(:all) { raise "in before(:all)" }
135
+ Behaviour.before(:all) { raise NonStandardError.new("in before(:all)") }
73
136
  @behaviour.it("test") {true}
74
137
  @behaviour.run(@reporter)
75
138
  end
76
139
 
77
140
  it "should provide after(:all) as description if failure in after(:all)" do
78
- @reporter.should_receive(:example_finished) do |name, error, location|
79
- name.should eql("after(:all)")
141
+ @reporter.should_receive(:example_finished) do |example, error, location|
142
+ example.description.should eql("after(:all)")
80
143
  error.message.should eql("in after(:all)")
81
144
  location.should eql("after(:all)")
82
145
  end
83
146
 
84
- Behaviour.after(:all) { raise "in after(:all)" }
147
+ Behaviour.after(:all) { raise NonStandardError.new("in after(:all)") }
85
148
  @behaviour.run(@reporter)
86
149
  end
87
150
  end
@@ -159,8 +222,8 @@ module Spec
159
222
  end
160
223
 
161
224
  it "should supply before(:all) as description if failure in before(:all)" do
162
- @reporter.should_receive(:example_finished) do |name, error, location|
163
- name.should eql("before(:all)")
225
+ @reporter.should_receive(:example_finished) do |example, error, location|
226
+ example.description.should eql("before(:all)")
164
227
  error.message.should eql("in before(:all)")
165
228
  location.should eql("before(:all)")
166
229
  end
@@ -171,8 +234,8 @@ module Spec
171
234
  end
172
235
 
173
236
  it "should provide after(:all) as description if failure in after(:all)" do
174
- @reporter.should_receive(:example_finished) do |name, error, location|
175
- name.should eql("after(:all)")
237
+ @reporter.should_receive(:example_finished) do |example, error, location|
238
+ example.description.should eql("after(:all)")
176
239
  error.message.should eql("in after(:all)")
177
240
  location.should eql("after(:all)")
178
241
  end
@@ -427,42 +490,6 @@ module Spec
427
490
  mod1_method_called.should be_true
428
491
  mod2_method_called.should be_true
429
492
  end
430
-
431
- it "should not include untargeted modules" do
432
- special_method_called = false
433
- special_mod = Module.new do
434
- define_method :special_method do
435
- special_method_called = true
436
- end
437
- end
438
-
439
- behaviour = Behaviour.new("I'm not special", :behaviour_type => :not_special) {}
440
- behaviour.include special_mod, :behaviour_type => :special
441
- behaviour.it "test" do
442
- special_method
443
- end
444
- behaviour.run(@reporter)
445
-
446
- special_method_called.should be_false
447
- end
448
-
449
- it "should include targeted modules" do
450
- special_method_called = false
451
- special_mod = Module.new do
452
- define_method :special_method do
453
- special_method_called = true
454
- end
455
- end
456
-
457
- behaviour = Behaviour.new("I'm not special", :behaviour_type => :special) {}
458
- behaviour.include special_mod, :behaviour_type => :special
459
- behaviour.it "test" do
460
- special_method
461
- end
462
- behaviour.run(@reporter)
463
-
464
- special_method_called.should be_true
465
- end
466
493
 
467
494
  it "should have accessible class methods from included module" do
468
495
  mod1_method_called = false
@@ -522,7 +549,9 @@ module Spec
522
549
  @behaviour.should be_matches(['jalla'])
523
550
  end
524
551
 
525
- it "should include any modules included using configuration" do
552
+ it "should include targetted modules included using configuration" do
553
+ $included_modules = []
554
+
526
555
  mod1 = Module.new do
527
556
  class << self
528
557
  def included(mod)
@@ -539,21 +568,29 @@ module Spec
539
568
  end
540
569
  end
541
570
 
571
+ mod3 = Module.new do
572
+ class << self
573
+ def included(mod)
574
+ $included_modules << self
575
+ end
576
+ end
577
+ end
578
+
542
579
  begin
543
- $included_modules = []
544
580
  Spec::Runner.configuration.include(mod1, mod2)
581
+ Spec::Runner.configuration.include(mod3, :behaviour_type => :cat)
545
582
 
546
- behaviour = Behaviour.new('example') do
583
+ behaviour = Behaviour.new("I'm special", :behaviour_type => :dog) do
547
584
  end.run(@reporter)
548
585
 
549
586
  $included_modules.should include(mod1)
550
587
  $included_modules.should include(mod2)
588
+ $included_modules.should_not include(mod3)
551
589
  ensure
552
- Spec::Runner.configuration.included_modules.delete(mod1)
553
- Spec::Runner.configuration.included_modules.delete(mod2)
590
+ Spec::Runner.configuration.exclude(mod1, mod2, mod3)
554
591
  end
555
592
  end
556
-
593
+
557
594
  it "should include any predicate_matchers included using configuration" do
558
595
  $included_predicate_matcher_found = false
559
596
  Spec::Runner.configuration.predicate_matchers[:do_something] = :does_something?