rspec 1.2.0 → 1.2.1

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 (100) hide show
  1. data/.document +4 -4
  2. data/{History.txt → History.rdoc} +27 -4
  3. data/Manifest.txt +18 -7
  4. data/{README.txt → README.rdoc} +0 -0
  5. data/Rakefile +16 -9
  6. data/{Ruby1.9.markdown → Ruby1.9.rdoc} +3 -3
  7. data/TODO.txt +0 -7
  8. data/Upgrade.rdoc +110 -0
  9. data/features/matchers/create_matcher.feature +40 -0
  10. data/features/matchers/create_matcher_outside_rspec.feature +39 -0
  11. data/features/pending/pending_examples.feature +5 -5
  12. data/features/step_definitions/running_rspec.rb +13 -0
  13. data/features/subject/explicit_subject.feature +31 -0
  14. data/features/subject/implicit_subject.feature +31 -0
  15. data/lib/spec/adapters/mock_frameworks/flexmock.rb +1 -0
  16. data/lib/spec/adapters/mock_frameworks/mocha.rb +1 -0
  17. data/lib/spec/adapters/mock_frameworks/rr.rb +1 -0
  18. data/lib/spec/adapters/mock_frameworks/rspec.rb +12 -10
  19. data/lib/spec/dsl.rb +0 -1
  20. data/lib/spec/dsl/main.rb +3 -3
  21. data/lib/spec/example.rb +4 -3
  22. data/lib/spec/example/example_group_factory.rb +1 -3
  23. data/lib/spec/example/example_group_methods.rb +22 -28
  24. data/lib/spec/example/example_group_proxy.rb +64 -0
  25. data/lib/spec/example/example_methods.rb +8 -11
  26. data/lib/spec/example/example_proxy.rb +42 -0
  27. data/lib/spec/example/shared_example_group.rb +1 -1
  28. data/lib/spec/example/subject.rb +14 -3
  29. data/lib/spec/expectations.rb +1 -1
  30. data/lib/spec/expectations/differs/default.rb +46 -49
  31. data/lib/spec/expectations/differs/load-diff-lcs.rb +12 -0
  32. data/lib/spec/interop/test/unit/testcase.rb +2 -2
  33. data/lib/spec/matchers.rb +49 -9
  34. data/lib/spec/matchers/be.rb +12 -15
  35. data/lib/spec/matchers/change.rb +1 -0
  36. data/lib/spec/matchers/dsl.rb +15 -0
  37. data/lib/spec/matchers/have.rb +9 -8
  38. data/lib/spec/matchers/include.rb +2 -16
  39. data/lib/spec/matchers/match_array.rb +2 -14
  40. data/lib/spec/matchers/matcher.rb +16 -11
  41. data/lib/spec/matchers/pretty.rb +36 -0
  42. data/lib/spec/matchers/raise_error.rb +9 -8
  43. data/lib/spec/matchers/simple_matcher.rb +1 -0
  44. data/lib/spec/matchers/throw_symbol.rb +1 -1
  45. data/lib/spec/mocks/argument_expectation.rb +2 -0
  46. data/lib/spec/mocks/message_expectation.rb +2 -0
  47. data/lib/spec/mocks/proxy.rb +9 -10
  48. data/lib/spec/runner.rb +1 -0
  49. data/lib/spec/runner/extensions/kernel.rb +9 -0
  50. data/lib/spec/runner/formatter/base_formatter.rb +22 -9
  51. data/lib/spec/runner/formatter/html_formatter.rb +2 -1
  52. data/lib/spec/runner/heckle_runner.rb +1 -0
  53. data/lib/spec/runner/option_parser.rb +4 -1
  54. data/lib/spec/runner/options.rb +11 -0
  55. data/lib/spec/runner/spec_parser.rb +15 -22
  56. data/lib/spec/version.rb +4 -6
  57. data/spec/autotest/autotest_helper.rb +6 -1
  58. data/spec/spec/dsl/main_spec.rb +3 -3
  59. data/spec/spec/example/example_group_factory_spec.rb +11 -23
  60. data/spec/spec/example/example_group_methods_spec.rb +45 -20
  61. data/spec/spec/example/example_group_proxy_spec.rb +63 -0
  62. data/spec/spec/example/example_group_spec.rb +15 -0
  63. data/spec/spec/example/example_methods_spec.rb +5 -35
  64. data/spec/spec/example/example_proxy_spec.rb +47 -0
  65. data/spec/spec/example/nested_example_group_spec.rb +3 -3
  66. data/spec/spec/example/shared_example_group_spec.rb +4 -4
  67. data/spec/spec/example/subject_spec.rb +77 -0
  68. data/spec/spec/matchers/be_close_spec.rb +10 -10
  69. data/spec/spec/matchers/be_instance_of_spec.rb +13 -8
  70. data/spec/spec/matchers/be_kind_of_spec.rb +10 -8
  71. data/spec/spec/{dsl/matchers_spec.rb → matchers/dsl_spec.rb} +4 -4
  72. data/spec/spec/matchers/matcher_spec.rb +53 -1
  73. data/spec/spec/matchers/matchers_spec.rb +2 -0
  74. data/spec/spec/package/bin_spec_spec.rb +4 -4
  75. data/spec/spec/runner/command_line_spec.rb +2 -2
  76. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +4 -4
  77. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +2 -2
  78. data/spec/spec/runner/formatter/html_formatted-1.8.4.html +1 -1
  79. data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +1 -1
  80. data/spec/spec/runner/formatter/html_formatted-1.8.5.html +1 -1
  81. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +1 -1
  82. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +1 -1
  83. data/spec/spec/runner/formatter/html_formatted-1.8.7.html +1 -1
  84. data/spec/spec/runner/formatter/html_formatted-1.9.1.html +1 -1
  85. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +12 -11
  86. data/spec/spec/runner/formatter/profile_formatter_spec.rb +2 -2
  87. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +2 -2
  88. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +2 -2
  89. data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +1 -1
  90. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +1 -1
  91. data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +1 -1
  92. data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +1 -1
  93. data/spec/spec/runner/option_parser_spec.rb +20 -0
  94. data/spec/spec/runner/options_spec.rb +23 -1
  95. data/spec/spec/runner/reporter_spec.rb +20 -17
  96. data/spec/spec/runner/spec_parser_spec.rb +1 -1
  97. metadata +33 -15
  98. data/Upgrade.markdown +0 -63
  99. data/lib/spec/dsl/matchers.rb +0 -13
  100. data/lib/spec/example/example_description.rb +0 -15
