rspec-core 2.5.0 → 2.6.0

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 (125) hide show
  1. data/.travis.yml +7 -0
  2. data/Gemfile +12 -14
  3. data/README.md +4 -1
  4. data/Rakefile +29 -12
  5. data/cucumber.yml +1 -1
  6. data/features/.nav +15 -9
  7. data/features/Autotest.md +26 -32
  8. data/features/Changelog.md +62 -2
  9. data/features/Upgrade.md +35 -2
  10. data/features/command_line/README.md +22 -0
  11. data/features/command_line/configure.feature +2 -2
  12. data/features/command_line/example_name_option.feature +10 -10
  13. data/features/command_line/exit_status.feature +4 -4
  14. data/features/command_line/format_option.feature +4 -4
  15. data/features/command_line/line_number_appended_to_path.feature +11 -11
  16. data/features/command_line/line_number_option.feature +2 -2
  17. data/features/command_line/rake_task.feature +3 -3
  18. data/features/command_line/tag.feature +30 -14
  19. data/features/configuration/alias_example_to.feature +48 -0
  20. data/features/configuration/custom_settings.feature +3 -3
  21. data/features/configuration/fail_fast.feature +3 -3
  22. data/features/configuration/read_options_from_file.feature +4 -4
  23. data/features/example_groups/basic_structure.feature +11 -15
  24. data/features/example_groups/shared_context.feature +74 -0
  25. data/features/example_groups/shared_example_group.feature +21 -17
  26. data/features/expectation_framework_integration/configure_expectation_framework.feature +15 -4
  27. data/features/filtering/exclusion_filters.feature +28 -4
  28. data/features/filtering/{implicit_filters.feature → if_and_unless.feature} +9 -7
  29. data/features/filtering/inclusion_filters.feature +26 -3
  30. data/features/filtering/run_all_when_everything_filtered.feature +2 -2
  31. data/features/formatters/custom_formatter.feature +1 -1
  32. data/features/formatters/text_formatter.feature +43 -0
  33. data/features/helper_methods/arbitrary_methods.feature +2 -2
  34. data/features/helper_methods/let.feature +2 -2
  35. data/features/helper_methods/modules.feature +149 -0
  36. data/features/hooks/around_hooks.feature +18 -11
  37. data/features/hooks/before_and_after_hooks.feature +15 -19
  38. data/features/hooks/filtering.feature +160 -124
  39. data/features/metadata/current_example.feature +17 -0
  40. data/features/metadata/described_class.feature +2 -2
  41. data/features/metadata/user_defined.feature +111 -0
  42. data/features/mock_framework_integration/use_any_framework.feature +1 -1
  43. data/features/mock_framework_integration/use_flexmock.feature +83 -10
  44. data/features/mock_framework_integration/use_mocha.feature +84 -10
  45. data/features/mock_framework_integration/use_rr.feature +85 -10
  46. data/features/mock_framework_integration/use_rspec.feature +84 -10
  47. data/features/pending/pending_examples.feature +8 -8
  48. data/features/spec_files/arbitrary_file_suffix.feature +1 -1
  49. data/features/step_definitions/additional_cli_steps.rb +11 -1
  50. data/features/subject/attribute_of_subject.feature +24 -4
  51. data/features/subject/explicit_subject.feature +5 -5
  52. data/features/subject/implicit_receiver.feature +2 -2
  53. data/features/subject/implicit_subject.feature +2 -2
  54. data/features/support/env.rb +6 -1
  55. data/lib/autotest/rspec2.rb +2 -51
  56. data/lib/rspec/core/backward_compatibility.rb +12 -2
  57. data/lib/rspec/core/command_line.rb +2 -5
  58. data/lib/rspec/core/configuration.rb +70 -38
  59. data/lib/rspec/core/configuration_options.rb +6 -23
  60. data/lib/rspec/core/drb_command_line.rb +5 -11
  61. data/lib/rspec/core/example.rb +29 -21
  62. data/lib/rspec/core/example_group.rb +40 -8
  63. data/lib/rspec/core/extensions/object.rb +0 -1
  64. data/lib/rspec/core/formatters/base_formatter.rb +6 -0
  65. data/lib/rspec/core/formatters/base_text_formatter.rb +1 -1
  66. data/lib/rspec/core/formatters/helpers.rb +0 -4
  67. data/lib/rspec/core/hooks.rb +14 -4
  68. data/lib/rspec/core/metadata.rb +1 -1
  69. data/lib/rspec/core/metadata_hash_builder.rb +93 -0
  70. data/lib/rspec/core/mocking/with_flexmock.rb +2 -0
  71. data/lib/rspec/core/mocking/with_mocha.rb +2 -0
  72. data/lib/rspec/core/mocking/with_rr.rb +2 -0
  73. data/lib/rspec/core/mocking/with_rspec.rb +3 -1
  74. data/lib/rspec/core/option_parser.rb +9 -2
  75. data/lib/rspec/core/pending.rb +10 -3
  76. data/lib/rspec/core/reporter.rb +2 -2
  77. data/lib/rspec/core/runner.rb +38 -13
  78. data/lib/rspec/core/shared_example_group.rb +18 -4
  79. data/lib/rspec/core/subject.rb +4 -6
  80. data/lib/rspec/core/version.rb +1 -1
  81. data/lib/rspec/core/world.rb +70 -18
  82. data/lib/rspec/core.rb +29 -0
  83. data/lib/rspec/monkey/spork/test_framework/rspec.rb +1 -0
  84. data/rspec-core.gemspec +3 -5
  85. data/spec/autotest/failed_results_re_spec.rb +2 -2
  86. data/spec/autotest/rspec_spec.rb +4 -126
  87. data/spec/rspec/core/command_line_spec.rb +36 -2
  88. data/spec/rspec/core/configuration_spec.rb +150 -70
  89. data/spec/rspec/core/deprecations_spec.rb +21 -0
  90. data/spec/rspec/core/drb_command_line_spec.rb +21 -56
  91. data/spec/rspec/core/example_group_spec.rb +213 -56
  92. data/spec/rspec/core/example_spec.rb +110 -0
  93. data/spec/rspec/core/formatters/base_formatter_spec.rb +23 -2
  94. data/spec/rspec/core/formatters/base_text_formatter_spec.rb +9 -0
  95. data/spec/rspec/core/formatters/helpers_spec.rb +1 -1
  96. data/spec/rspec/core/formatters/html_formatted-1.8.6.html +5 -5
  97. data/spec/rspec/core/formatters/html_formatted-1.8.7-jruby.html +8 -10
  98. data/spec/rspec/core/formatters/html_formatted-1.8.7.html +5 -5
  99. data/spec/rspec/core/formatters/html_formatted-1.9.1.html +5 -5
  100. data/spec/rspec/core/formatters/html_formatted-1.9.2.html +5 -5
  101. data/spec/rspec/core/formatters/progress_formatter_spec.rb +0 -1
  102. data/spec/rspec/core/formatters/text_mate_formatted-1.8.6.html +5 -5
  103. data/spec/rspec/core/formatters/text_mate_formatted-1.8.7-jruby.html +8 -10
  104. data/spec/rspec/core/formatters/text_mate_formatted-1.8.7.html +5 -5
  105. data/spec/rspec/core/formatters/text_mate_formatted-1.9.1.html +5 -5
  106. data/spec/rspec/core/formatters/text_mate_formatted-1.9.2.html +5 -5
  107. data/spec/rspec/core/hooks_spec.rb +86 -0
  108. data/spec/rspec/core/metadata_spec.rb +7 -7
  109. data/spec/rspec/core/option_parser_spec.rb +26 -15
  110. data/spec/rspec/core/pending_example_spec.rb +12 -51
  111. data/spec/rspec/core/reporter_spec.rb +19 -3
  112. data/spec/rspec/core/resources/formatter_specs.rb +7 -1
  113. data/spec/rspec/core/rspec_matchers_spec.rb +45 -0
  114. data/spec/rspec/core/runner_spec.rb +42 -10
  115. data/spec/rspec/core/shared_example_group_spec.rb +57 -21
  116. data/spec/rspec/core/subject_spec.rb +32 -11
  117. data/spec/rspec/core/world_spec.rb +147 -15
  118. data/spec/rspec/core_spec.rb +28 -0
  119. data/spec/spec_helper.rb +22 -2
  120. data/spec/support/matchers.rb +44 -13
  121. data/spec/support/shared_example_groups.rb +41 -0
  122. data/spec/support/spec_files.rb +44 -0
  123. data/spec.txt +1126 -0
  124. metadata +34 -15
  125. data/spec/ruby_forker.rb +0 -13
