rspec-core 2.5.2 → 2.6.0.rc2

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 (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