rspec-core 2.0.0.beta.9 → 2.0.0.beta.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. data/VERSION +1 -1
  2. data/features/configuration/custom_settings.feature +86 -0
  3. data/features/formatters/custom_formatter.feature +1 -1
  4. data/lib/rspec/core.rb +6 -1
  5. data/lib/rspec/core/backward_compatibility.rb +3 -5
  6. data/lib/rspec/core/command_line.rb +52 -0
  7. data/lib/rspec/core/configuration.rb +106 -118
  8. data/lib/rspec/core/configuration_options.rb +30 -88
  9. data/lib/rspec/core/deprecation.rb +3 -4
  10. data/lib/rspec/core/drb_command_line.rb +29 -0
  11. data/lib/rspec/core/formatters/base_formatter.rb +3 -8
  12. data/lib/rspec/core/formatters/base_text_formatter.rb +2 -2
  13. data/lib/rspec/core/formatters/documentation_formatter.rb +2 -2
  14. data/lib/rspec/core/kernel_extensions.rb +1 -1
  15. data/lib/rspec/core/metadata.rb +11 -11
  16. data/lib/rspec/core/option_parser.rb +84 -0
  17. data/lib/rspec/core/runner.rb +17 -42
  18. data/lib/rspec/core/world.rb +2 -2
  19. data/lib/rspec/monkey.rb +1 -0
  20. data/lib/rspec/monkey/spork/test_framework/rspec.rb +7 -0
  21. data/rspec-core.gemspec +18 -59
  22. data/spec/rspec/core/configuration_options_spec.rb +91 -7
  23. data/spec/rspec/core/configuration_spec.rb +52 -18
  24. data/spec/rspec/core/deprecations_spec.rb +4 -2
  25. data/spec/rspec/core/drb_command_line_spec.rb +151 -0
  26. data/spec/rspec/core/formatters/base_formatter_spec.rb +2 -1
  27. data/spec/rspec/core/formatters/base_text_formatter_spec.rb +1 -2
  28. data/spec/rspec/core/formatters/documentation_formatter_spec.rb +1 -2
  29. data/spec/rspec/core/formatters/progress_formatter_spec.rb +1 -2
  30. data/spec/rspec/core/resources/a_spec.rb +1 -1
  31. data/spec/rspec/core/runner_spec.rb +38 -27
  32. data/spec/rspec/core/shared_example_group_spec.rb +1 -1
  33. data/spec/spec_helper.rb +56 -41
  34. metadata +17 -58
  35. data/example_specs/failing/README.txt +0 -7
  36. data/example_specs/failing/diffing_spec.rb +0 -38
  37. data/example_specs/failing/failing_implicit_docstrings_example.rb +0 -19
  38. data/example_specs/failing/failure_in_after.rb +0 -10
  39. data/example_specs/failing/failure_in_before.rb +0 -10
  40. data/example_specs/failing/mocking_example.rb +0 -40
  41. data/example_specs/failing/mocking_with_flexmock.rb +0 -26
  42. data/example_specs/failing/mocking_with_mocha.rb +0 -25
  43. data/example_specs/failing/mocking_with_rr.rb +0 -27
  44. data/example_specs/failing/partial_mock_example.rb +0 -20
  45. data/example_specs/failing/pending_example.rb +0 -9
  46. data/example_specs/failing/predicate_example.rb +0 -34
  47. data/example_specs/failing/raising_example.rb +0 -47
  48. data/example_specs/failing/spec_helper.rb +0 -1
  49. data/example_specs/failing/syntax_error_example.rb +0 -7
  50. data/example_specs/failing/team_spec.rb +0 -43
  51. data/example_specs/failing/timeout_behaviour.rb +0 -7
  52. data/example_specs/passing/custom_formatter.rb +0 -12
  53. data/example_specs/passing/custom_matchers.rb +0 -54
  54. data/example_specs/passing/dynamic_spec.rb +0 -9
  55. data/example_specs/passing/file_accessor.rb +0 -19
  56. data/example_specs/passing/file_accessor_spec.rb +0 -38
  57. data/example_specs/passing/filtered_formatter.rb +0 -18
  58. data/example_specs/passing/filtered_formatter_example.rb +0 -31
  59. data/example_specs/passing/greeter_spec.rb +0 -31
  60. data/example_specs/passing/helper_method_example.rb +0 -14
  61. data/example_specs/passing/implicit_docstrings_example.rb +0 -18
  62. data/example_specs/passing/io_processor.rb +0 -8
  63. data/example_specs/passing/io_processor_spec.rb +0 -21
  64. data/example_specs/passing/mocking_example.rb +0 -27
  65. data/example_specs/passing/multi_threaded_example_group_runner.rb +0 -26
  66. data/example_specs/passing/nested_classes_example.rb +0 -36
  67. data/example_specs/passing/options_example.rb +0 -31
  68. data/example_specs/passing/options_formatter.rb +0 -20
  69. data/example_specs/passing/partial_mock_example.rb +0 -29
  70. data/example_specs/passing/pending_example.rb +0 -20
  71. data/example_specs/passing/predicate_example.rb +0 -27
  72. data/example_specs/passing/shared_example_group_example.rb +0 -81
  73. data/example_specs/passing/shared_stack_examples.rb +0 -36
  74. data/example_specs/passing/spec_helper.rb +0 -1
  75. data/example_specs/passing/stack.rb +0 -36
  76. data/example_specs/passing/stack_spec.rb +0 -64
  77. data/example_specs/passing/stack_spec_with_nested_example_groups.rb +0 -67
  78. data/example_specs/passing/stubbing_example.rb +0 -69
  79. data/example_specs/passing/subject_example.rb +0 -45
  80. data/example_specs/passing/yielding_example.rb +0 -33
  81. data/example_specs/ruby1.9.compatibility/access_to_constants_spec.rb +0 -85
  82. data/example_specs/spec_helper.rb +0 -10
  83. data/features/configuration/custom_options.feature +0 -71
