rspec-core 2.99.2 → 3.0.0.beta1
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.
- checksums.yaml +14 -6
- checksums.yaml.gz.sig +2 -0
- data.tar.gz.sig +0 -0
- data/Changelog.md +103 -191
- data/License.txt +1 -0
- data/README.md +4 -25
- data/features/Upgrade.md +2 -14
- data/features/command_line/dry_run.feature +29 -0
- data/features/command_line/example_name_option.feature +1 -1
- data/features/command_line/fail_fast.feature +26 -0
- data/features/command_line/format_option.feature +3 -3
- data/features/command_line/line_number_option.feature +16 -11
- data/features/command_line/order.feature +2 -3
- data/features/command_line/pattern_option.feature +3 -3
- data/features/command_line/randomization.feature +63 -0
- data/features/command_line/require_option.feature +2 -2
- data/features/command_line/ruby.feature +1 -1
- data/features/configuration/alias_example_to.feature +13 -22
- data/features/configuration/{backtrace_clean_patterns.feature → backtrace_exclusion_patterns.feature} +17 -14
- data/features/configuration/custom_settings.feature +11 -11
- data/features/configuration/overriding_global_ordering.feature +93 -0
- data/features/configuration/profile.feature +13 -13
- data/features/configuration/read_options_from_file.feature +7 -7
- data/features/example_groups/basic_structure.feature +1 -1
- data/features/example_groups/shared_context.feature +8 -8
- data/features/example_groups/shared_examples.feature +6 -14
- data/features/expectation_framework_integration/configure_expectation_framework.feature +27 -122
- data/features/filtering/exclusion_filters.feature +2 -5
- data/features/filtering/inclusion_filters.feature +1 -5
- data/features/formatters/json_formatter.feature +2 -2
- data/features/formatters/text_formatter.feature +4 -4
- data/features/helper_methods/arbitrary_methods.feature +2 -2
- data/features/helper_methods/let.feature +5 -5
- data/features/helper_methods/modules.feature +5 -8
- data/features/hooks/around_hooks.feature +2 -2
- data/features/hooks/before_and_after_hooks.feature +14 -14
- data/features/hooks/filtering.feature +12 -14
- data/features/metadata/described_class.feature +1 -1
- data/features/metadata/user_defined.feature +16 -29
- data/features/mock_framework_integration/use_flexmock.feature +1 -1
- data/features/mock_framework_integration/use_mocha.feature +1 -1
- data/features/mock_framework_integration/use_rr.feature +1 -1
- data/features/mock_framework_integration/use_rspec.feature +5 -5
- data/features/pending/pending_examples.feature +5 -5
- data/features/spec_files/arbitrary_file_suffix.feature +1 -1
- data/features/step_definitions/additional_cli_steps.rb +3 -3
- data/features/subject/explicit_subject.feature +8 -8
- data/features/subject/implicit_receiver.feature +29 -0
- data/features/subject/implicit_subject.feature +4 -4
- data/features/support/env.rb +10 -3
- data/features/support/require_expect_syntax_in_aruba_specs.rb +16 -0
- data/lib/rspec/core.rb +11 -48
- data/lib/rspec/core/backport_random.rb +302 -0
- data/lib/rspec/core/backtrace_formatter.rb +65 -0
- data/lib/rspec/core/command_line.rb +7 -18
- data/lib/rspec/core/configuration.rb +202 -507
- data/lib/rspec/core/configuration_options.rb +17 -30
- data/lib/rspec/core/example.rb +29 -39
- data/lib/rspec/core/example_group.rb +166 -259
- data/lib/rspec/core/filter_manager.rb +30 -47
- data/lib/rspec/core/flat_map.rb +17 -0
- data/lib/rspec/core/formatters.rb +0 -138
- data/lib/rspec/core/formatters/base_formatter.rb +46 -1
- data/lib/rspec/core/formatters/base_text_formatter.rb +38 -61
- data/lib/rspec/core/formatters/deprecation_formatter.rb +21 -52
- data/lib/rspec/core/formatters/helpers.rb +0 -28
- data/lib/rspec/core/formatters/html_formatter.rb +1 -1
- data/lib/rspec/core/formatters/json_formatter.rb +38 -9
- data/lib/rspec/core/formatters/snippet_extractor.rb +14 -5
- data/lib/rspec/core/hooks.rb +55 -39
- data/lib/rspec/core/memoized_helpers.rb +17 -167
- data/lib/rspec/core/metadata.rb +16 -64
- data/lib/rspec/core/option_parser.rb +30 -39
- data/lib/rspec/core/ordering.rb +154 -0
- data/lib/rspec/core/pending.rb +12 -69
- data/lib/rspec/core/project_initializer.rb +12 -10
- data/lib/rspec/core/rake_task.rb +5 -108
- data/lib/rspec/core/reporter.rb +15 -18
- data/lib/rspec/core/runner.rb +16 -30
- data/lib/rspec/core/shared_context.rb +3 -5
- data/lib/rspec/core/shared_example_group.rb +3 -51
- data/lib/rspec/core/shared_example_group/collection.rb +1 -19
- data/lib/rspec/core/version.rb +1 -1
- data/lib/rspec/core/warnings.rb +22 -0
- data/lib/rspec/core/world.rb +12 -8
- data/spec/command_line/order_spec.rb +20 -23
- data/spec/rspec/core/backtrace_formatter_spec.rb +216 -0
- data/spec/rspec/core/command_line_spec.rb +32 -48
- data/spec/rspec/core/configuration_options_spec.rb +19 -50
- data/spec/rspec/core/configuration_spec.rb +142 -713
- data/spec/rspec/core/drb_command_line_spec.rb +2 -0
- data/spec/rspec/core/dsl_spec.rb +0 -1
- data/spec/rspec/core/example_group_spec.rb +192 -223
- data/spec/rspec/core/example_spec.rb +40 -16
- data/spec/rspec/core/filter_manager_spec.rb +2 -2
- data/spec/rspec/core/formatters/base_formatter_spec.rb +0 -41
- data/spec/rspec/core/formatters/base_text_formatter_spec.rb +5 -123
- data/spec/rspec/core/formatters/deprecation_formatter_spec.rb +2 -87
- data/spec/rspec/core/formatters/documentation_formatter_spec.rb +2 -3
- data/spec/rspec/core/formatters/{text_mate_formatted.html → html_formatted-1.8.7-jruby.html} +44 -25
- data/spec/rspec/core/formatters/html_formatted-1.8.7-rbx.html +477 -0
- data/spec/rspec/core/formatters/{html_formatted.html → html_formatted-1.8.7.html} +42 -25
- data/spec/rspec/core/formatters/html_formatted-1.9.2.html +425 -0
- data/spec/rspec/core/formatters/html_formatted-1.9.3-jruby.html +416 -0
- data/spec/rspec/core/formatters/html_formatted-1.9.3-rbx.html +477 -0
- data/spec/rspec/core/formatters/html_formatted-1.9.3.html +419 -0
- data/spec/rspec/core/formatters/html_formatted-2.0.0.html +425 -0
- data/spec/rspec/core/formatters/html_formatter_spec.rb +21 -46
- data/spec/rspec/core/formatters/json_formatter_spec.rb +97 -8
- data/spec/rspec/core/hooks_filtering_spec.rb +5 -5
- data/spec/rspec/core/hooks_spec.rb +61 -47
- data/spec/rspec/core/memoized_helpers_spec.rb +20 -322
- data/spec/rspec/core/metadata_spec.rb +1 -24
- data/spec/rspec/core/option_parser_spec.rb +20 -62
- data/spec/rspec/core/ordering_spec.rb +102 -0
- data/spec/rspec/core/pending_example_spec.rb +0 -40
- data/spec/rspec/core/project_initializer_spec.rb +1 -25
- data/spec/rspec/core/rake_task_spec.rb +5 -72
- data/spec/rspec/core/random_spec.rb +47 -0
- data/spec/rspec/core/reporter_spec.rb +23 -48
- data/spec/rspec/core/runner_spec.rb +31 -39
- data/spec/rspec/core/shared_context_spec.rb +3 -15
- data/spec/rspec/core/shared_example_group/collection_spec.rb +4 -17
- data/spec/rspec/core/shared_example_group_spec.rb +12 -45
- data/spec/rspec/core/{deprecation_spec.rb → warnings_spec.rb} +3 -1
- data/spec/rspec/core_spec.rb +4 -21
- data/spec/spec_helper.rb +41 -5
- data/spec/support/helper_methods.rb +0 -29
- data/spec/support/sandboxed_mock_space.rb +0 -16
- data/spec/support/shared_example_groups.rb +7 -36
- data/spec/support/stderr_splitter.rb +36 -0
- metadata +163 -157
- metadata.gz.sig +1 -0
- data/exe/autospec +0 -13
- data/features/Autotest.md +0 -38
- data/features/configuration/treat_symbols_as_metadata_keys_with_true_values.feature +0 -52
- data/features/subject/attribute_of_subject.feature +0 -124
- data/features/subject/one_liner_syntax.feature +0 -71
- data/lib/autotest/discover.rb +0 -10
- data/lib/autotest/rspec2.rb +0 -77
- data/lib/rspec/core/backtrace_cleaner.rb +0 -46
- data/lib/rspec/core/backward_compatibility.rb +0 -55
- data/lib/rspec/core/caller_filter.rb +0 -60
- data/lib/rspec/core/deprecated_mutable_array_proxy.rb +0 -32
- data/lib/rspec/core/deprecation.rb +0 -26
- data/lib/rspec/core/extensions/instance_eval_with_args.rb +0 -44
- data/lib/rspec/core/extensions/kernel.rb +0 -9
- data/lib/rspec/core/extensions/module_eval_with_args.rb +0 -38
- data/lib/rspec/core/extensions/ordered.rb +0 -27
- data/lib/rspec/core/formatters/console_codes.rb +0 -42
- data/lib/rspec/core/formatters/text_mate_formatter.rb +0 -34
- data/lib/rspec/core/metadata_hash_builder.rb +0 -97
- data/lib/rspec/core/minitest_assertions_adapter.rb +0 -28
- data/lib/rspec/core/test_unit_assertions_adapter.rb +0 -30
- data/spec/autotest/discover_spec.rb +0 -49
- data/spec/autotest/failed_results_re_spec.rb +0 -45
- data/spec/autotest/rspec_spec.rb +0 -133
- data/spec/rspec/core/backtrace_cleaner_spec.rb +0 -68
- data/spec/rspec/core/caller_filter_spec.rb +0 -58
- data/spec/rspec/core/deprecations_spec.rb +0 -59
- data/spec/rspec/core/formatters/console_codes_spec.rb +0 -50
- data/spec/rspec/core/formatters/text_mate_formatter_spec.rb +0 -107
- data/spec/rspec/core/kernel_extensions_spec.rb +0 -9
- data/spec/rspec/core/pending_spec.rb +0 -27
- data/spec/support/silence_dsl_deprecations.rb +0 -32
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
require 'tmpdir'
|
|
3
|
-
require 'pathname'
|
|
4
3
|
|
|
5
4
|
module RSpec::Core
|
|
6
5
|
|
|
@@ -19,7 +18,7 @@ module RSpec::Core
|
|
|
19
18
|
|
|
20
19
|
describe '#deprecation_stream' do
|
|
21
20
|
it 'defaults to standard error' do
|
|
22
|
-
expect(
|
|
21
|
+
expect($rspec_core_without_stderr_monkey_patch.deprecation_stream).to eq STDERR
|
|
23
22
|
end
|
|
24
23
|
|
|
25
24
|
it 'is configurable' do
|
|
@@ -27,48 +26,17 @@ module RSpec::Core
|
|
|
27
26
|
config.deprecation_stream = io
|
|
28
27
|
expect(config.deprecation_stream).to eq io
|
|
29
28
|
end
|
|
30
|
-
|
|
31
|
-
context 'when the reporter has already been initialized' do
|
|
32
|
-
before do
|
|
33
|
-
config.reporter
|
|
34
|
-
allow(config).to receive(:warn)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
it 'prints a notice indicating the reconfigured output_stream will be ignored' do
|
|
38
|
-
config.deprecation_stream = double("IO")
|
|
39
|
-
expect(config).to have_received(:warn).with(/deprecation_stream.*#{__FILE__}:#{__LINE__ - 1}/)
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
it 'does not change the value of `output_stream`' do
|
|
43
|
-
config.deprecation_stream = double("IO")
|
|
44
|
-
expect(config.deprecation_stream).to eq($stderr)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
it 'does not print a warning if set to the value it already has' do
|
|
48
|
-
config.deprecation_stream = config.deprecation_stream
|
|
49
|
-
expect(config).not_to have_received(:warn)
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
29
|
end
|
|
53
30
|
|
|
54
|
-
|
|
55
|
-
define_method :attribute_value do
|
|
56
|
-
config.__send__(attribute)
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
update_line = __LINE__ + 2
|
|
60
|
-
define_method :update_attribute do |value|
|
|
61
|
-
config.__send__(:"#{attribute}=", value)
|
|
62
|
-
end
|
|
63
|
-
|
|
31
|
+
describe "#output_stream" do
|
|
64
32
|
it 'defaults to standard output' do
|
|
65
|
-
expect(
|
|
33
|
+
expect(config.output_stream).to eq $stdout
|
|
66
34
|
end
|
|
67
35
|
|
|
68
36
|
it 'is configurable' do
|
|
69
37
|
io = double 'output io'
|
|
70
|
-
|
|
71
|
-
expect(
|
|
38
|
+
config.output_stream = io
|
|
39
|
+
expect(config.output_stream).to eq io
|
|
72
40
|
end
|
|
73
41
|
|
|
74
42
|
context 'when the reporter has already been initialized' do
|
|
@@ -78,54 +46,22 @@ module RSpec::Core
|
|
|
78
46
|
end
|
|
79
47
|
|
|
80
48
|
it 'prints a notice indicating the reconfigured output_stream will be ignored' do
|
|
81
|
-
|
|
82
|
-
expect(config).to have_received(:warn).with(/output_stream.*#{__FILE__}:#{
|
|
49
|
+
config.output_stream = StringIO.new
|
|
50
|
+
expect(config).to have_received(:warn).with(/output_stream.*#{__FILE__}:#{__LINE__ - 1}/)
|
|
83
51
|
end
|
|
84
52
|
|
|
85
53
|
it 'does not change the value of `output_stream`' do
|
|
86
|
-
|
|
87
|
-
expect(
|
|
54
|
+
config.output_stream = StringIO.new
|
|
55
|
+
expect(config.output_stream).to eq($stdout)
|
|
88
56
|
end
|
|
89
57
|
|
|
90
58
|
it 'does not print a warning if set to the value it already has' do
|
|
91
|
-
|
|
59
|
+
config.output_stream = config.output_stream
|
|
92
60
|
expect(config).not_to have_received(:warn)
|
|
93
61
|
end
|
|
94
62
|
end
|
|
95
63
|
end
|
|
96
64
|
|
|
97
|
-
describe "#output_stream" do
|
|
98
|
-
include_examples "output_stream", :output_stream
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
describe "#output" do
|
|
102
|
-
include_examples "output_stream", :output
|
|
103
|
-
|
|
104
|
-
specify 'the reader is deprecated' do
|
|
105
|
-
expect_deprecation_with_call_site(__FILE__, __LINE__ + 1, /output/)
|
|
106
|
-
config.output
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
specify 'the writer is deprecated' do
|
|
110
|
-
expect_deprecation_with_call_site(__FILE__, __LINE__ + 1, /output=/)
|
|
111
|
-
config.output = $stdout
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
describe "#out" do
|
|
116
|
-
include_examples "output_stream", :out
|
|
117
|
-
|
|
118
|
-
specify 'the reader is deprecated' do
|
|
119
|
-
expect_deprecation_with_call_site(__FILE__, __LINE__ + 1, /out/)
|
|
120
|
-
config.out
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
specify 'the writer is deprecated' do
|
|
124
|
-
expect_deprecation_with_call_site(__FILE__, __LINE__ + 1, /out=/)
|
|
125
|
-
config.out = $stdout
|
|
126
|
-
end
|
|
127
|
-
end
|
|
128
|
-
|
|
129
65
|
describe "#setup_load_path_and_require" do
|
|
130
66
|
include_context "isolate load path mutation"
|
|
131
67
|
|
|
@@ -178,33 +114,6 @@ module RSpec::Core
|
|
|
178
114
|
config.should_receive(:load).once
|
|
179
115
|
config.load_spec_files
|
|
180
116
|
end
|
|
181
|
-
|
|
182
|
-
context "with rspec-1 loaded" do
|
|
183
|
-
before { stub_const("Spec::VERSION::MAJOR", 1) }
|
|
184
|
-
|
|
185
|
-
it "raises with a helpful message" do
|
|
186
|
-
expect {
|
|
187
|
-
config.load_spec_files
|
|
188
|
-
}.to raise_error(/rspec-1 has been loaded/)
|
|
189
|
-
end
|
|
190
|
-
end
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
describe "#treat_symbols_as_metadata_keys_with_true_values?" do
|
|
194
|
-
it 'defaults to false' do
|
|
195
|
-
expect(config.treat_symbols_as_metadata_keys_with_true_values?).to be_falsey
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
it 'prints a deprecation warning when explicitly set to false since RSpec 3 will not support that' do
|
|
199
|
-
expect_deprecation_with_call_site(__FILE__, __LINE__ + 1)
|
|
200
|
-
config.treat_symbols_as_metadata_keys_with_true_values = false
|
|
201
|
-
expect(config.treat_symbols_as_metadata_keys_with_true_values?).to be false
|
|
202
|
-
end
|
|
203
|
-
|
|
204
|
-
it 'can be set to true' do
|
|
205
|
-
config.treat_symbols_as_metadata_keys_with_true_values = true
|
|
206
|
-
expect(config.treat_symbols_as_metadata_keys_with_true_values?).to be_truthy
|
|
207
|
-
end
|
|
208
117
|
end
|
|
209
118
|
|
|
210
119
|
describe "#mock_framework" do
|
|
@@ -250,40 +159,11 @@ module RSpec::Core
|
|
|
250
159
|
it_behaves_like "a configurable framework adapter", :mock_with
|
|
251
160
|
|
|
252
161
|
[:rspec, :mocha, :rr, :flexmock].each do |framework|
|
|
253
|
-
context "with
|
|
162
|
+
context "with #{framework}" do
|
|
254
163
|
it "requires the adapter for #{framework}" do
|
|
255
164
|
config.should_receive(:require).with("rspec/core/mocking/with_#{framework}")
|
|
256
165
|
config.mock_with framework
|
|
257
166
|
end
|
|
258
|
-
|
|
259
|
-
it "does not print a deprecation" do
|
|
260
|
-
expect(RSpec).not_to receive(:deprecate)
|
|
261
|
-
config.mock_with framework
|
|
262
|
-
end
|
|
263
|
-
end
|
|
264
|
-
|
|
265
|
-
context "with #{framework.to_s.inspect}" do
|
|
266
|
-
it "requires the adapter for #{framework}" do
|
|
267
|
-
config.should_receive(:require).with("rspec/core/mocking/with_#{framework}")
|
|
268
|
-
config.mock_with framework.to_s
|
|
269
|
-
end
|
|
270
|
-
|
|
271
|
-
it "prints a deprecation warning" do
|
|
272
|
-
expect_deprecation_with_call_site(__FILE__, __LINE__ + 1, /mock_with/)
|
|
273
|
-
config.mock_with framework.to_s
|
|
274
|
-
end
|
|
275
|
-
end
|
|
276
|
-
|
|
277
|
-
context "with :the_#{framework}_adapter" do
|
|
278
|
-
it "requires the adapter for #{framework}" do
|
|
279
|
-
config.should_receive(:require).with("rspec/core/mocking/with_#{framework}")
|
|
280
|
-
config.mock_with :"the_#{framework}_adapter"
|
|
281
|
-
end
|
|
282
|
-
|
|
283
|
-
it "prints a deprecation warning" do
|
|
284
|
-
expect_deprecation_with_call_site(__FILE__, __LINE__ + 1, /mock_with/)
|
|
285
|
-
config.mock_with :"the_#{framework}_adapter"
|
|
286
|
-
end
|
|
287
167
|
end
|
|
288
168
|
end
|
|
289
169
|
|
|
@@ -305,28 +185,9 @@ module RSpec::Core
|
|
|
305
185
|
end
|
|
306
186
|
end
|
|
307
187
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
config.mock_with :crazy_new_mocking_framework_ive_not_yet_heard_of
|
|
312
|
-
end
|
|
313
|
-
|
|
314
|
-
it "prints a deprecation warning" do
|
|
315
|
-
expect_deprecation_with_call_site(__FILE__, __LINE__ + 1, /mock_with/)
|
|
316
|
-
config.mock_with :crazy_new_mocking_framework_ive_not_yet_heard_of
|
|
317
|
-
end
|
|
318
|
-
end
|
|
319
|
-
|
|
320
|
-
context "with :nothing" do
|
|
321
|
-
it "uses the null adapter" do
|
|
322
|
-
config.should_receive(:require).with('rspec/core/mocking/with_absolutely_nothing')
|
|
323
|
-
config.mock_with :nothing
|
|
324
|
-
end
|
|
325
|
-
|
|
326
|
-
it "does not print a deprecation warning" do
|
|
327
|
-
expect(RSpec).not_to receive(:deprecate)
|
|
328
|
-
config.mock_with :nothing
|
|
329
|
-
end
|
|
188
|
+
it "uses the null adapter when set to any unknown key" do
|
|
189
|
+
config.should_receive(:require).with('rspec/core/mocking/with_absolutely_nothing')
|
|
190
|
+
config.mock_with :crazy_new_mocking_framework_ive_not_yet_heard_of
|
|
330
191
|
end
|
|
331
192
|
|
|
332
193
|
context 'when there are already some example groups defined' do
|
|
@@ -367,92 +228,35 @@ module RSpec::Core
|
|
|
367
228
|
end
|
|
368
229
|
end
|
|
369
230
|
|
|
370
|
-
def stub_expectation_adapters
|
|
371
|
-
stub_const("Test::Unit::Assertions", Module.new)
|
|
372
|
-
stub_const("Minitest::Assertions", Module.new)
|
|
373
|
-
stub_const("RSpec::Core::TestUnitAssertionsAdapter", Module.new)
|
|
374
|
-
stub_const("RSpec::Core::MinitestAssertionsAdapter", Module.new)
|
|
375
|
-
allow(config).to receive(:require)
|
|
376
|
-
end
|
|
377
|
-
|
|
378
231
|
describe "#expect_with" do
|
|
379
232
|
before do
|
|
380
|
-
|
|
233
|
+
stub_const("Test::Unit::Assertions", Module.new)
|
|
234
|
+
config.stub(:require)
|
|
381
235
|
end
|
|
382
236
|
|
|
383
237
|
it_behaves_like "a configurable framework adapter", :expect_with
|
|
384
238
|
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
end
|
|
395
|
-
|
|
396
|
-
it "sets the expectation framework to ::Test::Unit::Assertions" do
|
|
397
|
-
config.expect_with :stdlib
|
|
398
|
-
expect(config.expectation_frameworks).to eq [::Test::Unit::Assertions]
|
|
399
|
-
end
|
|
400
|
-
end
|
|
401
|
-
|
|
402
|
-
context "with :rspec" do
|
|
403
|
-
it "requires rspec/expectations" do
|
|
404
|
-
expect(config).to receive(:require).with('rspec/expectations')
|
|
405
|
-
config.expect_with :rspec
|
|
406
|
-
end
|
|
407
|
-
|
|
408
|
-
it "sets the expectation framework to ::RSpec::Matchers" do
|
|
409
|
-
config.expect_with :rspec
|
|
410
|
-
expect(config.expectation_frameworks).to eq [::RSpec::Matchers]
|
|
411
|
-
end
|
|
412
|
-
end
|
|
413
|
-
|
|
414
|
-
context "with :test_unit" do
|
|
415
|
-
it "requires rspec/core/test_unit_assertions_adapter" do
|
|
416
|
-
expect(config).to receive(:require).
|
|
417
|
-
with('rspec/core/test_unit_assertions_adapter')
|
|
418
|
-
config.expect_with :test_unit
|
|
419
|
-
end
|
|
420
|
-
|
|
421
|
-
it "sets the expectation framework to ::Test::Unit::Assertions" do
|
|
422
|
-
config.expect_with :test_unit
|
|
423
|
-
expect(config.expectation_frameworks).to eq [
|
|
424
|
-
::RSpec::Core::TestUnitAssertionsAdapter
|
|
425
|
-
]
|
|
426
|
-
end
|
|
427
|
-
end
|
|
428
|
-
|
|
429
|
-
context "with :minitest" do
|
|
430
|
-
it "requires rspec/core/minitest_assertions_adapter" do
|
|
431
|
-
expect(config).to receive(:require).
|
|
432
|
-
with('rspec/core/minitest_assertions_adapter')
|
|
433
|
-
config.expect_with :minitest
|
|
434
|
-
end
|
|
435
|
-
|
|
436
|
-
it "sets the expectation framework to ::Minitest::Assertions" do
|
|
437
|
-
config.expect_with :minitest
|
|
438
|
-
expect(config.expectation_frameworks).to eq [
|
|
439
|
-
::RSpec::Core::MinitestAssertionsAdapter
|
|
440
|
-
]
|
|
239
|
+
[
|
|
240
|
+
[:rspec, 'rspec/expectations'],
|
|
241
|
+
[:stdlib, 'test/unit/assertions']
|
|
242
|
+
].each do |framework, required_file|
|
|
243
|
+
context "with #{framework}" do
|
|
244
|
+
it "requires #{required_file}" do
|
|
245
|
+
config.should_receive(:require).with(required_file)
|
|
246
|
+
config.expect_with framework
|
|
247
|
+
end
|
|
441
248
|
end
|
|
442
249
|
end
|
|
443
250
|
|
|
444
251
|
it "supports multiple calls" do
|
|
445
252
|
config.expect_with :rspec
|
|
446
|
-
config.expect_with :
|
|
447
|
-
expect(config.expectation_frameworks).to eq [
|
|
448
|
-
RSpec::Matchers,
|
|
449
|
-
RSpec::Core::MinitestAssertionsAdapter
|
|
450
|
-
]
|
|
253
|
+
config.expect_with :stdlib
|
|
254
|
+
expect(config.expectation_frameworks).to eq [RSpec::Matchers, Test::Unit::Assertions]
|
|
451
255
|
end
|
|
452
256
|
|
|
453
257
|
it "raises if block given with multiple args" do
|
|
454
258
|
expect {
|
|
455
|
-
config.expect_with :rspec, :
|
|
259
|
+
config.expect_with :rspec, :stdlib do |mod_config|
|
|
456
260
|
end
|
|
457
261
|
}.to raise_error(/expect_with only accepts/)
|
|
458
262
|
end
|
|
@@ -480,16 +284,17 @@ module RSpec::Core
|
|
|
480
284
|
it 'does not raise an error if re-setting the same config' do
|
|
481
285
|
groups = []
|
|
482
286
|
RSpec.world.stub(:example_groups => groups)
|
|
483
|
-
config.expect_with :
|
|
287
|
+
config.expect_with :stdlib
|
|
484
288
|
groups << double.as_null_object
|
|
485
|
-
config.expect_with :
|
|
289
|
+
config.expect_with :stdlib
|
|
486
290
|
end
|
|
487
291
|
end
|
|
488
292
|
end
|
|
489
293
|
|
|
490
294
|
describe "#expecting_with_rspec?" do
|
|
491
295
|
before do
|
|
492
|
-
|
|
296
|
+
stub_const("Test::Unit::Assertions", Module.new)
|
|
297
|
+
config.stub(:require)
|
|
493
298
|
end
|
|
494
299
|
|
|
495
300
|
it "returns false by default" do
|
|
@@ -501,18 +306,18 @@ module RSpec::Core
|
|
|
501
306
|
expect(config).to be_expecting_with_rspec
|
|
502
307
|
end
|
|
503
308
|
|
|
504
|
-
it "returns true when `expect_with :rspec, :
|
|
505
|
-
config.expect_with :rspec, :
|
|
309
|
+
it "returns true when `expect_with :rspec, :stdlib` has been configured" do
|
|
310
|
+
config.expect_with :rspec, :stdlib
|
|
506
311
|
expect(config).to be_expecting_with_rspec
|
|
507
312
|
end
|
|
508
313
|
|
|
509
|
-
it "returns true when `expect_with :
|
|
510
|
-
config.expect_with :
|
|
314
|
+
it "returns true when `expect_with :stdlib, :rspec` has been configured" do
|
|
315
|
+
config.expect_with :stdlib, :rspec
|
|
511
316
|
expect(config).to be_expecting_with_rspec
|
|
512
317
|
end
|
|
513
318
|
|
|
514
|
-
it "returns false when `expect_with :
|
|
515
|
-
config.expect_with :
|
|
319
|
+
it "returns false when `expect_with :stdlib` has been configured" do
|
|
320
|
+
config.expect_with :stdlib
|
|
516
321
|
expect(config).not_to be_expecting_with_rspec
|
|
517
322
|
end
|
|
518
323
|
end
|
|
@@ -655,20 +460,8 @@ module RSpec::Core
|
|
|
655
460
|
end
|
|
656
461
|
end
|
|
657
462
|
|
|
658
|
-
specify "#filename_pattern is deprecated" do
|
|
659
|
-
expect_deprecation_with_call_site __FILE__, __LINE__ + 1
|
|
660
|
-
config.filename_pattern
|
|
661
|
-
end
|
|
662
|
-
|
|
663
|
-
specify "#filename_pattern= is deprecated" do
|
|
664
|
-
expect_deprecation_with_call_site __FILE__, __LINE__ + 1
|
|
665
|
-
config.filename_pattern = "/whatever"
|
|
666
|
-
end
|
|
667
|
-
|
|
668
463
|
%w[pattern= filename_pattern=].each do |setter|
|
|
669
464
|
describe "##{setter}" do
|
|
670
|
-
before { allow_deprecation } if setter == "filename_pattern="
|
|
671
|
-
|
|
672
465
|
context "with single pattern" do
|
|
673
466
|
before { config.send(setter, "**/*_foo.rb") }
|
|
674
467
|
it "loads files following pattern" do
|
|
@@ -718,16 +511,15 @@ module RSpec::Core
|
|
|
718
511
|
|
|
719
512
|
context "after files have already been loaded" do
|
|
720
513
|
it 'will warn that it will have no effect' do
|
|
721
|
-
|
|
514
|
+
expect_warning_with_call_site(__FILE__, __LINE__ + 2, /has no effect/)
|
|
722
515
|
config.load_spec_files
|
|
723
|
-
config.send(setter, "rspec/**/*.spec")
|
|
724
|
-
expect(Kernel).to have_received(:warn).with(/has no effect.*#{__FILE__}:#{line}/)
|
|
516
|
+
config.send(setter, "rspec/**/*.spec")
|
|
725
517
|
end
|
|
726
518
|
|
|
727
519
|
it 'will not warn if reset is called after load_spec_files' do
|
|
728
520
|
config.load_spec_files
|
|
729
521
|
config.reset
|
|
730
|
-
expect(
|
|
522
|
+
expect(RSpec).to_not receive(:warning)
|
|
731
523
|
config.send(setter, "rspec/**/*.spec")
|
|
732
524
|
end
|
|
733
525
|
end
|
|
@@ -884,53 +676,8 @@ module RSpec::Core
|
|
|
884
676
|
end
|
|
885
677
|
end
|
|
886
678
|
|
|
887
|
-
specify '#color? is deprecated' do
|
|
888
|
-
expect_deprecation_with_call_site __FILE__, __LINE__+1
|
|
889
|
-
config.color?
|
|
890
|
-
end
|
|
891
|
-
|
|
892
|
-
specify "#color_enabled? is not deprecated" do
|
|
893
|
-
expect_no_deprecation
|
|
894
|
-
config.color_enabled?
|
|
895
|
-
config.color_enabled? double("output")
|
|
896
|
-
end
|
|
897
|
-
|
|
898
|
-
specify '#color with no argument is not deprecated' do
|
|
899
|
-
expect_no_deprecation
|
|
900
|
-
config.color
|
|
901
|
-
end
|
|
902
|
-
|
|
903
|
-
specify '#color with a non tty output and color = true is deprecated' do
|
|
904
|
-
allow(config.output_stream).to receive(:tty?).and_return(false)
|
|
905
|
-
config.color = true
|
|
906
|
-
expect_warn_deprecation_with_call_site __FILE__, __LINE__+1
|
|
907
|
-
expect(config.color).to be_falsey
|
|
908
|
-
end
|
|
909
|
-
|
|
910
|
-
specify '#color with an argument is deprecated' do
|
|
911
|
-
expect_deprecation_with_call_site __FILE__, __LINE__+1
|
|
912
|
-
config.color config.output_stream
|
|
913
|
-
end
|
|
914
|
-
|
|
915
|
-
specify '#color_enabled with no argument is deprecated' do
|
|
916
|
-
expect_deprecation_with_call_site __FILE__, __LINE__+1
|
|
917
|
-
config.color_enabled
|
|
918
|
-
end
|
|
919
|
-
|
|
920
|
-
specify '#color_enabled with an argument is deprecated in favour of #color_enabled?' do
|
|
921
|
-
expect_deprecation_with_call_site __FILE__, __LINE__+1
|
|
922
|
-
config.color_enabled config.output_stream
|
|
923
|
-
end
|
|
924
|
-
|
|
925
679
|
%w[color color_enabled].each do |color_option|
|
|
926
680
|
describe "##{color_option}=" do
|
|
927
|
-
before { allow_deprecation } if color_option == 'color_enabled'
|
|
928
|
-
|
|
929
|
-
specify "color_enabled is deprecated" do
|
|
930
|
-
expect_deprecation_with_call_site __FILE__, __LINE__+1
|
|
931
|
-
config.color_enabled = true
|
|
932
|
-
end
|
|
933
|
-
|
|
934
681
|
context "given true" do
|
|
935
682
|
before { config.send "#{color_option}=", true }
|
|
936
683
|
|
|
@@ -991,7 +738,6 @@ module RSpec::Core
|
|
|
991
738
|
@original_host = RbConfig::CONFIG['host_os']
|
|
992
739
|
RbConfig::CONFIG['host_os'] = 'mingw'
|
|
993
740
|
config.stub(:require)
|
|
994
|
-
config.stub(:warn)
|
|
995
741
|
end
|
|
996
742
|
|
|
997
743
|
after do
|
|
@@ -1019,10 +765,13 @@ module RSpec::Core
|
|
|
1019
765
|
end
|
|
1020
766
|
|
|
1021
767
|
context "with ANSICON NOT available" do
|
|
768
|
+
before do
|
|
769
|
+
allow_warning
|
|
770
|
+
end
|
|
771
|
+
|
|
1022
772
|
it "warns to install ANSICON" do
|
|
1023
773
|
config.stub(:require) { raise LoadError }
|
|
1024
|
-
|
|
1025
|
-
with(/You must use ANSICON/)
|
|
774
|
+
expect_warning_with_call_site(__FILE__, __LINE__ + 1, /You must use ANSICON/)
|
|
1026
775
|
config.send "#{color_option}=", true
|
|
1027
776
|
end
|
|
1028
777
|
|
|
@@ -1089,7 +838,7 @@ module RSpec::Core
|
|
|
1089
838
|
end
|
|
1090
839
|
|
|
1091
840
|
it "requires a formatter file based on its fully qualified name" do
|
|
1092
|
-
config.
|
|
841
|
+
config.should_receive(:require).with('rspec/custom_formatter') do
|
|
1093
842
|
stub_const("RSpec::CustomFormatter", Class.new(Formatters::BaseFormatter))
|
|
1094
843
|
end
|
|
1095
844
|
config.add_formatter "RSpec::CustomFormatter"
|
|
@@ -1097,7 +846,7 @@ module RSpec::Core
|
|
|
1097
846
|
end
|
|
1098
847
|
|
|
1099
848
|
it "raises NameError if class is unresolvable" do
|
|
1100
|
-
config.
|
|
849
|
+
config.should_receive(:require).with('rspec/custom_formatter3')
|
|
1101
850
|
expect(lambda { config.add_formatter "RSpec::CustomFormatter3" }).to raise_error(NameError)
|
|
1102
851
|
end
|
|
1103
852
|
|
|
@@ -1105,45 +854,13 @@ module RSpec::Core
|
|
|
1105
854
|
expect(lambda { config.add_formatter :progresss }).to raise_error(ArgumentError)
|
|
1106
855
|
end
|
|
1107
856
|
|
|
1108
|
-
it 'warns of deprecation for old document aliases' do
|
|
1109
|
-
expect_deprecation_with_call_site __FILE__, __LINE__ + 1, 's'
|
|
1110
|
-
config.add_formatter 's'
|
|
1111
|
-
expect(config.formatters.first).to be_an_instance_of Formatters::DocumentationFormatter
|
|
1112
|
-
end
|
|
1113
|
-
|
|
1114
|
-
it 'warns of deprecation of the text mate formatter' do
|
|
1115
|
-
expect_deprecation_with_call_site __FILE__, __LINE__ + 1, /rspec-core/
|
|
1116
|
-
config.add_formatter 't'
|
|
1117
|
-
end
|
|
1118
|
-
|
|
1119
|
-
it 'warns of deprecation of the shortcut for the text mate formatter' do
|
|
1120
|
-
stub_const("::RSpec::Mate::Formatters::TextMateFormatter", double)
|
|
1121
|
-
expect_deprecation_with_call_site __FILE__, __LINE__ + 1, /shortcut/
|
|
1122
|
-
config.add_formatter 't'
|
|
1123
|
-
end
|
|
1124
|
-
|
|
1125
857
|
context "with a 2nd arg defining the output" do
|
|
1126
|
-
let(:path) { File.join(Dir.tmpdir, 'output.txt') }
|
|
1127
|
-
|
|
1128
858
|
it "creates a file at that path and sets it as the output" do
|
|
859
|
+
path = File.join(Dir.tmpdir, 'output.txt')
|
|
1129
860
|
config.add_formatter('doc', path)
|
|
1130
861
|
expect(config.formatters.first.output).to be_a(File)
|
|
1131
862
|
expect(config.formatters.first.output.path).to eq(path)
|
|
1132
863
|
end
|
|
1133
|
-
|
|
1134
|
-
it "accepts Pathname objects for file paths" do
|
|
1135
|
-
pathname = Pathname.new(path)
|
|
1136
|
-
config.add_formatter('doc', pathname)
|
|
1137
|
-
expect(config.formatters.first.output).to be_a(File)
|
|
1138
|
-
expect(config.formatters.first.output.path).to eq(path)
|
|
1139
|
-
end
|
|
1140
|
-
end
|
|
1141
|
-
end
|
|
1142
|
-
|
|
1143
|
-
describe "#formatters" do
|
|
1144
|
-
it "is deprecated to mutate the array" do
|
|
1145
|
-
expect_deprecation_with_call_site __FILE__, __LINE__ + 1
|
|
1146
|
-
config.formatters.clear
|
|
1147
864
|
end
|
|
1148
865
|
end
|
|
1149
866
|
|
|
@@ -1161,7 +878,6 @@ module RSpec::Core
|
|
|
1161
878
|
end
|
|
1162
879
|
|
|
1163
880
|
it "sets the filter with a symbol" do
|
|
1164
|
-
RSpec.configuration.stub(:treat_symbols_as_metadata_keys_with_true_values? => true)
|
|
1165
881
|
config.filter_run_including :foo
|
|
1166
882
|
expect(config.inclusion_filter[:foo]).to be(true)
|
|
1167
883
|
end
|
|
@@ -1173,18 +889,6 @@ module RSpec::Core
|
|
|
1173
889
|
expect(config.inclusion_filter[:foo]).to be(true)
|
|
1174
890
|
expect(config.inclusion_filter[:bar]).to be(false)
|
|
1175
891
|
end
|
|
1176
|
-
|
|
1177
|
-
context "given `:focused => true`" do
|
|
1178
|
-
it "issues a deprecation warning" do
|
|
1179
|
-
expect_warn_deprecation_with_call_site(__FILE__, __LINE__ + 1, /filter_run_including :focused/)
|
|
1180
|
-
config.filter_run_including :focused => true
|
|
1181
|
-
end
|
|
1182
|
-
|
|
1183
|
-
it "issues a deprecation warning when using `filter_run`" do
|
|
1184
|
-
expect_warn_deprecation_with_call_site(__FILE__, __LINE__ + 1, /filter_run :focused/)
|
|
1185
|
-
config.filter_run :focused => true
|
|
1186
|
-
end
|
|
1187
|
-
end
|
|
1188
892
|
end
|
|
1189
893
|
|
|
1190
894
|
describe "#filter_run_excluding" do
|
|
@@ -1201,7 +905,6 @@ module RSpec::Core
|
|
|
1201
905
|
end
|
|
1202
906
|
|
|
1203
907
|
it "sets the filter using a symbol" do
|
|
1204
|
-
RSpec.configuration.stub(:treat_symbols_as_metadata_keys_with_true_values? => true)
|
|
1205
908
|
config.filter_run_excluding :foo
|
|
1206
909
|
expect(config.exclusion_filter[:foo]).to be(true)
|
|
1207
910
|
end
|
|
@@ -1224,7 +927,6 @@ module RSpec::Core
|
|
|
1224
927
|
|
|
1225
928
|
describe "#inclusion_filter=" do
|
|
1226
929
|
it "treats symbols as hash keys with true values when told to" do
|
|
1227
|
-
RSpec.configuration.stub(:treat_symbols_as_metadata_keys_with_true_values? => true)
|
|
1228
930
|
config.inclusion_filter = :foo
|
|
1229
931
|
expect(config.inclusion_filter).to eq({:foo => true})
|
|
1230
932
|
end
|
|
@@ -1271,9 +973,15 @@ module RSpec::Core
|
|
|
1271
973
|
end
|
|
1272
974
|
end
|
|
1273
975
|
|
|
976
|
+
describe "#treat_symbols_as_metadata_keys_with_true_values=" do
|
|
977
|
+
it 'is deprecated' do
|
|
978
|
+
expect_deprecation_with_call_site(__FILE__, __LINE__ + 1)
|
|
979
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
|
980
|
+
end
|
|
981
|
+
end
|
|
982
|
+
|
|
1274
983
|
describe "#exclusion_filter=" do
|
|
1275
984
|
it "treats symbols as hash keys with true values when told to" do
|
|
1276
|
-
RSpec.configuration.stub(:treat_symbols_as_metadata_keys_with_true_values? => true)
|
|
1277
985
|
config.exclusion_filter = :foo
|
|
1278
986
|
expect(config.exclusion_filter).to eq({:foo => true})
|
|
1279
987
|
end
|
|
@@ -1286,8 +994,6 @@ module RSpec::Core
|
|
|
1286
994
|
end
|
|
1287
995
|
|
|
1288
996
|
describe "line_numbers=" do
|
|
1289
|
-
before { config.filter_manager.stub(:warn) }
|
|
1290
|
-
|
|
1291
997
|
it "sets the line numbers" do
|
|
1292
998
|
config.line_numbers = ['37']
|
|
1293
999
|
expect(config.filter).to eq({:line_numbers => [37]})
|
|
@@ -1318,34 +1024,19 @@ module RSpec::Core
|
|
|
1318
1024
|
end
|
|
1319
1025
|
|
|
1320
1026
|
describe "#full_backtrace=" do
|
|
1321
|
-
context "given true" do
|
|
1322
|
-
it "clears the backtrace exclusion patterns" do
|
|
1323
|
-
config.full_backtrace = true
|
|
1324
|
-
expect(config.backtrace_exclusion_patterns).to eq([])
|
|
1325
|
-
end
|
|
1326
|
-
end
|
|
1327
|
-
|
|
1328
|
-
context "given false" do
|
|
1329
|
-
it "restores backtrace clean patterns" do
|
|
1330
|
-
config.full_backtrace = false
|
|
1331
|
-
expect(config.backtrace_exclusion_patterns).to eq(RSpec::Core::BacktraceCleaner::DEFAULT_EXCLUSION_PATTERNS)
|
|
1332
|
-
end
|
|
1333
|
-
end
|
|
1334
|
-
|
|
1335
1027
|
it "doesn't impact other instances of config" do
|
|
1336
1028
|
config_1 = Configuration.new
|
|
1337
1029
|
config_2 = Configuration.new
|
|
1338
1030
|
|
|
1339
1031
|
config_1.full_backtrace = true
|
|
1340
|
-
expect(config_2.
|
|
1032
|
+
expect(config_2.full_backtrace?).to be_falsey
|
|
1341
1033
|
end
|
|
1342
1034
|
end
|
|
1343
1035
|
|
|
1344
|
-
describe "#
|
|
1036
|
+
describe "#backtrace_exclusion_patterns=" do
|
|
1345
1037
|
it "actually receives the new filter values" do
|
|
1346
|
-
RSpec.stub(:deprecate)
|
|
1347
1038
|
config = Configuration.new
|
|
1348
|
-
config.
|
|
1039
|
+
config.backtrace_exclusion_patterns = [/.*/]
|
|
1349
1040
|
expect(config.backtrace_formatter.exclude? "this").to be_truthy
|
|
1350
1041
|
end
|
|
1351
1042
|
end
|
|
@@ -1362,124 +1053,14 @@ module RSpec::Core
|
|
|
1362
1053
|
end
|
|
1363
1054
|
end
|
|
1364
1055
|
|
|
1365
|
-
describe "#
|
|
1366
|
-
before { allow(RSpec).to receive(:deprecate) }
|
|
1367
|
-
it "is deprecated" do
|
|
1368
|
-
RSpec.should_receive(:deprecate)
|
|
1369
|
-
config = Configuration.new
|
|
1370
|
-
config.backtrace_clean_patterns
|
|
1371
|
-
end
|
|
1372
|
-
|
|
1056
|
+
describe "#backtrace_exclusion_patterns" do
|
|
1373
1057
|
it "can be appended to" do
|
|
1374
1058
|
config = Configuration.new
|
|
1375
|
-
config.
|
|
1059
|
+
config.backtrace_exclusion_patterns << /.*/
|
|
1376
1060
|
expect(config.backtrace_formatter.exclude? "this").to be_truthy
|
|
1377
1061
|
end
|
|
1378
1062
|
end
|
|
1379
1063
|
|
|
1380
|
-
specify "#backtrace_cleaner is deprecated" do
|
|
1381
|
-
expect_deprecation_with_call_site __FILE__, __LINE__ + 1
|
|
1382
|
-
config.backtrace_cleaner
|
|
1383
|
-
end
|
|
1384
|
-
|
|
1385
|
-
describe ".backtrace_formatter#exclude? defaults" do
|
|
1386
|
-
before { allow_deprecation }
|
|
1387
|
-
|
|
1388
|
-
it "returns true for rspec files" do
|
|
1389
|
-
expect(config.backtrace_formatter.exclude?("lib/rspec/core.rb")).to be_truthy
|
|
1390
|
-
end
|
|
1391
|
-
|
|
1392
|
-
it "returns true for spec_helper" do
|
|
1393
|
-
expect(config.backtrace_formatter.exclude?("spec/spec_helper.rb")).to be_truthy
|
|
1394
|
-
end
|
|
1395
|
-
|
|
1396
|
-
it "returns true for java files (for JRuby)" do
|
|
1397
|
-
expect(config.backtrace_formatter.exclude?("org/jruby/RubyArray.java:2336")).to be_truthy
|
|
1398
|
-
end
|
|
1399
|
-
|
|
1400
|
-
it "returns true for files within installed gems" do
|
|
1401
|
-
expect(config.backtrace_formatter.exclude?('ruby-1.8.7-p334/gems/mygem-2.3.0/lib/mygem.rb')).to be_truthy
|
|
1402
|
-
end
|
|
1403
|
-
|
|
1404
|
-
it "returns false for files in projects containing 'gems' in the name" do
|
|
1405
|
-
expect(config.backtrace_formatter.exclude?('code/my-gems-plugin/lib/plugin.rb')).to be_falsey
|
|
1406
|
-
end
|
|
1407
|
-
|
|
1408
|
-
it "returns false for something in the current working directory" do
|
|
1409
|
-
expect(config.backtrace_formatter.exclude?("#{Dir.getwd}/arbitrary")).to be_falsey
|
|
1410
|
-
end
|
|
1411
|
-
end
|
|
1412
|
-
|
|
1413
|
-
describe "#debug=true" do
|
|
1414
|
-
before do
|
|
1415
|
-
if defined?(Debugger)
|
|
1416
|
-
@orig_debugger = Debugger
|
|
1417
|
-
Object.send(:remove_const, :Debugger)
|
|
1418
|
-
else
|
|
1419
|
-
@orig_debugger = nil
|
|
1420
|
-
end
|
|
1421
|
-
config.stub(:require)
|
|
1422
|
-
Object.const_set("Debugger", debugger)
|
|
1423
|
-
|
|
1424
|
-
allow_deprecation
|
|
1425
|
-
end
|
|
1426
|
-
|
|
1427
|
-
after do
|
|
1428
|
-
Object.send(:remove_const, :Debugger)
|
|
1429
|
-
Object.const_set("Debugger", @orig_debugger) if @orig_debugger
|
|
1430
|
-
end
|
|
1431
|
-
|
|
1432
|
-
let(:debugger) { double('Debugger').as_null_object }
|
|
1433
|
-
|
|
1434
|
-
it "requires 'ruby-debug'" do
|
|
1435
|
-
config.should_receive(:require).with('ruby-debug')
|
|
1436
|
-
config.debug = true
|
|
1437
|
-
end
|
|
1438
|
-
|
|
1439
|
-
it "starts the debugger" do
|
|
1440
|
-
debugger.should_receive(:start)
|
|
1441
|
-
config.debug = true
|
|
1442
|
-
end
|
|
1443
|
-
|
|
1444
|
-
it "warns that this feature is deprecated" do
|
|
1445
|
-
expect_deprecation_with_call_site(__FILE__, __LINE__ + 1)
|
|
1446
|
-
config.debug = true
|
|
1447
|
-
end
|
|
1448
|
-
end
|
|
1449
|
-
|
|
1450
|
-
describe "#debug=false" do
|
|
1451
|
-
before { allow_deprecation }
|
|
1452
|
-
|
|
1453
|
-
it "does not require 'ruby-debug'" do
|
|
1454
|
-
config.should_not_receive(:require).with('ruby-debug')
|
|
1455
|
-
config.debug = false
|
|
1456
|
-
end
|
|
1457
|
-
|
|
1458
|
-
it "warns that this feature is deprecated" do
|
|
1459
|
-
expect_deprecation_with_call_site(__FILE__, __LINE__ + 1)
|
|
1460
|
-
config.debug = false
|
|
1461
|
-
end
|
|
1462
|
-
end
|
|
1463
|
-
|
|
1464
|
-
describe "#debug?" do
|
|
1465
|
-
before { allow_deprecation }
|
|
1466
|
-
|
|
1467
|
-
it 'returns true if the debugger has been loaded' do
|
|
1468
|
-
stub_const("Debugger", Object.new)
|
|
1469
|
-
expect(config.debug?).to be_truthy
|
|
1470
|
-
end
|
|
1471
|
-
|
|
1472
|
-
it 'returns false if the debugger has not been loaded' do
|
|
1473
|
-
hide_const("Debugger")
|
|
1474
|
-
expect(config.debug?).to be_falsey
|
|
1475
|
-
end
|
|
1476
|
-
|
|
1477
|
-
it "warns that this feature is deprecated" do
|
|
1478
|
-
expect_deprecation_with_call_site(__FILE__, __LINE__ + 1)
|
|
1479
|
-
config.debug?
|
|
1480
|
-
end
|
|
1481
|
-
end
|
|
1482
|
-
|
|
1483
1064
|
describe "#libs=" do
|
|
1484
1065
|
include_context "isolate load path mutation"
|
|
1485
1066
|
|
|
@@ -1706,53 +1287,40 @@ module RSpec::Core
|
|
|
1706
1287
|
end
|
|
1707
1288
|
|
|
1708
1289
|
describe "#force" do
|
|
1709
|
-
|
|
1710
|
-
|
|
1290
|
+
context "for ordering options" do
|
|
1291
|
+
let(:list) { [1, 2, 3, 4] }
|
|
1292
|
+
let(:ordering_strategy) { config.ordering_registry.fetch(:global) }
|
|
1293
|
+
let(:rng) { RSpec::Core::RandomNumberGenerator.new config.seed }
|
|
1294
|
+
let(:shuffled) { Ordering::Random.new(config).shuffle list, rng }
|
|
1711
1295
|
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
expect(config.order).to eq("default")
|
|
1717
|
-
expect(ordered).to eq([1, 2, 3, 4])
|
|
1718
|
-
end
|
|
1296
|
+
specify "CLI `--order defined` takes precedence over `config.order = rand`" do
|
|
1297
|
+
config.force :order => "defined"
|
|
1298
|
+
config.order = "rand"
|
|
1719
1299
|
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
config.order = "rand"
|
|
1723
|
-
|
|
1724
|
-
expect(config.order).to eq("defined")
|
|
1725
|
-
expect(ordered).to eq([1, 2, 3, 4])
|
|
1726
|
-
end
|
|
1727
|
-
|
|
1728
|
-
it "forces order and seed with :order => 'rand:37'" do
|
|
1729
|
-
config.force :order => "rand:37"
|
|
1730
|
-
config.order = "default"
|
|
1731
|
-
|
|
1732
|
-
expect(config.order).to eq("rand")
|
|
1733
|
-
expect(config.seed).to eq(37)
|
|
1300
|
+
expect(ordering_strategy.order(list)).to eq([1, 2, 3, 4])
|
|
1301
|
+
end
|
|
1734
1302
|
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1303
|
+
specify "CLI `--order rand:37` takes precedence over `config.order = defined`" do
|
|
1304
|
+
config.force :order => "rand:37"
|
|
1305
|
+
config.order = "defined"
|
|
1738
1306
|
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
config.order = "defined"
|
|
1307
|
+
expect(ordering_strategy.order(list)).to eq(shuffled)
|
|
1308
|
+
end
|
|
1742
1309
|
|
|
1743
|
-
|
|
1744
|
-
|
|
1310
|
+
specify "CLI `--seed 37` forces order and seed" do
|
|
1311
|
+
config.force :seed => 37
|
|
1312
|
+
config.order = "defined"
|
|
1313
|
+
config.seed = 145
|
|
1745
1314
|
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1315
|
+
expect(ordering_strategy.order(list)).to eq(shuffled)
|
|
1316
|
+
expect(config.seed).to eq(37)
|
|
1317
|
+
end
|
|
1749
1318
|
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
expect(list.ordered).to eq([2, 4, 1, 3])
|
|
1319
|
+
specify "CLI `--order defined` takes precedence over `config.register_ordering(:global)`" do
|
|
1320
|
+
config.force :order => "defined"
|
|
1321
|
+
config.register_ordering(:global, &:reverse)
|
|
1322
|
+
expect(ordering_strategy.order(list)).to eq([1, 2, 3, 4])
|
|
1323
|
+
end
|
|
1756
1324
|
end
|
|
1757
1325
|
|
|
1758
1326
|
it "forces 'false' value" do
|
|
@@ -1773,195 +1341,97 @@ module RSpec::Core
|
|
|
1773
1341
|
end
|
|
1774
1342
|
end
|
|
1775
1343
|
|
|
1776
|
-
describe
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
it 'returns true' do
|
|
1781
|
-
expect(config.randomize?).to be_truthy
|
|
1782
|
-
end
|
|
1344
|
+
describe "#seed_used?" do
|
|
1345
|
+
def use_seed_on(registry)
|
|
1346
|
+
registry.fetch(:random).order([1, 2])
|
|
1783
1347
|
end
|
|
1784
1348
|
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
it 'returns false' do
|
|
1789
|
-
expect(config.randomize?).to be_falsey
|
|
1790
|
-
end
|
|
1349
|
+
it 'returns false if neither ordering registry used the seed' do
|
|
1350
|
+
expect(config.seed_used?).to be false
|
|
1791
1351
|
end
|
|
1792
1352
|
|
|
1793
|
-
it '
|
|
1794
|
-
|
|
1795
|
-
config.
|
|
1353
|
+
it 'returns true if the ordering registry used the seed' do
|
|
1354
|
+
use_seed_on(config.ordering_registry)
|
|
1355
|
+
expect(config.seed_used?).to be true
|
|
1796
1356
|
end
|
|
1797
1357
|
end
|
|
1798
1358
|
|
|
1799
1359
|
describe '#order=' do
|
|
1800
|
-
context 'given "random
|
|
1801
|
-
before
|
|
1360
|
+
context 'given "random"' do
|
|
1361
|
+
before do
|
|
1362
|
+
config.seed = 7654
|
|
1363
|
+
config.order = 'random'
|
|
1364
|
+
end
|
|
1802
1365
|
|
|
1803
|
-
it '
|
|
1804
|
-
expect(config.
|
|
1366
|
+
it 'does not change the seed' do
|
|
1367
|
+
expect(config.seed).to eq(7654)
|
|
1805
1368
|
end
|
|
1806
1369
|
|
|
1370
|
+
it 'sets up random ordering' do
|
|
1371
|
+
RSpec.stub(:configuration => config)
|
|
1372
|
+
global_ordering = config.ordering_registry.fetch(:global)
|
|
1373
|
+
expect(global_ordering).to be_an_instance_of(Ordering::Random)
|
|
1374
|
+
end
|
|
1375
|
+
end
|
|
1376
|
+
|
|
1377
|
+
context 'given "random:123"' do
|
|
1378
|
+
before { config.order = 'random:123' }
|
|
1379
|
+
|
|
1807
1380
|
it 'sets seed to 123' do
|
|
1808
1381
|
expect(config.seed).to eq(123)
|
|
1809
1382
|
end
|
|
1810
1383
|
|
|
1811
1384
|
it 'sets up random ordering' do
|
|
1812
1385
|
RSpec.stub(:configuration => config)
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
expect(list.ordered).to eq([2, 4, 1, 3])
|
|
1386
|
+
global_ordering = config.ordering_registry.fetch(:global)
|
|
1387
|
+
expect(global_ordering).to be_an_instance_of(Ordering::Random)
|
|
1816
1388
|
end
|
|
1817
1389
|
end
|
|
1818
1390
|
|
|
1819
|
-
|
|
1391
|
+
context 'given "defined"' do
|
|
1820
1392
|
before do
|
|
1821
1393
|
config.order = 'rand:123'
|
|
1822
|
-
config.order =
|
|
1823
|
-
end
|
|
1824
|
-
|
|
1825
|
-
it "sets the order to nil" do
|
|
1826
|
-
expect(config.order).to be_nil
|
|
1394
|
+
config.order = 'defined'
|
|
1827
1395
|
end
|
|
1828
1396
|
|
|
1829
|
-
it "
|
|
1830
|
-
expect(config.seed).to
|
|
1397
|
+
it "does not change the seed" do
|
|
1398
|
+
expect(config.seed).to eq(123)
|
|
1831
1399
|
end
|
|
1832
1400
|
|
|
1833
1401
|
it 'clears the random ordering' do
|
|
1834
1402
|
RSpec.stub(:configuration => config)
|
|
1835
|
-
list = [1, 2, 3, 4]
|
|
1836
|
-
|
|
1837
|
-
expect(list
|
|
1838
|
-
end
|
|
1839
|
-
end
|
|
1840
|
-
|
|
1841
|
-
context "given 'default'" do
|
|
1842
|
-
include_examples "defined order", 'default'
|
|
1843
|
-
|
|
1844
|
-
it 'prints a deprecation notice' do
|
|
1845
|
-
expect_deprecation_with_call_site(__FILE__, __LINE__ + 1, /default/)
|
|
1846
|
-
config.order = 'default'
|
|
1403
|
+
list = [1, 2, 3, 4]
|
|
1404
|
+
ordering_strategy = config.ordering_registry.fetch(:global)
|
|
1405
|
+
expect(ordering_strategy.order(list)).to eq([1, 2, 3, 4])
|
|
1847
1406
|
end
|
|
1848
1407
|
end
|
|
1849
|
-
|
|
1850
|
-
context "given 'defined'" do
|
|
1851
|
-
include_examples "defined order", 'defined'
|
|
1852
|
-
end
|
|
1853
|
-
end
|
|
1854
|
-
|
|
1855
|
-
describe "#order_examples" do
|
|
1856
|
-
before do
|
|
1857
|
-
allow_deprecation
|
|
1858
|
-
RSpec.stub(:configuration => config)
|
|
1859
|
-
end
|
|
1860
|
-
|
|
1861
|
-
it 'sets a block that determines the ordering of a collection extended with Extensions::Ordered::Examples' do
|
|
1862
|
-
examples = [1, 2, 3, 4]
|
|
1863
|
-
examples.extend Extensions::Ordered::Examples
|
|
1864
|
-
config.order_examples { |examples_to_order| examples_to_order.reverse }
|
|
1865
|
-
expect(examples.ordered).to eq([4, 3, 2, 1])
|
|
1866
|
-
end
|
|
1867
|
-
|
|
1868
|
-
it 'sets #order to "custom"' do
|
|
1869
|
-
config.order_examples { |examples| examples.reverse }
|
|
1870
|
-
expect(config.order).to eq("custom")
|
|
1871
|
-
end
|
|
1872
|
-
|
|
1873
|
-
it 'prints a deprecation warning' do
|
|
1874
|
-
expect_deprecation_with_call_site(__FILE__, __LINE__ + 1, /RSpec::Configuration#order_examples/)
|
|
1875
|
-
config.order_examples { }
|
|
1876
|
-
end
|
|
1877
|
-
end
|
|
1878
|
-
|
|
1879
|
-
describe "#example_ordering_block" do
|
|
1880
|
-
it 'defaults to a block that returns the passed argument' do
|
|
1881
|
-
expect(config.example_ordering_block.call([1, 2, 3])).to eq([1, 2, 3])
|
|
1882
|
-
end
|
|
1883
1408
|
end
|
|
1884
1409
|
|
|
1885
|
-
describe "#
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
RSpec.stub(:configuration => config)
|
|
1889
|
-
end
|
|
1890
|
-
|
|
1891
|
-
it 'sets a block that determines the ordering of a collection extended with Extensions::Ordered::ExampleGroups' do
|
|
1892
|
-
groups = [1, 2, 3, 4]
|
|
1893
|
-
groups.extend Extensions::Ordered::ExampleGroups
|
|
1894
|
-
config.order_groups { |groups_to_order| groups_to_order.reverse }
|
|
1895
|
-
expect(groups.ordered).to eq([4, 3, 2, 1])
|
|
1896
|
-
end
|
|
1897
|
-
|
|
1898
|
-
it 'sets #order to "custom"' do
|
|
1899
|
-
config.order_groups { |groups| groups.reverse }
|
|
1900
|
-
expect(config.order).to eq("custom")
|
|
1410
|
+
describe "#register_ordering" do
|
|
1411
|
+
def register_reverse_ordering
|
|
1412
|
+
config.register_ordering(:reverse, &:reverse)
|
|
1901
1413
|
end
|
|
1902
1414
|
|
|
1903
|
-
it '
|
|
1904
|
-
|
|
1905
|
-
config.order_groups { }
|
|
1906
|
-
end
|
|
1907
|
-
end
|
|
1415
|
+
it 'stores the ordering for later use' do
|
|
1416
|
+
register_reverse_ordering
|
|
1908
1417
|
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
expect(
|
|
1418
|
+
list = [1, 2, 3]
|
|
1419
|
+
strategy = config.ordering_registry.fetch(:reverse)
|
|
1420
|
+
expect(strategy).to be_a(Ordering::Custom)
|
|
1421
|
+
expect(strategy.order(list)).to eq([3, 2, 1])
|
|
1912
1422
|
end
|
|
1913
|
-
end
|
|
1914
1423
|
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
RSpec.stub(:configuration => config)
|
|
1921
|
-
config.order_groups_and_examples { |list| list.reverse }
|
|
1922
|
-
end
|
|
1923
|
-
|
|
1924
|
-
it 'sets a block that determines the ordering of a collection extended with Extensions::Ordered::Examples' do
|
|
1925
|
-
expect(examples.ordered).to eq([4, 3, 2, 1])
|
|
1926
|
-
end
|
|
1927
|
-
|
|
1928
|
-
it 'sets a block that determines the ordering of a collection extended with Extensions::Ordered::ExampleGroups' do
|
|
1929
|
-
expect(groups.ordered).to eq([4, 3, 2, 1])
|
|
1930
|
-
end
|
|
1931
|
-
end
|
|
1932
|
-
|
|
1933
|
-
describe "#register_ordering(:global)" do
|
|
1934
|
-
let(:examples) { [1, 2, 3, 4].extend Extensions::Ordered::Examples }
|
|
1935
|
-
let(:groups) { [1, 2, 3, 4].extend Extensions::Ordered::ExampleGroups }
|
|
1936
|
-
|
|
1937
|
-
before do
|
|
1938
|
-
RSpec.stub(:configuration => config)
|
|
1939
|
-
config.register_ordering(:global) { |list| list.reverse }
|
|
1940
|
-
end
|
|
1941
|
-
|
|
1942
|
-
it 'sets a block that determines the ordering of a collection extended with Extensions::Ordered::Examples' do
|
|
1943
|
-
expect(examples.ordered).to eq([4, 3, 2, 1])
|
|
1944
|
-
end
|
|
1945
|
-
|
|
1946
|
-
it 'sets a block that determines the ordering of a collection extended with Extensions::Ordered::ExampleGroups' do
|
|
1947
|
-
expect(groups.ordered).to eq([4, 3, 2, 1])
|
|
1948
|
-
end
|
|
1949
|
-
|
|
1950
|
-
it 'sets #order to "custom"' do
|
|
1951
|
-
expect(config.order).to eq("custom")
|
|
1952
|
-
end
|
|
1953
|
-
|
|
1954
|
-
it 'raises an ArgumentError if given a symbol other than `:global`' do
|
|
1955
|
-
expect {
|
|
1956
|
-
config.register_ordering(:custom) { }
|
|
1957
|
-
}.to raise_error(ArgumentError, /:global/)
|
|
1958
|
-
end
|
|
1959
|
-
end
|
|
1424
|
+
it 'can register an ordering object' do
|
|
1425
|
+
strategy = Object.new
|
|
1426
|
+
def strategy.order(list)
|
|
1427
|
+
list.reverse
|
|
1428
|
+
end
|
|
1960
1429
|
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1430
|
+
config.register_ordering(:reverse, strategy)
|
|
1431
|
+
list = [1, 2, 3]
|
|
1432
|
+
fetched = config.ordering_registry.fetch(:reverse)
|
|
1433
|
+
expect(fetched).to be(strategy)
|
|
1434
|
+
expect(fetched.order(list)).to eq([3, 2, 1])
|
|
1965
1435
|
end
|
|
1966
1436
|
end
|
|
1967
1437
|
|
|
@@ -1982,12 +1452,7 @@ module RSpec::Core
|
|
|
1982
1452
|
expect($VERBOSE).to eq false
|
|
1983
1453
|
end
|
|
1984
1454
|
|
|
1985
|
-
it 'returns the verbosity setting
|
|
1986
|
-
expect(config.warnings?).to eq $VERBOSE
|
|
1987
|
-
end
|
|
1988
|
-
|
|
1989
|
-
it 'warns when using the deprecated `warnings` reader' do
|
|
1990
|
-
expect_deprecation_with_call_site(__FILE__, __LINE__ + 1, /warnings/)
|
|
1455
|
+
it 'returns the verbosity setting' do
|
|
1991
1456
|
expect(config.warnings).to eq $VERBOSE
|
|
1992
1457
|
end
|
|
1993
1458
|
|
|
@@ -2030,42 +1495,6 @@ module RSpec::Core
|
|
|
2030
1495
|
expect(value_1.description).to eq("works")
|
|
2031
1496
|
expect(value_2).to be(value_1)
|
|
2032
1497
|
end
|
|
2033
|
-
|
|
2034
|
-
[:example, :running_example].each do |name|
|
|
2035
|
-
it "silences the deprecation warning for ##{name} when configured to expose via that name" do
|
|
2036
|
-
RSpec.configuration.expose_current_running_example_as name
|
|
2037
|
-
allow(RSpec).to receive(:deprecate)
|
|
2038
|
-
|
|
2039
|
-
ExampleGroup.describe "Group" do
|
|
2040
|
-
specify { __send__(name) }
|
|
2041
|
-
end.run
|
|
2042
|
-
|
|
2043
|
-
expect(RSpec).to_not have_received(:deprecate)
|
|
2044
|
-
end
|
|
2045
|
-
end
|
|
2046
|
-
end
|
|
2047
|
-
|
|
2048
|
-
describe '#show_failures_in_pending_blocks' do
|
|
2049
|
-
specify 'reader is deprecated' do
|
|
2050
|
-
expect_warn_deprecation_with_call_site(__FILE__, __LINE__ + 3,
|
|
2051
|
-
/show_failures_in_pending_blocks/)
|
|
2052
|
-
|
|
2053
|
-
config.show_failures_in_pending_blocks
|
|
2054
|
-
end
|
|
2055
|
-
|
|
2056
|
-
specify 'predicate is deprecated' do
|
|
2057
|
-
expect_warn_deprecation_with_call_site(__FILE__, __LINE__ + 3,
|
|
2058
|
-
/show_failures_in_pending_blocks/)
|
|
2059
|
-
|
|
2060
|
-
config.show_failures_in_pending_blocks?
|
|
2061
|
-
end
|
|
2062
|
-
|
|
2063
|
-
specify 'writer is deprecated' do
|
|
2064
|
-
expect_warn_deprecation_with_call_site(__FILE__, __LINE__ + 3,
|
|
2065
|
-
/show_failures_in_pending_blocks/)
|
|
2066
|
-
|
|
2067
|
-
config.show_failures_in_pending_blocks = true
|
|
2068
|
-
end
|
|
2069
1498
|
end
|
|
2070
1499
|
|
|
2071
1500
|
end
|