rspec-core 2.5.2 → 2.6.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. data/.travis.yml +7 -0
  2. data/Gemfile +10 -13
  3. data/README.md +4 -1
  4. data/Rakefile +29 -12
  5. data/cucumber.yml +1 -1
  6. data/features/.nav +10 -4
  7. data/features/Autotest.md +31 -7
  8. data/features/Changelog.md +36 -6
  9. data/features/command_line/configure.feature +2 -2
  10. data/features/command_line/example_name_option.feature +10 -10
  11. data/features/command_line/exit_status.feature +4 -4
  12. data/features/command_line/format_option.feature +4 -4
  13. data/features/command_line/line_number_appended_to_path.feature +11 -11
  14. data/features/command_line/line_number_option.feature +2 -2
  15. data/features/command_line/rake_task.feature +3 -3
  16. data/features/command_line/tag.feature +26 -10
  17. data/features/configuration/alias_example_to.feature +48 -0
  18. data/features/configuration/custom_settings.feature +3 -3
  19. data/features/configuration/fail_fast.feature +3 -3
  20. data/features/configuration/read_options_from_file.feature +4 -4
  21. data/features/example_groups/basic_structure.feature +11 -15
  22. data/features/example_groups/shared_context.feature +74 -0
  23. data/features/example_groups/shared_example_group.feature +21 -17
  24. data/features/expectation_framework_integration/configure_expectation_framework.feature +15 -4
  25. data/features/filtering/exclusion_filters.feature +28 -4
  26. data/features/filtering/{implicit_filters.feature → if_and_unless.feature} +9 -7
  27. data/features/filtering/inclusion_filters.feature +26 -3
  28. data/features/filtering/run_all_when_everything_filtered.feature +1 -1
  29. data/features/formatters/custom_formatter.feature +1 -1
  30. data/features/formatters/text_formatter.feature +45 -0
  31. data/features/helper_methods/arbitrary_methods.feature +2 -2
  32. data/features/helper_methods/let.feature +2 -2
  33. data/features/helper_methods/modules.feature +149 -0
  34. data/features/hooks/around_hooks.feature +11 -11
  35. data/features/hooks/before_and_after_hooks.feature +15 -19
  36. data/features/hooks/filtering.feature +160 -124
  37. data/features/metadata/current_example.feature +17 -0
  38. data/features/metadata/described_class.feature +2 -2
  39. data/features/metadata/user_defined.feature +111 -0
  40. data/features/mock_framework_integration/use_any_framework.feature +1 -1
  41. data/features/mock_framework_integration/use_flexmock.feature +83 -10
  42. data/features/mock_framework_integration/use_mocha.feature +84 -10
  43. data/features/mock_framework_integration/use_rr.feature +85 -10
  44. data/features/mock_framework_integration/use_rspec.feature +84 -10
  45. data/features/pending/pending_examples.feature +8 -8
  46. data/features/spec_files/arbitrary_file_suffix.feature +1 -1
  47. data/features/step_definitions/additional_cli_steps.rb +11 -1
  48. data/features/subject/attribute_of_subject.feature +24 -4
  49. data/features/subject/explicit_subject.feature +5 -5
  50. data/features/subject/implicit_receiver.feature +2 -2
  51. data/features/subject/implicit_subject.feature +2 -2
  52. data/features/support/env.rb +6 -1
  53. data/lib/rspec/core.rb +22 -0
  54. data/lib/rspec/core/backward_compatibility.rb +12 -2
  55. data/lib/rspec/core/command_line.rb +1 -4
  56. data/lib/rspec/core/configuration.rb +25 -17
  57. data/lib/rspec/core/configuration_options.rb +6 -23
  58. data/lib/rspec/core/drb_command_line.rb +5 -11
  59. data/lib/rspec/core/example.rb +29 -21
  60. data/lib/rspec/core/example_group.rb +36 -4
  61. data/lib/rspec/core/formatters/base_formatter.rb +6 -0
  62. data/lib/rspec/core/formatters/base_text_formatter.rb +1 -1
  63. data/lib/rspec/core/formatters/helpers.rb +0 -4
  64. data/lib/rspec/core/hooks.rb +14 -4
  65. data/lib/rspec/core/metadata.rb +1 -1
  66. data/lib/rspec/core/metadata_hash_builder.rb +93 -0
  67. data/lib/rspec/core/mocking/with_flexmock.rb +2 -0
  68. data/lib/rspec/core/mocking/with_mocha.rb +2 -0
  69. data/lib/rspec/core/mocking/with_rr.rb +2 -0
  70. data/lib/rspec/core/mocking/with_rspec.rb +3 -1
  71. data/lib/rspec/core/option_parser.rb +5 -2
  72. data/lib/rspec/core/pending.rb +10 -3
  73. data/lib/rspec/core/reporter.rb +2 -2
  74. data/lib/rspec/core/runner.rb +7 -1
  75. data/lib/rspec/core/shared_example_group.rb +18 -4
  76. data/lib/rspec/core/subject.rb +4 -6
  77. data/lib/rspec/core/version.rb +1 -1
  78. data/lib/rspec/core/world.rb +16 -4
  79. data/rspec-core.gemspec +4 -3
  80. data/spec.txt +1126 -0
  81. data/spec/autotest/failed_results_re_spec.rb +2 -2
  82. data/spec/rspec/core/command_line_spec.rb +0 -2
  83. data/spec/rspec/core/configuration_spec.rb +84 -1
  84. data/spec/rspec/core/deprecations_spec.rb +21 -0
  85. data/spec/rspec/core/drb_command_line_spec.rb +3 -11
  86. data/spec/rspec/core/example_group_spec.rb +213 -56
  87. data/spec/rspec/core/example_spec.rb +110 -0
  88. data/spec/rspec/core/formatters/base_formatter_spec.rb +23 -2
  89. data/spec/rspec/core/formatters/base_text_formatter_spec.rb +9 -0
  90. data/spec/rspec/core/formatters/helpers_spec.rb +1 -1
  91. data/spec/rspec/core/formatters/html_formatted-1.8.6.html +5 -5
  92. data/spec/rspec/core/formatters/html_formatted-1.8.7-jruby.html +8 -10
  93. data/spec/rspec/core/formatters/html_formatted-1.8.7.html +5 -5
  94. data/spec/rspec/core/formatters/html_formatted-1.9.1.html +5 -5
  95. data/spec/rspec/core/formatters/html_formatted-1.9.2.html +5 -5
  96. data/spec/rspec/core/formatters/progress_formatter_spec.rb +0 -1
  97. data/spec/rspec/core/formatters/text_mate_formatted-1.8.6.html +5 -5
  98. data/spec/rspec/core/formatters/text_mate_formatted-1.8.7-jruby.html +8 -10
  99. data/spec/rspec/core/formatters/text_mate_formatted-1.8.7.html +5 -5
  100. data/spec/rspec/core/formatters/text_mate_formatted-1.9.1.html +5 -5
  101. data/spec/rspec/core/formatters/text_mate_formatted-1.9.2.html +5 -5
  102. data/spec/rspec/core/hooks_spec.rb +86 -0
  103. data/spec/rspec/core/metadata_spec.rb +7 -7
  104. data/spec/rspec/core/option_parser_spec.rb +8 -0
  105. data/spec/rspec/core/pending_example_spec.rb +12 -51
  106. data/spec/rspec/core/reporter_spec.rb +19 -3
  107. data/spec/rspec/core/resources/formatter_specs.rb +7 -1
  108. data/spec/rspec/core/rspec_matchers_spec.rb +45 -0
  109. data/spec/rspec/core/runner_spec.rb +35 -10
  110. data/spec/rspec/core/shared_example_group_spec.rb +57 -21
  111. data/spec/rspec/core/subject_spec.rb +32 -11
  112. data/spec/rspec/core/world_spec.rb +38 -15
  113. data/spec/rspec/core_spec.rb +28 -0
  114. data/spec/spec_helper.rb +22 -2
  115. data/spec/support/matchers.rb +44 -13
  116. data/spec/support/shared_example_groups.rb +41 -0
  117. metadata +39 -16