@@ -59,11 +59,11 @@ module RSpec
59
59
  def announce_inclusion_filter
60
60
  if inclusion_filter
61
61
  if RSpec.configuration.run_all_when_everything_filtered? && RSpec.world.example_count == 0
62
- RSpec.configuration.puts "No examples were matched by #{inclusion_filter.inspect}, running all"
62
+ RSpec.configuration.output_stream.puts "No examples were matched by #{inclusion_filter.inspect}, running all"
63
63
  RSpec.configuration.clear_inclusion_filter
64
64
  filtered_examples.clear
65
65
  else
66
- RSpec.configuration.puts "Run filtered using #{inclusion_filter.inspect}"
66
+ RSpec.configuration.output_stream.puts "Run filtered using #{inclusion_filter.inspect}"
67
67
  end
68
68
  end
69
69
  end
@@ -0,0 +1 @@
1
+ require "rspec/monkey/spork/test_framework/rspec.rb"
@@ -0,0 +1,7 @@
1
+ if defined?(Spork::TestFramework::RSpec)
2
+ class Spork::TestFramework::RSpec < Spork::TestFramework
3
+ def run_tests(argv, err, out)
4
+ ::RSpec::Core::CommandLine.new(argv).run(err, out)
5
+ end
6
+ end
7
+ end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rspec-core}
8
- s.version = "2.0.0.beta.9"
8
+ s.version = "2.0.0.beta.10"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Chad Humphries", "David Chelimsky"]
12
- s.date = %q{2010-05-27}
12
+ s.date = %q{2010-06-02}
13
13
  s.description = %q{RSpec runner and example group classes}
14
14
  s.email = %q{dchelimsky@gmail.com;chad.humphries@gmail.com}
15
15
  s.executables = ["rspec", "spec"]
@@ -31,58 +31,10 @@ Gem::Specification.new do |s|
31
31
  "bin/rspec",
32
32
  "bin/spec",
