rspec 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +4 -4
- data/{History.txt → History.rdoc} +27 -4
- data/Manifest.txt +18 -7
- data/{README.txt → README.rdoc} +0 -0
- data/Rakefile +16 -9
- data/{Ruby1.9.markdown → Ruby1.9.rdoc} +3 -3
- data/TODO.txt +0 -7
- data/Upgrade.rdoc +110 -0
- data/features/matchers/create_matcher.feature +40 -0
- data/features/matchers/create_matcher_outside_rspec.feature +39 -0
- data/features/pending/pending_examples.feature +5 -5
- data/features/step_definitions/running_rspec.rb +13 -0
- data/features/subject/explicit_subject.feature +31 -0
- data/features/subject/implicit_subject.feature +31 -0
- data/lib/spec/adapters/mock_frameworks/flexmock.rb +1 -0
- data/lib/spec/adapters/mock_frameworks/mocha.rb +1 -0
- data/lib/spec/adapters/mock_frameworks/rr.rb +1 -0
- data/lib/spec/adapters/mock_frameworks/rspec.rb +12 -10
- data/lib/spec/dsl.rb +0 -1
- data/lib/spec/dsl/main.rb +3 -3
- data/lib/spec/example.rb +4 -3
- data/lib/spec/example/example_group_factory.rb +1 -3
- data/lib/spec/example/example_group_methods.rb +22 -28
- data/lib/spec/example/example_group_proxy.rb +64 -0
- data/lib/spec/example/example_methods.rb +8 -11
- data/lib/spec/example/example_proxy.rb +42 -0
- data/lib/spec/example/shared_example_group.rb +1 -1
- data/lib/spec/example/subject.rb +14 -3
- data/lib/spec/expectations.rb +1 -1
- data/lib/spec/expectations/differs/default.rb +46 -49
- data/lib/spec/expectations/differs/load-diff-lcs.rb +12 -0
- data/lib/spec/interop/test/unit/testcase.rb +2 -2
- data/lib/spec/matchers.rb +49 -9
- data/lib/spec/matchers/be.rb +12 -15
- data/lib/spec/matchers/change.rb +1 -0
- data/lib/spec/matchers/dsl.rb +15 -0
- data/lib/spec/matchers/have.rb +9 -8
- data/lib/spec/matchers/include.rb +2 -16
- data/lib/spec/matchers/match_array.rb +2 -14
- data/lib/spec/matchers/matcher.rb +16 -11
- data/lib/spec/matchers/pretty.rb +36 -0
- data/lib/spec/matchers/raise_error.rb +9 -8
- data/lib/spec/matchers/simple_matcher.rb +1 -0
- data/lib/spec/matchers/throw_symbol.rb +1 -1
- data/lib/spec/mocks/argument_expectation.rb +2 -0
- data/lib/spec/mocks/message_expectation.rb +2 -0
- data/lib/spec/mocks/proxy.rb +9 -10
- data/lib/spec/runner.rb +1 -0
- data/lib/spec/runner/extensions/kernel.rb +9 -0
- data/lib/spec/runner/formatter/base_formatter.rb +22 -9
- data/lib/spec/runner/formatter/html_formatter.rb +2 -1
- data/lib/spec/runner/heckle_runner.rb +1 -0
- data/lib/spec/runner/option_parser.rb +4 -1
- data/lib/spec/runner/options.rb +11 -0
- data/lib/spec/runner/spec_parser.rb +15 -22
- data/lib/spec/version.rb +4 -6
- data/spec/autotest/autotest_helper.rb +6 -1
- data/spec/spec/dsl/main_spec.rb +3 -3
- data/spec/spec/example/example_group_factory_spec.rb +11 -23
- data/spec/spec/example/example_group_methods_spec.rb +45 -20
- data/spec/spec/example/example_group_proxy_spec.rb +63 -0
- data/spec/spec/example/example_group_spec.rb +15 -0
- data/spec/spec/example/example_methods_spec.rb +5 -35
- data/spec/spec/example/example_proxy_spec.rb +47 -0
- data/spec/spec/example/nested_example_group_spec.rb +3 -3
- data/spec/spec/example/shared_example_group_spec.rb +4 -4
- data/spec/spec/example/subject_spec.rb +77 -0
- data/spec/spec/matchers/be_close_spec.rb +10 -10
- data/spec/spec/matchers/be_instance_of_spec.rb +13 -8
- data/spec/spec/matchers/be_kind_of_spec.rb +10 -8
- data/spec/spec/{dsl/matchers_spec.rb → matchers/dsl_spec.rb} +4 -4
- data/spec/spec/matchers/matcher_spec.rb +53 -1
- data/spec/spec/matchers/matchers_spec.rb +2 -0
- data/spec/spec/package/bin_spec_spec.rb +4 -4
- data/spec/spec/runner/command_line_spec.rb +2 -2
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +4 -4
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +2 -2
- data/spec/spec/runner/formatter/html_formatted-1.8.4.html +1 -1
- data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +1 -1
- data/spec/spec/runner/formatter/html_formatted-1.8.5.html +1 -1
- data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +1 -1
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +1 -1
- data/spec/spec/runner/formatter/html_formatted-1.8.7.html +1 -1
- data/spec/spec/runner/formatter/html_formatted-1.9.1.html +1 -1
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +12 -11
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +2 -2
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +2 -2
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +2 -2
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +1 -1
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +1 -1
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +1 -1
- data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +1 -1
- data/spec/spec/runner/option_parser_spec.rb +20 -0
- data/spec/spec/runner/options_spec.rb +23 -1
- data/spec/spec/runner/reporter_spec.rb +20 -17
- data/spec/spec/runner/spec_parser_spec.rb +1 -1
- metadata +33 -15
- data/Upgrade.markdown +0 -63
- data/lib/spec/dsl/matchers.rb +0 -13
- data/lib/spec/example/example_description.rb +0 -15
@@ -78,6 +78,7 @@ module Spec
|
|
78
78
|
:options_file => ["-O", "--options PATH", "Read options from a file"],
|
79
79
|
:generate_options => ["-G", "--generate-options PATH", "Generate an options file for --options"],
|
80
80
|
:runner => ["-U", "--runner RUNNER", "Use a custom Runner."],
|
81
|
+
:debug => ["-u", "--debugger", "Enable ruby-debugging."],
|
81
82
|
:drb => ["-X", "--drb", "Run examples via DRb. (For example against script/spec_server)"],
|
82
83
|
:version => ["-v", "--version", "Show version"],
|
83
84
|
:help => ["-h", "--help", "You're looking at it"]
|
@@ -110,6 +111,7 @@ module Spec
|
|
110
111
|
on(*OPTIONS[:options_file]) {|options_file|}
|
111
112
|
on(*OPTIONS[:generate_options]) {|options_file|}
|
112
113
|
on(*OPTIONS[:runner]) {|runner| @options.user_input_for_runner = runner}
|
114
|
+
on(*OPTIONS[:debug]) {@options.debug = true}
|
113
115
|
on(*OPTIONS[:drb]) {}
|
114
116
|
on(*OPTIONS[:version]) {parse_version}
|
115
117
|
on("--autospec") {@options.autospec = true}
|
@@ -135,7 +137,8 @@ module Spec
|
|
135
137
|
@options
|
136
138
|
end
|
137
139
|
|
138
|
-
|
140
|
+
protected
|
141
|
+
|
139
142
|
def invoke_requires(requires)
|
140
143
|
requires.split(",").each do |file|
|
141
144
|
require file
|
data/lib/spec/runner/options.rb
CHANGED
@@ -34,6 +34,7 @@ module Spec
|
|
34
34
|
:dry_run,
|
35
35
|
:profile,
|
36
36
|
:heckle_runner,
|
37
|
+
:debug,
|
37
38
|
:line_number,
|
38
39
|
:loadby,
|
39
40
|
:reporter,
|
@@ -57,6 +58,7 @@ module Spec
|
|
57
58
|
@colour = false
|
58
59
|
@profile = false
|
59
60
|
@dry_run = false
|
61
|
+
@debug = false
|
60
62
|
@reporter = Reporter.new(self)
|
61
63
|
@context_lines = 3
|
62
64
|
@diff_format = :unified
|
@@ -67,6 +69,8 @@ module Spec
|
|
67
69
|
@examples_should_be_run = nil
|
68
70
|
@user_input_for_runner = nil
|
69
71
|
@after_suite_parts = []
|
72
|
+
@files_loaded = false
|
73
|
+
@out_used = nil
|
70
74
|
end
|
71
75
|
|
72
76
|
def add_example_group(example_group)
|
@@ -77,7 +81,13 @@ module Spec
|
|
77
81
|
@example_groups.delete(example_group)
|
78
82
|
end
|
79
83
|
|
84
|
+
def require_ruby_debug
|
85
|
+
require 'rubygems' unless ENV['NO_RUBYGEMS']
|
86
|
+
require 'ruby-debug'
|
87
|
+
end
|
88
|
+
|
80
89
|
def run_examples
|
90
|
+
require_ruby_debug if debug
|
81
91
|
return true unless examples_should_be_run?
|
82
92
|
success = true
|
83
93
|
begin
|
@@ -142,6 +152,7 @@ module Spec
|
|
142
152
|
if @colour && RUBY_PLATFORM =~ /mswin|mingw/ ;\
|
143
153
|
begin ;\
|
144
154
|
replace_output = @output_stream.equal?($stdout) ;\
|
155
|
+
require 'rubygems' unless ENV['NO_RUBYGEMS'] ;\
|
145
156
|
require 'Win32/Console/ANSI' ;\
|
146
157
|
@output_stream = $stdout if replace_output ;\
|
147
158
|
rescue LoadError ;\
|
@@ -33,25 +33,21 @@ module Spec
|
|
33
33
|
protected
|
34
34
|
|
35
35
|
def consider_example_group_for_best_match(example_group, file, line_number)
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
best_match[:line] = example_line
|
42
|
-
end
|
36
|
+
example_group_file, example_group_line = parse_location(example_group.location)
|
37
|
+
if is_best_match?(file, line_number, example_group_file, example_group_line)
|
38
|
+
best_match.clear
|
39
|
+
best_match[:example_group] = example_group
|
40
|
+
best_match[:line] = example_group_line
|
43
41
|
end
|
44
42
|
end
|
45
43
|
|
46
44
|
def consider_example_for_best_match(example, example_group, file, line_number)
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
best_match[:line] = example_line
|
54
|
-
end
|
45
|
+
example_file, example_line = parse_location(example.location)
|
46
|
+
if is_best_match?(file, line_number, example_file, example_line)
|
47
|
+
best_match.clear
|
48
|
+
best_match[:example_group] = example_group
|
49
|
+
best_match[:example] = example
|
50
|
+
best_match[:line] = example_line
|
55
51
|
end
|
56
52
|
end
|
57
53
|
|
@@ -60,13 +56,10 @@ module Spec
|
|
60
56
|
example_line <= line_number &&
|
61
57
|
example_line > best_match[:line].to_i
|
62
58
|
end
|
63
|
-
|
64
|
-
def
|
65
|
-
|
66
|
-
|
67
|
-
file, number = $1, $2
|
68
|
-
[file, Integer(number)]
|
69
|
-
end
|
59
|
+
|
60
|
+
def parse_location(location)
|
61
|
+
location =~ /(.*)\:(\d*)(\:|$)/
|
62
|
+
return $1, Integer($2)
|
70
63
|
end
|
71
64
|
end
|
72
65
|
end
|
data/lib/spec/version.rb
CHANGED
@@ -1,13 +1,11 @@
|
|
1
|
-
module Spec
|
2
|
-
module VERSION
|
1
|
+
module Spec # :nodoc:
|
2
|
+
module VERSION # :nodoc:
|
3
3
|
unless defined? MAJOR
|
4
4
|
MAJOR = 1
|
5
5
|
MINOR = 2
|
6
|
-
TINY =
|
7
|
-
MINESCULE = nil
|
6
|
+
TINY = 1
|
8
7
|
|
9
|
-
|
10
|
-
STRING = [MAJOR, MINOR, TINY, MINESCULE].compact.join('.')
|
8
|
+
STRING = [MAJOR, MINOR, TINY].compact.join('.')
|
11
9
|
|
12
10
|
SUMMARY = "rspec #{STRING}"
|
13
11
|
end
|
@@ -1,4 +1,9 @@
|
|
1
|
-
|
1
|
+
begin
|
2
|
+
require 'autotest'
|
3
|
+
rescue LoadError
|
4
|
+
require 'rubygems' unless ENV['NO_RUBYGEMS']
|
5
|
+
require 'autotest'
|
6
|
+
end
|
2
7
|
dir = File.dirname(__FILE__)
|
3
8
|
require File.expand_path("#{dir}/../spec_helper")
|
4
9
|
require File.expand_path("#{dir}/../../lib/autotest/rspec")
|
data/spec/spec/dsl/main_spec.rb
CHANGED
@@ -12,7 +12,7 @@ module Spec
|
|
12
12
|
it "should delegate to Spec::Example::ExampleGroupFactory.create_example_group" do
|
13
13
|
block = lambda {|a,b|}
|
14
14
|
Spec::Example::ExampleGroupFactory.should_receive(:create_example_group).with(
|
15
|
-
"The ExampleGroup", hash_including(:
|
15
|
+
"The ExampleGroup", hash_including(:location), &block
|
16
16
|
)
|
17
17
|
@main.__send__ method, "The ExampleGroup", &block
|
18
18
|
end
|
@@ -24,7 +24,7 @@ module Spec
|
|
24
24
|
it "should create a shared ExampleGroup" do
|
25
25
|
block = lambda {|a,b|}
|
26
26
|
Spec::Example::ExampleGroupFactory.should_receive(:create_shared_example_group).with(
|
27
|
-
"shared group", hash_including(:
|
27
|
+
"shared group", hash_including(:location), &block
|
28
28
|
)
|
29
29
|
@main.__send__ method, "shared group", &block
|
30
30
|
end
|
@@ -65,7 +65,7 @@ module Spec
|
|
65
65
|
it "registers a shared ExampleGroup" do
|
66
66
|
block = lambda {|a,b|}
|
67
67
|
Spec::Example::ExampleGroupFactory.should_receive(:create_shared_example_group).with(
|
68
|
-
group_name, hash_including(:
|
68
|
+
group_name, hash_including(:location), &block
|
69
69
|
)
|
70
70
|
@main.share_as group_name, &block
|
71
71
|
end
|
@@ -92,52 +92,46 @@ module Spec
|
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
95
|
-
it "should create a type indicated by :
|
95
|
+
it "should create a type indicated by :location" do
|
96
96
|
Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
|
97
97
|
custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
98
|
-
"example_group", :
|
98
|
+
"example_group", :location => "./spec/something_other_than_default/some_spec.rb"
|
99
99
|
) {}
|
100
100
|
custom_example_group.superclass.should == parent_example_group
|
101
101
|
end
|
102
102
|
|
103
|
-
it "should create a type indicated by :
|
103
|
+
it "should create a type indicated by :location (with location generated by caller on windows)" do
|
104
104
|
Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
|
105
105
|
custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
106
106
|
"example_group",
|
107
|
-
:
|
107
|
+
:location => "./spec\\something_other_than_default\\some_spec.rb"
|
108
108
|
) {}
|
109
109
|
custom_example_group.superclass.should == parent_example_group
|
110
110
|
end
|
111
111
|
|
112
|
-
it "should create a type indicated by
|
112
|
+
it "should create a type indicated by location for a path-like key" do
|
113
113
|
Spec::Example::ExampleGroupFactory.register('path/to/custom/', parent_example_group)
|
114
114
|
custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
115
|
-
"example_group", :
|
115
|
+
"example_group", :location => "./spec/path/to/custom/some_spec.rb"
|
116
116
|
) {}
|
117
117
|
custom_example_group.superclass.should == parent_example_group
|
118
118
|
end
|
119
119
|
|
120
|
-
it "should use the longest key that matches when creating a type indicated by
|
120
|
+
it "should use the longest key that matches when creating a type indicated by location" do
|
121
121
|
longer = Class.new parent_example_group
|
122
122
|
Spec::Example::ExampleGroupFactory.register(:longer, longer)
|
123
123
|
long = Class.new parent_example_group
|
124
124
|
Spec::Example::ExampleGroupFactory.register(:long, long)
|
125
125
|
custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
126
|
-
"example_group", :
|
126
|
+
"example_group", :location => "./spec/longer/some_spec.rb"
|
127
127
|
) {}
|
128
128
|
custom_example_group.superclass.should == longer
|
129
129
|
end
|
130
130
|
|
131
|
-
it "sets the spec_path from the caller" do
|
132
|
-
options = {}
|
133
|
-
shared_example_group = Spec::Example::ExampleGroupFactory.create_example_group("foo", options) {}
|
134
|
-
options[:spec_path].should =~ /#{__FILE__}:#{__LINE__ - 1}/
|
135
|
-
end
|
136
|
-
|
137
131
|
describe "with :shared => true" do
|
138
132
|
def shared_example_group
|
139
133
|
@shared_example_group ||= Spec::Example::ExampleGroupFactory.create_example_group(
|
140
|
-
"name", :
|
134
|
+
"name", :location => '/blah/spec/models/blah.rb', :type => :controller, :shared => true
|
141
135
|
) {}
|
142
136
|
end
|
143
137
|
|
@@ -147,10 +141,10 @@ module Spec
|
|
147
141
|
end
|
148
142
|
end
|
149
143
|
|
150
|
-
it "should favor the :type over the :
|
144
|
+
it "should favor the :type over the :location" do
|
151
145
|
Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
|
152
146
|
custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
153
|
-
"name", :
|
147
|
+
"name", :location => '/blah/spec/models/blah.rb', :type => :something_other_than_default
|
154
148
|
) {}
|
155
149
|
custom_example_group.superclass.should == parent_example_group
|
156
150
|
end
|
@@ -179,12 +173,6 @@ module Spec
|
|
179
173
|
shared_example_group.should be_an_instance_of(Spec::Example::SharedExampleGroup)
|
180
174
|
SharedExampleGroup.should include(shared_example_group)
|
181
175
|
end
|
182
|
-
|
183
|
-
it "sets the spec_path from the caller" do
|
184
|
-
options = {}
|
185
|
-
shared_example_group = Spec::Example::ExampleGroupFactory.create_shared_example_group("foo", options) {}
|
186
|
-
options[:spec_path].should =~ /#{__FILE__}:#{__LINE__ - 1}/
|
187
|
-
end
|
188
176
|
end
|
189
177
|
|
190
178
|
end
|
@@ -44,7 +44,7 @@ module Spec
|
|
44
44
|
end
|
45
45
|
|
46
46
|
it "records the spec path" do
|
47
|
-
@child_example_group.
|
47
|
+
@child_example_group.location.should =~ /#{__FILE__}:#{__LINE__ - 15}/
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
@@ -74,24 +74,49 @@ module Spec
|
|
74
74
|
}.should change { @example_group.examples.length }.by(1)
|
75
75
|
end
|
76
76
|
|
77
|
-
describe "
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
77
|
+
describe "with no location supplied" do
|
78
|
+
describe "creates an ExampleProxy" do
|
79
|
+
before(:all) do
|
80
|
+
@example_group = Class.new(ExampleGroupDouble).describe("bar")
|
81
|
+
@example_proxy = @example_group.__send__(method, "foo", {:this => :that}) {}
|
82
|
+
end
|
83
|
+
|
84
|
+
specify "with a description" do
|
85
|
+
@example_proxy.description.should == "foo"
|
86
|
+
end
|
86
87
|
|
87
|
-
|
88
|
-
|
88
|
+
specify "with options" do
|
89
|
+
@example_proxy.options.should == {:this => :that}
|
90
|
+
end
|
91
|
+
|
92
|
+
specify "with a default backtrace" do
|
93
|
+
@example_proxy.backtrace.should =~ /#{__FILE__}:#{__LINE__ - 12}/
|
94
|
+
end
|
95
|
+
|
96
|
+
specify "with a default location" do
|
97
|
+
@example_proxy.location.should =~ /#{__FILE__}:#{__LINE__ - 16}/
|
98
|
+
end
|
89
99
|
end
|
90
|
-
|
91
|
-
|
92
|
-
|
100
|
+
end
|
101
|
+
|
102
|
+
describe "with a location supplied" do
|
103
|
+
describe "creates an ExampleProxy" do
|
104
|
+
before(:all) do
|
105
|
+
@example_group = Class.new(ExampleGroupDouble).describe("bar")
|
106
|
+
@example_proxy = @example_group.__send__(method, "foo", {:this => :that}, "the location") {}
|
107
|
+
end
|
108
|
+
|
109
|
+
specify "with the supplied location as #backtrace" do
|
110
|
+
@example_proxy.backtrace.should == "the location"
|
111
|
+
end
|
112
|
+
|
113
|
+
specify "with the supplied location as #location" do
|
114
|
+
@example_proxy.location.should == "the location"
|
115
|
+
end
|
93
116
|
end
|
94
117
|
end
|
118
|
+
|
119
|
+
|
95
120
|
end
|
96
121
|
end
|
97
122
|
|
@@ -334,15 +359,15 @@ module Spec
|
|
334
359
|
|
335
360
|
describe "#set_description(Hash representing options)" do
|
336
361
|
before(:each) do
|
337
|
-
example_group.set_description(:a => "b", :
|
362
|
+
example_group.set_description(:a => "b", :location => "blah")
|
338
363
|
end
|
339
364
|
|
340
|
-
it ".
|
341
|
-
example_group.
|
365
|
+
it ".location should expand the passed in :location option passed into the constructor" do
|
366
|
+
example_group.location.should == File.expand_path("blah")
|
342
367
|
end
|
343
368
|
|
344
369
|
it ".options should return all the options passed in" do
|
345
|
-
example_group.options.should == {:a => "b", :
|
370
|
+
example_group.options.should == {:a => "b", :location => "blah"}
|
346
371
|
end
|
347
372
|
|
348
373
|
end
|
@@ -665,4 +690,4 @@ module Spec
|
|
665
690
|
end
|
666
691
|
end
|
667
692
|
end
|
668
|
-
end
|
693
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Example
|
5
|
+
describe ExampleGroupProxy do
|
6
|
+
before(:each) do
|
7
|
+
@group = stub("example group").as_null_object
|
8
|
+
end
|
9
|
+
|
10
|
+
attr_reader :group
|
11
|
+
def proxy
|
12
|
+
@proxy ||= ExampleGroupProxy.new(@group)
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "#description" do
|
16
|
+
it "provides the example group's description" do
|
17
|
+
group.stub!(:description => "the description")
|
18
|
+
proxy.description.should == "the description"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#nested_descriptions" do
|
23
|
+
it "provides the example group's nested_descriptions" do
|
24
|
+
group.stub!(:nested_descriptions => ["the description"])
|
25
|
+
proxy.nested_descriptions.should == ["the description"]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "#filtered_description" do
|
30
|
+
it "builds the description from the group's nested_descriptions" do
|
31
|
+
group.stub!(:nested_descriptions => ["ignore","the","description"])
|
32
|
+
proxy.filtered_description(/ignore/).should == "the description"
|
33
|
+
end
|
34
|
+
it "filters out description parts that match the supplied regexp" do
|
35
|
+
group.stub!(:nested_descriptions => ["ignore this one","the","description"])
|
36
|
+
proxy.filtered_description(/ignore/).should == "the description"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "#examples" do
|
41
|
+
it "provides a collection of example group proxies" do
|
42
|
+
group.stub!(:example_proxies => ["array","of","proxies"])
|
43
|
+
proxy.examples.should == ["array","of","proxies"]
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "#backtrace (deprecated - use #location)" do
|
48
|
+
it "provides the location of the declaration of this group" do
|
49
|
+
group.stub!(:backtrace => "path/to/location:37")
|
50
|
+
proxy.backtrace.should == "path/to/location:37"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "#location" do
|
55
|
+
it "provides the location of the declaration of this group" do
|
56
|
+
group.stub!(:location => "path/to/location:37")
|
57
|
+
proxy.location.should == "path/to/location:37"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -108,6 +108,21 @@ module Spec
|
|
108
108
|
reporter.should_not_receive(:add_example_group)
|
109
109
|
example_group.run(options)
|
110
110
|
end
|
111
|
+
|
112
|
+
it "should report the start of an example run" do
|
113
|
+
reporter.should_receive(:example_started) do |example|
|
114
|
+
example.should equal(example_group.examples[0])
|
115
|
+
end
|
116
|
+
example_group.run(options)
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should report the end of an example run" do
|
120
|
+
reporter.should_receive(:example_finished) do |example, execution_error|
|
121
|
+
example.should equal(example_group.examples[0])
|
122
|
+
execution_error.should be_nil
|
123
|
+
end
|
124
|
+
example_group.run(options)
|
125
|
+
end
|
111
126
|
|
112
127
|
describe "when before_each fails" do
|
113
128
|
before(:each) do
|