@@ -0,0 +1,2 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
@@ -6,17 +6,17 @@ describe "The bin/spec script" do
6
6
 
7
7
  it "should have no warnings" do
8
8
  pending "Hangs on JRuby" if RUBY_PLATFORM =~ /java/
9
- spec_path = "#{File.dirname(__FILE__)}/../../../bin/spec"
9
+ location = "#{File.dirname(__FILE__)}/../../../bin/spec"
10
10
 
11
- output = ruby "-w #{spec_path} --help 2>&1"
11
+ output = ruby "-w #{location} --help 2>&1"
12
12
  output.should_not =~ /warning/n
13
13
  end
14
14
 
15
15
  it "should show the help w/ no args" do
16
16
  pending "Hangs on JRuby" if RUBY_PLATFORM =~ /java/
17
- spec_path = "#{File.dirname(__FILE__)}/../../../bin/spec"
17
+ location = "#{File.dirname(__FILE__)}/../../../bin/spec"
18
18
 
19
- output = ruby "-w #{spec_path} 2>&1"
19
+ output = ruby "-w #{location} 2>&1"
20
20
  output.should =~ /^Usage: spec/
21
21
  end
22
22
  end
@@ -106,7 +106,7 @@ module Spec
106
106
  options.add_example_group(example_group)
107
107
 
108
108
  ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
109
- options.reporter.should_receive(:add_example_group).with(example_group)
109
+ options.reporter.should_receive(:add_example_group).with(Spec::Example::ExampleGroupProxy.new(example_group))
110
110
 
111
111
  Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
112
112
  end
@@ -127,7 +127,7 @@ module Spec
127
127
  end
128
128
  end
129
129
 
130
- options.reporter.should_receive(:add_example_group).with(example_group)
130
+ options.reporter.should_receive(:add_example_group).with(Spec::Example::ExampleGroupProxy.new(example_group))
131
131
 
132
132
  options.add_example_group example_group
133
133
  run_with(options)
@@ -15,9 +15,9 @@ module Spec
15
15
  end