@@ -9,6 +9,66 @@ describe RSpec::Core::Example, :parent_metadata => 'sample' do
9
9
  example_group.example('example description')
10
10
  end
11
11
 
12
+ it_behaves_like "metadata hash builder" do
13
+ def metadata_hash(*args)
14
+ example = example_group.example('example description', *args)
15
+ example.metadata
16
+ end
17
+ end
18
+
19
+ describe "auto-generated example descriptions" do
20
+ let(:generated_description) { "the generated description" }
21
+ let(:rspec_example) { example_group.specify { 5.should == 5 } }
22
+ before(:each) { RSpec::Matchers.stub(:generated_description => generated_description) }
23
+
24
+ def expect_with(*frameworks)
25
+ RSpec.configuration.stub(:expecting_with_rspec?).and_return(frameworks.include?(:rspec))
26
+
27
+ if frameworks.include?(:stdlib)
28
+ example_group.class_eval do
29
+ def assert(val)
30
+ raise "Expected #{val} to be true" unless val
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ context "when `expect_with :rspec` is configured" do
37
+ before(:each) { expect_with :rspec }
38
+
39
+ it "generates a description for an example with no description" do
40
+ expect {
41
+ example_group.run
42
+ }.to change { rspec_example.metadata[:description] }.from("").to(generated_description)
43
+ end
44
+ end
45
+
46
+ context "when `expect_with :rspec, :stdlib` is configured" do
47
+ before(:each) { expect_with :rspec, :stdlib }
48
+
49
+ it "generates a description for an example with no description" do
50
+ expect {
51
+ example_group.run
52
+ }.to change { rspec_example.metadata[:description] }.from("").to(generated_description)
53
+ end
54
+ end
55
+
56
+ context "when `expect_with :stdlib` is configured" do
57
+ let!(:stdlib_example) { example_group.specify { assert 5 == 5 } }
58
+ before(:each) { expect_with :stdlib }
59
+
60
+ it "does not attempt to get the generated description from RSpec::Matchers" do
61
+ RSpec::Matchers.should_not_receive(:generated_description)
62
+ example_group.run
63
+ end
64
+
65
+ it "fails an example with no description" do
66
+ example_group.run
67
+ stdlib_example.should have_failed_with(NotImplementedError)
68
+ end
69
+ end
70
+ end
71
+
12
72
  describe '#described_class' do
