rspec 1.1.0 → 1.1.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.
data/CHANGES CHANGED
@@ -1,3 +1,10 @@
1
+ == Version 1.1.1
2
+
3
+ Bug fix release.
4
+
5
+ * Fix regression in 1.1.0 that caused transactions to not get rolled back between examples.
6
+ * Applied patch from Bob Cotton to reintroduce ExampleGroup.description_options. Closes LH[#186]
7
+
1
8
  == Version 1.1.0
2
9
 
3
10
  The "tell me a story and go nest yourself" release.
@@ -39,6 +46,7 @@ rspec_on_rails users - don't forget to run script/generate rspec
39
46
  * Applied LH[#134] Only load spec inside spec_helper.rb (Patch from Mark Van Holstyn)
40
47
  * RSpec now bails immediately if there are examples with identical names.
41
48
  * Applied LH[#132] Plain Text stories should support Given and Given: (Patch from Jarkko Laine)
49
+ * Applied patch from Pat Maddox: Story Mediator - the glue that binds the plain text story parser with the rest of the system
42
50
  * Applied LH[#16] Have SimpleMatchers expose their description for specdocs (Patch from Bryan Helmkamp)
43
51
  * Stories now support --colour
44
52
  * Changed the DSL modules to Example (i.e. Spec::Example instead of Spec::DSL)
data/Rakefile CHANGED
@@ -126,7 +126,7 @@ task :clobber do
126
126
  core.clobber
127
127
  end
128
128
 
129
- task :release => [:clobber, :verify_committed, :verify_user, :spec, :publish_packages, :tag, :publish_website, :publish_news]
129
+ task :release => [:clobber, :verify_committed, :verify_user, :spec, :publish_packages, :tag, :publish_news]
130
130
 
131
131
  desc "Verifies that there is no uncommitted code"
132
132
  task :verify_committed do
@@ -19,9 +19,9 @@ module SharedExampleGroupExample
19
19
  end
20
20
  end
21
21
 
22
- # A SharedExampleGroup is a module, so you can assign
23
- # it to a constant if you want ....
24
- AllThings = shared_examples_for "All Things" do
22
+ # A SharedExampleGroup is an example group that doesn't get run.
23
+ # You can create one like this:
24
+ share_examples_for "most things" do
25
25
  def helper_method
26
26
  "helper method"
27
27
  end
@@ -30,17 +30,24 @@ module SharedExampleGroupExample
30
30
  @thing.what_things_do.should == "stuff"
31
31
  end
32
32
  end
33
-
34
- # TODO - it would be nice to be able to say this instead of the above:
35
-
36
- # class AllThings < Spec::SharedExampleGroup
37
- # ...
38
- # end
39
33
 
34
+ # A SharedExampleGroup is also module. If you create one like this
35
+ # it gets assigned to the constant AllThings
36
+ share_as :MostThings do
37
+ def helper_method
38
+ "helper method"
39
+ end
40
+
41
+ it "should do what things do" do
42
+ @thing.what_things_do.should == "stuff"
43
+ end
44
+ end
45
+
40
46
  describe OneThing do
41
- # ... then you can include the example group like this, which
47
+ # Now you can include the shared example group like this, which
42
48
  # feels more like what you might say ...
43
- it_should_behave_like "All Things"
49
+ it_should_behave_like "most things"
50
+
44
51
  before(:each) { @thing = OneThing.new }
45
52
 
46
53
  it "should have access to helper methods defined in the shared example group" do
@@ -51,16 +58,24 @@ module SharedExampleGroupExample
51
58
  describe AnotherThing do
52
59
  # ... or you can include the example group like this, which
53
60
  # feels more like the programming language we love.
54
- it_should_behave_like AllThings
61
+ it_should_behave_like MostThings
55
62
 
56
63
  before(:each) { @thing = AnotherThing.new }
64
+
65
+ it "should have access to helper methods defined in the shared example group" do
66
+ helper_method.should == "helper method"
67
+ end
57
68
  end
58
69
 
59
70
  describe YetAnotherThing do
60
71
  # ... or you can include the example group like this, which
61
72
  # feels more like the programming language we love.
62
- include AllThings
73
+ include MostThings
63
74
 
64
75
  before(:each) { @thing = AnotherThing.new }
76
+
77
+ it "should have access to helper methods defined in the shared example group" do
78
+ helper_method.should == "helper method"
79
+ end
65
80
  end
66
81
  end
@@ -11,7 +11,7 @@ module Spec
11
11
  end
12
12
  end
13
13
 
14
- attr_reader :description_text, :description_args, :spec_path
14
+ attr_reader :description_text, :description_args, :description_options, :spec_path
15
15
 
16
16
  def inherited(klass)
17
17
  super
@@ -122,7 +122,12 @@ module Spec
122
122
  end
123
123
 
124
124
  def description
125
- ExampleGroupMethods.description_text(*description_parts)
125
+ result = ExampleGroupMethods.description_text(*description_parts)
126
+ if result.nil? || result == ""
127
+ return to_s
128
+ else
129
+ result
130
+ end
126
131
  end
127
132
 
128
133
  def described_type
@@ -140,6 +145,7 @@ module Spec
140
145
  def set_description(*args)
141
146
  args, options = args_and_options(*args)
142
147
  @description_args = args
148
+ @description_options = options
143
149
  @description_text = ExampleGroupMethods.description_text(*args)
144
150
  @spec_path = File.expand_path(options[:spec_path]) if options[:spec_path]
145
151
  if described_type.class == Module
@@ -409,4 +415,4 @@ module Spec
409
415
  end
410
416
 
411
417
  end
412
- end
418
+ end
@@ -2,7 +2,7 @@ module Spec
2
2
  module Extensions
3
3
  module Main
4
4
  # Creates and returns a class that includes the ExampleGroupMethods
5
- # module. The ExampleGroup sub-class depends on the directory of the file
5
+ # module. Which ExampleGroup type is created depends on the directory of the file
6
6
  # calling this method. For example, Spec::Rails will use different
7
7
  # classes for specs living in <tt>spec/models</tt>,
8
8
  # <tt>spec/helpers</tt>, <tt>spec/views</tt> and
@@ -28,10 +28,58 @@ module Spec
28
28
  end
29
29
  alias :context :describe
30
30
 
31
- # Shortcut for creating a shared example group
32
- def shared_examples_for(name, &block)
31
+ # Creates an example group that can be shared by other example groups
32
+ #
33
+ # == Examples
34
+ #
35
+ # share_examples_for "All Editions" do
36
+ # it "all editions behaviour" ...
37
+ # end
38
+ #
39
+ # describe SmallEdition do
40
+ # it_should_behave_like "All Editions"
41
+ #
42
+ # it "should do small edition stuff" do
43
+ # ...
44
+ # end
45
+ # end
46
+ def share_examples_for(name, &block)
33
47
  describe(name, :shared => true, &block)
34
48
  end
49
+
50
+ alias :shared_examples_for :share_examples_for
51
+
52
+ # Creates a Shared Example Group and assigns it to a constant
53
+ #
54
+ # share_as :AllEditions do
55
+ # it "should do all editions stuff" ...
56
+ # end
57
+ #
58
+ # describe SmallEdition do
59
+ # it_should_behave_like AllEditions
60
+ #
61
+ # it "should do small edition stuff" do
62
+ # ...
63
+ # end
64
+ # end
65
+ #
66
+ # And, for those of you who prefer to use something more like Ruby, you
67
+ # can just include the module directly
68
+ #
69
+ # describe SmallEdition do
70
+ # include AllEditions
71
+ #
72
+ # it "should do small edition stuff" do
73
+ # ...
74
+ # end
75
+ # end
76
+ def share_as(name, &block)
77
+ begin
78
+ Object.const_set(name, share_examples_for(name, &block))
79
+ rescue NameError => e
80
+ raise NameError.new(e.message + "\nThe first argument to share_as must be a legal name for a constant\n")
81
+ end
82
+ end
35
83
 
36
84
  private
37
85
 
data/lib/spec/runner.rb CHANGED
@@ -9,12 +9,12 @@ require 'spec/runner/spec_parser'
9
9
  require 'spec/runner/class_and_arguments_parser'
10
10
 
11
11
  module Spec
12
- # == Behaviours and Examples
12
+ # == ExampleGroups and Examples
13
13
  #
14
- # Rather than expressing examples in classes, RSpec uses a custom domain specific language to
15
- # describe Behaviours and Examples of those behaviours.
14
+ # Rather than expressing examples in classes, RSpec uses a custom DSLL (DSL light) to
15
+ # describe groups of examples.
16
16
  #
17
- # A Example is the equivalent of a fixture in xUnit-speak. It is a metaphor for the context
17
+ # A ExampleGroup is the equivalent of a fixture in xUnit-speak. It is a metaphor for the context
18
18
  # in which you will run your executable example - a set of known objects in a known starting state.
19
19
  # We begin be describing
20
20
  #
@@ -123,11 +123,11 @@ module Spec
123
123
  # end
124
124
  # end
125
125
  #
126
- # == Shared behaviour
126
+ # == Shared Example Groups
127
127
  #
128
- # You can define a shared behaviour, that may be used on other behaviours
128
+ # You can define a shared Example Group, that may be used on other groups
129
129
  #
130
- # describe "All Editions", :shared => true do
130
+ # share_examples_for "All Editions" do
131
131
  # it "all editions behaviour" ...
132
132
  # end
133
133
  #
@@ -139,9 +139,9 @@ module Spec
139
139
  # end
140
140
  # end
141
141
  #
142
- # You can also assign the shared behaviour to a module and include that
142
+ # You can also assign the shared group to a module and include that
143
143
  #
144
- # AllEditions = describe "All Editions", :shared => true do
144
+ # share_as :AllEditions do
145
145
  # it "should do all editions stuff" ...
146
146
  # end
147
147
  #
@@ -7,11 +7,7 @@ module Spec
7
7
  def add_example_group(example_group)
8
8
  super
9
9
  output.puts
10
- if example_group.description.nil? || example_group.description == ""
11
- output.puts example_group.to_s
12
- else
13
- output.puts example_group.description
14
- end
10
+ output.puts example_group.description
15
11
  output.flush
16
12
  end
17
13
 
data/lib/spec/version.rb CHANGED
@@ -3,10 +3,10 @@ module Spec
3
3
  unless defined? MAJOR
4
4
  MAJOR = 1
5
5
  MINOR = 1
6
- TINY = 0
6
+ TINY = 1
7
7
  RELEASE_CANDIDATE = nil
8
8
 
9
- BUILD_TIME_UTC = 20071214045307
9
+ BUILD_TIME_UTC = 20071217181808
10
10
 
11
11
  STRING = [MAJOR, MINOR, TINY].join('.')
12
12
  TAG = "REL_#{[MAJOR, MINOR, TINY, RELEASE_CANDIDATE].compact.join('_')}".upcase.gsub(/\.|-/, '_')
@@ -2,288 +2,280 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
2
 
3
3
  module Spec
4
4
  module Example
5
- ConfigurationSpec =
6
- describe Configuration, :shared => true do
7
- before(:each) do
8
- @config = Configuration.new
9
- @example_group = mock("example_group")
10
- end
11
- end
12
5
 
13
- describe Configuration, "#mock_with" do
14
- include ConfigurationSpec
15
- it "should default mock framework to rspec" do
16
- @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/rspec$/
6
+ describe Configuration do
7
+ before(:each) do
8
+ @config = Configuration.new
9
+ @example_group = mock("example_group")
17
10
  end
11
+
12
+ describe "#mock_with" do
18
13
 
19
- it "should let you set rspec mocking explicitly" do
20
- @config.mock_with(:rspec)
21
- @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/rspec$/
22
- end
14
+ it "should default mock framework to rspec" do
15
+ @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/rspec$/
16
+ end
23
17
 
24
- it "should let you set mocha" do
25
- @config.mock_with(:mocha)
26
- @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/mocha$/
27
- end
18
+ it "should let you set rspec mocking explicitly" do
19
+ @config.mock_with(:rspec)
20
+ @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/rspec$/
21
+ end
28
22
 
29
- it "should let you set flexmock" do
30
- @config.mock_with(:flexmock)
31
- @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/flexmock$/
32
- end
23
+ it "should let you set mocha" do
24
+ @config.mock_with(:mocha)
25
+ @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/mocha$/
26
+ end
33
27
 
34
- it "should let you set rr" do
35
- @config.mock_with(:rr)
36
- @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/rr$/
37
- end
28
+ it "should let you set flexmock" do
29
+ @config.mock_with(:flexmock)
30
+ @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/flexmock$/
31
+ end
38
32
 
39
- it "should let you set an arbitrary adapter module" do
40
- adapter = Module.new
41
- @config.mock_with(adapter)
42
- @config.mock_framework.should == adapter
33
+ it "should let you set rr" do
34
+ @config.mock_with(:rr)
35
+ @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/rr$/
36
+ end
37
+
38
+ it "should let you set an arbitrary adapter module" do
39
+ adapter = Module.new
40
+ @config.mock_with(adapter)
41
+ @config.mock_framework.should == adapter
42
+ end
43
43
  end
44
- end
45
44
 
46
- describe Configuration, "#include" do
47
- include ConfigurationSpec
45
+ describe "#include" do
48
46
 
49
- before do
50
- @original_configuration = Spec::Runner.configuration
51
- spec_configuration = @config
52
- Spec::Runner.instance_eval {@configuration = spec_configuration}
53
- @example_group_class = Class.new(ExampleGroup) do
54
- class << self
55
- def this_class_has_special_methods
47
+ before do
48
+ @original_configuration = Spec::Runner.configuration
49
+ spec_configuration = @config
50
+ Spec::Runner.instance_eval {@configuration = spec_configuration}
51
+ @example_group_class = Class.new(ExampleGroup) do
52
+ class << self
53
+ def this_class_has_special_methods
54
+ end
56
55
  end
57
56
  end
57
+ ExampleGroupFactory.register(:foobar, @example_group_class)
58
58
  end
59
- ExampleGroupFactory.register(:foobar, @example_group_class)
60
- end
61
59
 
62
- after do
63
- original_configuration = @original_configuration
64
- Spec::Runner.instance_eval {@configuration = original_configuration}
65
- ExampleGroupFactory.reset
66
- end
60
+ after do
61
+ original_configuration = @original_configuration
62
+ Spec::Runner.instance_eval {@configuration = original_configuration}
63
+ ExampleGroupFactory.reset
64
+ end
67
65
 
68
- it "should include the submitted module in ExampleGroup subclasses" do
69
- mod = Module.new
70
- @config.include mod
71
- Class.new(@example_group_class).included_modules.should include(mod)
72
- end
66
+ it "should include the submitted module in ExampleGroup subclasses" do
67
+ mod = Module.new
68
+ @config.include mod
69
+ Class.new(@example_group_class).included_modules.should include(mod)
70
+ end
73
71
 
74
- it "should let you define modules to be included for a specific type" do
75
- mod = Module.new
76
- @config.include mod, :type => :foobar
77
- Class.new(@example_group_class).included_modules.should include(mod)
78
- end
72
+ it "should let you define modules to be included for a specific type" do
73
+ mod = Module.new
74
+ @config.include mod, :type => :foobar
75
+ Class.new(@example_group_class).included_modules.should include(mod)
76
+ end
79
77
 
80
- it "should not include modules in a type they are not intended for" do
81
- mod = Module.new
82
- @other_example_group_class = Class.new(ExampleGroup)
83
- ExampleGroupFactory.register(:baz, @other_example_group_class)
78
+ it "should not include modules in a type they are not intended for" do
79
+ mod = Module.new
80
+ @other_example_group_class = Class.new(ExampleGroup)
81
+ ExampleGroupFactory.register(:baz, @other_example_group_class)
84
82
 
85
- @config.include mod, :type => :foobar
83
+ @config.include mod, :type => :foobar
84
+
85
+ Class.new(@other_example_group_class).included_modules.should_not include(mod)
86
+ end
86
87
 
87
- Class.new(@other_example_group_class).included_modules.should_not include(mod)
88
- end
89
-
90
- it "should not extend the ExampleGroup baseclass (to enable the included hook to work properly)" do
91
- pending("need to figure out how to best express this one")
92
88
  end
89
+
93
90
  end
94
91
 
95
- ConfigurationCallbacksSpec =
96
- describe Configuration, "callbacks", :shared => true do
97
- before do
98
- @config = Configuration.new
99
- @special_example_group = Class.new(ExampleGroup)
100
- @special_child_example_group = Class.new(@special_example_group)
101
- @nonspecial_example_group = Class.new(ExampleGroup)
102
- ExampleGroupFactory.register(:special, @special_example_group)
103
- ExampleGroupFactory.register(:special_child, @special_child_example_group)
104
- ExampleGroupFactory.register(:non_special, @nonspecial_example_group)
105
- @example_group = @special_child_example_group.describe "Special Example Group"
106
- @unselected_example_group = Class.new(@nonspecial_example_group).describe "Non Special Example Group"
107
- end
108
-
109
- after do
110
- ExampleGroupFactory.reset
111
- end
92
+ describe Configuration do
93
+
94
+ before(:each) do
95
+ @config = Configuration.new
96
+ @special_example_group = Class.new(ExampleGroup)
97
+ @special_child_example_group = Class.new(@special_example_group)
98
+ @nonspecial_example_group = Class.new(ExampleGroup)
99
+ ExampleGroupFactory.register(:special, @special_example_group)
100
+ ExampleGroupFactory.register(:special_child, @special_child_example_group)
101
+ ExampleGroupFactory.register(:non_special, @nonspecial_example_group)
102
+ @example_group = @special_child_example_group.describe "Special Example Group"
103
+ @unselected_example_group = Class.new(@nonspecial_example_group).describe "Non Special Example Group"
112
104
  end
113
105
 
114
- describe Configuration, "#prepend_before" do
115
- include ConfigurationCallbacksSpec
106
+ after(:each) do
107
+ ExampleGroupFactory.reset
108
+ end
116
109
 
117
- it "prepends the before block on all instances of the passed in type" do
118
- order = []
119
- @config.prepend_before(:all) do
120
- order << :prepend__before_all
121
- end
122
- @config.prepend_before(:all, :type => :special) do
123
- order << :special_prepend__before_all
124
- end
125
- @config.prepend_before(:all, :type => :special_child) do
126
- order << :special_child_prepend__before_all
127
- end
128
- @config.prepend_before(:each) do
129
- order << :prepend__before_each
130
- end
131
- @config.prepend_before(:each, :type => :special) do
132
- order << :special_prepend__before_each
133
- end
134
- @config.prepend_before(:each, :type => :special_child) do
135
- order << :special_child_prepend__before_each
136
- end
137
- @config.prepend_before(:all, :type => :non_special) do
138
- order << :special_prepend__before_all
139
- end
140
- @config.prepend_before(:each, :type => :non_special) do
141
- order << :special_prepend__before_each
142
- end
143
- @example_group.it "calls prepend_before" do
144
- end
110
+ describe "#prepend_before" do
111
+ it "prepends the before block on all instances of the passed in type" do
112
+ order = []
113
+ @config.prepend_before(:all) do
114
+ order << :prepend__before_all
115
+ end
116
+ @config.prepend_before(:all, :type => :special) do
117
+ order << :special_prepend__before_all
118
+ end
119
+ @config.prepend_before(:all, :type => :special_child) do
120
+ order << :special_child_prepend__before_all
121
+ end
122
+ @config.prepend_before(:each) do
123
+ order << :prepend__before_each
124
+ end
125
+ @config.prepend_before(:each, :type => :special) do
126
+ order << :special_prepend__before_each
127
+ end
128
+ @config.prepend_before(:each, :type => :special_child) do
129
+ order << :special_child_prepend__before_each
130
+ end
131
+ @config.prepend_before(:all, :type => :non_special) do
132
+ order << :special_prepend__before_all
133
+ end
134
+ @config.prepend_before(:each, :type => :non_special) do
135
+ order << :special_prepend__before_each
136
+ end
137
+ @example_group.it "calls prepend_before" do
138
+ end
145
139
 
146
- @example_group.run
147
- order.should == [
148
- :prepend__before_all,
149
- :special_prepend__before_all,
150
- :special_child_prepend__before_all,
151
- :prepend__before_each,
152
- :special_prepend__before_each,
153
- :special_child_prepend__before_each
154
- ]
140
+ @example_group.run
141
+ order.should == [
142
+ :prepend__before_all,
143
+ :special_prepend__before_all,
144
+ :special_child_prepend__before_all,
145
+ :prepend__before_each,
146
+ :special_prepend__before_each,
147
+ :special_child_prepend__before_each
148
+ ]
149
+ end
155
150
  end
156
- end
157
151
 
158
- describe Configuration, "#append_before" do
159
- include ConfigurationCallbacksSpec
152
+ describe "#append_before" do
160
153
 
161
- it "calls append_before on the type" do
162
- order = []
163
- @config.append_before(:all) do
164
- order << :append_before_all
165
- end
166
- @config.append_before(:all, :type => :special) do
167
- order << :special_append_before_all
168
- end
169
- @config.append_before(:all, :type => :special_child) do
170
- order << :special_child_append_before_all
171
- end
172
- @config.append_before(:each) do
173
- order << :append_before_each
174
- end
175
- @config.append_before(:each, :type => :special) do
176
- order << :special_append_before_each
177
- end
178
- @config.append_before(:each, :type => :special_child) do
179
- order << :special_child_append_before_each
180
- end
181
- @config.append_before(:all, :type => :non_special) do
182
- order << :special_append_before_all
183
- end
184
- @config.append_before(:each, :type => :non_special) do
185
- order << :special_append_before_each
186
- end
187
- @example_group.it "calls append_before" do
188
- end
154
+ it "calls append_before on the type" do
155
+ order = []
156
+ @config.append_before(:all) do
157
+ order << :append_before_all
158
+ end
159
+ @config.append_before(:all, :type => :special) do
160
+ order << :special_append_before_all
161
+ end
162
+ @config.append_before(:all, :type => :special_child) do
163
+ order << :special_child_append_before_all
164
+ end
165
+ @config.append_before(:each) do
166
+ order << :append_before_each
167
+ end
168
+ @config.append_before(:each, :type => :special) do
169
+ order << :special_append_before_each
170
+ end
171
+ @config.append_before(:each, :type => :special_child) do
172
+ order << :special_child_append_before_each
173
+ end
174
+ @config.append_before(:all, :type => :non_special) do
175
+ order << :special_append_before_all
176
+ end
177
+ @config.append_before(:each, :type => :non_special) do
178
+ order << :special_append_before_each
179
+ end
180
+ @example_group.it "calls append_before" do
181
+ end
189
182
 
190
- @example_group.run
191
- order.should == [
192
- :append_before_all,
193
- :special_append_before_all,
194
- :special_child_append_before_all,
195
- :append_before_each,
196
- :special_append_before_each,
197
- :special_child_append_before_each
198
- ]
183
+ @example_group.run
184
+ order.should == [
185
+ :append_before_all,
186
+ :special_append_before_all,
187
+ :special_child_append_before_all,
188
+ :append_before_each,
189
+ :special_append_before_each,
190
+ :special_child_append_before_each
191
+ ]
192
+ end
199
193
  end
200
- end
201
194
 
202
- describe Configuration, "#prepend_after" do
203
- include ConfigurationCallbacksSpec
195
+ describe "#prepend_after" do
204
196
 
205
- it "prepends the after block on all instances of the passed in type" do
206
- order = []
207
- @config.prepend_after(:all) do
208
- order << :prepend__after_all
209
- end
210
- @config.prepend_after(:all, :type => :special) do
211
- order << :special_prepend__after_all
212
- end
213
- @config.prepend_after(:all, :type => :special) do
214
- order << :special_child_prepend__after_all
215
- end
216
- @config.prepend_after(:each) do
217
- order << :prepend__after_each
218
- end
219
- @config.prepend_after(:each, :type => :special) do
220
- order << :special_prepend__after_each
221
- end
222
- @config.prepend_after(:each, :type => :special) do
223
- order << :special_child_prepend__after_each
224
- end
225
- @config.prepend_after(:all, :type => :non_special) do
226
- order << :special_prepend__after_all
227
- end
228
- @config.prepend_after(:each, :type => :non_special) do
229
- order << :special_prepend__after_each
230
- end
231
- @example_group.it "calls prepend_after" do
232
- end
197
+ it "prepends the after block on all instances of the passed in type" do
198
+ order = []
199
+ @config.prepend_after(:all) do
200
+ order << :prepend__after_all
201
+ end
202
+ @config.prepend_after(:all, :type => :special) do
203
+ order << :special_prepend__after_all
204
+ end
205
+ @config.prepend_after(:all, :type => :special) do
206
+ order << :special_child_prepend__after_all
207
+ end
208
+ @config.prepend_after(:each) do
209
+ order << :prepend__after_each
210
+ end
211
+ @config.prepend_after(:each, :type => :special) do
212
+ order << :special_prepend__after_each
213
+ end
214
+ @config.prepend_after(:each, :type => :special) do
215
+ order << :special_child_prepend__after_each
216
+ end
217
+ @config.prepend_after(:all, :type => :non_special) do
218
+ order << :special_prepend__after_all
219
+ end
220
+ @config.prepend_after(:each, :type => :non_special) do
221
+ order << :special_prepend__after_each
222
+ end
223
+ @example_group.it "calls prepend_after" do
224
+ end
233
225
 
234
- @example_group.run
235
- order.should == [
236
- :special_child_prepend__after_each,
237
- :special_prepend__after_each,
238
- :prepend__after_each,
239
- :special_child_prepend__after_all,
240
- :special_prepend__after_all,
241
- :prepend__after_all
242
- ]
226
+ @example_group.run
227
+ order.should == [
228
+ :special_child_prepend__after_each,
229
+ :special_prepend__after_each,
230
+ :prepend__after_each,
231
+ :special_child_prepend__after_all,
232
+ :special_prepend__after_all,
233
+ :prepend__after_all
234
+ ]
235
+ end
243
236
  end
244
- end
245
237
 
246
- describe Configuration, "#append_after" do
247
- include ConfigurationCallbacksSpec
238
+ describe "#append_after" do
248
239
 
249
- it "calls append_after on the type" do
250
- order = []
251
- @config.append_after(:all) do
252
- order << :append__after_all
253
- end
254
- @config.append_after(:all, :type => :special) do
255
- order << :special_append__after_all
256
- end
257
- @config.append_after(:all, :type => :special_child) do
258
- order << :special_child_append__after_all
259
- end
260
- @config.append_after(:each) do
261
- order << :append__after_each
262
- end
263
- @config.append_after(:each, :type => :special) do
264
- order << :special_append__after_each
265
- end
266
- @config.append_after(:each, :type => :special_child) do
267
- order << :special_child_append__after_each
268
- end
269
- @config.append_after(:all, :type => :non_special) do
270
- order << :non_special_append_after_all
271
- end
272
- @config.append_after(:each, :type => :non_special) do
273
- order << :non_special_append_after_each
274
- end
275
- @example_group.it "calls append_after" do
276
- end
240
+ it "calls append_after on the type" do
241
+ order = []
242
+ @config.append_after(:all) do
243
+ order << :append__after_all
244
+ end
245
+ @config.append_after(:all, :type => :special) do
246
+ order << :special_append__after_all
247
+ end
248
+ @config.append_after(:all, :type => :special_child) do
249
+ order << :special_child_append__after_all
250
+ end
251
+ @config.append_after(:each) do
252
+ order << :append__after_each
253
+ end
254
+ @config.append_after(:each, :type => :special) do
255
+ order << :special_append__after_each
256
+ end
257
+ @config.append_after(:each, :type => :special_child) do
258
+ order << :special_child_append__after_each
259
+ end
260
+ @config.append_after(:all, :type => :non_special) do
261
+ order << :non_special_append_after_all
262
+ end
263
+ @config.append_after(:each, :type => :non_special) do
264
+ order << :non_special_append_after_each
265
+ end
266
+ @example_group.it "calls append_after" do
267
+ end
277
268
 
278
- @example_group.run
279
- order.should == [
280
- :special_child_append__after_each,
281
- :special_append__after_each,
282
- :append__after_each,
283
- :special_child_append__after_all,
284
- :special_append__after_all,
285
- :append__after_all
286
- ]
269
+ @example_group.run
270
+ order.should == [
271
+ :special_child_append__after_each,
272
+ :special_append__after_each,
273
+ :append__after_each,
274
+ :special_child_append__after_all,
275
+ :special_append__after_all,
276
+ :append__after_all
277
+ ]
278
+ end
287
279
  end
288
280
  end
289
281
  end
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/../../spec_helper'
2
2
 
3
3
  module Spec
4
4
  module Example
5
- describe ExampleGroupMethods do
5
+ describe 'ExampleGroupMethods' do
6
6
  it_should_behave_like "sandboxed rspec_options"
7
7
  attr_reader :example_group, :result, :reporter
8
8
  before(:each) do
@@ -294,6 +294,11 @@ module Spec
294
294
  it ".spec_path should expand the passed in :spec_path option passed into the constructor" do
295
295
  example_group.spec_path.should == File.expand_path("blah")
296
296
  end
297
+
298
+ it ".description_options should return all the options passed in" do
299
+ example_group.description_options.should == {:a => "b", :spec_path => "blah"}
300
+ end
301
+
297
302
  end
298
303
  end
299
304
 
@@ -315,6 +320,16 @@ module Spec
315
320
  end
316
321
  child_example_group.description.should == "ExampleGroup.foobar Does something"
317
322
  end
323
+
324
+ it "should return the class name if nil" do
325
+ example_group.set_description(nil)
326
+ example_group.description.should =~ /Class:/
327
+ end
328
+
329
+ it "should return the class name if nil" do
330
+ example_group.set_description("")
331
+ example_group.description.should =~ /Class:/
332
+ end
318
333
  end
319
334
 
320
335
  describe "#description_parts" do
@@ -340,7 +355,7 @@ module Spec
340
355
  ]
341
356
  end
342
357
  end
343
-
358
+
344
359
  describe "#described_type" do
345
360
  it "should return passed in type" do
346
361
  child_example_group = Class.new(example_group) do
@@ -41,10 +41,36 @@ module Spec
41
41
  rspec_options.example_groups.should_not include(example_group)
42
42
  end
43
43
 
44
- it "should create a shared ExampleGroup with shared_examples_for" do
45
- group = @main.shared_examples_for "all things" do end
44
+ it "should create a shared ExampleGroup with share_examples_for" do
45
+ group = @main.share_examples_for "all things" do end
46
46
  group.should be_an_instance_of(Spec::Example::SharedExampleGroup)
47
47
  end
48
+
49
+ describe "#share_as" do
50
+ before(:each) do
51
+ $share_as_examples_example_module_number ||= 1
52
+ $share_as_examples_example_module_number += 1
53
+ t = Time.new.to_i
54
+ @group_name = "Group#{$share_as_examples_example_module_number}"
55
+ end
56
+
57
+ it "should create a shared ExampleGroup" do
58
+ group = @main.share_as @group_name do end
59
+ group.should be_an_instance_of(Spec::Example::SharedExampleGroup)
60
+ end
61
+
62
+ it "should create a constant that points to a Module" do
63
+ group = @main.share_as @group_name do end
64
+ Object.const_get(@group_name).should equal(group)
65
+ end
66
+
67
+ it "should bark if you pass it something not-constantizable" do
68
+ lambda do
69
+ @group = @main.share_as "Non Constant" do end
70
+ end.should raise_error(NameError, /The first argument to share_as must be a legal name for a constant/)
71
+ end
72
+
73
+ end
48
74
  end
49
75
  end
50
76
  end
@@ -43,17 +43,17 @@ module Spec
43
43
  DRb.stop_service
44
44
  end
45
45
 
46
- xit "should run against local server" do
46
+ it "should run against local server" do
47
47
  out = run_spec_via_druby(['--version'])
48
48
  out.should =~ /RSpec/n
49
49
  end
50
50
 
51
- xit "should output green colorized text when running with --colour option" do
51
+ it "should output green colorized text when running with --colour option" do
52
52
  out = run_spec_via_druby(["--colour", @dummy_spec_filename])
53
53
  out.should =~ /\e\[32m/n
54
54
  end
55
55
 
56
- xit "should output red colorized text when running with -c option" do
56
+ it "should output red colorized text when running with -c option" do
57
57
  out = run_spec_via_druby(["-c", @dummy_spec_filename])
58
58
  out.should =~ /\e\[31m/n
59
59
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - RSpec Development Team
@@ -9,7 +9,7 @@ autorequire: spec
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2007-12-13 00:00:00 -06:00
12
+ date: 2007-12-17 00:00:00 -06:00
13
13
  default_executable: spec
14
14
  dependencies: []
15
15
 
@@ -385,6 +385,6 @@ rubyforge_project: rspec
385
385
  rubygems_version: 0.9.5
386
386
  signing_key:
387
387
  specification_version: 2
388
- summary: RSpec-1.1.0 (build 20071214045307) - BDD for Ruby http://rspec.rubyforge.org/
388
+ summary: RSpec-1.1.1 (build 20071217181808) - BDD for Ruby http://rspec.rubyforge.org/
389
389
  test_files: []
390
390