16
16
 
17
17
  it "should add example name for each failure" do
18
- formatter.add_example_group(Class.new(::Spec::Example::ExampleGroupDouble).describe("b 1"))
18
+ formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(Class.new(::Spec::Example::ExampleGroupDouble).describe("b 1")))
19
19
  formatter.example_failed("e 1", nil, Spec::Runner::Reporter::Failure.new("g", nil, RuntimeError.new))
20
- formatter.add_example_group(Class.new(::Spec::Example::ExampleGroupDouble).describe("b 2"))
20
+ formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(Class.new(::Spec::Example::ExampleGroupDouble).describe("b 2")))
21
21
  formatter.example_failed("e 2", nil, Spec::Runner::Reporter::Failure.new("g", nil, RuntimeError.new))
22
22
  formatter.example_failed("e 3", nil, Spec::Runner::Reporter::Failure.new("g", nil, RuntimeError.new))
23
23
  io.string.should include("b 1")
@@ -29,13 +29,13 @@ module Spec
29
29
  child_example_group = Class.new(parent_example_group).describe("#child_method")
30
30
  grand_child_example_group = Class.new(child_example_group).describe("GrandChild")
31
31
 
32
- formatter.add_example_group(grand_child_example_group)
32
+ formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(grand_child_example_group))
33
33
  formatter.example_failed("failure", nil, ::Spec::Runner::Reporter::Failure.new("g", nil, RuntimeError.new))
34
34
  io.string.should == "Parent#child_method GrandChild\n"
35
35
  end
36
36
 
37
37
  it "should remove druby url, which is used by Spec::Distributed" do
38
- @formatter.add_example_group(Class.new(::Spec::Example::ExampleGroupDouble).describe("something something (druby://99.99.99.99:99)"))
38
+ @formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(Class.new(::Spec::Example::ExampleGroupDouble).describe("something something (druby://99.99.99.99:99)")))
39
39
  @formatter.example_failed("e 1", nil, ::Spec::Runner::Reporter::Failure.new("g", nil, RuntimeError.new))
40
40
  io.string.should == "something something\n"
41
41
  end
@@ -15,9 +15,9 @@ module Spec
15
15
  example_group_1 = Class.new(::Spec::Example::ExampleGroupDouble).describe("A")
16
16
  example_group_2 = Class.new(example_group_1).describe("B")
17
17
 
18
- @formatter.add_example_group(example_group_1)
18
+ @formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(example_group_1))
19
19
  @formatter.example_failed(example_group_1.it("a1"){}, nil, ::Spec::Runner::Reporter::Failure.new("g", nil, RuntimeError.new))
20
- @formatter.add_example_group(example_group_2)
20
+ @formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(example_group_2))
21
21
  @formatter.example_failed(example_group_2.it("b2"){}, nil, ::Spec::Runner::Reporter::Failure.new("g", nil, RuntimeError.new))
22
22
  @formatter.example_failed(example_group_2.it("b3"){}, nil, ::Spec::Runner::Reporter::Failure.new("g", nil, RuntimeError.new))