13
73
  it "returns the class (if any) of the outermost example group" do
14
74
  described_class.should == RSpec::Core::Example
@@ -33,6 +93,14 @@ describe RSpec::Core::Example, :parent_metadata => 'sample' do
33
93
  end
34
94
 
35
95
  describe "#run" do
96
+ it "sets its reference to the example group instance to nil" do
97
+ group = RSpec::Core::ExampleGroup.describe do
98
+ example('example') { 1.should eq(1) }
99
+ end
100
+ group.run
101
+ group.examples.first.instance_variable_get("@example_group_instance").should be_nil
102
+ end
103
+
36
104
  it "runs after(:each) when the example passes" do
37
105
  after_run = false
38
106
  group = RSpec::Core::ExampleGroup.describe do
@@ -108,6 +176,35 @@ describe RSpec::Core::Example, :parent_metadata => 'sample' do
108
176
  "around (after)"
109
177
  ])
110
178
  end
179
+
180
+ context "clearing ivars" do
181
+ it "sets ivars to nil to prep them for GC" do
182
+ group = RSpec::Core::ExampleGroup.describe do
183
+ before(:all) { @before_all = :before_all }
184
+ before(:each) { @before_each = :before_each }
185
+ after(:each) { @after_each = :after_each }
186
+ after(:all) { @after_all = :after_all }
187
+ end
188
+ example = group.example("does something") do
189
+ @in_example = :in_example
190
+ end
191
+ example_group_instance = group.new
192
+ example.run(example_group_instance, double('reporter').as_null_object)
193
+
194
+ %w[@before_all @before_each @after_each @after_all].each do |ivar|
195
+ example_group_instance.instance_variable_get(ivar).should be_nil
196
+ end
197
+ end
198
+
199
+ it "does not impact the before_all_ivars which are copied to each example" do
200
+ group = RSpec::Core::ExampleGroup.describe do
201
+ before(:all) { @before_all = "abc" }
202
+ example("first") { @before_all.should_not be_nil }
203
+ example("second") { @before_all.should_not be_nil }
204
+ end
205
+ group.run.should be_true
206
+ end
207
+ end
111
208
  end
112
209
 
113
210
  describe "#pending" do
@@ -119,6 +216,19 @@ describe RSpec::Core::Example, :parent_metadata => 'sample' do
119
216
  group.run
120
217
  group.examples.first.should be_pending
121
218
  end
219
+
220
+ it "allows post-example processing in around hooks (see https://github.com/rspec/rspec-core/issues/322)" do
221
+ blah = nil
222
+ group = RSpec::Core::ExampleGroup.describe do
223
+ around do |example|
224
+ example.run
225
+ blah = :success
226
+ end
227
+ example { pending }
228
+ end
229
+ group.run
230
+ blah.should be(:success)
231
+ end
122
232
  end
123
233
 
124
234
  context "in before(:each)" do
@@ -34,18 +34,19 @@ describe RSpec::Core::Formatters::BaseFormatter do
34
34
 
35
35
  context "when String alias to_int to_i" do
36
36
  before do
37
- class String
37
+ String.class_eval do
38
38
  alias :to_int :to_i
39
39
  end
40
40
  end
41
41
 
42
42
  after do
43
- class String
43
+ String.class_eval do
44
44
  undef to_int
45
45
  end
46
46
  end
47
47
 
48
48
  it "doesn't hang when file exists" do
49
+ pending("This issue still exists on JRuby, but should be resolved shortly: https://github.com/rspec/rspec-core/issues/295", :if => RUBY_PLATFORM == 'java')
49
50
  exception = mock(:Exception, :backtrace => [ "#{__FILE__}:#{__LINE__}"])
50
51
 
51
52
  example = mock(:Example, :file_path => __FILE__)
@@ -56,4 +57,24 @@ describe RSpec::Core::Formatters::BaseFormatter do
56
57
  end
57
58
  end
58
59
 