@@ -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
@@ -240,13 +240,13 @@ module RSpec
240
240
 
241
241
  %w[# . ::].each do |char|
242
242
  context "with a nested description starting with #{char}" do
243
- it "removes the space" do
244
- parent = Metadata.new
245
- parent.process("Object")
246
- child = Metadata.new(parent)
247
- child.process("#{char}method")
248
- child[:example_group][:full_description].should eq("Object#{char}method")
249
- end
243
+ it "removes the space" do
244
+ parent = Metadata.new
245
+ parent.process("Object")
246
+ child = Metadata.new(parent)
247
+ child.process("#{char}method")
248
+ child[:example_group][:full_description].should eq("Object#{char}method")
249
+ end
250
250
  end
251
251
  end
252
252
  end
@@ -2,13 +2,10 @@ require "spec_helper"
2
2
 
3
3
  module RSpec::Core
4
4
  describe OptionParser do
5
- before do
6
- RSpec.stub(:deprecate)
7
- end
8
-
9
5
  let(:output_file){ mock File }
10
6
 
11
7
  before do
8
+ RSpec.stub(:deprecate)
12
9
  File.stub(:open).with("foo.txt",'w') { (output_file) }
13
10
  end
14
11
 
@@ -30,17 +27,12 @@ module RSpec::Core
30
27
  end
31
28
  end
32
29
 
33
- describe "--format" do
34
- it "defines the formatter" do
35
- options = Parser.parse!(%w[--format doc])
36
- options[:formatters].first.should eq(["doc"])
37
- end
38
- end
39
-
40
- describe "-f" do
41
- it "defines the formatter" do
42
- options = Parser.parse!(%w[-f doc])
43
- options[:formatters].first.should eq(["doc"])
30
+ %w[--format -f].each do |option|
31
+ describe option do
32
+ it "defines the formatter" do
33
+ options = Parser.parse!([option, 'doc'])
34
+ options[:formatters].first.should eq(["doc"])
35
+ end
44
36
  end
45
37
  end
46
38
 
@@ -71,5 +63,24 @@ module RSpec::Core
71
63
  end
72
64
  end
73
65
  end
66
+
67
+ %w[--example -e].each do |option|
68
+ describe option do
69
+ it "escapes the arg" do
70
+ options = Parser.parse!([option, "this (and that)"])
71
+ "this (and that)".should match(options[:full_description])
72
+ end
73
+ end
74
+ end
75
+
76
+ %w[--pattern -P].each do |option|
77
+ describe option do
78
+ it "sets the filename pattern" do
79
+ options = Parser.parse!([option, 'spec/**/*.spec'])
80
+ options[:pattern].should eq('spec/**/*.spec')
81
+ end
82
+ end
83
+ end
84
+
74
85
  end
75
86
  end