rspec-core 2.99.2 → 3.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- 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,10 +1,8 @@
|
|
1
1
|
Feature: exclusion filters
|
2
2
|
|
3
3
|
You can exclude examples from a run by declaring an exclusion filter and
|
4
|
-
then tagging examples, or entire groups, with that filter.
|
5
|
-
|
6
|
-
If you set the `treat_symbols_as_metadata_keys_with_true_values` config option
|
7
|
-
to `true`, you can specify metadata using only symbols.
|
4
|
+
then tagging examples, or entire groups, with that filter. You can also
|
5
|
+
specify metadata using only symbols.
|
8
6
|
|
9
7
|
Scenario: exclude an example
|
10
8
|
Given a file named "spec/sample_spec.rb" with:
|
@@ -120,7 +118,6 @@ Feature: exclusion filters
|
|
120
118
|
Given a file named "symbols_as_metadata_spec.rb" with:
|
121
119
|
"""ruby
|
122
120
|
RSpec.configure do |c|
|
123
|
-
c.treat_symbols_as_metadata_keys_with_true_values = true
|
124
121
|
c.filter_run_excluding :broken
|
125
122
|
end
|
126
123
|
|
@@ -2,10 +2,7 @@ Feature: inclusion filters
|
|
2
2
|
|
3
3
|
You can constrain which examples are run by declaring an inclusion filter. The
|
4
4
|
most common use case is to focus on a subset of examples as you're focused on
|
5
|
-
a particular problem.
|
6
|
-
|
7
|
-
You can specify metadata using only symbols if you set the
|
8
|
-
`treat_symbols_as_metadata_keys_with_true_values` config option to `true`.
|
5
|
+
a particular problem. You can also specify metadata using only symbols.
|
9
6
|
|
10
7
|
Background:
|
11
8
|
Given a file named "spec/spec_helper.rb" with:
|
@@ -88,7 +85,6 @@ Feature: inclusion filters
|
|
88
85
|
Given a file named "symbols_as_metadata_spec.rb" with:
|
89
86
|
"""ruby
|
90
87
|
RSpec.configure do |c|
|
91
|
-
c.treat_symbols_as_metadata_keys_with_true_values = true
|
92
88
|
c.filter_run :current_example
|
93
89
|
end
|
94
90
|
|
@@ -5,11 +5,11 @@ Feature: JSON formatter
|
|
5
5
|
"""ruby
|
6
6
|
describe "Various" do
|
7
7
|
it "fails" do
|
8
|
-
"fail".
|
8
|
+
expect("fail").to eq("succeed")
|
9
9
|
end
|
10
10
|
|
11
11
|
it "succeeds" do
|
12
|
-
"succeed".
|
12
|
+
expect("succeed").to eq("succeed")
|
13
13
|
end
|
14
14
|
|
15
15
|
it "pends"
|
@@ -9,7 +9,7 @@ Feature: text formatter
|
|
9
9
|
"""ruby
|
10
10
|
describe String do
|
11
11
|
it "has a failing example" do
|
12
|
-
"foo".reverse.
|
12
|
+
expect("foo".reverse).to eq("ofo")
|
13
13
|
end
|
14
14
|
end
|
15
15
|
"""
|
@@ -17,7 +17,7 @@ Feature: text formatter
|
|
17
17
|
"""ruby
|
18
18
|
describe Integer do
|
19
19
|
it "has a failing example" do
|
20
|
-
(7 + 5).
|
20
|
+
expect(7 + 5).to eq(11)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
"""
|
@@ -25,7 +25,7 @@ Feature: text formatter
|
|
25
25
|
Then the backtrace-normalized output should contain:
|
26
26
|
"""
|
27
27
|
1) Integer has a failing example
|
28
|
-
Failure/Error: (7 + 5).
|
28
|
+
Failure/Error: expect(7 + 5).to eq(11)
|
29
29
|
|
30
30
|
expected: 11
|
31
31
|
got: 12
|
@@ -36,7 +36,7 @@ Feature: text formatter
|
|
36
36
|
And the backtrace-normalized output should contain:
|
37
37
|
"""
|
38
38
|
2) String has a failing example
|
39
|
-
Failure/Error: "foo".reverse.
|
39
|
+
Failure/Error: expect("foo".reverse).to eq("ofo")
|
40
40
|
|
41
41
|
expected: "ofo"
|
42
42
|
got: "oof"
|
@@ -14,7 +14,7 @@ Feature: arbitrary helper methods
|
|
14
14
|
end
|
15
15
|
|
16
16
|
it "has access to methods defined in its group" do
|
17
|
-
help.
|
17
|
+
expect(help).to be(:available)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
"""
|
@@ -31,7 +31,7 @@ Feature: arbitrary helper methods
|
|
31
31
|
|
32
32
|
describe "in a nested group" do
|
33
33
|
it "has access to methods defined in its parent group" do
|
34
|
-
help.
|
34
|
+
expect(help).to be(:available)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
@@ -15,12 +15,12 @@ Feature: let and let!
|
|
15
15
|
let(:count) { $count += 1 }
|
16
16
|
|
17
17
|
it "memoizes the value" do
|
18
|
-
count.
|
19
|
-
count.
|
18
|
+
expect(count).to eq(1)
|
19
|
+
expect(count).to eq(1)
|
20
20
|
end
|
21
21
|
|
22
22
|
it "is not cached across examples" do
|
23
|
-
count.
|
23
|
+
expect(count).to eq(2)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
"""
|
@@ -41,8 +41,8 @@ Feature: let and let!
|
|
41
41
|
|
42
42
|
it "calls the helper method in a before hook" do
|
43
43
|
invocation_order << :example
|
44
|
-
invocation_order.
|
45
|
-
count.
|
44
|
+
expect(invocation_order).to eq([:let!, :example])
|
45
|
+
expect(count).to eq(1)
|
46
46
|
end
|
47
47
|
end
|
48
48
|
"""
|
@@ -8,10 +8,8 @@ Feature: Define helper methods in a module
|
|
8
8
|
|
9
9
|
You can also include or extend the module onto only certain example
|
10
10
|
groups by passing a metadata hash as the last argument. Only groups
|
11
|
-
that match the given metadata will include or extend the module.
|
12
|
-
|
13
|
-
If you set the `treat_symbols_as_metadata_keys_with_true_values` config option
|
14
|
-
to `true`, you can specify metadata using only symbols.
|
11
|
+
that match the given metadata will include or extend the module. You
|
12
|
+
can also specify metadata using only symbols.
|
15
13
|
|
16
14
|
Background:
|
17
15
|
Given a file named "helpers.rb" with:
|
@@ -34,7 +32,7 @@ Feature: Define helper methods in a module
|
|
34
32
|
|
35
33
|
describe "an example group" do
|
36
34
|
it "has access to the helper methods defined in the module" do
|
37
|
-
help.
|
35
|
+
expect(help).to be(:available)
|
38
36
|
end
|
39
37
|
end
|
40
38
|
"""
|
@@ -73,7 +71,7 @@ Feature: Define helper methods in a module
|
|
73
71
|
|
74
72
|
describe "an example group with matching metadata", :foo => :bar do
|
75
73
|
it "has access to the helper methods defined in the module" do
|
76
|
-
help.
|
74
|
+
expect(help).to be(:available)
|
77
75
|
end
|
78
76
|
end
|
79
77
|
|
@@ -122,7 +120,6 @@ Feature: Define helper methods in a module
|
|
122
120
|
require './helpers'
|
123
121
|
|
124
122
|
RSpec.configure do |c|
|
125
|
-
c.treat_symbols_as_metadata_keys_with_true_values = true
|
126
123
|
c.include Helpers, :include_helpers
|
127
124
|
c.extend Helpers, :extend_helpers
|
128
125
|
end
|
@@ -131,7 +128,7 @@ Feature: Define helper methods in a module
|
|
131
128
|
puts "In a group not matching the extend filter, help is #{help rescue 'not available'}"
|
132
129
|
|
133
130
|
it "has access to the helper methods defined in the module" do
|
134
|
-
help.
|
131
|
+
expect(help).to be(:available)
|
135
132
|
end
|
136
133
|
end
|
137
134
|
|
@@ -192,7 +192,7 @@ Feature: around hooks
|
|
192
192
|
end
|
193
193
|
|
194
194
|
it "runs the example in the correct context" do
|
195
|
-
included_in_configure_block.
|
195
|
+
expect(included_in_configure_block).to be_truthy
|
196
196
|
end
|
197
197
|
end
|
198
198
|
"""
|
@@ -259,7 +259,7 @@ Feature: around hooks
|
|
259
259
|
|
260
260
|
it "they should all be run" do
|
261
261
|
puts "in the example"
|
262
|
-
1.
|
262
|
+
expect(1).to eq(1)
|
263
263
|
end
|
264
264
|
end
|
265
265
|
"""
|
@@ -43,7 +43,7 @@ Feature: before and after hooks
|
|
43
43
|
|
44
44
|
describe "initialized in before(:each)" do
|
45
45
|
it "has 0 widgets" do
|
46
|
-
@thing.
|
46
|
+
expect(@thing.widgets.count).to eq(0)
|
47
47
|
end
|
48
48
|
|
49
49
|
it "can get accept new widgets" do
|
@@ -51,7 +51,7 @@ Feature: before and after hooks
|
|
51
51
|
end
|
52
52
|
|
53
53
|
it "does not share state across examples" do
|
54
|
-
@thing.
|
54
|
+
expect(@thing.widgets.count).to eq(0)
|
55
55
|
end
|
56
56
|
end
|
57
57
|
end
|
@@ -77,7 +77,7 @@ Feature: before and after hooks
|
|
77
77
|
|
78
78
|
describe "initialized in before(:all)" do
|
79
79
|
it "has 0 widgets" do
|
80
|
-
@thing.
|
80
|
+
expect(@thing.widgets.count).to eq(0)
|
81
81
|
end
|
82
82
|
|
83
83
|
it "can get accept new widgets" do
|
@@ -85,7 +85,7 @@ Feature: before and after hooks
|
|
85
85
|
end
|
86
86
|
|
87
87
|
it "shares state across examples" do
|
88
|
-
@thing.
|
88
|
+
expect(@thing.widgets.count).to eq(1)
|
89
89
|
end
|
90
90
|
end
|
91
91
|
end
|
@@ -191,12 +191,12 @@ Feature: before and after hooks
|
|
191
191
|
describe "stuff in before blocks" do
|
192
192
|
describe "with :all" do
|
193
193
|
it "should be available in the example" do
|
194
|
-
@before_all.
|
194
|
+
expect(@before_all).to eq("before all")
|
195
195
|
end
|
196
196
|
end
|
197
197
|
describe "with :each" do
|
198
198
|
it "should be available in the example" do
|
199
|
-
@before_each.
|
199
|
+
expect(@before_each).to eq("before each")
|
200
200
|
end
|
201
201
|
end
|
202
202
|
end
|
@@ -355,19 +355,19 @@ Feature: before and after hooks
|
|
355
355
|
|
356
356
|
describe "nested" do
|
357
357
|
it "access state set in before(:all)" do
|
358
|
-
@value.
|
358
|
+
expect(@value).to eq(123)
|
359
359
|
end
|
360
360
|
|
361
361
|
describe "nested more deeply" do
|
362
362
|
it "access state set in before(:all)" do
|
363
|
-
@value.
|
363
|
+
expect(@value).to eq(123)
|
364
364
|
end
|
365
365
|
end
|
366
366
|
end
|
367
367
|
|
368
368
|
describe "nested in parallel" do
|
369
369
|
it "access state set in before(:all)" do
|
370
|
-
@value.
|
370
|
+
expect(@value).to eq(123)
|
371
371
|
end
|
372
372
|
end
|
373
373
|
end
|
@@ -384,7 +384,7 @@ Feature: before and after hooks
|
|
384
384
|
end
|
385
385
|
|
386
386
|
example "in outer group" do
|
387
|
-
@outer_state.
|
387
|
+
expect(@outer_state).to eq("set in outer before all")
|
388
388
|
end
|
389
389
|
|
390
390
|
describe "nested group" do
|
@@ -393,17 +393,17 @@ Feature: before and after hooks
|
|
393
393
|
end
|
394
394
|
|
395
395
|
example "in nested group" do
|
396
|
-
@outer_state.
|
397
|
-
@inner_state.
|
396
|
+
expect(@outer_state).to eq("set in outer before all")
|
397
|
+
expect(@inner_state).to eq("set in inner before all")
|
398
398
|
end
|
399
399
|
|
400
400
|
after(:all) do
|
401
|
-
@inner_state.
|
401
|
+
expect(@inner_state).to eq("set in inner before all")
|
402
402
|
end
|
403
403
|
end
|
404
404
|
|
405
405
|
after(:all) do
|
406
|
-
@outer_state.
|
406
|
+
expect(@outer_state).to eq("set in outer before all")
|
407
407
|
end
|
408
408
|
end
|
409
409
|
"""
|
@@ -12,8 +12,7 @@ Feature: filters
|
|
12
12
|
describe "something", :type => :model do
|
13
13
|
end
|
14
14
|
|
15
|
-
You can specify metadata using only symbols
|
16
|
-
`treat_symbols_as_metadata_keys_with_true_values` config option to `true`.
|
15
|
+
You can also specify metadata using only symbols.
|
17
16
|
|
18
17
|
Scenario: filter `before(:each)` hooks using arbitrary metadata
|
19
18
|
Given a file named "filter_before_each_hooks_spec.rb" with:
|
@@ -29,17 +28,17 @@ Feature: filters
|
|
29
28
|
|
30
29
|
describe "group without matching metadata" do
|
31
30
|
it "does not run the hook" do
|
32
|
-
invoked_hooks.
|
31
|
+
expect(invoked_hooks).to be_empty
|
33
32
|
end
|
34
33
|
|
35
34
|
it "runs the hook for an example with matching metadata", :foo => :bar do
|
36
|
-
invoked_hooks.
|
35
|
+
expect(invoked_hooks).to eq([:before_each_foo_bar])
|
37
36
|
end
|
38
37
|
end
|
39
38
|
|
40
39
|
describe "group with matching metadata", :foo => :bar do
|
41
40
|
it "runs the hook" do
|
42
|
-
invoked_hooks.
|
41
|
+
expect(invoked_hooks).to eq([:before_each_foo_bar])
|
43
42
|
end
|
44
43
|
end
|
45
44
|
end
|
@@ -84,7 +83,7 @@ Feature: filters
|
|
84
83
|
config.around(:each, :foo => :bar) do |example|
|
85
84
|
order << :before_around_each_foo_bar
|
86
85
|
example.run
|
87
|
-
order.
|
86
|
+
expect(order).to eq([:before_around_each_foo_bar, :example])
|
88
87
|
end
|
89
88
|
end
|
90
89
|
|
@@ -93,18 +92,18 @@ Feature: filters
|
|
93
92
|
|
94
93
|
describe "a group without matching metadata" do
|
95
94
|
it "does not run the hook" do
|
96
|
-
order.
|
95
|
+
expect(order).to be_empty
|
97
96
|
end
|
98
97
|
|
99
98
|
it "runs the hook for an example with matching metadata", :foo => :bar do
|
100
|
-
order.
|
99
|
+
expect(order).to eq([:before_around_each_foo_bar])
|
101
100
|
order << :example
|
102
101
|
end
|
103
102
|
end
|
104
103
|
|
105
104
|
describe "a group with matching metadata", :foo => :bar do
|
106
105
|
it "runs the hook for an example with matching metadata", :foo => :bar do
|
107
|
-
order.
|
106
|
+
expect(order).to eq([:before_around_each_foo_bar])
|
108
107
|
order << :example
|
109
108
|
end
|
110
109
|
end
|
@@ -123,24 +122,24 @@ Feature: filters
|
|
123
122
|
describe "a filtered before(:all) hook" do
|
124
123
|
describe "a group without matching metadata" do
|
125
124
|
it "does not run the hook" do
|
126
|
-
@hook.
|
125
|
+
expect(@hook).to be_nil
|
127
126
|
end
|
128
127
|
|
129
128
|
describe "a nested subgroup with matching metadata", :foo => :bar do
|
130
129
|
it "runs the hook" do
|
131
|
-
@hook.
|
130
|
+
expect(@hook).to eq(:before_all_foo_bar)
|
132
131
|
end
|
133
132
|
end
|
134
133
|
end
|
135
134
|
|
136
135
|
describe "a group with matching metadata", :foo => :bar do
|
137
136
|
it "runs the hook" do
|
138
|
-
@hook.
|
137
|
+
expect(@hook).to eq(:before_all_foo_bar)
|
139
138
|
end
|
140
139
|
|
141
140
|
describe "a nested subgroup" do
|
142
141
|
it "runs the hook" do
|
143
|
-
@hook.
|
142
|
+
expect(@hook).to eq(:before_all_foo_bar)
|
144
143
|
end
|
145
144
|
end
|
146
145
|
end
|
@@ -197,7 +196,6 @@ Feature: filters
|
|
197
196
|
Given a file named "less_verbose_metadata_filter.rb" with:
|
198
197
|
"""ruby
|
199
198
|
RSpec.configure do |c|
|
200
|
-
c.treat_symbols_as_metadata_keys_with_true_values = true
|
201
199
|
c.before(:each, :before_each) { puts "before each" }
|
202
200
|
c.after(:each, :after_each) { puts "after each" }
|
203
201
|
c.around(:each, :around_each) do |example|
|
@@ -8,16 +8,7 @@ Feature: User-defined metadata
|
|
8
8
|
Metadata defined on an example group is available (and can be overridden)
|
9
9
|
by any sub-group or from any example in that group or a sub-group.
|
10
10
|
|
11
|
-
In addition,
|
12
|
-
behavior in RSpec 3) that allows you to specify metadata using just
|
13
|
-
symbols:
|
14
|
-
|
15
|
-
```ruby
|
16
|
-
RSpec.configure do |c|
|
17
|
-
c.treat_symbols_as_metadata_keys_with_true_values = true
|
18
|
-
end
|
19
|
-
```
|
20
|
-
|
11
|
+
In addition, you can specify metdata using just symbols.
|
21
12
|
Each symbol passed as an argument to `describe`, `context` or `it` will
|
22
13
|
be a key in the metadata hash, with a corresponding value of `true`.
|
23
14
|
|
@@ -26,20 +17,20 @@ Feature: User-defined metadata
|
|
26
17
|
"""ruby
|
27
18
|
describe "a group with user-defined metadata", :foo => 17 do
|
28
19
|
it 'has access to the metadata in the example' do |example|
|
29
|
-
example.metadata[:foo].
|
20
|
+
expect(example.metadata[:foo]).to eq(17)
|
30
21
|
end
|
31
22
|
|
32
23
|
it 'does not have access to metadata defined on sub-groups' do |example|
|
33
|
-
example.metadata.
|
24
|
+
expect(example.metadata).not_to include(:bar)
|
34
25
|
end
|
35
26
|
|
36
27
|
describe 'a sub-group with user-defined metadata', :bar => 12 do
|
37
28
|
it 'has access to the sub-group metadata' do |example|
|
38
|
-
example.metadata[:foo].
|
29
|
+
expect(example.metadata[:foo]).to eq(17)
|
39
30
|
end
|
40
31
|
|
41
32
|
it 'also has access to metadata defined on parent groups' do |example|
|
42
|
-
example.metadata[:bar].
|
33
|
+
expect(example.metadata[:bar]).to eq(12)
|
43
34
|
end
|
44
35
|
end
|
45
36
|
end
|
@@ -52,14 +43,14 @@ Feature: User-defined metadata
|
|
52
43
|
"""ruby
|
53
44
|
describe "a group with no user-defined metadata" do
|
54
45
|
it 'has an example with metadata', :foo => 17 do |example|
|
55
|
-
example.metadata[:foo].
|
56
|
-
example.metadata.
|
46
|
+
expect(example.metadata[:foo]).to eq(17)
|
47
|
+
expect(example.metadata).not_to include(:bar)
|
57
48
|
end
|
58
49
|
|
59
50
|
it 'has another example with metadata', :bar => 12, :bazz => 33 do |example|
|
60
|
-
example.metadata[:bar].
|
61
|
-
example.metadata[:bazz].
|
62
|
-
example.metadata.
|
51
|
+
expect(example.metadata[:bar]).to eq(12)
|
52
|
+
expect(example.metadata[:bazz]).to eq(33)
|
53
|
+
expect(example.metadata).not_to include(:foo)
|
63
54
|
end
|
64
55
|
end
|
65
56
|
"""
|
@@ -71,12 +62,12 @@ Feature: User-defined metadata
|
|
71
62
|
"""ruby
|
72
63
|
describe "a group with user-defined metadata", :foo => 'bar' do
|
73
64
|
it 'can be overridden by an example', :foo => 'bazz' do |example|
|
74
|
-
example.metadata[:foo].
|
65
|
+
expect(example.metadata[:foo]).to eq('bazz')
|
75
66
|
end
|
76
67
|
|
77
68
|
describe "a sub-group with an override", :foo => 'goo' do
|
78
69
|
it 'can be overridden by a sub-group' do |example|
|
79
|
-
example.metadata[:foo].
|
70
|
+
expect(example.metadata[:foo]).to eq('goo')
|
80
71
|
end
|
81
72
|
end
|
82
73
|
end
|
@@ -87,25 +78,21 @@ Feature: User-defined metadata
|
|
87
78
|
Scenario: less verbose metadata
|
88
79
|
Given a file named "less_verbose_metadata_spec.rb" with:
|
89
80
|
"""ruby
|
90
|
-
RSpec.configure do |c|
|
91
|
-
c.treat_symbols_as_metadata_keys_with_true_values = true
|
92
|
-
end
|
93
|
-
|
94
81
|
describe "a group with simple metadata", :fast, :simple, :bug => 73 do
|
95
82
|
it 'has `:fast => true` metadata' do |example|
|
96
|
-
example.metadata[:fast].
|
83
|
+
expect(example.metadata[:fast]).to eq(true)
|
97
84
|
end
|
98
85
|
|
99
86
|
it 'has `:simple => true` metadata' do |example|
|
100
|
-
example.metadata[:simple].
|
87
|
+
expect(example.metadata[:simple]).to eq(true)
|
101
88
|
end
|
102
89
|
|
103
90
|
it 'can still use a hash for metadata' do |example|
|
104
|
-
example.metadata[:bug].
|
91
|
+
expect(example.metadata[:bug]).to eq(73)
|
105
92
|
end
|
106
93
|
|
107
94
|
it 'can define simple metadata on an example', :special do |example|
|
108
|
-
example.metadata[:special].
|
95
|
+
expect(example.metadata[:special]).to eq(true)
|
109
96
|
end
|
110
97
|
end
|
111
98
|
"""
|