23
23
  @io.string.should eql(<<-EOF
@@ -167,7 +167,7 @@ a {
167
167
  </style>
168
168
 
169
169
  <div id="rspec-header">
170
- <h1>RSpec Results</h1>
170
+ <h1>RSpec Code Examples</h1>
171
171
 
172
172
  <div id="summary">
173
173
  <p id="totals">&nbsp;</p>
@@ -167,7 +167,7 @@ a {
167
167
  </style>
168
168
 
169
169
  <div id="rspec-header">
170
- <h1>RSpec Results</h1>
170
+ <h1>RSpec Code Examples</h1>
171
171
 
172
172
  <div id="summary">
173
173
  <p id="totals">&nbsp;</p>
@@ -167,7 +167,7 @@ a {
167
167
  </style>
168
168
 
169
169
  <div id="rspec-header">
170
- <h1>RSpec Results</h1>
170
+ <h1>RSpec Code Examples</h1>
171
171
 
172
172
  <div id="summary">
173
173
  <p id="totals">&nbsp;</p>
@@ -167,7 +167,7 @@ a {
167
167
  </style>
168
168
 
169
169
  <div id="rspec-header">
170
- <h1>RSpec Results</h1>
170
+ <h1>RSpec Code Examples</h1>
171
171
 
172
172
  <div id="summary">
173
173
  <p id="totals">&nbsp;</p>
@@ -169,7 +169,7 @@ a {
169
169
 
170
170
  <div id="rspec-header">
171
171
  <div id="label">
172
- <h1>RSpec Results</h1>
172
+ <h1>RSpec Code Examples</h1>
173
173
  </div>
174
174
 
175
175
  <div id="summary">
@@ -169,7 +169,7 @@ a {
169
169
 
170
170
  <div id="rspec-header">
171
171
  <div id="label">
172
- <h1>RSpec Results</h1>
172
+ <h1>RSpec Code Examples</h1>
173
173
  </div>
174
174
 
175
175
  <div id="summary">
@@ -169,7 +169,7 @@ a {
169
169
 
170
170
  <div id="rspec-header">
171
171
  <div id="label">
172
- <h1>RSpec Results</h1>
172
+ <h1>RSpec Code Examples</h1>
173
173
  </div>
174
174
 
175
175
  <div id="summary">
@@ -18,7 +18,7 @@ module Spec
18
18
 
19
19
  describe "where ExampleGroup has no superclass with a description" do
20
20
  def add_example_group
21
- formatter.add_example_group(example_group)
21
+ formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(example_group))
22
22
  end
23
23
 
24
24
  before do
@@ -66,7 +66,7 @@ OUT
66
66
 
67
67
  describe "and parent ExampleGroups have not been printed" do
68
68
  before do
69
- formatter.add_example_group(child_example_group)
69
+ formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(child_example_group))
70
70
  end
71
71
 
72
72
  it "should push ExampleGroup name with two spaces of indentation" do
@@ -79,9 +79,9 @@ OUT
79
79
 
80
80
  describe "and parent ExampleGroups have been printed" do
81
81
  before do
82
- formatter.add_example_group(example_group)
82
+ formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(example_group))
83
83
  io.string = ""
84
- formatter.add_example_group(child_example_group)
84
+ formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(child_example_group))
85
85
  end
86
86
 
87
87
  it "should print only the indented ExampleGroup" do
@@ -101,7 +101,8 @@ OUT
101
101
 
102
102
  describe "and parent ExampleGroups have not been printed" do
103
103
  before do
104
- formatter.add_example_group(grand_child_example_group)
104
+ formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(grand_child_example_group))
105
+
105
106
  end
106
107
 
107
108
  it "should print the entire nested ExampleGroup heirarchy" do
@@ -115,9 +116,9 @@ OUT
115
116
 
116
117
  describe "and parent ExampleGroups have been printed" do
117
118
  before do
118
- formatter.add_example_group(child_example_group)
119
+ formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(child_example_group))
119
120
  io.string = ""
120
- formatter.add_example_group(grand_child_example_group)
121
+ formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(grand_child_example_group))
121
122
  end
122
123
 
123
124
  it "should print only the indented ExampleGroup" do
@@ -135,7 +136,7 @@ OUT
135
136
  describe "and parent ExampleGroups have not been printed" do
136
137
  def add_example_group
137
138
  @child_example_group = Class.new(example_group)
138
- formatter.add_example_group(child_example_group)
139
+ formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(child_example_group))
139
140
  end
140
141
 
141
142
  it "should render only the parent ExampleGroup" do
@@ -148,9 +149,9 @@ OUT
148
149
  describe "and parent ExampleGroups have been printed" do
149
150
  def add_example_group
150
151
  @child_example_group = Class.new(example_group)
151
- formatter.add_example_group(example_group)
152
+ formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(example_group))
152
153
  io.string = ""
153
- formatter.add_example_group(child_example_group)
154
+ formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(child_example_group))
154
155
  end
155
156
 
156
157
  it "should not render anything" do
@@ -208,7 +209,7 @@ OUT
208
209
  def add_example_group
209
210
  @child_example_group = Class.new(example_group).describe("Child ExampleGroup")
210
211
  @grand_child_example_group = Class.new(child_example_group).describe("GrandChild ExampleGroup")
211
- formatter.add_example_group(grand_child_example_group)
212
+ formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(grand_child_example_group))
212
213
  end
213
214
 
214
215
  describe "when having an error" do
