rspec-core 2.8.0.rc1 → 2.8.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|