33
33
  "cucumber.yml",
34
- "example_specs/failing/README.txt",
35
- "example_specs/failing/diffing_spec.rb",
36
- "example_specs/failing/failing_implicit_docstrings_example.rb",
37
- "example_specs/failing/failure_in_after.rb",
38
- "example_specs/failing/failure_in_before.rb",
39
- "example_specs/failing/mocking_example.rb",
40
- "example_specs/failing/mocking_with_flexmock.rb",
41
- "example_specs/failing/mocking_with_mocha.rb",
42
- "example_specs/failing/mocking_with_rr.rb",
43
- "example_specs/failing/partial_mock_example.rb",
44
- "example_specs/failing/pending_example.rb",
45
- "example_specs/failing/predicate_example.rb",
46
- "example_specs/failing/raising_example.rb",
47
- "example_specs/failing/spec_helper.rb",
48
- "example_specs/failing/syntax_error_example.rb",
49
- "example_specs/failing/team_spec.rb",
50
- "example_specs/failing/timeout_behaviour.rb",
51
- "example_specs/passing/custom_formatter.rb",
52
- "example_specs/passing/custom_matchers.rb",
53
- "example_specs/passing/dynamic_spec.rb",
54
- "example_specs/passing/file_accessor.rb",
55
- "example_specs/passing/file_accessor_spec.rb",
56
- "example_specs/passing/filtered_formatter.rb",
57
- "example_specs/passing/filtered_formatter_example.rb",
58
- "example_specs/passing/greeter_spec.rb",
59
- "example_specs/passing/helper_method_example.rb",
60
- "example_specs/passing/implicit_docstrings_example.rb",
61
- "example_specs/passing/io_processor.rb",
62
- "example_specs/passing/io_processor_spec.rb",
63
- "example_specs/passing/mocking_example.rb",
64
- "example_specs/passing/multi_threaded_example_group_runner.rb",
65
- "example_specs/passing/nested_classes_example.rb",
66
- "example_specs/passing/options_example.rb",
67
- "example_specs/passing/options_formatter.rb",
68
- "example_specs/passing/partial_mock_example.rb",
69
- "example_specs/passing/pending_example.rb",
70
- "example_specs/passing/predicate_example.rb",
71
- "example_specs/passing/shared_example_group_example.rb",
72
- "example_specs/passing/shared_stack_examples.rb",
73
- "example_specs/passing/spec_helper.rb",
74
- "example_specs/passing/stack.rb",
75
- "example_specs/passing/stack_spec.rb",
76
- "example_specs/passing/stack_spec_with_nested_example_groups.rb",
77
- "example_specs/passing/stubbing_example.rb",
78
- "example_specs/passing/subject_example.rb",
79
- "example_specs/passing/yielding_example.rb",
80
- "example_specs/ruby1.9.compatibility/access_to_constants_spec.rb",
81
- "example_specs/spec_helper.rb",
82
34
  "features/command_line/example_name_option.feature",
83
35
  "features/command_line/line_number_appended_to_path.feature",
84
36
  "features/command_line/line_number_option.feature",
85
- "features/configuration/custom_options.feature",
37
+ "features/configuration/custom_settings.feature",
86
38
  "features/configuration/options_file.feature",
87
39
  "features/example_groups/describe_aliases.feature",
88
40
  "features/example_groups/nested_groups.feature",
@@ -105,9 +57,11 @@ Gem::Specification.new do |s|
105
57
  "lib/rspec/core.rb",
106
58
  "lib/rspec/core/around_proxy.rb",
107
59
  "lib/rspec/core/backward_compatibility.rb",
60
+ "lib/rspec/core/command_line.rb",
108
61
  "lib/rspec/core/configuration.rb",
109
62
  "lib/rspec/core/configuration_options.rb",
110
63
  "lib/rspec/core/deprecation.rb",
64
+ "lib/rspec/core/drb_command_line.rb",
111
65
  "lib/rspec/core/errors.rb",
112
66
  "lib/rspec/core/example.rb",