@@ -32,7 +32,7 @@ module Spec
32
32
  parent_example_group = Class.new(::Spec::Example::ExampleGroupDouble).describe('Parent')
33
33
  child_example_group = Class.new(parent_example_group).describe('Child')
34
34
 
35
- formatter.add_example_group(child_example_group)
35
+ formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(child_example_group))
36
36
 
37
37
  formatter.example_started('when foo')
38
38
  Time.stub!(:now).and_return(now+1)
@@ -50,7 +50,7 @@ module Spec
50
50
 
51
51
  it "should print the top 10 results" do
52
52
  example_group = Class.new(::Spec::Example::ExampleGroup).describe("ExampleGroup")
53
- formatter.add_example_group(example_group)
53
+ formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(example_group))
54
54
  formatter.instance_variable_set("@time", Time.now)
55
55
 
56
56
  15.times do
@@ -30,7 +30,7 @@ module Spec
30
30
  end
31
31
  end
32
32
  example = example_group.examples.first
33
- @formatter.add_example_group(example_group)
33
+ @formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(example_group))
34
34
  @formatter.example_pending(example, "message", "#{__FILE__}:#{__LINE__}")
35
35
  @io.rewind
36
36
  @formatter.dump_summary(3, 2, 1, 1)
@@ -98,7 +98,7 @@ EOE
98
98
  example = example_group.examples.first
99
99
  file = __FILE__
100
100
  line = __LINE__ + 2
101
- @formatter.add_example_group(example_group)
101
+ @formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(example_group))
102
102
  @formatter.example_pending(example, "message", "#{__FILE__}:#{__LINE__}")
103
103
  @formatter.dump_pending
104
104
  @io.string.should ==(<<-HERE)
@@ -24,7 +24,7 @@ module Spec
24
24
  end
25
25
 
26
26
  def add_example_group
27
- formatter.add_example_group(example_group)
27
+ formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(example_group))
28
28
  end
29
29
 
30
30
  describe "#dump_summary" do
@@ -76,7 +76,7 @@ module Spec
76
76
  def add_example_group
77
77
  @child_example_group = Class.new(example_group).describe("Child ExampleGroup")
78
78
  @grand_child_example_group = Class.new(child_example_group).describe("GrandChild ExampleGroup")
79
- formatter.add_example_group(grand_child_example_group)
79
+ formatter.add_example_group(Spec::Example::ExampleGroupProxy.new(grand_child_example_group))
80
80
  end
81
81
 
82
82
  describe "when having an error" do
