rspec-core 2.5.2 → 2.6.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/.travis.yml +7 -0
- data/Gemfile +10 -13
- data/README.md +4 -1
- data/Rakefile +29 -12
- data/cucumber.yml +1 -1
- data/features/.nav +10 -4
- data/features/Autotest.md +31 -7
- data/features/Changelog.md +36 -6
- data/features/command_line/configure.feature +2 -2
- data/features/command_line/example_name_option.feature +10 -10
- data/features/command_line/exit_status.feature +4 -4
- data/features/command_line/format_option.feature +4 -4
- data/features/command_line/line_number_appended_to_path.feature +11 -11
- data/features/command_line/line_number_option.feature +2 -2
- data/features/command_line/rake_task.feature +3 -3
- data/features/command_line/tag.feature +26 -10
- data/features/configuration/alias_example_to.feature +48 -0
- data/features/configuration/custom_settings.feature +3 -3
- data/features/configuration/fail_fast.feature +3 -3
- data/features/configuration/read_options_from_file.feature +4 -4
- data/features/example_groups/basic_structure.feature +11 -15
- data/features/example_groups/shared_context.feature +74 -0
- data/features/example_groups/shared_example_group.feature +21 -17
- data/features/expectation_framework_integration/configure_expectation_framework.feature +15 -4
- data/features/filtering/exclusion_filters.feature +28 -4
- data/features/filtering/{implicit_filters.feature → if_and_unless.feature} +9 -7
- data/features/filtering/inclusion_filters.feature +26 -3
- data/features/filtering/run_all_when_everything_filtered.feature +1 -1
- data/features/formatters/custom_formatter.feature +1 -1
- data/features/formatters/text_formatter.feature +45 -0
- data/features/helper_methods/arbitrary_methods.feature +2 -2
- data/features/helper_methods/let.feature +2 -2
- data/features/helper_methods/modules.feature +149 -0
- data/features/hooks/around_hooks.feature +11 -11
- data/features/hooks/before_and_after_hooks.feature +15 -19
- data/features/hooks/filtering.feature +160 -124
- data/features/metadata/current_example.feature +17 -0
- data/features/metadata/described_class.feature +2 -2
- data/features/metadata/user_defined.feature +111 -0
- data/features/mock_framework_integration/use_any_framework.feature +1 -1
- data/features/mock_framework_integration/use_flexmock.feature +83 -10
- data/features/mock_framework_integration/use_mocha.feature +84 -10
- data/features/mock_framework_integration/use_rr.feature +85 -10
- data/features/mock_framework_integration/use_rspec.feature +84 -10
- data/features/pending/pending_examples.feature +8 -8
- data/features/spec_files/arbitrary_file_suffix.feature +1 -1
- data/features/step_definitions/additional_cli_steps.rb +11 -1
- data/features/subject/attribute_of_subject.feature +24 -4
- data/features/subject/explicit_subject.feature +5 -5
- data/features/subject/implicit_receiver.feature +2 -2
- data/features/subject/implicit_subject.feature +2 -2
- data/features/support/env.rb +6 -1
- data/lib/rspec/core.rb +22 -0
- data/lib/rspec/core/backward_compatibility.rb +12 -2
- data/lib/rspec/core/command_line.rb +1 -4
- data/lib/rspec/core/configuration.rb +25 -17
- data/lib/rspec/core/configuration_options.rb +6 -23
- data/lib/rspec/core/drb_command_line.rb +5 -11
- data/lib/rspec/core/example.rb +29 -21
- data/lib/rspec/core/example_group.rb +36 -4
- data/lib/rspec/core/formatters/base_formatter.rb +6 -0
- data/lib/rspec/core/formatters/base_text_formatter.rb +1 -1
- data/lib/rspec/core/formatters/helpers.rb +0 -4
- data/lib/rspec/core/hooks.rb +14 -4
- data/lib/rspec/core/metadata.rb +1 -1
- data/lib/rspec/core/metadata_hash_builder.rb +93 -0
- data/lib/rspec/core/mocking/with_flexmock.rb +2 -0
- data/lib/rspec/core/mocking/with_mocha.rb +2 -0
- data/lib/rspec/core/mocking/with_rr.rb +2 -0
- data/lib/rspec/core/mocking/with_rspec.rb +3 -1
- data/lib/rspec/core/option_parser.rb +5 -2
- data/lib/rspec/core/pending.rb +10 -3
- data/lib/rspec/core/reporter.rb +2 -2
- data/lib/rspec/core/runner.rb +7 -1
- data/lib/rspec/core/shared_example_group.rb +18 -4
- data/lib/rspec/core/subject.rb +4 -6
- data/lib/rspec/core/version.rb +1 -1
- data/lib/rspec/core/world.rb +16 -4
- data/rspec-core.gemspec +4 -3
- data/spec.txt +1126 -0
- data/spec/autotest/failed_results_re_spec.rb +2 -2
- data/spec/rspec/core/command_line_spec.rb +0 -2
- data/spec/rspec/core/configuration_spec.rb +84 -1
- data/spec/rspec/core/deprecations_spec.rb +21 -0
- data/spec/rspec/core/drb_command_line_spec.rb +3 -11
- data/spec/rspec/core/example_group_spec.rb +213 -56
- data/spec/rspec/core/example_spec.rb +110 -0
- data/spec/rspec/core/formatters/base_formatter_spec.rb +23 -2
- data/spec/rspec/core/formatters/base_text_formatter_spec.rb +9 -0
- data/spec/rspec/core/formatters/helpers_spec.rb +1 -1
- data/spec/rspec/core/formatters/html_formatted-1.8.6.html +5 -5
- data/spec/rspec/core/formatters/html_formatted-1.8.7-jruby.html +8 -10
- data/spec/rspec/core/formatters/html_formatted-1.8.7.html +5 -5
- data/spec/rspec/core/formatters/html_formatted-1.9.1.html +5 -5
- data/spec/rspec/core/formatters/html_formatted-1.9.2.html +5 -5
- data/spec/rspec/core/formatters/progress_formatter_spec.rb +0 -1
- data/spec/rspec/core/formatters/text_mate_formatted-1.8.6.html +5 -5
- data/spec/rspec/core/formatters/text_mate_formatted-1.8.7-jruby.html +8 -10
- data/spec/rspec/core/formatters/text_mate_formatted-1.8.7.html +5 -5
- data/spec/rspec/core/formatters/text_mate_formatted-1.9.1.html +5 -5
- data/spec/rspec/core/formatters/text_mate_formatted-1.9.2.html +5 -5
- data/spec/rspec/core/hooks_spec.rb +86 -0
- data/spec/rspec/core/metadata_spec.rb +7 -7
- data/spec/rspec/core/option_parser_spec.rb +8 -0
- data/spec/rspec/core/pending_example_spec.rb +12 -51
- data/spec/rspec/core/reporter_spec.rb +19 -3
- data/spec/rspec/core/resources/formatter_specs.rb +7 -1
- data/spec/rspec/core/rspec_matchers_spec.rb +45 -0
- data/spec/rspec/core/runner_spec.rb +35 -10
- data/spec/rspec/core/shared_example_group_spec.rb +57 -21
- data/spec/rspec/core/subject_spec.rb +32 -11
- data/spec/rspec/core/world_spec.rb +38 -15
- data/spec/rspec/core_spec.rb +28 -0
- data/spec/spec_helper.rb +22 -2
- data/spec/support/matchers.rb +44 -13
- data/spec/support/shared_example_groups.rb +41 -0
- metadata +39 -16
|
@@ -19,7 +19,7 @@ describe "failed_results_re for autotest" do
|
|
|
19
19
|
it "matches a failure" do
|
|
20
20
|
re = Autotest::Rspec2.new.failed_results_re
|
|
21
21
|
example_output.should =~ re
|
|
22
|
-
example_output
|
|
22
|
+
example_output.should include(__FILE__.sub(File.expand_path('.'),'.'))
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
|
|
@@ -31,7 +31,7 @@ describe "failed_results_re for autotest" do
|
|
|
31
31
|
it "matches a failure" do
|
|
32
32
|
re = Autotest::Rspec2.new.failed_results_re
|
|
33
33
|
example_output.should =~ re
|
|
34
|
-
example_output
|
|
34
|
+
example_output.should include(__FILE__.sub(File.expand_path('.'),'.'))
|
|
35
35
|
end
|
|
36
36
|
end
|
|
37
37
|
end
|
|
@@ -50,8 +50,6 @@ module RSpec::Core
|
|
|
50
50
|
config.stub(:run_hook)
|
|
51
51
|
|
|
52
52
|
config.should_receive(:load_spec_files)
|
|
53
|
-
config.should_receive(:configure_mock_framework)
|
|
54
|
-
config.should_receive(:configure_expectation_framework)
|
|
55
53
|
|
|
56
54
|
world.should_receive(:announce_inclusion_filter)
|
|
57
55
|
world.should_receive(:announce_exclusion_filter)
|
|
@@ -5,7 +5,7 @@ module RSpec::Core
|
|
|
5
5
|
|
|
6
6
|
describe Configuration do
|
|
7
7
|
|
|
8
|
-
let(:config) {
|
|
8
|
+
let(:config) { Configuration.new }
|
|
9
9
|
|
|
10
10
|
describe "#load_spec_files" do
|
|
11
11
|
|
|
@@ -30,6 +30,17 @@ module RSpec::Core
|
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
+
describe "#treat_symbols_as_metadata_keys_with_true_values?" do
|
|
34
|
+
it 'defaults to false' do
|
|
35
|
+
config.treat_symbols_as_metadata_keys_with_true_values?.should be_false
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it 'can be set to true' do
|
|
39
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
|
40
|
+
config.treat_symbols_as_metadata_keys_with_true_values?.should be_true
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
33
44
|
describe "#mock_framework" do
|
|
34
45
|
it "defaults to :rspec" do
|
|
35
46
|
config.should_receive(:require).with('rspec/core/mocking/with_rspec')
|
|
@@ -100,6 +111,38 @@ module RSpec::Core
|
|
|
100
111
|
end
|
|
101
112
|
end
|
|
102
113
|
|
|
114
|
+
describe "#expecting_with_rspec?" do
|
|
115
|
+
before(:each) do
|
|
116
|
+
# prevent minitest assertions from being required and included,
|
|
117
|
+
# as that causes problems in some of our specs.
|
|
118
|
+
config.stub(:require)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
it "returns false by default" do
|
|
122
|
+
config.should_not be_expecting_with_rspec
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
it "returns true when `expect_with :rspec` has been configured" do
|
|
126
|
+
config.expect_with :rspec
|
|
127
|
+
config.should be_expecting_with_rspec
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
it "returns true when `expect_with :rspec, :stdlib` has been configured" do
|
|
131
|
+
config.expect_with :rspec, :stdlib
|
|
132
|
+
config.should be_expecting_with_rspec
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
it "returns true when `expect_with :stdlib, :rspec` has been configured" do
|
|
136
|
+
config.expect_with :stdlib, :rspec
|
|
137
|
+
config.should be_expecting_with_rspec
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
it "returns false when `expect_with :stdlib` has been configured" do
|
|
141
|
+
config.expect_with :stdlib
|
|
142
|
+
config.should_not be_expecting_with_rspec
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
103
146
|
context "setting the files to run" do
|
|
104
147
|
|
|
105
148
|
it "loads files not following pattern if named explicitly" do
|
|
@@ -205,6 +248,13 @@ module RSpec::Core
|
|
|
205
248
|
end
|
|
206
249
|
end
|
|
207
250
|
|
|
251
|
+
it_behaves_like "metadata hash builder" do
|
|
252
|
+
def metadata_hash(*args)
|
|
253
|
+
config.include(InstanceLevelMethods, *args)
|
|
254
|
+
config.include_or_extend_modules.last.last
|
|
255
|
+
end
|
|
256
|
+
end
|
|
257
|
+
|
|
208
258
|
context "with no filter" do
|
|
209
259
|
it "includes the given module into each example group" do
|
|
210
260
|
RSpec.configure do |c|
|
|
@@ -238,6 +288,13 @@ module RSpec::Core
|
|
|
238
288
|
end
|
|
239
289
|
end
|
|
240
290
|
|
|
291
|
+
it_behaves_like "metadata hash builder" do
|
|
292
|
+
def metadata_hash(*args)
|
|
293
|
+
config.extend(ThatThingISentYou, *args)
|
|
294
|
+
config.include_or_extend_modules.last.last
|
|
295
|
+
end
|
|
296
|
+
end
|
|
297
|
+
|
|
241
298
|
it "extends the given module into each matching example group" do
|
|
242
299
|
RSpec.configure do |c|
|
|
243
300
|
c.extend(ThatThingISentYou, :magic_key => :extend)
|
|
@@ -421,6 +478,13 @@ module RSpec::Core
|
|
|
421
478
|
end
|
|
422
479
|
|
|
423
480
|
describe "#filter_run" do
|
|
481
|
+
it_behaves_like "metadata hash builder" do
|
|
482
|
+
def metadata_hash(*args)
|
|
483
|
+
config.filter_run *args
|
|
484
|
+
config.filter
|
|
485
|
+
end
|
|
486
|
+
end
|
|
487
|
+
|
|
424
488
|
it "sets the filter" do
|
|
425
489
|
config.filter_run :focus => true
|
|
426
490
|
config.filter[:focus].should == true
|
|
@@ -454,6 +518,13 @@ module RSpec::Core
|
|
|
454
518
|
end
|
|
455
519
|
|
|
456
520
|
describe "#filter_run_excluding" do
|
|
521
|
+
it_behaves_like "metadata hash builder" do
|
|
522
|
+
def metadata_hash(*args)
|
|
523
|
+
config.filter_run_excluding *args
|
|
524
|
+
config.exclusion_filter
|
|
525
|
+
end
|
|
526
|
+
end
|
|
527
|
+
|
|
457
528
|
it "sets the filter" do
|
|
458
529
|
config.filter_run_excluding :slow => true
|
|
459
530
|
config.exclusion_filter[:slow].should == true
|
|
@@ -712,5 +783,17 @@ module RSpec::Core
|
|
|
712
783
|
group.included_modules.should include(mod2)
|
|
713
784
|
end
|
|
714
785
|
end
|
|
786
|
+
|
|
787
|
+
describe "#alias_example_to" do
|
|
788
|
+
it_behaves_like "metadata hash builder" do
|
|
789
|
+
def metadata_hash(*args)
|
|
790
|
+
config.alias_example_to :my_example, *args
|
|
791
|
+
group = ExampleGroup.describe("group")
|
|
792
|
+
example = group.my_example("description")
|
|
793
|
+
example.metadata
|
|
794
|
+
end
|
|
795
|
+
end
|
|
796
|
+
end
|
|
797
|
+
|
|
715
798
|
end
|
|
716
799
|
end
|
|
@@ -11,6 +11,16 @@ describe "deprecations" do
|
|
|
11
11
|
RSpec.stub(:warn_deprecation)
|
|
12
12
|
Spec.should == RSpec
|
|
13
13
|
end
|
|
14
|
+
|
|
15
|
+
it "doesn't include backward compatibility in const_missing backtrace" do
|
|
16
|
+
RSpec.stub(:warn_deprecation)
|
|
17
|
+
exception = nil
|
|
18
|
+
begin
|
|
19
|
+
ConstantThatDoesNotExist
|
|
20
|
+
rescue Exception => exception
|
|
21
|
+
end
|
|
22
|
+
exception.backtrace.find { |l| l =~ /lib\/rspec\/core\/backward_compatibility/ }.should be_nil
|
|
23
|
+
end
|
|
14
24
|
end
|
|
15
25
|
|
|
16
26
|
describe RSpec::Core::ExampleGroup do
|
|
@@ -41,5 +51,16 @@ describe "deprecations" do
|
|
|
41
51
|
RSpec.should_receive(:deprecate)
|
|
42
52
|
Spec::Rake::SpecTask
|
|
43
53
|
end
|
|
54
|
+
|
|
55
|
+
it "doesn't include backward compatibility in const_missing backtrace" do
|
|
56
|
+
RSpec.stub(:warn_deprecation)
|
|
57
|
+
exception = nil
|
|
58
|
+
begin
|
|
59
|
+
Spec::Rake::ConstantThatDoesNotExist
|
|
60
|
+
rescue Exception => exception
|
|
61
|
+
end
|
|
62
|
+
exception.backtrace.find { |l| l =~ /lib\/rspec\/core\/backward_compatibility/ }.should be_nil
|
|
63
|
+
end
|
|
44
64
|
end
|
|
65
|
+
|
|
45
66
|
end
|
|
@@ -20,16 +20,8 @@ describe "::DRbCommandLine", :ruby => "!jruby" do
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
context "without server running" do
|
|
23
|
-
it "
|
|
24
|
-
run_with []
|
|
25
|
-
|
|
26
|
-
err.rewind
|
|
27
|
-
err.read.should =~ /No DRb server is running/
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
it "returns false" do
|
|
31
|
-
result = run_with []
|
|
32
|
-
result.should be_false
|
|
23
|
+
it "raises an error" do
|
|
24
|
+
lambda { run_with [] }.should raise_error(DRb::DRbConnError)
|
|
33
25
|
end
|
|
34
26
|
end
|
|
35
27
|
|
|
@@ -136,7 +128,7 @@ describe "::DRbCommandLine", :ruby => "!jruby" do
|
|
|
136
128
|
it "integrates via Runner.new.run" do
|
|
137
129
|
err, out = StringIO.new, StringIO.new
|
|
138
130
|
result = RSpec::Core::Runner.run(%W[ --drb --drb-port #{@drb_port} #{dummy_spec_filename}], err, out)
|
|
139
|
-
result.should
|
|
131
|
+
result.should be_false
|
|
140
132
|
end
|
|
141
133
|
|
|
142
134
|
def run_spec_via_druby
|
|
@@ -13,6 +13,44 @@ end
|
|
|
13
13
|
module RSpec::Core
|
|
14
14
|
|
|
15
15
|
describe ExampleGroup do
|
|
16
|
+
it_behaves_like "metadata hash builder" do
|
|
17
|
+
def metadata_hash(*args)
|
|
18
|
+
group = ExampleGroup.describe('example description', *args)
|
|
19
|
+
group.metadata
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
context 'when RSpec.configuration.treat_symbols_as_metadata_keys_with_true_values is set to false' do
|
|
24
|
+
before(:each) do
|
|
25
|
+
RSpec.configure { |c| c.treat_symbols_as_metadata_keys_with_true_values = false }
|
|
26
|
+
Kernel.stub(:warn)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it 'processes string args as part of the description' do
|
|
30
|
+
group = ExampleGroup.describe("some", "separate", "strings")
|
|
31
|
+
group.description.should == "some separate strings"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it 'processes symbol args as part of the description' do
|
|
35
|
+
group = ExampleGroup.describe(:some, :separate, :symbols)
|
|
36
|
+
group.description.should == "some separate symbols"
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
context 'when RSpec.configuration.treat_symbols_as_metadata_keys_with_true_values is set to true' do
|
|
41
|
+
let(:group) { ExampleGroup.describe(:symbol) }
|
|
42
|
+
before(:each) do
|
|
43
|
+
RSpec.configure { |c| c.treat_symbols_as_metadata_keys_with_true_values = true }
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it 'does not treat the first argument as a metadata key even if it is a symbol' do
|
|
47
|
+
group.metadata.should_not include(:symbol)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it 'treats the first argument as part of the description when it is a symbol' do
|
|
51
|
+
group.description.should == "symbol"
|
|
52
|
+
end
|
|
53
|
+
end
|
|
16
54
|
|
|
17
55
|
describe "top level group" do
|
|
18
56
|
it "runs its children" do
|
|
@@ -81,49 +119,119 @@ module RSpec::Core
|
|
|
81
119
|
describe "filtering" do
|
|
82
120
|
let(:world) { World.new }
|
|
83
121
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
group.stub(:world) { world }
|
|
122
|
+
shared_examples "matching filters" do
|
|
123
|
+
context "inclusion" do
|
|
124
|
+
before { world.stub(:inclusion_filter).and_return(filter_metadata) }
|
|
88
125
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
126
|
+
it "includes examples in groups matching filter" do
|
|
127
|
+
group = ExampleGroup.describe("does something", spec_metadata)
|
|
128
|
+
group.stub(:world) { world }
|
|
129
|
+
all_examples = [ group.example("first"), group.example("second") ]
|
|
130
|
+
|
|
131
|
+
group.filtered_examples.should == all_examples
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it "includes examples directly matching filter" do
|
|
135
|
+
group = ExampleGroup.describe("does something")
|
|
136
|
+
group.stub(:world) { world }
|
|
137
|
+
filtered_examples = [
|
|
138
|
+
group.example("first", spec_metadata),
|
|
139
|
+
group.example("second", spec_metadata)
|
|
140
|
+
]
|
|
141
|
+
group.example("third (not-filtered)")
|
|
142
|
+
|
|
143
|
+
group.filtered_examples.should == filtered_examples
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
context "exclusion" do
|
|
148
|
+
before { world.stub(:exclusion_filter).and_return(filter_metadata) }
|
|
149
|
+
it "excludes examples in groups matching filter" do
|
|
150
|
+
group = ExampleGroup.describe("does something", spec_metadata)
|
|
151
|
+
group.stub(:world) { world }
|
|
152
|
+
all_examples = [ group.example("first"), group.example("second") ]
|
|
153
|
+
|
|
154
|
+
group.filtered_examples.should be_empty
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
it "excludes examples directly matching filter" do
|
|
158
|
+
group = ExampleGroup.describe("does something")
|
|
159
|
+
group.stub(:world) { world }
|
|
160
|
+
filtered_examples = [
|
|
161
|
+
group.example("first", spec_metadata),
|
|
162
|
+
group.example("second", spec_metadata)
|
|
163
|
+
]
|
|
164
|
+
unfiltered_example = group.example("third (not-filtered)")
|
|
165
|
+
|
|
166
|
+
group.filtered_examples.should == [unfiltered_example]
|
|
167
|
+
end
|
|
168
|
+
end
|
|
94
169
|
end
|
|
95
170
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
171
|
+
context "matching false" do
|
|
172
|
+
let(:spec_metadata) { { :awesome => false }}
|
|
173
|
+
|
|
174
|
+
context "against false" do
|
|
175
|
+
let(:filter_metadata) { { :awesome => false }}
|
|
176
|
+
include_examples "matching filters"
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
context "against 'false'" do
|
|
180
|
+
let(:filter_metadata) { { :awesome => 'false' }}
|
|
181
|
+
include_examples "matching filters"
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
context "against :false" do
|
|
185
|
+
let(:filter_metadata) { { :awesome => :false }}
|
|
186
|
+
include_examples "matching filters"
|
|
187
|
+
end
|
|
103
188
|
end
|
|
104
189
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
group = ExampleGroup.describe("does something", :include_me => false)
|
|
108
|
-
group.stub(:world) { world }
|
|
190
|
+
context "matching true" do
|
|
191
|
+
let(:spec_metadata) { { :awesome => true }}
|
|
109
192
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
193
|
+
context "against true" do
|
|
194
|
+
let(:filter_metadata) { { :awesome => true }}
|
|
195
|
+
include_examples "matching filters"
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
context "against 'true'" do
|
|
199
|
+
let(:filter_metadata) { { :awesome => 'true' }}
|
|
200
|
+
include_examples "matching filters"
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
context "against :true" do
|
|
204
|
+
let(:filter_metadata) { { :awesome => :true }}
|
|
205
|
+
include_examples "matching filters"
|
|
206
|
+
end
|
|
115
207
|
end
|
|
116
208
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
group = ExampleGroup.describe("does something")
|
|
120
|
-
group.stub(:world) { world }
|
|
209
|
+
context "matching a string" do
|
|
210
|
+
let(:spec_metadata) { { :type => 'special' }}
|
|
121
211
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
212
|
+
context "against a string" do
|
|
213
|
+
let(:filter_metadata) { { :type => 'special' }}
|
|
214
|
+
include_examples "matching filters"
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
context "against a symbol" do
|
|
218
|
+
let(:filter_metadata) { { :type => :special }}
|
|
219
|
+
include_examples "matching filters"
|
|
220
|
+
end
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
context "matching a symbol" do
|
|
224
|
+
let(:spec_metadata) { { :type => :special }}
|
|
225
|
+
|
|
226
|
+
context "against a string" do
|
|
227
|
+
let(:filter_metadata) { { :type => 'special' }}
|
|
228
|
+
include_examples "matching filters"
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
context "against a symbol" do
|
|
232
|
+
let(:filter_metadata) { { :type => :special }}
|
|
233
|
+
include_examples "matching filters"
|
|
234
|
+
end
|
|
127
235
|
end
|
|
128
236
|
|
|
129
237
|
context "with no filters" do
|
|
@@ -189,8 +297,6 @@ module RSpec::Core
|
|
|
189
297
|
group.run.should be_true, "expected examples in group to pass"
|
|
190
298
|
end
|
|
191
299
|
end
|
|
192
|
-
|
|
193
|
-
|
|
194
300
|
end
|
|
195
301
|
|
|
196
302
|
describe '#described_class' do
|
|
@@ -200,16 +306,13 @@ module RSpec::Core
|
|
|
200
306
|
end
|
|
201
307
|
|
|
202
308
|
describe '#description' do
|
|
203
|
-
|
|
204
309
|
it "grabs the description from the metadata" do
|
|
205
310
|
group = ExampleGroup.describe(Object, "my desc") { }
|
|
206
311
|
group.description.should == group.metadata[:example_group][:description]
|
|
207
312
|
end
|
|
208
|
-
|
|
209
313
|
end
|
|
210
314
|
|
|
211
315
|
describe '#metadata' do
|
|
212
|
-
|
|
213
316
|
it "adds the third parameter to the metadata" do
|
|
214
317
|
ExampleGroup.describe(Object, nil, 'foo' => 'bar') { }.metadata.should include({ "foo" => 'bar' })
|
|
215
318
|
end
|
|
@@ -225,7 +328,6 @@ module RSpec::Core
|
|
|
225
328
|
it "adds the line_number to metadata" do
|
|
226
329
|
ExampleGroup.describe(Object) { }.metadata[:example_group][:line_number].should == __LINE__
|
|
227
330
|
end
|
|
228
|
-
|
|
229
331
|
end
|
|
230
332
|
|
|
231
333
|
[:focus, :focused].each do |example_alias|
|
|
@@ -244,7 +346,6 @@ module RSpec::Core
|
|
|
244
346
|
end
|
|
245
347
|
|
|
246
348
|
describe "#before, after, and around hooks" do
|
|
247
|
-
|
|
248
349
|
it "runs the before alls in order" do
|
|
249
350
|
group = ExampleGroup.describe
|
|
250
351
|
order = []
|
|
@@ -255,7 +356,7 @@ module RSpec::Core
|
|
|
255
356
|
|
|
256
357
|
group.run
|
|
257
358
|
|
|
258
|
-
order.should
|
|
359
|
+
order.should eq([1,2,3])
|
|
259
360
|
end
|
|
260
361
|
|
|
261
362
|
it "runs the before eachs in order" do
|
|
@@ -268,7 +369,7 @@ module RSpec::Core
|
|
|
268
369
|
|
|
269
370
|
group.run
|
|
270
371
|
|
|
271
|
-
order.should
|
|
372
|
+
order.should eq([1,2,3])
|
|
272
373
|
end
|
|
273
374
|
|
|
274
375
|
it "runs the after eachs in reverse order" do
|
|
@@ -281,7 +382,7 @@ module RSpec::Core
|
|
|
281
382
|
|
|
282
383
|
group.run
|
|
283
384
|
|
|
284
|
-
order.should
|
|
385
|
+
order.should eq([3,2,1])
|
|
285
386
|
end
|
|
286
387
|
|
|
287
388
|
it "runs the after alls in reverse order" do
|
|
@@ -294,7 +395,7 @@ module RSpec::Core
|
|
|
294
395
|
|
|
295
396
|
group.run
|
|
296
397
|
|
|
297
|
-
order.should
|
|
398
|
+
order.should eq([3,2,1])
|
|
298
399
|
end
|
|
299
400
|
|
|
300
401
|
it "only runs before/after(:all) hooks from example groups that have specs that run" do
|
|
@@ -325,7 +426,7 @@ module RSpec::Core
|
|
|
325
426
|
unfiltered_group.run
|
|
326
427
|
filtered_group.run
|
|
327
428
|
|
|
328
|
-
hooks_run.should
|
|
429
|
+
hooks_run.should eq([:filtered_before_all, :filtered_after_all])
|
|
329
430
|
end
|
|
330
431
|
|
|
331
432
|
it "runs before_all_defined_in_config, before all, before each, example, after each, after all, after_all_defined_in_config in that order" do
|
|
@@ -372,22 +473,44 @@ module RSpec::Core
|
|
|
372
473
|
]
|
|
373
474
|
end
|
|
374
475
|
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
group.after(:all) { @ivar.should eq("value") }
|
|
379
|
-
group.example("ignore") { }
|
|
476
|
+
context "after(:all)" do
|
|
477
|
+
let(:outer) { ExampleGroup.describe }
|
|
478
|
+
let(:inner) { outer.describe }
|
|
380
479
|
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
480
|
+
it "has access to state defined before(:all)" do
|
|
481
|
+
outer.before(:all) { @outer = "outer" }
|
|
482
|
+
inner.before(:all) { @inner = "inner" }
|
|
483
|
+
|
|
484
|
+
outer.after(:all) do
|
|
485
|
+
@outer.should eq("outer")
|
|
486
|
+
@inner.should eq("inner")
|
|
487
|
+
end
|
|
488
|
+
inner.after(:all) do
|
|
489
|
+
@inner.should eq("inner")
|
|
490
|
+
@outer.should eq("outer")
|
|
491
|
+
end
|
|
492
|
+
|
|
493
|
+
outer.run
|
|
494
|
+
end
|
|
495
|
+
|
|
496
|
+
it "cleans up ivars in after(:all)" do
|
|
497
|
+
outer.before(:all) { @outer = "outer" }
|
|
498
|
+
inner.before(:all) { @inner = "inner" }
|
|
499
|
+
|
|
500
|
+
outer.run
|
|
501
|
+
|
|
502
|
+
inner.before_all_ivars[:@inner].should be_nil
|
|
503
|
+
inner.before_all_ivars[:@outer].should be_nil
|
|
504
|
+
outer.before_all_ivars[:@inner].should be_nil
|
|
505
|
+
outer.before_all_ivars[:@outer].should be_nil
|
|
506
|
+
end
|
|
384
507
|
end
|
|
385
508
|
|
|
386
509
|
it "treats an error in before(:each) as a failure" do
|
|
387
510
|
group = ExampleGroup.describe
|
|
388
511
|
group.before(:each) { raise "error in before each" }
|
|
389
512
|
example = group.example("equality") { 1.should == 2}
|
|
390
|
-
group.run
|
|
513
|
+
group.run.should == false
|
|
391
514
|
|
|
392
515
|
example.metadata[:execution_result][:exception].message.should == "error in before each"
|
|
393
516
|
end
|
|
@@ -396,7 +519,7 @@ module RSpec::Core
|
|
|
396
519
|
group = ExampleGroup.describe
|
|
397
520
|
group.before(:all) { raise "error in before all" }
|
|
398
521
|
example = group.example("equality") { 1.should == 2}
|
|
399
|
-
group.run
|
|
522
|
+
group.run.should == false
|
|
400
523
|
|
|
401
524
|
example.metadata.should_not be_nil
|
|
402
525
|
example.metadata[:execution_result].should_not be_nil
|
|
@@ -749,5 +872,39 @@ module RSpec::Core
|
|
|
749
872
|
end
|
|
750
873
|
end
|
|
751
874
|
|
|
875
|
+
describe "#include_context" do
|
|
876
|
+
before do
|
|
877
|
+
shared_context "named this" do
|
|
878
|
+
def foo; 'foo'; end
|
|
879
|
+
end
|
|
880
|
+
end
|
|
881
|
+
|
|
882
|
+
it "includes the named context" do
|
|
883
|
+
group = ExampleGroup.describe do
|
|
884
|
+
include_context "named this"
|
|
885
|
+
it "accesses foo" do
|
|
886
|
+
foo.should eq('foo')
|
|
887
|
+
end
|
|
888
|
+
end
|
|
889
|
+
group.run.should be_true
|
|
890
|
+
end
|
|
891
|
+
end
|
|
892
|
+
|
|
893
|
+
describe "#include_examples" do
|
|
894
|
+
before do
|
|
895
|
+
shared_examples "named this" do
|
|
896
|
+
example("does something") do
|
|
897
|
+
end
|
|
898
|
+
end
|
|
899
|
+
end
|
|
900
|
+
|
|
901
|
+
it "includes the named examples" do
|
|
902
|
+
group = ExampleGroup.describe do
|
|
903
|
+
include_examples "named this"
|
|
904
|
+
end
|
|
905
|
+
group.examples.first.description.should eq("does something")
|
|
906
|
+
end
|
|
907
|
+
end
|
|
908
|
+
|
|
752
909
|
end
|
|
753
910
|
end
|