113
67
  "lib/rspec/core/example_group.rb",
@@ -128,6 +82,7 @@ Gem::Specification.new do |s|
128
82
  "lib/rspec/core/mocking/with_rr.rb",
129
83
  "lib/rspec/core/mocking/with_rspec.rb",
130
84
  "lib/rspec/core/object_extensions.rb",
85
+ "lib/rspec/core/option_parser.rb",
131
86
  "lib/rspec/core/pending.rb",
132
87
  "lib/rspec/core/rake_task.rb",
133
88
  "lib/rspec/core/ruby_project.rb",
@@ -136,6 +91,8 @@ Gem::Specification.new do |s|
136
91
  "lib/rspec/core/subject.rb",
137
92
  "lib/rspec/core/version.rb",
138
93
  "lib/rspec/core/world.rb",
94
+ "lib/rspec/monkey.rb",
95
+ "lib/rspec/monkey/spork/test_framework/rspec.rb",
139
96
  "rspec-core.gemspec",
140
97
  "script/console",
141
98
  "spec/autotest/failed_results_re_spec.rb",
@@ -143,6 +100,7 @@ Gem::Specification.new do |s|
143
100
  "spec/rspec/core/configuration_options_spec.rb",
144
101
  "spec/rspec/core/configuration_spec.rb",
145
102
  "spec/rspec/core/deprecations_spec.rb",
103
+ "spec/rspec/core/drb_command_line_spec.rb",
146
104
  "spec/rspec/core/example_group_spec.rb",
147
105
  "spec/rspec/core/example_spec.rb",
148
106
  "spec/rspec/core/formatters/base_formatter_spec.rb",