60
+ describe "#format_backtrace" do
61
+ let(:rspec_expectations_dir) { "/path/to/rspec-expectations/lib" }
62
+ let(:rspec_core_dir) { "/path/to/rspec-core/lib" }
63
+ let(:backtrace) do
64
+ [
65
+ "#{rspec_expectations_dir}/rspec/matchers/operator_matcher.rb:51:in `eval_match'",
66
+ "#{rspec_expectations_dir}/rspec/matchers/operator_matcher.rb:29:in `=='",
67
+ "./my_spec.rb:5",
68
+ "#{rspec_core_dir}/rspec/core/example.rb:52:in `run'",
69
+ "#{rspec_core_dir}/rspec/core/runner.rb:37:in `run'",
70
+ RSpec::Core::Runner::AT_EXIT_HOOK_BACKTRACE_LINE,
71
+ "./my_spec.rb:3"
72
+ ]
73
+ end
74
+
75
+ it "removes lines from rspec and lines that come before the invocation of the at_exit autorun hook" do
76
+ formatter.format_backtrace(backtrace, stub.as_null_object).should == ["./my_spec.rb:5"]
77
+ end
78
+ end
79
+
59
80
  end
@@ -46,6 +46,15 @@ module RSpec::Core::Formatters
46
46
  output.string.should =~ /(\s+)expected \"that\"\n\1 got \"this\"/m
47
47
  end
48
48
 
49
+ context "with an exception without a message" do
50
+ it "does not throw NoMethodError" do
51
+ exception_without_message = Exception.new()
52
+ exception_without_message.stub(:message) { nil }
53
+ group.example("example name") { raise exception_without_message }
54
+ expect { run_all_and_dump_failures }.not_to raise_error(NoMethodError)
55
+ end
56
+ end
57
+
49
58
  context "with an exception class other than RSpec" do
50
59
  it "does not show the error class" do
51
60
  group.example("example name") { raise NameError.new('foo') }
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
- require 'stringio'
2
+ require 'rspec/core/formatters/helpers'
3
3
 
4
4
  describe RSpec::Core::Formatters::Helpers do
5
5
  let(:helper) { helper = Object.new.extend(RSpec::Core::Formatters::Helpers) }