@@ -167,7 +167,7 @@ a {
167
167
  </style>
168
168
 
169
169
  <div id="rspec-header">
170
- <h1>RSpec Results</h1>
170
+ <h1>RSpec Code Examples</h1>
171
171
 
172
172
  <div id="summary">
173
173
  <p id="totals">&nbsp;</p>
@@ -169,7 +169,7 @@ a {
169
169
 
170
170
  <div id="rspec-header">
171
171
  <div id="label">
172
- <h1>RSpec Results</h1>
172
+ <h1>RSpec Code Examples</h1>
173
173
  </div>
174
174
 
175
175
  <div id="summary">
@@ -169,7 +169,7 @@ a {
169
169
 
170
170
  <div id="rspec-header">
171
171
  <div id="label">
172
- <h1>RSpec Results</h1>
172
+ <h1>RSpec Code Examples</h1>
173
173
  </div>
174
174
 
175
175
  <div id="summary">
@@ -169,7 +169,7 @@ a {
169
169
 
170
170
  <div id="rspec-header">
171
171
  <div id="label">
172
- <h1>RSpec Results</h1>
172
+ <h1>RSpec Code Examples</h1>
173
173
  </div>
174
174
 
175
175
  <div id="summary">
@@ -24,6 +24,26 @@ describe "OptionParser" do
24
24
  options.filename_pattern.should == "foo"
25
25
  end
26
26
 
27
+ it "should accept debugger option" do
28
+ options = parse(["--debugger"])
29
+ options.debug.should be_true
30
+ end
31
+
32
+ it "should accept -u form of debugger option" do
33
+ options = parse(["-u"])
34
+ options.debug.should be_true
35
+ end
36
+
37
+ it "should turn off the debugger option if drb is specified later" do
38
+ options = parse(["-u", "--drb"])
39
+ options.debug.should_not be_true
40
+ end
41
+
42
+ it "should turn off the debugger option if drb is specified first" do
43
+ options = parse(["--drb", "-u"])
44
+ options.debug.should_not be_true
45
+ end
46
+
27
47
  it "should accept dry run option" do
28
48
  options = parse(["--dry-run"])
29
49
  options.dry_run.should be_true
@@ -106,6 +106,12 @@ module Spec
106
106
  @options.dry_run.should == false
107
107
  end
108
108
  end
109
+
110
+ describe "#debug" do
111
+ it "should default to false" do
112
+ @options.debug.should == false
113
+ end
114
+ end
109
115
 
110
116
  describe "#context_lines" do
111
117
  it "should default to 3" do
@@ -215,6 +221,22 @@ module Spec
215
221
  end
216
222
  end
217
223
 
224
+ describe "debug option specified" do
225
+ it "should cause ruby_debug to be required and do nothing" do
226
+ @options.debug = true
227
+ @options.should_receive(:require_ruby_debug)
228
+ @options.run_examples.should be_true
229
+ end
230
+ end
231
+
232
+ describe "debug option not specified" do
233
+ it "should not cause ruby_debug to be required" do
234
+ @options.debug = false
235
+ @options.should_not_receive(:require_ruby_debug)
236
+ @options.run_examples.should be_true
237
+ end
238
+ end
239
+
218
240
  describe "#load_class" do
219
241
  it "should raise error when not class name" do
220
242
  lambda do
@@ -316,7 +338,7 @@ module Spec
316
338
  it "defines global predicate matcher methods on ExampleMethods" do
317
339
  Spec::Runner.configuration.stub!(:predicate_matchers).and_return({:this => :that?})
318
340
  group = Class.new(::Spec::Example::ExampleGroupDouble).describe("Some Examples")
319
- example = group.new("")
341
+ example = group.new(::Spec::Example::ExampleProxy.new)
320
342
 
321
343
  @options.run_examples
322
344
  example.this
@@ -3,7 +3,7 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
3
3
  module Spec
4
4
  module Runner
5
5
  describe Reporter do
6
- attr_reader :formatter_output, :options, :backtrace_tweaker, :formatter, :reporter, :example_group
6
+ attr_reader :formatter_output, :options, :backtrace_tweaker, :formatter, :reporter, :example_group, :example_group_proxy, :example_proxy
7
7
  before(:each) do
8
8
  @formatter_output = StringIO.new
9
9
  @options = Options.new(StringIO.new, StringIO.new)
@@ -13,6 +13,8 @@ module Spec
13
13
  options.formatters << formatter
14
14
  @reporter = Reporter.new(options)
15
15
  @example_group = create_example_group("example_group")
16
+ @example_group_proxy = Spec::Example::ExampleGroupProxy.new(@example_group)
17
+ @example_proxy = Spec::Example::ExampleProxy.new
16
18
  example_group.notify(reporter)
17
19
  end
18
20
 
@@ -33,7 +35,7 @@ module Spec
33
35
  end
34
36
 
35
37
  it "should tell formatter when example_group is added" do
36
- formatter.should_receive(:add_example_group).with(example_group)
38
+ formatter.should_receive(:add_example_group).with(example_group_proxy)
37
39
  example_group.notify(reporter)
38
40
  end
39
41
 
@@ -58,13 +60,13 @@ module Spec
58
60
  end
59
61
 
60
62
  def description_of(example)
61
- ::Spec::Example::ExampleDescription.new(String === example ? example : example.description)
63
+ ::Spec::Example::ExampleProxy.new(String === example ? example : example.description)
62
64
  end
63
65
 
64
66
  it "should handle multiple examples with the same name" do
65
67
  error=RuntimeError.new
66
- passing = ::Spec::Example::ExampleGroupDouble.new("an example")
67
- failing = ::Spec::Example::ExampleGroupDouble.new("an example")
68
+ passing = ::Spec::Example::ExampleGroupDouble.new(example_proxy)
69
+ failing = ::Spec::Example::ExampleGroupDouble.new(example_proxy)
68
70
 
69
71
  formatter.should_receive(:add_example_group).exactly(2).times
70
72
  formatter.should_receive(:example_passed).with(description_of(passing)).exactly(2).times
@@ -141,11 +143,11 @@ module Spec
141
143
  it "should delegate to backtrace tweaker" do
142
144
  formatter.should_receive(:example_failed)
143
145
  backtrace_tweaker.should_receive(:tweak_backtrace)
144
- reporter.example_finished(description_of(ExampleGroup.new("example")), RuntimeError.new)
146
+ reporter.example_finished(example_proxy, RuntimeError.new)
145
147
  end
146
148
 
147
149
  it "should account for failing example in stats" do
148
- example = ::Spec::Example::ExampleGroupDouble.new("example")
150
+ example = ::Spec::Example::ExampleGroupDouble.new(example_proxy)
149
151
  formatter.should_receive(:example_failed).with(description_of(example), 1, failure)
150
152
  formatter.should_receive(:start_dump)
151
153
  formatter.should_receive(:dump_pending)
@@ -165,21 +167,21 @@ module Spec
165
167
  end
166
168
 
167
169
  it "should tell formatter example is pending" do
168
- example = ExampleGroup.new("example")
170
+ example = ExampleGroup.new(example_proxy)
169
171
  formatter.should_receive(:example_pending).with(description_of(example), "reason", @pending_caller)
170
- formatter.should_receive(:add_example_group).with(example_group)
172
+ formatter.should_receive(:add_example_group).with(example_group_proxy)
171
173
  example_group.notify(reporter)
172
174
  reporter.example_finished(description_of(example), @pending_error)
173
175
  end
174
176
 
175
177
  it "should account for pending example in stats" do
176
- example = ExampleGroup.new("example")
178
+ example = ExampleGroup.new(example_proxy)
177
179
  formatter.should_receive(:example_pending).with(description_of(example), "reason", @pending_caller)
178
180
  formatter.should_receive(:start_dump)
179
181
  formatter.should_receive(:dump_pending)
180
182
  formatter.should_receive(:dump_summary).with(anything(), 1, 0, 1)
181
183
  formatter.should_receive(:close).with(no_args)
182
- formatter.should_receive(:add_example_group).with(example_group)
184
+ formatter.should_receive(:add_example_group).with(example_group_proxy)
183
185
  example_group.notify(reporter)
184
186
  reporter.example_finished(description_of(example), @pending_error)
185
187
  reporter.dump
@@ -201,16 +203,17 @@ module Spec
201
203
  options.formatters << @deprecated_formatter
202
204
  end
203
205
 
204
- it "should pass the correct example to the formatter" do
205
- example = ExampleGroup.new("example")
206
+ it "should pass the correct example description to the formatter" do
207
+ description = Spec::Example::ExampleProxy.new("name")
208
+ example = ExampleGroup.new(description)
206
209
  example_group.notify(reporter)
207
210
  reporter.example_finished(description_of(example), @pending_error)
208
211
 
209
- @deprecated_formatter.example_passed_to_method.should == description_of(example)
212
+ @deprecated_formatter.example_passed_to_method.should == description
210
213
  end
211
214
 
212
215
  it "should pass the correct pending error message to the formatter" do
213
- example = ExampleGroup.new("example")
216
+ example = ExampleGroup.new(example_proxy)
214
217
  example_group.notify(reporter)
215
218
  reporter.example_finished(description_of(example), @pending_error)
216
219
 
@@ -220,7 +223,7 @@ module Spec
220
223
  it "should raise a deprecation warning" do
221
224
  Kernel.should_receive(:warn).with(Spec::Runner::Reporter::EXAMPLE_PENDING_DEPRECATION_WARNING)
222
225
 
223
- example = ExampleGroup.new("example")
226
+ example = ExampleGroup.new(example_proxy)
224
227
  example_group.notify(reporter)
225
228
  reporter.example_finished(description_of(example), @pending_error)
226
229
  end
@@ -232,7 +235,7 @@ module Spec
232
235
  formatter.should_receive(:example_failed) do |name, counter, failure|
233
236
  failure.header.should == "'example_group should do something' FIXED"
234
237
  end
235
- formatter.should_receive(:add_example_group).with(example_group)
238
+ formatter.should_receive(:add_example_group).with(example_group_proxy)
236
239
  example_group.notify(reporter)
237
240
  reporter.example_finished(description_of(example_group.examples.first), Spec::Example::PendingExampleFixedError.new("reason"))
238
241
  end