@@ -173,7 +131,7 @@ Gem::Specification.new do |s|
173
131
  s.homepage = %q{http://github.com/rspec/core}
174
132
  s.post_install_message = %q{**************************************************
175
133
 
176
- Thank you for installing rspec-core-2.0.0.beta.9
134
+ Thank you for installing rspec-core-2.0.0.beta.10
177
135
 
178
136
  This is beta software. If you are looking
179
137
  for a supported production release, please
@@ -185,13 +143,14 @@ Gem::Specification.new do |s|
185
143
  s.require_paths = ["lib"]
186
144
  s.rubyforge_project = %q{rspec}
187
145
  s.rubygems_version = %q{1.3.6}
188
- s.summary = %q{rspec-core-2.0.0.beta.9}
146
+ s.summary = %q{rspec-core-2.0.0.beta.10}
189
147
  s.test_files = [
190
148
  "spec/autotest/failed_results_re_spec.rb",
191
149
  "spec/autotest/rspec_spec.rb",
192
150
  "spec/rspec/core/configuration_options_spec.rb",
193
151
  "spec/rspec/core/configuration_spec.rb",
194
152
  "spec/rspec/core/deprecations_spec.rb",
153
+ "spec/rspec/core/drb_command_line_spec.rb",
195
154
  "spec/rspec/core/example_group_spec.rb",
196
155
  "spec/rspec/core/example_spec.rb",
197
156
  "spec/rspec/core/formatters/base_formatter_spec.rb",
@@ -224,19 +183,19 @@ Gem::Specification.new do |s|
224
183
  s.specification_version = 3
225
184
 
226
185
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
227
- s.add_development_dependency(%q<rspec-expectations>, [">= 2.0.0.beta.9"])
228
- s.add_development_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.9"])
186
+ s.add_development_dependency(%q<rspec-expectations>, [">= 2.0.0.beta.10"])
187
+ s.add_development_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.10"])
229
188
  s.add_development_dependency(%q<cucumber>, [">= 0.5.3"])
230
189
  s.add_development_dependency(%q<autotest>, [">= 4.2.9"])
231
190
  else
232
- s.add_dependency(%q<rspec-expectations>, [">= 2.0.0.beta.9"])
233
- s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.9"])
191
+ s.add_dependency(%q<rspec-expectations>, [">= 2.0.0.beta.10"])
192
+ s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.10"])
234
193
  s.add_dependency(%q<cucumber>, [">= 0.5.3"])
235
194
  s.add_dependency(%q<autotest>, [">= 4.2.9"])
236
195
  end
237
196
  else
238
- s.add_dependency(%q<rspec-expectations>, [">= 2.0.0.beta.9"])
239
- s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.9"])
197
+ s.add_dependency(%q<rspec-expectations>, [">= 2.0.0.beta.10"])
198
+ s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.10"])
240
199
  s.add_dependency(%q<cucumber>, [">= 0.5.3"])
241
200
  s.add_dependency(%q<autotest>, [">= 4.2.9"])
242
201
  end
@@ -1,10 +1,15 @@
1
1
  require 'spec_helper'
2
+
2
3
  require 'ostruct'
3
4
 
4
5
  describe RSpec::Core::ConfigurationOptions do
5
6
 
7
+ def config_options_object(*args)
8
+ RSpec::Core::ConfigurationOptions.new(args)
9
+ end
10
+
6
11
  def options_from_args(*args)
7
- RSpec::Core::ConfigurationOptions.new(args).parse_command_line_options
12
+ config_options_object(*args).options
8
13
  end
9
14
 
10
15
  describe 'color_enabled' do
@@ -102,6 +107,86 @@ describe RSpec::Core::ConfigurationOptions do
102
107
  options_from_args("-d").should include(:debug => true)
103
108
  end
104
109
  end
110
+
111
+ describe "--drb (-X)" do
112
+ context "combined with --debug" do
113
+ it "turns off the debugger if --drb is specified first" do
114
+ config_options_object("--drb", "--debug").drb_argv.should_not include("--debug")
115
+ config_options_object("--drb", "-d" ).drb_argv.should_not include("--debug")
116
+ config_options_object("-X", "--debug").drb_argv.should_not include("--debug")
117
+ config_options_object("-X", "-d" ).drb_argv.should_not include("--debug")
118
+ end
119
+
120
+ it "turns off the debugger option if --drb is specified later" do
121
+ config_options_object("--debug", "--drb").drb_argv.should_not include("--debug")
122
+ config_options_object("-d", "--drb").drb_argv.should_not include("--debug")
123
+ config_options_object("--debug", "-X" ).drb_argv.should_not include("--debug")
124
+ config_options_object("-d", "-X" ).drb_argv.should_not include("--debug")
125
+ end
126
+
127
+ it "turns off the debugger option if --drb is specified in the options file" do
128
+ File.stub(:exist?) { true }
129
+ File.stub(:readlines) { %w[ --drb ] }
130
+ config_options_object("--debug").drb_argv.should_not include("--debug")
131
+ config_options_object("-d" ).drb_argv.should_not include("--debug")
132
+ end
133
+
134
+ it "turns off the debugger option if --debug is specified in the options file" do
135
+ File.stub(:exist?) { true }
136
+ File.stub(:readlines) { %w[ --debug ] }
137
+ config_options_object("--drb").drb_argv.should_not include("--debug")
138
+ config_options_object("-X" ).drb_argv.should_not include("--debug")
139
+ end
140
+ end
141
+
142
+ it "sends all the arguments other than --drb back to the parser after parsing options" do
143
+ config_options_object("--drb", "--color").drb_argv.should_not include("--drb")
144
+ end
145
+ end
146
+
147
+
148
+ # TODO #drb_argv may not be the best name
149
+ # TODO ensure all options are output
150
+ # TODO check if we need to spec that the short options are "expanded" ("-v" becomes "--version" currently)
151
+ describe "#drb_argv" do
152
+ it "preserves extra arguments" do
153
+ config_options_object(*%w[ a --drb b --color c ]).drb_argv.should eq(%w[ --color a b c ])
154
+ end
155
+
156
+ context "--drb specified in ARGV" do
157
+ it "renders all the original arguments except --drb" do
158
+ config_options_object(*%w[ --drb --color --formatter s --line_number 1 --example pattern --profile --backtrace]).
159
+ drb_argv.should eq(%w[ --color --profile --backtrace --formatter s --line_number 1 --example pattern ])
160
+ end
161
+ end
162
+
163
+ context "--drb specified in the options file" do
164
+ it "renders all the original arguments except --drb" do
165
+ File.stub(:exist?) { true }
166
+ File.stub(:readlines) { %w[ --drb --color ] }
167
+ config_options_object(*%w[ --formatter s --line_number 1 --example pattern --profile --backtrace ]).
168
+ drb_argv.should eq(%w[ --color --profile --backtrace --formatter s --line_number 1 --example pattern ])
169
+ end
170
+ end
171
+
172
+ context "--drb specified in ARGV and the options file" do
173
+ it "renders all the original arguments except --drb" do
174
+ File.stub(:exist?) { true }
175
+ File.stub(:readlines) { %w[ --drb --color ] }
176
+ config_options_object(*%w[ --drb --formatter s --line_number 1 --example pattern --profile --backtrace]).
177
+ drb_argv.should eq(%w[ --color --profile --backtrace --formatter s --line_number 1 --example pattern ])
178
+ end
179
+ end
180
+
181
+ context "--drb specified in ARGV and in as ARGV-specified --options file" do
182
+ it "renders all the original arguments except --drb and --options" do
183
+ File.stub(:exist?) { true }
184
+ File.stub(:readlines) { %w[ --drb --color ] }
185
+ config_options_object(*%w[ --drb --formatter s --line_number 1 --example pattern --profile --backtrace]).
186
+ drb_argv.should eq(%w[ --color --profile --backtrace --formatter s --line_number 1 --example pattern ])
187
+ end
188
+ end
189
+ end
105
190
 
106
191
  describe "options file (override)" do
107
192
  let(:config) { OpenStruct.new }
@@ -111,7 +196,7 @@ describe RSpec::Core::ConfigurationOptions do
111
196
  File.stub(:readlines) { ["--formatter", "doc"] }
112
197
 
113
198
  cli_options = RSpec::Core::ConfigurationOptions.new([])
114
- cli_options.apply_to(config)
199
+ cli_options.configure(config)
115
200
  config.formatter.should == 'doc'
116
201
  end
117
202
 
@@ -120,7 +205,7 @@ describe RSpec::Core::ConfigurationOptions do
120
205
  File.stub(:readlines) { ["--formatter doc"] }
121
206
 
122
207
  cli_options = RSpec::Core::ConfigurationOptions.new([])
123
- cli_options.apply_to(config)
208
+ cli_options.configure(config)
124
209
  config.formatter.should == 'doc'
125
210
  end
126
211
 
@@ -138,7 +223,7 @@ describe RSpec::Core::ConfigurationOptions do
138
223
  end
139
224
  cli_options = RSpec::Core::ConfigurationOptions.new(["--no-color"])
140
225
 
141
- cli_options.apply_to(config)
226
+ cli_options.configure(config)
142
227
 
143
228
  config.formatter.should == "documentation"
144
229
  config.line_number.should == "37"
@@ -159,7 +244,7 @@ describe RSpec::Core::ConfigurationOptions do
159
244
  end
160
245
  cli_options = RSpec::Core::ConfigurationOptions.new([])
161
246
 
162
- cli_options.apply_to(config)
247
+ cli_options.configure(config)
163
248
 
164
249
  config.formatter.should == "local"
165
250
  end
@@ -168,11 +253,10 @@ describe RSpec::Core::ConfigurationOptions do
168
253
  config_options = RSpec::Core::ConfigurationOptions.new(['--formatter', 'progress'])
169
254
  config_options.stub(:parse_options_file).and_return(:formatter => 'documentation')
170
255
 
171
- config_options.apply_to(config)
256
+ config_options.configure(config)
172
257
 
173
258
  config.formatter.should == 'progress'
174
259
  end
175
260
  end
176
-
177
261
  end
178
262
 
@@ -6,10 +6,6 @@ module RSpec::Core
6
6
 
7
7
  let(:config) { subject }
8
8
 
9
- before(:each) do
10
- RSpec.world.stub(:configuration).and_return(config)
11
- end
12
-
13
9
  describe "#mock_framework_class" do
14
10
  before(:each) do
15
11
  config.stub(:require)
@@ -221,6 +217,14 @@ module RSpec::Core
221
217
  end
222
218
 
223
219
  describe "full_backtrace=" do
220
+ before do
221
+ @backtrace_clean_patterns = config.backtrace_clean_patterns
222
+ end
223
+
224
+ after do
225
+ config.backtrace_clean_patterns = @backtrace_clean_patterns
226
+ end
227
+
224
228
  it "clears the backtrace clean patterns" do
225
229
  config.full_backtrace = true
226
230
  config.backtrace_clean_patterns.should == []
@@ -240,6 +244,14 @@ module RSpec::Core
240
244
  config.debug = false
241
245
  end
242
246
  end
247
+
248
+ describe "#output=" do
249
+ it "sets the output" do
250
+ output = mock("output")
251
+ config.output = output
252
+ config.output.should equal(output)
253
+ end
254
+ end
243
255
 
244
256
  describe "libs=" do
245
257
  it "adds directories to the LOAD_PATH" do
@@ -248,13 +260,13 @@ module RSpec::Core
248
260
  end
249
261
  end
250
262
 
251
- describe "#add_option" do
252
- describe ":type => :boolean" do
263
+ describe "#add_setting" do
264
+ describe "with no modifiers" do
253
265
  context "with no additional options" do
254
- before { config.add_option :custom_option, :type => :boolean }
266
+ before { config.add_setting :custom_option }
255
267
 
256
- it "defaults to false" do
257
- config.custom_option.should be_false
268
+ it "defaults to nil" do
269
+ config.custom_option.should be_nil
258
270
  end
259
271
 
260
272
  it "adds a predicate" do
@@ -262,28 +274,50 @@ module RSpec::Core
262
274
  end
263
275
 
264
276
  it "can be overridden" do
265
- config.custom_option = true
266
- config.custom_option.should be_true
277
+ config.custom_option = "a value"
278
+ config.custom_option.should eq("a value")
267
279
  end
268
280
  end
269
281
 
270
- context "with :default => true" do
271
- before { config.add_option :custom_option, :type => :boolean, :default => true }
282
+ context "with :default => 'a value'" do
283
+ before { config.add_setting :custom_option, :default => 'a value' }
272
284
 
273
- it "defaults to false" do
274
- config.custom_option.should be_true
285
+ it "defaults to 'a value'" do
286
+ config.custom_option.should eq("a value")
275
287
  end
276
288
 
277
- it "adds a predicate" do
289
+ it "returns true for the predicate" do
278
290
  config.custom_option?.should be_true
279
291
  end
280
292
 
281
293
  it "can be overridden" do
282
- config.custom_option = false
283
- config.custom_option.should be_false
294
+ config.custom_option = "a new value"
295
+ config.custom_option.should eq("a new value")
284
296
  end
285
297
  end
286
298
  end
299
+
300
+ context "with :alias => " do
301
+ before do
302
+ config.add_setting :custom_option
303
+ config.add_setting :another_custom_option, :alias => :custom_option
304
+ end
305
+
306
+ it "delegates the getter to the other option" do
307
+ config.another_custom_option = "this value"
308
+ config.custom_option.should == "this value"
309
+ end
310
+
311
+ it "delegates the setter to the other option" do
312
+ config.custom_option = "this value"
313
+ config.another_custom_option.should == "this value"
314
+ end
315
+
316
+ it "delegates the predicate to the other option" do
317
+ config.custom_option = true
318
+ config.another_custom_option?.should be_true
319
+ end
320
+ end
287
321
  end
288
322
 
289
323
  end