@@ -319,11 +319,11 @@ a {
319
319
  ./spec/rspec/core/formatters/html_formatter_spec.rb:46
320
320
  ./spec/rspec/core/formatters/html_formatter_spec.rb:45:in `chdir'
321
321
  ./spec/rspec/core/formatters/html_formatter_spec.rb:45</pre></div>
322
- <pre class="ruby"><code><span class="linenum">22</span> <span class="keyword">rescue</span> <span class="constant">Exception</span> <span class="punct">=&gt;</span> <span class="ident">e</span>
323
- <span class="linenum">23</span> <span class="keyword">end</span>
324
- <span class="offending"><span class="linenum">24</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
325
- <span class="linenum">25</span> <span class="keyword">end</span>
326
- <span class="linenum">26</span> <span class="ident">throw</span> <span class="symbol">:pending_declared_in_example</span><span class="punct">,</span> <span class="ident">message</span></code></pre>
322
+ <pre class="ruby"><code><span class="linenum">29</span> <span class="ident">teardown_mocks_for_rspec</span>
323
+ <span class="linenum">30</span> <span class="keyword">end</span>
324
+ <span class="offending"><span class="linenum">31</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
325
+ <span class="linenum">32</span> <span class="keyword">end</span>
326
+ <span class="linenum">33</span> <span class="keyword">raise</span> <span class="constant">PendingDeclaredInExample</span><span class="punct">.</span><span class="ident">new</span><span class="punct">(</span><span class="ident">message</span><span class="punct">)</span></code></pre>
327
327
  </div>
328
328
  </dd>
329
329
  </dl>
@@ -318,13 +318,12 @@ a {
318
318
  ./spec/rspec/core/formatters/html_formatter_spec.rb:46:in `open'
319
319
  ./spec/rspec/core/formatters/html_formatter_spec.rb:46
320
320
  ./spec/rspec/core/formatters/html_formatter_spec.rb:45:in `chdir'
321
- ./spec/rspec/core/formatters/html_formatter_spec.rb:45
322
- :1</pre></div>
323
- <pre class="ruby"><code><span class="linenum">22</span> <span class="keyword">rescue</span> <span class="constant">Exception</span> <span class="punct">=&gt;</span> <span class="ident">e</span>
324
- <span class="linenum">23</span> <span class="keyword">end</span>
325
- <span class="offending"><span class="linenum">24</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
326
- <span class="linenum">25</span> <span class="keyword">end</span>
327
- <span class="linenum">26</span> <span class="ident">throw</span> <span class="symbol">:pending_declared_in_example</span><span class="punct">,</span> <span class="ident">message</span></code></pre>
321
+ ./spec/rspec/core/formatters/html_formatter_spec.rb:45</pre></div>
322
+ <pre class="ruby"><code><span class="linenum">24</span> <span class="keyword">rescue</span> <span class="constant">Exception</span>
323
+ <span class="linenum">25</span> <span class="keyword">end</span>
324
+ <span class="offending"><span class="linenum">26</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
325
+ <span class="linenum">27</span> <span class="keyword">end</span>
326
+ <span class="linenum">28</span> <span class="keyword">raise</span> <span class="constant">PendingDeclaredInExample</span><span class="punct">.</span><span class="ident">new</span><span class="punct">(</span><span class="ident">message</span><span class="punct">)</span></code></pre>
328
327
  </div>
329
328
  </dd>
330
329
  </dl>
@@ -357,8 +356,7 @@ expected 2
357
356
  ./spec/rspec/core/formatters/html_formatter_spec.rb:46:in `open'
358
357
  ./spec/rspec/core/formatters/html_formatter_spec.rb:46
359
358
  ./spec/rspec/core/formatters/html_formatter_spec.rb:45:in `chdir'
360
- ./spec/rspec/core/formatters/html_formatter_spec.rb:45
361
- :1</pre></div>
359
+ ./spec/rspec/core/formatters/html_formatter_spec.rb:45</pre></div>
362
360
  <pre class="ruby"><code><span class="linenum">27</span> <span class="keyword">end</span>
363
361
  <span class="linenum">28</span>
364
362
  <span class="offending"><span class="linenum">29</span> <span class="keyword">raise</span><span class="punct">(</span><span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Expectations</span><span class="punct">::</span><span class="constant">ExpectationNotMetError</span><span class="punct">.</span><span class="ident">new</span><span class="punct">(</span><span class="ident">message</span><span class="punct">))</span></span>
@@ -385,7 +383,7 @@ expected 2
385
383
  <dd class="example failed">
386
384
  <span class="failed_spec_name">fails with a backtrace containing an erb file</span>
387
385
  <div class="failure" id="failure_4">
388
- <div class="message"><pre>#&lt;Class:01xf45673&gt;</pre></div>
386
+ <div class="message"><pre>Exception</pre></div>
389
387
  <div class="backtrace"><pre>/foo.html.erb:1:in `<main>': foo (RuntimeError)</pre></div>
390
388
  <pre class="ruby"><code><span class="linenum">-1</span><span class="comment"># Couldn't get snippet for /foo.html.erb</span></code></pre>
391
389
  </div>
@@ -319,11 +319,11 @@ a {
319
319
  ./spec/rspec/core/formatters/html_formatter_spec.rb:46
320
320
  ./spec/rspec/core/formatters/html_formatter_spec.rb:45:in `chdir'
321
321
  ./spec/rspec/core/formatters/html_formatter_spec.rb:45</pre></div>
322
- <pre class="ruby"><code><span class="linenum">22</span> <span class="keyword">rescue</span> <span class="constant">Exception</span> <span class="punct">=&gt;</span> <span class="ident">e</span>
323
- <span class="linenum">23</span> <span class="keyword">end</span>
324
- <span class="offending"><span class="linenum">24</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
325
- <span class="linenum">25</span> <span class="keyword">end</span>
326
- <span class="linenum">26</span> <span class="ident">throw</span> <span class="symbol">:pending_declared_in_example</span><span class="punct">,</span> <span class="ident">message</span></code></pre>
322
+ <pre class="ruby"><code><span class="linenum">29</span> <span class="ident">teardown_mocks_for_rspec</span>
323
+ <span class="linenum">30</span> <span class="keyword">end</span>
324
+ <span class="offending"><span class="linenum">31</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
325
+ <span class="linenum">32</span> <span class="keyword">end</span>
326
+ <span class="linenum">33</span> <span class="keyword">raise</span> <span class="constant">PendingDeclaredInExample</span><span class="punct">.</span><span class="ident">new</span><span class="punct">(</span><span class="ident">message</span><span class="punct">)</span></code></pre>
327
327
  </div>
328
328
  </dd>
329
329
  </dl>
@@ -319,11 +319,11 @@ a {
319
319
  ./spec/rspec/core/formatters/html_formatter_spec.rb:46:in `block (4 levels) in <module:Formatters>'
320
320
  ./spec/rspec/core/formatters/html_formatter_spec.rb:45:in `chdir'
321
321
  ./spec/rspec/core/formatters/html_formatter_spec.rb:45:in `block (3 levels) in <module:Formatters>'</pre></div>
322
- <pre class="ruby"><code><span class="linenum">22</span> <span class="keyword">rescue</span> <span class="constant">Exception</span> <span class="punct">=&gt;</span> <span class="ident">e</span>
323
- <span class="linenum">23</span> <span class="keyword">end</span>
324
- <span class="offending"><span class="linenum">24</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
325
- <span class="linenum">25</span> <span class="keyword">end</span>
326
- <span class="linenum">26</span> <span class="ident">throw</span> <span class="symbol">:pending_declared_in_example</span><span class="punct">,</span> <span class="ident">message</span></code></pre>
322
+ <pre class="ruby"><code><span class="linenum">29</span> <span class="ident">teardown_mocks_for_rspec</span>
323
+ <span class="linenum">30</span> <span class="keyword">end</span>
324
+ <span class="offending"><span class="linenum">31</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
325
+ <span class="linenum">32</span> <span class="keyword">end</span>
326
+ <span class="linenum">33</span> <span class="keyword">raise</span> <span class="constant">PendingDeclaredInExample</span><span class="punct">.</span><span class="ident">new</span><span class="punct">(</span><span class="ident">message</span><span class="punct">)</span></code></pre>
327
327
  </div>
328
328
  </dd>
329
329
  </dl>
@@ -319,11 +319,11 @@ a {
319
319
  ./spec/rspec/core/formatters/html_formatter_spec.rb:46:in `block (4 levels) in <module:Formatters>'
320
320
  ./spec/rspec/core/formatters/html_formatter_spec.rb:45:in `chdir'
321
321
  ./spec/rspec/core/formatters/html_formatter_spec.rb:45:in `block (3 levels) in <module:Formatters>'</pre></div>
322
- <pre class="ruby"><code><span class="linenum">22</span> <span class="keyword">rescue</span> <span class="constant">Exception</span> <span class="punct">=&gt;</span> <span class="ident">e</span>
323
- <span class="linenum">23</span> <span class="keyword">end</span>
324
- <span class="offending"><span class="linenum">24</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
325
- <span class="linenum">25</span> <span class="keyword">end</span>
326
- <span class="linenum">26</span> <span class="ident">throw</span> <span class="symbol">:pending_declared_in_example</span><span class="punct">,</span> <span class="ident">message</span></code></pre>
322
+ <pre class="ruby"><code><span class="linenum">29</span> <span class="ident">teardown_mocks_for_rspec</span>
323
+ <span class="linenum">30</span> <span class="keyword">end</span>
324
+ <span class="offending"><span class="linenum">31</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
325
+ <span class="linenum">32</span> <span class="keyword">end</span>
326
+ <span class="linenum">33</span> <span class="keyword">raise</span> <span class="constant">PendingDeclaredInExample</span><span class="punct">.</span><span class="ident">new</span><span class="punct">(</span><span class="ident">message</span><span class="punct">)</span></code></pre>
327
327
  </div>
328
328
  </dd>
329
329
  </dl>
@@ -1,6 +1,5 @@
1
1
  require 'spec_helper'
2
2
  require 'rspec/core/formatters/progress_formatter'
3
- require 'stringio'
4
3
 
5
4
  describe RSpec::Core::Formatters::ProgressFormatter do
6
5
 
@@ -319,11 +319,11 @@ a {
319
319
  <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=47">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:47</a>
320
320
  <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=46">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:46</a> :in `chdir'
321
321
  <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=46">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:46</a> </pre></div>
322
- <pre class="ruby"><code><span class="linenum">22</span> <span class="keyword">rescue</span> <span class="constant">Exception</span> <span class="punct">=&gt;</span> <span class="ident">e</span>
323
- <span class="linenum">23</span> <span class="keyword">end</span>
324
- <span class="offending"><span class="linenum">24</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
325
- <span class="linenum">25</span> <span class="keyword">end</span>
326
- <span class="linenum">26</span> <span class="ident">throw</span> <span class="symbol">:pending_declared_in_example</span><span class="punct">,</span> <span class="ident">message</span></code></pre>
322
+ <pre class="ruby"><code><span class="linenum">29</span> <span class="ident">teardown_mocks_for_rspec</span>
323
+ <span class="linenum">30</span> <span class="keyword">end</span>
324
+ <span class="offending"><span class="linenum">31</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
325
+ <span class="linenum">32</span> <span class="keyword">end</span>
326
+ <span class="linenum">33</span> <span class="keyword">raise</span> <span class="constant">PendingDeclaredInExample</span><span class="punct">.</span><span class="ident">new</span><span class="punct">(</span><span class="ident">message</span><span class="punct">)</span></code></pre>
327
327
  </div>
328
328
  </dd>
329
329
  </dl>
@@ -318,13 +318,12 @@ a {
318
318
  <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=47">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:47</a> :in `open'
319
319
  <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=47">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:47</a>
320
320
  <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=46">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:46</a> :in `chdir'
321
- <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=46">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:46</a>
322
- :1</pre></div>
323
- <pre class="ruby"><code><span class="linenum">22</span> <span class="keyword">rescue</span> <span class="constant">Exception</span> <span class="punct">=&gt;</span> <span class="ident">e</span>
324
- <span class="linenum">23</span> <span class="keyword">end</span>
325
- <span class="offending"><span class="linenum">24</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
326
- <span class="linenum">25</span> <span class="keyword">end</span>
327
- <span class="linenum">26</span> <span class="ident">throw</span> <span class="symbol">:pending_declared_in_example</span><span class="punct">,</span> <span class="ident">message</span></code></pre>
321
+ <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=46">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:46</a> </pre></div>
322
+ <pre class="ruby"><code><span class="linenum">24</span> <span class="keyword">rescue</span> <span class="constant">Exception</span>
323
+ <span class="linenum">25</span> <span class="keyword">end</span>
324
+ <span class="offending"><span class="linenum">26</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
325
+ <span class="linenum">27</span> <span class="keyword">end</span>
326
+ <span class="linenum">28</span> <span class="keyword">raise</span> <span class="constant">PendingDeclaredInExample</span><span class="punct">.</span><span class="ident">new</span><span class="punct">(</span><span class="ident">message</span><span class="punct">)</span></code></pre>
328
327
  </div>
329
328
  </dd>
330
329
  </dl>
@@ -357,8 +356,7 @@ expected 2
357
356
  <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=47">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:47</a> :in `open'
358
357
  <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=47">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:47</a>
359
358
  <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=46">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:46</a> :in `chdir'
360
- <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=46">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:46</a>
361
- :1</pre></div>
359
+ <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=46">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:46</a> </pre></div>
362
360
  <pre class="ruby"><code><span class="linenum">27</span> <span class="keyword">end</span>
363
361
  <span class="linenum">28</span>
364
362
  <span class="offending"><span class="linenum">29</span> <span class="keyword">raise</span><span class="punct">(</span><span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Expectations</span><span class="punct">::</span><span class="constant">ExpectationNotMetError</span><span class="punct">.</span><span class="ident">new</span><span class="punct">(</span><span class="ident">message</span><span class="punct">))</span></span>
@@ -385,7 +383,7 @@ expected 2
385
383
  <dd class="example failed">
386
384
  <span class="failed_spec_name">fails with a backtrace containing an erb file</span>
387
385
  <div class="failure" id="failure_4">
388
- <div class="message"><pre>#&lt;Class:01x1150b68&gt;</pre></div>
386
+ <div class="message"><pre>Exception</pre></div>
389
387
  <div class="backtrace"><pre><a href="txmt://open?url=file:///foo.html.erb&line=1">/foo.html.erb:1</a> :in `<main>': foo (RuntimeError)</pre></div>
390
388
  <pre class="ruby"><code><span class="linenum">-1</span><span class="comment"># Couldn't get snippet for /foo.html.erb</span></code></pre>
391
389
  </div>
@@ -319,11 +319,11 @@ a {
319
319
  <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=47">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:47</a>
320
320
  <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=46">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:46</a> :in `chdir'
321
321
  <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=46">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:46</a> </pre></div>
322
- <pre class="ruby"><code><span class="linenum">22</span> <span class="keyword">rescue</span> <span class="constant">Exception</span> <span class="punct">=&gt;</span> <span class="ident">e</span>
323
- <span class="linenum">23</span> <span class="keyword">end</span>
324
- <span class="offending"><span class="linenum">24</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
325
- <span class="linenum">25</span> <span class="keyword">end</span>
326
- <span class="linenum">26</span> <span class="ident">throw</span> <span class="symbol">:pending_declared_in_example</span><span class="punct">,</span> <span class="ident">message</span></code></pre>
322
+ <pre class="ruby"><code><span class="linenum">29</span> <span class="ident">teardown_mocks_for_rspec</span>
323
+ <span class="linenum">30</span> <span class="keyword">end</span>
324
+ <span class="offending"><span class="linenum">31</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
325
+ <span class="linenum">32</span> <span class="keyword">end</span>
326
+ <span class="linenum">33</span> <span class="keyword">raise</span> <span class="constant">PendingDeclaredInExample</span><span class="punct">.</span><span class="ident">new</span><span class="punct">(</span><span class="ident">message</span><span class="punct">)</span></code></pre>
327
327
  </div>
328
328
  </dd>
329
329
  </dl>
@@ -319,11 +319,11 @@ a {
319
319
  <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=47">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:47</a> :in `block (4 levels) in <module:Formatters>'
320
320
  <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=46">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:46</a> :in `chdir'
321
321
  <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=46">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:46</a> :in `block (3 levels) in <module:Formatters>'</pre></div>
322
- <pre class="ruby"><code><span class="linenum">22</span> <span class="keyword">rescue</span> <span class="constant">Exception</span> <span class="punct">=&gt;</span> <span class="ident">e</span>
323
- <span class="linenum">23</span> <span class="keyword">end</span>
324
- <span class="offending"><span class="linenum">24</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
325
- <span class="linenum">25</span> <span class="keyword">end</span>
326
- <span class="linenum">26</span> <span class="ident">throw</span> <span class="symbol">:pending_declared_in_example</span><span class="punct">,</span> <span class="ident">message</span></code></pre>
322
+ <pre class="ruby"><code><span class="linenum">29</span> <span class="ident">teardown_mocks_for_rspec</span>
323
+ <span class="linenum">30</span> <span class="keyword">end</span>
324
+ <span class="offending"><span class="linenum">31</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
325
+ <span class="linenum">32</span> <span class="keyword">end</span>
326
+ <span class="linenum">33</span> <span class="keyword">raise</span> <span class="constant">PendingDeclaredInExample</span><span class="punct">.</span><span class="ident">new</span><span class="punct">(</span><span class="ident">message</span><span class="punct">)</span></code></pre>
327
327
  </div>
328
328
  </dd>
329
329
  </dl>
@@ -319,11 +319,11 @@ a {
319
319
  <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=47">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:47</a> :in `block (4 levels) in <module:Formatters>'
320
320
  <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=46">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:46</a> :in `chdir'
321
321
  <a href="txmt://open?url=file:///Users/david/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=46">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:46</a> :in `block (3 levels) in <module:Formatters>'</pre></div>
322
- <pre class="ruby"><code><span class="linenum">22</span> <span class="keyword">rescue</span> <span class="constant">Exception</span> <span class="punct">=&gt;</span> <span class="ident">e</span>
323
- <span class="linenum">23</span> <span class="keyword">end</span>
324
- <span class="offending"><span class="linenum">24</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
325
- <span class="linenum">25</span> <span class="keyword">end</span>
326
- <span class="linenum">26</span> <span class="ident">throw</span> <span class="symbol">:pending_declared_in_example</span><span class="punct">,</span> <span class="ident">message</span></code></pre>
322
+ <pre class="ruby"><code><span class="linenum">29</span> <span class="ident">teardown_mocks_for_rspec</span>
323
+ <span class="linenum">30</span> <span class="keyword">end</span>
324
+ <span class="offending"><span class="linenum">31</span> <span class="keyword">raise</span> <span class="constant">RSpec</span><span class="punct">::</span><span class="constant">Core</span><span class="punct">::</span><span class="constant">PendingExampleFixedError</span><span class="punct">.</span><span class="ident">new</span> <span class="keyword">if</span> <span class="ident">result</span></span>
325
+ <span class="linenum">32</span> <span class="keyword">end</span>
326
+ <span class="linenum">33</span> <span class="keyword">raise</span> <span class="constant">PendingDeclaredInExample</span><span class="punct">.</span><span class="ident">new</span><span class="punct">(</span><span class="ident">message</span><span class="punct">)</span></code></pre>
327
327
  </div>
328
328
  </dd>
329
329
  </dl>
@@ -2,6 +2,84 @@ require "spec_helper"
2
2
 
3
3
  module RSpec::Core
4
4
  describe Hooks do
5
+ class HooksHost
6
+ include Hooks
7
+ end
8
+
9
+ [:before, :after, :around].each do |type|
10
+ [:each, :all].each do |scope|
11
+ next if type == :around && scope == :all
12
+
13
+ describe "##{type}(#{scope})" do
14
+ it_behaves_like "metadata hash builder" do
15
+ define_method :metadata_hash do |*args|
16
+ instance = HooksHost.new
17
+ args.unshift scope if scope
18
+ hooks = instance.send(type, *args) { }
19
+ hooks.first.options
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ [true, false].each do |config_value|
26
+ context "when RSpec.configuration.treat_symbols_as_metadata_keys_with_true_values is set to #{config_value}" do
27
+ before(:each) do
28
+ Kernel.stub(:warn)
29
+ RSpec.configure { |c| c.treat_symbols_as_metadata_keys_with_true_values = config_value }
30
+ end
31
+
32
+ describe "##{type}(no scope)" do
33
+ let(:instance) { HooksHost.new }
34
+
35
+ it "defaults to :each scope if no arguments are given" do
36
+ hooks = instance.send(type) { }
37
+ hook = hooks.first
38
+ instance.hooks[type][:each].should include(hook)
39
+ end
40
+
41
+ it "defaults to :each scope if the only argument is a metadata hash" do
42
+ hooks = instance.send(type, :foo => :bar) { }
43
+ hook = hooks.first
44
+ instance.hooks[type][:each].should include(hook)
45
+ end
46
+
47
+ it "raises an error if only metadata symbols are given as arguments" do
48
+ expect { instance.send(type, :foo, :bar) { } }.to raise_error(ArgumentError)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ [:before, :after].each do |type|
56
+ [:each, :all, :suite].each do |scope|
57
+ [true, false].each do |config_value|
58
+ context "when RSpec.configuration.treat_symbols_as_metadata_keys_with_true_values is set to #{config_value}" do
59
+ before(:each) do
60
+ RSpec.configure { |c| c.treat_symbols_as_metadata_keys_with_true_values = config_value }
61
+ end
62
+
63
+ describe "##{type}(#{scope.inspect})" do
64
+ let(:instance) { HooksHost.new }
65
+ let!(:hook) do
66
+ hooks = instance.send(type, scope) { }
67
+ hooks.first
68
+ end
69
+
70
+ it "does not make #{scope.inspect} a metadata key" do
71
+ hook.options.should be_empty
72
+ end
73
+
74
+ it "is scoped to #{scope.inspect}" do
75
+ instance.hooks[type][scope].should include(hook)
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
82
+
5
83
  describe "#around" do
6
84
  context "when not running the example within the around block" do
7
85
  it "does not run the example" do
@@ -52,6 +130,14 @@ module RSpec::Core
52
130
  examples.should have(1).example
53
131
  end
54
132
  end
133
+
134
+ describe Hooks::Hook do
135
+ it "requires a block" do
136
+ lambda {
137
+ Hooks::BeforeHook.new :foo => :bar
138
+ }.should raise_error("no block given for before hook")
139
+ end
140
+ end
55
141
  end
56
142
  end
57
143
  end