rspec-core 2.8.0.rc1 → 2.8.0.rc2
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/License.txt +24 -0
- data/README.md +197 -37
- data/features/command_line/format_option.feature +3 -3
- data/features/command_line/init.feature +18 -0
- data/features/example_groups/shared_examples.feature +1 -1
- data/features/hooks/around_hooks.feature +4 -4
- data/features/pending/pending_examples.feature +5 -5
- data/features/support/env.rb +8 -1
- data/lib/autotest/rspec2.rb +2 -6
- data/lib/rspec/core.rb +48 -158
- data/lib/rspec/core/backward_compatibility.rb +2 -0
- data/lib/rspec/core/command_line.rb +4 -0
- data/lib/rspec/core/configuration.rb +201 -106
- data/lib/rspec/core/configuration_options.rb +2 -1
- data/lib/rspec/core/deprecation.rb +2 -3
- data/lib/rspec/core/drb_options.rb +69 -58
- data/lib/rspec/core/dsl.rb +12 -0
- data/lib/rspec/core/example.rb +53 -18
- data/lib/rspec/core/example_group.rb +144 -54
- data/lib/rspec/core/extensions.rb +4 -4
- data/lib/rspec/core/extensions/instance_eval_with_args.rb +5 -0
- data/lib/rspec/core/extensions/kernel.rb +1 -1
- data/lib/rspec/core/extensions/module_eval_with_args.rb +4 -0
- data/lib/rspec/core/extensions/ordered.rb +7 -2
- data/lib/rspec/core/filter_manager.rb +69 -36
- data/lib/rspec/core/formatters/base_text_formatter.rb +1 -1
- data/lib/rspec/core/formatters/html_formatter.rb +10 -4
- data/lib/rspec/core/hooks.rb +93 -34
- data/lib/rspec/core/let.rb +62 -61
- data/lib/rspec/core/metadata.rb +103 -80
- data/lib/rspec/core/metadata_hash_builder.rb +4 -0
- data/lib/rspec/core/option_parser.rb +42 -44
- data/lib/rspec/core/pending.rb +25 -3
- data/lib/rspec/core/project_initializer.rb +62 -0
- data/lib/rspec/core/rake_task.rb +7 -13
- data/lib/rspec/core/runner.rb +2 -2
- data/lib/rspec/core/shared_context.rb +1 -1
- data/lib/rspec/core/shared_example_group.rb +11 -5
- data/lib/rspec/core/subject.rb +3 -3
- data/lib/rspec/core/version.rb +1 -1
- data/lib/rspec/monkey.rb +1 -1
- data/lib/rspec/monkey/spork/test_framework/rspec.rb +2 -0
- data/spec/command_line/order_spec.rb +19 -13
- data/spec/rspec/core/command_line_spec.rb +1 -5
- data/spec/rspec/core/configuration_options_spec.rb +22 -27
- data/spec/rspec/core/configuration_spec.rb +32 -14
- data/spec/rspec/core/drb_command_line_spec.rb +20 -37
- data/spec/rspec/core/drb_options_spec.rb +51 -3
- data/spec/rspec/core/example_group_spec.rb +101 -84
- data/spec/rspec/core/example_spec.rb +14 -0
- data/spec/rspec/core/filter_manager_spec.rb +114 -33
- data/spec/rspec/core/formatters/html_formatted-1.8.7-jruby.html +17 -69
- data/spec/rspec/core/formatters/html_formatted-1.8.7.html +14 -4
- data/spec/rspec/core/formatters/html_formatted-1.9.2.html +14 -4
- data/spec/rspec/core/formatters/html_formatted-1.9.3.html +14 -4
- data/spec/rspec/core/formatters/html_formatter_spec.rb +1 -1
- data/spec/rspec/core/formatters/text_mate_formatted-1.8.7-jruby.html +20 -72
- data/spec/rspec/core/formatters/text_mate_formatted-1.8.7.html +24 -14
- data/spec/rspec/core/formatters/text_mate_formatted-1.9.2.html +29 -19
- data/spec/rspec/core/formatters/text_mate_formatted-1.9.3.html +29 -19
- data/spec/rspec/core/formatters/text_mate_formatter_spec.rb +1 -2
- data/spec/rspec/core/metadata_spec.rb +77 -45
- data/spec/rspec/core/option_parser_spec.rb +5 -0
- data/spec/rspec/core/pending_example_spec.rb +44 -12
- data/spec/rspec/core/project_initializer_spec.rb +130 -0
- data/spec/rspec/core/rake_task_spec.rb +1 -1
- data/spec/spec_helper.rb +2 -0
- data/spec/support/matchers.rb +2 -12
- metadata +18 -16
- data/features/command_line/configure.feature +0 -22
- data/lib/rspec/core/command_line_configuration.rb +0 -62
- data/lib/rspec/core/errors.rb +0 -13
- data/spec/rspec/core/command_line_configuration_spec.rb +0 -26
@@ -11,7 +11,6 @@ class SelfObserver
|
|
11
11
|
end
|
12
12
|
|
13
13
|
module RSpec::Core
|
14
|
-
|
15
14
|
describe ExampleGroup do
|
16
15
|
it_behaves_like "metadata hash builder" do
|
17
16
|
def metadata_hash(*args)
|
@@ -23,7 +22,6 @@ module RSpec::Core
|
|
23
22
|
context 'when RSpec.configuration.treat_symbols_as_metadata_keys_with_true_values is set to false' do
|
24
23
|
before(:each) do
|
25
24
|
RSpec.configure { |c| c.treat_symbols_as_metadata_keys_with_true_values = false }
|
26
|
-
Kernel.stub(:warn)
|
27
25
|
end
|
28
26
|
|
29
27
|
it 'processes string args as part of the description' do
|
@@ -32,6 +30,7 @@ module RSpec::Core
|
|
32
30
|
end
|
33
31
|
|
34
32
|
it 'processes symbol args as part of the description' do
|
33
|
+
Kernel.stub(:warn) # to silence Symbols as args warning
|
35
34
|
group = ExampleGroup.describe(:some, :separate, :symbols)
|
36
35
|
group.description.should eq("some separate symbols")
|
37
36
|
end
|
@@ -39,6 +38,7 @@ module RSpec::Core
|
|
39
38
|
|
40
39
|
context 'when RSpec.configuration.treat_symbols_as_metadata_keys_with_true_values is set to true' do
|
41
40
|
let(:group) { ExampleGroup.describe(:symbol) }
|
41
|
+
|
42
42
|
before(:each) do
|
43
43
|
RSpec.configure { |c| c.treat_symbols_as_metadata_keys_with_true_values = true }
|
44
44
|
end
|
@@ -265,17 +265,17 @@ module RSpec::Core
|
|
265
265
|
end
|
266
266
|
end
|
267
267
|
|
268
|
-
describe '#
|
268
|
+
describe '#described_class' do
|
269
269
|
|
270
270
|
context "with a constant as the first parameter" do
|
271
271
|
it "is that constant" do
|
272
|
-
ExampleGroup.describe(Object) { }.
|
272
|
+
ExampleGroup.describe(Object) { }.described_class.should eq(Object)
|
273
273
|
end
|
274
274
|
end
|
275
275
|
|
276
276
|
context "with a string as the first parameter" do
|
277
277
|
it "is nil" do
|
278
|
-
ExampleGroup.describe("i'm a computer") { }.
|
278
|
+
ExampleGroup.describe("i'm a computer") { }.described_class.should be_nil
|
279
279
|
end
|
280
280
|
end
|
281
281
|
|
@@ -284,7 +284,7 @@ module RSpec::Core
|
|
284
284
|
it "is the top level constant" do
|
285
285
|
group = ExampleGroup.describe(String) do
|
286
286
|
describe :symbol do
|
287
|
-
example "
|
287
|
+
example "described_class is String" do
|
288
288
|
described_class.should eq(String)
|
289
289
|
end
|
290
290
|
end
|
@@ -311,8 +311,8 @@ module RSpec::Core
|
|
311
311
|
end
|
312
312
|
|
313
313
|
describe '#described_class' do
|
314
|
-
it "is the same as
|
315
|
-
self.class.described_class.should eq(self.class.
|
314
|
+
it "is the same as described_class" do
|
315
|
+
self.class.described_class.should eq(self.class.described_class)
|
316
316
|
end
|
317
317
|
end
|
318
318
|
|
@@ -618,19 +618,26 @@ module RSpec::Core
|
|
618
618
|
end
|
619
619
|
end
|
620
620
|
|
621
|
-
matcher :add_a_pending_example_with do |method_name|
|
622
|
-
match do |group|
|
623
|
-
group = ExampleGroup.describe
|
624
|
-
group.send(method_name, "is pending") { }
|
625
|
-
group.run
|
626
|
-
group.examples.first.should be_pending
|
627
|
-
end
|
628
|
-
end
|
629
|
-
|
630
621
|
%w[pending xit xspecify xexample].each do |method_name|
|
631
|
-
describe "
|
622
|
+
describe "::#{method_name}" do
|
623
|
+
before do
|
624
|
+
@group = ExampleGroup.describe
|
625
|
+
@group.send(method_name, "is pending") { }
|
626
|
+
end
|
627
|
+
|
632
628
|
it "generates a pending example" do
|
633
|
-
|
629
|
+
@group.run
|
630
|
+
@group.examples.first.should be_pending
|
631
|
+
end
|
632
|
+
|
633
|
+
it "sets the pending message", :if => method_name == 'pending' do
|
634
|
+
@group.run
|
635
|
+
@group.examples.first.metadata[:execution_result][:pending_message].should eq(RSpec::Core::Pending::NO_REASON_GIVEN)
|
636
|
+
end
|
637
|
+
|
638
|
+
it "sets the pending message", :unless => method_name == 'pending' do
|
639
|
+
@group.run
|
640
|
+
@group.examples.first.metadata[:execution_result][:pending_message].should eq("Temporarily disabled with #{method_name}")
|
634
641
|
end
|
635
642
|
end
|
636
643
|
end
|
@@ -667,7 +674,7 @@ module RSpec::Core
|
|
667
674
|
|
668
675
|
describe "A sample nested group", :nested_describe => "yep" do
|
669
676
|
it "sets the described class to the described class of the outer most group" do
|
670
|
-
example.example_group.
|
677
|
+
example.example_group.described_class.should eq(ExampleGroup)
|
671
678
|
end
|
672
679
|
|
673
680
|
it "sets the description to 'A sample nested describe'" do
|
@@ -893,54 +900,66 @@ module RSpec::Core
|
|
893
900
|
end
|
894
901
|
end
|
895
902
|
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
903
|
+
%w[include_examples include_context].each do |name|
|
904
|
+
describe "##{name}" do
|
905
|
+
before do
|
906
|
+
shared_examples "named this" do
|
907
|
+
example("does something") {}
|
908
|
+
end
|
900
909
|
end
|
901
|
-
end
|
902
910
|
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
foo.should eq('foo')
|
908
|
-
end
|
911
|
+
it "includes the named examples" do
|
912
|
+
group = ExampleGroup.describe
|
913
|
+
group.send(name, "named this")
|
914
|
+
group.examples.first.description.should eq("does something")
|
909
915
|
end
|
910
|
-
group.run.should be_true
|
911
|
-
end
|
912
916
|
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
+
it "raises a helpful error message when shared content is not found" do
|
918
|
+
group = ExampleGroup.describe
|
919
|
+
expect do
|
920
|
+
group.send(name, "shared stuff")
|
921
|
+
end.to raise_error(ArgumentError, /Could not find .* "shared stuff"/)
|
922
|
+
end
|
923
|
+
|
924
|
+
it "passes parameters to the shared content" do
|
925
|
+
passed_params = {}
|
926
|
+
|
927
|
+
shared_examples "named this with params" do |param1, param2|
|
928
|
+
it("has access to the given parameters") do
|
929
|
+
passed_params[:param1] = param1
|
930
|
+
passed_params[:param2] = param2
|
931
|
+
end
|
917
932
|
end
|
918
|
-
end.to raise_error(ArgumentError,%q|Could not find shared context "shared stuff"|)
|
919
|
-
end
|
920
933
|
|
921
|
-
|
934
|
+
group = ExampleGroup.describe
|
935
|
+
group.send(name, "named this with params", :value1, :value2)
|
936
|
+
group.run
|
922
937
|
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
938
|
+
passed_params.should eq({ :param1 => :value1, :param2 => :value2 })
|
939
|
+
end
|
940
|
+
|
941
|
+
it "adds shared instance methods to the group" do
|
942
|
+
shared_examples "named this with params" do |param1|
|
943
|
+
def foo; end
|
927
944
|
end
|
945
|
+
group = ExampleGroup.describe('fake group')
|
946
|
+
group.send(name, "named this with params", :a)
|
947
|
+
group.public_instance_methods.map{|m| m.to_s}.should include("foo")
|
928
948
|
end
|
929
|
-
end
|
930
949
|
|
931
|
-
|
932
|
-
|
933
|
-
|
950
|
+
it "evals the shared example group only once" do
|
951
|
+
eval_count = 0
|
952
|
+
shared_examples("named this with params") { |p| eval_count += 1 }
|
953
|
+
group = ExampleGroup.describe('fake group')
|
954
|
+
group.send(name, "named this with params", :a)
|
955
|
+
eval_count.should eq(1)
|
934
956
|
end
|
935
|
-
group.examples.first.description.should eq("does something")
|
936
|
-
end
|
937
957
|
|
938
|
-
|
939
|
-
|
940
|
-
|
941
|
-
|
942
|
-
|
943
|
-
end.to raise_error(ArgumentError,%q|Could not find shared examples "shared stuff"|)
|
958
|
+
it "warns the user that blocks are not supported when given a block" do
|
959
|
+
group = ExampleGroup.describe
|
960
|
+
group.should_receive(:warn).with(/blocks not supported for #{name}/)
|
961
|
+
group.send(name, "named this with block") {}
|
962
|
+
end
|
944
963
|
end
|
945
964
|
end
|
946
965
|
|
@@ -987,41 +1006,39 @@ module RSpec::Core
|
|
987
1006
|
shared_group.methods.map{|m| m.to_s}.should include("foo")
|
988
1007
|
end
|
989
1008
|
|
990
|
-
|
991
|
-
|
992
|
-
passed_params = {}
|
993
|
-
|
994
|
-
shared_examples_for("thing") do |param1, param2|
|
995
|
-
it("has access to the given parameters") do
|
996
|
-
passed_params[:param1] = param1
|
997
|
-
passed_params[:param2] = param2
|
998
|
-
end
|
999
|
-
end
|
1009
|
+
it "passes parameters to the shared example group" do
|
1010
|
+
passed_params = {}
|
1000
1011
|
|
1001
|
-
|
1002
|
-
|
1012
|
+
shared_examples_for("thing") do |param1, param2|
|
1013
|
+
it("has access to the given parameters") do
|
1014
|
+
passed_params[:param1] = param1
|
1015
|
+
passed_params[:param2] = param2
|
1003
1016
|
end
|
1004
|
-
group.run
|
1005
|
-
|
1006
|
-
passed_params.should eq({ :param1 => :value1, :param2 => :value2 })
|
1007
1017
|
end
|
1008
1018
|
|
1009
|
-
|
1010
|
-
|
1011
|
-
def foo; end
|
1012
|
-
end
|
1013
|
-
group = ExampleGroup.describe('fake group')
|
1014
|
-
shared_group = group.it_should_behave_like("thing", :a)
|
1015
|
-
shared_group.public_instance_methods.map{|m| m.to_s}.should include("foo")
|
1019
|
+
group = ExampleGroup.describe("group") do
|
1020
|
+
it_should_behave_like "thing", :value1, :value2
|
1016
1021
|
end
|
1022
|
+
group.run
|
1017
1023
|
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1022
|
-
|
1023
|
-
|
1024
|
+
passed_params.should eq({ :param1 => :value1, :param2 => :value2 })
|
1025
|
+
end
|
1026
|
+
|
1027
|
+
it "adds shared instance methods to nested group" do
|
1028
|
+
shared_examples_for("thing") do |param1|
|
1029
|
+
def foo; end
|
1024
1030
|
end
|
1031
|
+
group = ExampleGroup.describe('fake group')
|
1032
|
+
shared_group = group.it_should_behave_like("thing", :a)
|
1033
|
+
shared_group.public_instance_methods.map{|m| m.to_s}.should include("foo")
|
1034
|
+
end
|
1035
|
+
|
1036
|
+
it "evals the shared example group only once" do
|
1037
|
+
eval_count = 0
|
1038
|
+
shared_examples_for("thing") { |p| eval_count += 1 }
|
1039
|
+
group = ExampleGroup.describe('fake group')
|
1040
|
+
group.it_should_behave_like("thing", :a)
|
1041
|
+
eval_count.should eq(1)
|
1025
1042
|
end
|
1026
1043
|
|
1027
1044
|
context "given a block" do
|
@@ -29,6 +29,20 @@ describe RSpec::Core::Example, :parent_metadata => 'sample' do
|
|
29
29
|
example_group.run
|
30
30
|
example.exception.should be_nil
|
31
31
|
end
|
32
|
+
|
33
|
+
it "returns false for pending_fixed? if not pending fixed" do
|
34
|
+
example = example_group.example { fail }
|
35
|
+
example_group.run
|
36
|
+
example.exception.should_not be_pending_fixed
|
37
|
+
end
|
38
|
+
|
39
|
+
it "returns true for pending_fixed? if pending fixed" do
|
40
|
+
example = example_group.example do
|
41
|
+
pending("fixed") {}
|
42
|
+
end
|
43
|
+
example_group.run
|
44
|
+
example.exception.should be_pending_fixed
|
45
|
+
end
|
32
46
|
end
|
33
47
|
|
34
48
|
describe "auto-generated example descriptions" do
|
@@ -2,52 +2,112 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module RSpec::Core
|
4
4
|
describe FilterManager do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
5
|
+
def opposite(name)
|
6
|
+
name =~ /^in/ ? name.sub(/^(in)/,'ex') : name.sub(/^(ex)/,'in')
|
7
|
+
end
|
8
|
+
|
9
|
+
%w[include inclusions exclude exclusions].each_slice(2) do |name, type|
|
10
|
+
describe "##{name}" do
|
11
|
+
it "merges #{type}" do
|
12
|
+
filter_manager = FilterManager.new
|
13
|
+
filter_manager.exclusions.clear # defaults
|
14
|
+
filter_manager.send name, :foo => :bar
|
15
|
+
filter_manager.send name, :baz => :bam
|
16
|
+
filter_manager.send(type).should eq(:foo => :bar, :baz => :bam)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "overrides previous #{type} with (via merge)" do
|
20
|
+
filter_manager = FilterManager.new
|
21
|
+
filter_manager.exclusions.clear # defaults
|
22
|
+
filter_manager.send name, :foo => 1
|
23
|
+
filter_manager.send name, :foo => 2
|
24
|
+
filter_manager.send(type).should eq(:foo => 2)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "deletes matching opposites" do
|
28
|
+
filter_manager = FilterManager.new
|
29
|
+
filter_manager.exclusions.clear # defaults
|
30
|
+
filter_manager.send opposite(name), :foo => 1
|
31
|
+
filter_manager.send name, :foo => 2
|
32
|
+
filter_manager.send(type).should eq(:foo => 2)
|
33
|
+
filter_manager.send(opposite(type)).should be_empty
|
34
|
+
end
|
12
35
|
end
|
13
36
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
37
|
+
describe "##{name}!" do
|
38
|
+
it "replaces existing #{type}" do
|
39
|
+
filter_manager = FilterManager.new
|
40
|
+
filter_manager.exclusions.clear # defaults
|
41
|
+
filter_manager.send name, :foo => 1, :bar => 2
|
42
|
+
filter_manager.send "#{name}!", :foo => 3
|
43
|
+
filter_manager.send(type).should eq(:foo => 3)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "deletes matching opposites" do
|
47
|
+
filter_manager = FilterManager.new
|
48
|
+
filter_manager.exclusions.clear # defaults
|
49
|
+
filter_manager.send opposite(name), :foo => 1
|
50
|
+
filter_manager.send "#{name}!", :foo => 2
|
51
|
+
filter_manager.send(type).should eq(:foo => 2)
|
52
|
+
filter_manager.send(opposite(type)).should be_empty
|
53
|
+
end
|
20
54
|
end
|
21
55
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
56
|
+
describe "##{name}_with_low_priority" do
|
57
|
+
it "ignores new #{type} if same key exists" do
|
58
|
+
filter_manager = FilterManager.new
|
59
|
+
filter_manager.exclusions.clear # defaults
|
60
|
+
filter_manager.send name, :foo => 1
|
61
|
+
filter_manager.send "#{name}_with_low_priority", :foo => 2
|
62
|
+
filter_manager.send(type).should eq(:foo => 1)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "ignores new #{type} if same key exists in opposite" do
|
66
|
+
filter_manager = FilterManager.new
|
67
|
+
filter_manager.exclusions.clear # defaults
|
68
|
+
filter_manager.send opposite(name), :foo => 1
|
69
|
+
filter_manager.send "#{name}_with_low_priority", :foo => 1
|
70
|
+
filter_manager.send(type).should be_empty
|
71
|
+
filter_manager.send(opposite(type)).should eq(:foo => 1)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "keeps new #{type} if same key exists in opposite but values are different" do
|
75
|
+
filter_manager = FilterManager.new
|
76
|
+
filter_manager.exclusions.clear # defaults
|
77
|
+
filter_manager.send opposite(name), :foo => 1
|
78
|
+
filter_manager.send "#{name}_with_low_priority", :foo => 2
|
79
|
+
filter_manager.send(type).should eq(:foo => 2)
|
80
|
+
filter_manager.send(opposite(type)).should eq(:foo => 1)
|
81
|
+
end
|
28
82
|
end
|
29
83
|
end
|
30
84
|
|
31
85
|
describe "#prune" do
|
86
|
+
def filterable_object_with(args = {})
|
87
|
+
object = double('a filterable object')
|
88
|
+
object.stub(:any_apply?) { |f| Metadata.new(args).any_apply?(f) }
|
89
|
+
object
|
90
|
+
end
|
91
|
+
|
32
92
|
it "includes objects with tags matching inclusions" do
|
33
|
-
included =
|
34
|
-
excluded =
|
93
|
+
included = filterable_object_with({:foo => :bar})
|
94
|
+
excluded = filterable_object_with
|
35
95
|
filter_manager = FilterManager.new
|
36
96
|
filter_manager.include :foo => :bar
|
37
97
|
filter_manager.prune([included, excluded]).should eq([included])
|
38
98
|
end
|
39
99
|
|
40
100
|
it "excludes objects with tags matching exclusions" do
|
41
|
-
included =
|
42
|
-
excluded =
|
101
|
+
included = filterable_object_with
|
102
|
+
excluded = filterable_object_with({:foo => :bar})
|
43
103
|
filter_manager = FilterManager.new
|
44
104
|
filter_manager.exclude :foo => :bar
|
45
105
|
filter_manager.prune([included, excluded]).should eq([included])
|
46
106
|
end
|
47
107
|
|
48
108
|
it "prefers exclusion when matches previously set inclusion" do
|
49
|
-
included =
|
50
|
-
excluded =
|
109
|
+
included = filterable_object_with
|
110
|
+
excluded = filterable_object_with({:foo => :bar})
|
51
111
|
filter_manager = FilterManager.new
|
52
112
|
filter_manager.include :foo => :bar
|
53
113
|
filter_manager.exclude :foo => :bar
|
@@ -55,8 +115,8 @@ module RSpec::Core
|
|
55
115
|
end
|
56
116
|
|
57
117
|
it "prefers inclusion when matches previously set exclusion" do
|
58
|
-
included =
|
59
|
-
excluded =
|
118
|
+
included = filterable_object_with({:foo => :bar})
|
119
|
+
excluded = filterable_object_with
|
60
120
|
filter_manager = FilterManager.new
|
61
121
|
filter_manager.exclude :foo => :bar
|
62
122
|
filter_manager.include :foo => :bar
|
@@ -64,20 +124,20 @@ module RSpec::Core
|
|
64
124
|
end
|
65
125
|
|
66
126
|
it "prefers previously set inclusion when exclusion matches but has lower priority" do
|
67
|
-
included =
|
68
|
-
excluded =
|
127
|
+
included = filterable_object_with({:foo => :bar})
|
128
|
+
excluded = filterable_object_with
|
69
129
|
filter_manager = FilterManager.new
|
70
130
|
filter_manager.include :foo => :bar
|
71
|
-
filter_manager.
|
131
|
+
filter_manager.exclude_with_low_priority :foo => :bar
|
72
132
|
filter_manager.prune([included, excluded]).should eq([included])
|
73
133
|
end
|
74
134
|
|
75
135
|
it "prefers previously set exclusion when inclusion matches but has lower priority" do
|
76
|
-
included =
|
77
|
-
excluded =
|
136
|
+
included = filterable_object_with
|
137
|
+
excluded = filterable_object_with({:foo => :bar})
|
78
138
|
filter_manager = FilterManager.new
|
79
139
|
filter_manager.exclude :foo => :bar
|
80
|
-
filter_manager.
|
140
|
+
filter_manager.include_with_low_priority :foo => :bar
|
81
141
|
filter_manager.prune([included, excluded]).should eq([included])
|
82
142
|
end
|
83
143
|
end
|
@@ -130,12 +190,24 @@ module RSpec::Core
|
|
130
190
|
filter_manager.exclude :if => :custom_filter
|
131
191
|
end
|
132
192
|
|
193
|
+
it 'deprecates an :if filter overridden with low priority' do
|
194
|
+
RSpec.should_receive(:warn_deprecation).with(/exclude\(:if.*is deprecated/)
|
195
|
+
filter_manager = FilterManager.new
|
196
|
+
filter_manager.exclude_with_low_priority :if => :custom_filter
|
197
|
+
end
|
198
|
+
|
133
199
|
it 'deprecates an overridden :unless filter' do
|
134
200
|
RSpec.should_receive(:warn_deprecation).with(/exclude\(:unless.*is deprecated/)
|
135
201
|
filter_manager = FilterManager.new
|
136
202
|
filter_manager.exclude :unless => :custom_filter
|
137
203
|
end
|
138
204
|
|
205
|
+
it 'deprecates an :unless filter overridden with low priority' do
|
206
|
+
RSpec.should_receive(:warn_deprecation).with(/exclude\(:unless.*is deprecated/)
|
207
|
+
filter_manager = FilterManager.new
|
208
|
+
filter_manager.exclude_with_low_priority :unless => :custom_filter
|
209
|
+
end
|
210
|
+
|
139
211
|
it 'includes an overriden :if filter' do
|
140
212
|
RSpec.stub(:warn_deprecation)
|
141
213
|
filter_manager = FilterManager.new
|
@@ -171,5 +243,14 @@ module RSpec::Core
|
|
171
243
|
filter_manager.include :full_description => "this and that"
|
172
244
|
filter_manager.inclusions.should eq(:full_description => "this and that")
|
173
245
|
end
|
246
|
+
|
247
|
+
[:locations, :line_numbers, :full_description].each do |filter|
|
248
|
+
it "does nothing on include if already set standalone filter #{filter}" do
|
249
|
+
filter_manager = FilterManager.new
|
250
|
+
filter_manager.include filter => "a_value"
|
251
|
+
filter_manager.include :foo => :bar
|
252
|
+
filter_manager.inclusions.should eq(filter => "a_value")
|
253
|
+
end
|
254
|
+
end
|
174
255
|
end
|
175
256
|
end
|