rspec-core 2.99.2 → 3.0.0.beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +14 -6
- checksums.yaml.gz.sig +2 -0
- data.tar.gz.sig +0 -0
- data/Changelog.md +103 -191
- data/License.txt +1 -0
- data/README.md +4 -25
- data/features/Upgrade.md +2 -14
- data/features/command_line/dry_run.feature +29 -0
- data/features/command_line/example_name_option.feature +1 -1
- data/features/command_line/fail_fast.feature +26 -0
- data/features/command_line/format_option.feature +3 -3
- data/features/command_line/line_number_option.feature +16 -11
- data/features/command_line/order.feature +2 -3
- data/features/command_line/pattern_option.feature +3 -3
- data/features/command_line/randomization.feature +63 -0
- data/features/command_line/require_option.feature +2 -2
- data/features/command_line/ruby.feature +1 -1
- data/features/configuration/alias_example_to.feature +13 -22
- data/features/configuration/{backtrace_clean_patterns.feature → backtrace_exclusion_patterns.feature} +17 -14
- data/features/configuration/custom_settings.feature +11 -11
- data/features/configuration/overriding_global_ordering.feature +93 -0
- data/features/configuration/profile.feature +13 -13
- data/features/configuration/read_options_from_file.feature +7 -7
- data/features/example_groups/basic_structure.feature +1 -1
- data/features/example_groups/shared_context.feature +8 -8
- data/features/example_groups/shared_examples.feature +6 -14
- data/features/expectation_framework_integration/configure_expectation_framework.feature +27 -122
- data/features/filtering/exclusion_filters.feature +2 -5
- data/features/filtering/inclusion_filters.feature +1 -5
- data/features/formatters/json_formatter.feature +2 -2
- data/features/formatters/text_formatter.feature +4 -4
- data/features/helper_methods/arbitrary_methods.feature +2 -2
- data/features/helper_methods/let.feature +5 -5
- data/features/helper_methods/modules.feature +5 -8
- data/features/hooks/around_hooks.feature +2 -2
- data/features/hooks/before_and_after_hooks.feature +14 -14
- data/features/hooks/filtering.feature +12 -14
- data/features/metadata/described_class.feature +1 -1
- data/features/metadata/user_defined.feature +16 -29
- data/features/mock_framework_integration/use_flexmock.feature +1 -1
- data/features/mock_framework_integration/use_mocha.feature +1 -1
- data/features/mock_framework_integration/use_rr.feature +1 -1
- data/features/mock_framework_integration/use_rspec.feature +5 -5
- data/features/pending/pending_examples.feature +5 -5
- data/features/spec_files/arbitrary_file_suffix.feature +1 -1
- data/features/step_definitions/additional_cli_steps.rb +3 -3
- data/features/subject/explicit_subject.feature +8 -8
- data/features/subject/implicit_receiver.feature +29 -0
- data/features/subject/implicit_subject.feature +4 -4
- data/features/support/env.rb +10 -3
- data/features/support/require_expect_syntax_in_aruba_specs.rb +16 -0
- data/lib/rspec/core.rb +11 -48
- data/lib/rspec/core/backport_random.rb +302 -0
- data/lib/rspec/core/backtrace_formatter.rb +65 -0
- data/lib/rspec/core/command_line.rb +7 -18
- data/lib/rspec/core/configuration.rb +202 -507
- data/lib/rspec/core/configuration_options.rb +17 -30
- data/lib/rspec/core/example.rb +29 -39
- data/lib/rspec/core/example_group.rb +166 -259
- data/lib/rspec/core/filter_manager.rb +30 -47
- data/lib/rspec/core/flat_map.rb +17 -0
- data/lib/rspec/core/formatters.rb +0 -138
- data/lib/rspec/core/formatters/base_formatter.rb +46 -1
- data/lib/rspec/core/formatters/base_text_formatter.rb +38 -61
- data/lib/rspec/core/formatters/deprecation_formatter.rb +21 -52
- data/lib/rspec/core/formatters/helpers.rb +0 -28
- data/lib/rspec/core/formatters/html_formatter.rb +1 -1
- data/lib/rspec/core/formatters/json_formatter.rb +38 -9
- data/lib/rspec/core/formatters/snippet_extractor.rb +14 -5
- data/lib/rspec/core/hooks.rb +55 -39
- data/lib/rspec/core/memoized_helpers.rb +17 -167
- data/lib/rspec/core/metadata.rb +16 -64
- data/lib/rspec/core/option_parser.rb +30 -39
- data/lib/rspec/core/ordering.rb +154 -0
- data/lib/rspec/core/pending.rb +12 -69
- data/lib/rspec/core/project_initializer.rb +12 -10
- data/lib/rspec/core/rake_task.rb +5 -108
- data/lib/rspec/core/reporter.rb +15 -18
- data/lib/rspec/core/runner.rb +16 -30
- data/lib/rspec/core/shared_context.rb +3 -5
- data/lib/rspec/core/shared_example_group.rb +3 -51
- data/lib/rspec/core/shared_example_group/collection.rb +1 -19
- data/lib/rspec/core/version.rb +1 -1
- data/lib/rspec/core/warnings.rb +22 -0
- data/lib/rspec/core/world.rb +12 -8
- data/spec/command_line/order_spec.rb +20 -23
- data/spec/rspec/core/backtrace_formatter_spec.rb +216 -0
- data/spec/rspec/core/command_line_spec.rb +32 -48
- data/spec/rspec/core/configuration_options_spec.rb +19 -50
- data/spec/rspec/core/configuration_spec.rb +142 -713
- data/spec/rspec/core/drb_command_line_spec.rb +2 -0
- data/spec/rspec/core/dsl_spec.rb +0 -1
- data/spec/rspec/core/example_group_spec.rb +192 -223
- data/spec/rspec/core/example_spec.rb +40 -16
- data/spec/rspec/core/filter_manager_spec.rb +2 -2
- data/spec/rspec/core/formatters/base_formatter_spec.rb +0 -41
- data/spec/rspec/core/formatters/base_text_formatter_spec.rb +5 -123
- data/spec/rspec/core/formatters/deprecation_formatter_spec.rb +2 -87
- data/spec/rspec/core/formatters/documentation_formatter_spec.rb +2 -3
- data/spec/rspec/core/formatters/{text_mate_formatted.html → html_formatted-1.8.7-jruby.html} +44 -25
- data/spec/rspec/core/formatters/html_formatted-1.8.7-rbx.html +477 -0
- data/spec/rspec/core/formatters/{html_formatted.html → html_formatted-1.8.7.html} +42 -25
- data/spec/rspec/core/formatters/html_formatted-1.9.2.html +425 -0
- data/spec/rspec/core/formatters/html_formatted-1.9.3-jruby.html +416 -0
- data/spec/rspec/core/formatters/html_formatted-1.9.3-rbx.html +477 -0
- data/spec/rspec/core/formatters/html_formatted-1.9.3.html +419 -0
- data/spec/rspec/core/formatters/html_formatted-2.0.0.html +425 -0
- data/spec/rspec/core/formatters/html_formatter_spec.rb +21 -46
- data/spec/rspec/core/formatters/json_formatter_spec.rb +97 -8
- data/spec/rspec/core/hooks_filtering_spec.rb +5 -5
- data/spec/rspec/core/hooks_spec.rb +61 -47
- data/spec/rspec/core/memoized_helpers_spec.rb +20 -322
- data/spec/rspec/core/metadata_spec.rb +1 -24
- data/spec/rspec/core/option_parser_spec.rb +20 -62
- data/spec/rspec/core/ordering_spec.rb +102 -0
- data/spec/rspec/core/pending_example_spec.rb +0 -40
- data/spec/rspec/core/project_initializer_spec.rb +1 -25
- data/spec/rspec/core/rake_task_spec.rb +5 -72
- data/spec/rspec/core/random_spec.rb +47 -0
- data/spec/rspec/core/reporter_spec.rb +23 -48
- data/spec/rspec/core/runner_spec.rb +31 -39
- data/spec/rspec/core/shared_context_spec.rb +3 -15
- data/spec/rspec/core/shared_example_group/collection_spec.rb +4 -17
- data/spec/rspec/core/shared_example_group_spec.rb +12 -45
- data/spec/rspec/core/{deprecation_spec.rb → warnings_spec.rb} +3 -1
- data/spec/rspec/core_spec.rb +4 -21
- data/spec/spec_helper.rb +41 -5
- data/spec/support/helper_methods.rb +0 -29
- data/spec/support/sandboxed_mock_space.rb +0 -16
- data/spec/support/shared_example_groups.rb +7 -36
- data/spec/support/stderr_splitter.rb +36 -0
- metadata +163 -157
- metadata.gz.sig +1 -0
- data/exe/autospec +0 -13
- data/features/Autotest.md +0 -38
- data/features/configuration/treat_symbols_as_metadata_keys_with_true_values.feature +0 -52
- data/features/subject/attribute_of_subject.feature +0 -124
- data/features/subject/one_liner_syntax.feature +0 -71
- data/lib/autotest/discover.rb +0 -10
- data/lib/autotest/rspec2.rb +0 -77
- data/lib/rspec/core/backtrace_cleaner.rb +0 -46
- data/lib/rspec/core/backward_compatibility.rb +0 -55
- data/lib/rspec/core/caller_filter.rb +0 -60
- data/lib/rspec/core/deprecated_mutable_array_proxy.rb +0 -32
- data/lib/rspec/core/deprecation.rb +0 -26
- data/lib/rspec/core/extensions/instance_eval_with_args.rb +0 -44
- data/lib/rspec/core/extensions/kernel.rb +0 -9
- data/lib/rspec/core/extensions/module_eval_with_args.rb +0 -38
- data/lib/rspec/core/extensions/ordered.rb +0 -27
- data/lib/rspec/core/formatters/console_codes.rb +0 -42
- data/lib/rspec/core/formatters/text_mate_formatter.rb +0 -34
- data/lib/rspec/core/metadata_hash_builder.rb +0 -97
- data/lib/rspec/core/minitest_assertions_adapter.rb +0 -28
- data/lib/rspec/core/test_unit_assertions_adapter.rb +0 -30
- data/spec/autotest/discover_spec.rb +0 -49
- data/spec/autotest/failed_results_re_spec.rb +0 -45
- data/spec/autotest/rspec_spec.rb +0 -133
- data/spec/rspec/core/backtrace_cleaner_spec.rb +0 -68
- data/spec/rspec/core/caller_filter_spec.rb +0 -58
- data/spec/rspec/core/deprecations_spec.rb +0 -59
- data/spec/rspec/core/formatters/console_codes_spec.rb +0 -50
- data/spec/rspec/core/formatters/text_mate_formatter_spec.rb +0 -107
- data/spec/rspec/core/kernel_extensions_spec.rb +0 -9
- data/spec/rspec/core/pending_spec.rb +0 -27
- data/spec/support/silence_dsl_deprecations.rb +0 -32
|
@@ -1,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
|
"""
|