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
data/License.txt
CHANGED
data/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# rspec-core [](http://travis-ci.org/rspec/rspec-core) [](https://codeclimate.com/github/rspec/rspec-core)
|
|
1
|
+
# rspec-core [](http://travis-ci.org/rspec/rspec-core) [](https://codeclimate.com/github/rspec/rspec-core) [](https://coveralls.io/r/rspec/rspec-core?branch=master)
|
|
2
2
|
|
|
3
3
|
rspec-core provides the structure for writing executable examples of how your
|
|
4
4
|
code should behave, and an `rspec` command with tools to constrain which
|
|
@@ -165,30 +165,9 @@ the command line.
|
|
|
165
165
|
|
|
166
166
|
## autotest integration
|
|
167
167
|
|
|
168
|
-
rspec-core ships with an Autotest extension,
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
## rcov integration
|
|
172
|
-
|
|
173
|
-
rcov is best integrated via the [rcov rake
|
|
174
|
-
task](http://www.rubydoc.info/github/relevance/rcov/master/Rcov/RcovTask).
|
|
175
|
-
|
|
176
|
-
rcov can also be integrated via the rspec rake task, but it requires a bit
|
|
177
|
-
more setup:
|
|
178
|
-
|
|
179
|
-
```ruby
|
|
180
|
-
# Rakefile
|
|
181
|
-
require 'rspec/core/rake_task'
|
|
182
|
-
|
|
183
|
-
RSpec::Core::RakeTask.new(:spec) do |config|
|
|
184
|
-
config.rcov = true
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
task :default => :spec
|
|
188
|
-
|
|
189
|
-
# spec/spec_helper.rb
|
|
190
|
-
require 'rspec/autorun' # **add this**
|
|
191
|
-
```
|
|
168
|
+
rspec-core no longer ships with an Autotest extension, if you require Autotest
|
|
169
|
+
integration, please use the `rspec-autotest` gem and see [rspec/auto-test](https://github.com/rspec/auto-test)
|
|
170
|
+
for details
|
|
192
171
|
|
|
193
172
|
## get started
|
|
194
173
|
|
data/features/Upgrade.md
CHANGED
|
@@ -123,10 +123,10 @@ Use :if and :unless keys to conditionally run examples with simple boolean
|
|
|
123
123
|
expressions:
|
|
124
124
|
|
|
125
125
|
describe "something" do
|
|
126
|
-
it "does something", :if => RUBY_VERSION == 1.8.
|
|
126
|
+
it "does something", :if => RUBY_VERSION == 1.8.7 do
|
|
127
127
|
# ...
|
|
128
128
|
end
|
|
129
|
-
it "does something", :unless => RUBY_VERSION == 1.8.
|
|
129
|
+
it "does something", :unless => RUBY_VERSION == 1.8.7 do
|
|
130
130
|
# ...
|
|
131
131
|
end
|
|
132
132
|
end
|
|
@@ -285,14 +285,6 @@ A few things changed in the Rake task used to run specs:
|
|
|
285
285
|
so the options must be embedded directly in the Rakefile, or stored in the
|
|
286
286
|
`.rspec` files mentioned above.
|
|
287
287
|
|
|
288
|
-
3. In RSpec-1, the rake task would read in rcov options from an `rcov.opts`
|
|
289
|
-
file. This is ignored by RSpec-2. RCov options are now set directly on the Rake
|
|
290
|
-
task:
|
|
291
|
-
|
|
292
|
-
RSpec::Core::RakeTask.new(:rcov) do |t|
|
|
293
|
-
t.rcov_opts = %q[--exclude "spec"]
|
|
294
|
-
end
|
|
295
|
-
|
|
296
288
|
3. The `spec_files` accessor has been replaced by `pattern`.
|
|
297
289
|
|
|
298
290
|
# rspec-1
|
|
@@ -311,10 +303,6 @@ A few things changed in the Rake task used to run specs:
|
|
|
311
303
|
t.pattern = 'spec/**/*_spec.rb'
|
|
312
304
|
end
|
|
313
305
|
|
|
314
|
-
### autotest
|
|
315
|
-
|
|
316
|
-
`autospec` is dead. Long live `autotest`.
|
|
317
|
-
|
|
318
306
|
### RSpec is the new Spec
|
|
319
307
|
|
|
320
308
|
The root namespace (top level module) is now `RSpec` instead of `Spec`, and
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
Feature: --dry-run
|
|
2
|
+
|
|
3
|
+
Use the `--dry-run` option to have RSpec print your suite's formatter
|
|
4
|
+
output without running any examples or hooks.
|
|
5
|
+
|
|
6
|
+
Scenario: Using --dry-run
|
|
7
|
+
Given a file named "spec/dry_run_spec.rb" with:
|
|
8
|
+
"""ruby
|
|
9
|
+
RSpec.configure do |c|
|
|
10
|
+
c.before(:suite) { puts "before suite" }
|
|
11
|
+
c.after(:suite) { puts "after suite" }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "dry run" do
|
|
15
|
+
before(:all) { fail }
|
|
16
|
+
before(:each) { fail }
|
|
17
|
+
|
|
18
|
+
it "fails in example" do
|
|
19
|
+
fail
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
after(:each) { fail }
|
|
23
|
+
after(:all) { fail }
|
|
24
|
+
end
|
|
25
|
+
"""
|
|
26
|
+
When I run `rspec --dry-run`
|
|
27
|
+
Then the output should contain "1 example, 0 failures"
|
|
28
|
+
And the output should not contain "before suite"
|
|
29
|
+
And the output should not contain "after suite"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
Feature: --fail-fast
|
|
2
|
+
|
|
3
|
+
Use the `--fail-fast` option to tell RSpec to stop running the test suite on the first failed test.
|
|
4
|
+
|
|
5
|
+
You may also specify `--no-fail-fast` to turn it off (default behaviour).
|
|
6
|
+
|
|
7
|
+
Background:
|
|
8
|
+
Given a file named "fail_fast_spec.rb" with:
|
|
9
|
+
"""ruby
|
|
10
|
+
describe "fail fast" do
|
|
11
|
+
it "passing test" do; end
|
|
12
|
+
it "failing test" do
|
|
13
|
+
fail
|
|
14
|
+
end
|
|
15
|
+
it "this should not be run" do; end
|
|
16
|
+
end
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
Scenario: Using --fail-fast
|
|
20
|
+
When I run `rspec . --fail-fast`
|
|
21
|
+
Then the output should contain ".F"
|
|
22
|
+
Then the output should not contain ".F."
|
|
23
|
+
|
|
24
|
+
Scenario: Using --no-fail-fast
|
|
25
|
+
When I run `rspec . --no-fail-fast`
|
|
26
|
+
Then the output should contain ".F."
|
|
@@ -26,15 +26,15 @@ Feature: --format option
|
|
|
26
26
|
"""ruby
|
|
27
27
|
describe "something" do
|
|
28
28
|
it "does something that passes" do
|
|
29
|
-
5.
|
|
29
|
+
expect(5).to eq(5)
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
it "does something that fails" do
|
|
33
|
-
5.
|
|
33
|
+
expect(5).to eq(4)
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
it "does something that is pending", :pending => true do
|
|
37
|
-
5.
|
|
37
|
+
expect(5).to be > 3
|
|
38
38
|
end
|
|
39
39
|
end
|
|
40
40
|
"""
|
|
@@ -14,26 +14,30 @@ Feature: --line_number option
|
|
|
14
14
|
describe 9 do
|
|
15
15
|
|
|
16
16
|
it "should be > 8" do
|
|
17
|
-
9.
|
|
17
|
+
expect(9).to be > 8
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
it "should be < 10" do
|
|
21
|
-
9.
|
|
21
|
+
expect(9).to be < 10
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
it "should be 3 squared" do
|
|
25
|
-
9.
|
|
25
|
+
expect(9).to be 3*3
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
end
|
|
29
29
|
"""
|
|
30
|
-
When I run `rspec example_spec.rb --line_number 5`
|
|
30
|
+
When I run `rspec example_spec.rb --line_number 5 --format doc`
|
|
31
31
|
Then the examples should all pass
|
|
32
|
-
And the output should contain "
|
|
32
|
+
And the output should contain "should be > 8"
|
|
33
|
+
But the output should not contain "should be < 10"
|
|
34
|
+
And the output should not contain "should be 3*3"
|
|
33
35
|
|
|
34
|
-
When I run `rspec example_spec.rb --line_number 5 --line_number 9`
|
|
36
|
+
When I run `rspec example_spec.rb --line_number 5 --line_number 9 --format doc`
|
|
35
37
|
Then the examples should all pass
|
|
36
|
-
And the output should contain "
|
|
38
|
+
And the output should contain "should be > 8"
|
|
39
|
+
And the output should contain "should be < 10"
|
|
40
|
+
But the output should not contain "should be 3*3"
|
|
37
41
|
|
|
38
42
|
Scenario: one liner
|
|
39
43
|
Given a file named "example_spec.rb" with:
|
|
@@ -42,12 +46,13 @@ Feature: --line_number option
|
|
|
42
46
|
|
|
43
47
|
describe 9 do
|
|
44
48
|
|
|
45
|
-
it {
|
|
49
|
+
it { should be > 8 }
|
|
46
50
|
|
|
47
|
-
it {
|
|
51
|
+
it { should be < 10 }
|
|
48
52
|
|
|
49
53
|
end
|
|
50
54
|
"""
|
|
51
|
-
When I run `rspec example_spec.rb --line_number 5`
|
|
55
|
+
When I run `rspec example_spec.rb --line_number 5 --format doc`
|
|
52
56
|
Then the examples should all pass
|
|
53
|
-
|
|
57
|
+
Then the output should contain "should be > 8"
|
|
58
|
+
But the output should not contain "should be < 10"
|
|
@@ -6,14 +6,13 @@ Feature: --order (new in rspec-core-2.8)
|
|
|
6
6
|
`defined` is the default, which executes groups and examples in the
|
|
7
7
|
order they are defined as the spec files are loaded.
|
|
8
8
|
|
|
9
|
-
Use `rand` to randomize the order of
|
|
10
|
-
examples within groups.*
|
|
9
|
+
Use `rand` to randomize the order of groups and examples within groups.*
|
|
11
10
|
|
|
12
11
|
* Nested groups are always run from top-level to bottom-level in order to avoid
|
|
13
12
|
executing `before(:all)` and `after(:all)` hooks more than once, but the order
|
|
14
13
|
of groups at each level is randomized.
|
|
15
14
|
|
|
16
|
-
You can also specify a seed
|
|
15
|
+
You can also specify a seed:
|
|
17
16
|
|
|
18
17
|
<h3>Examples</h3>
|
|
19
18
|
|
|
@@ -11,7 +11,7 @@ Feature: pattern option
|
|
|
11
11
|
"""ruby
|
|
12
12
|
describe "addition" do
|
|
13
13
|
it "adds things" do
|
|
14
|
-
(1 + 2).
|
|
14
|
+
expect(1 + 2).to eq(3)
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
"""
|
|
@@ -23,7 +23,7 @@ Feature: pattern option
|
|
|
23
23
|
"""ruby
|
|
24
24
|
describe "addition" do
|
|
25
25
|
it "adds things" do
|
|
26
|
-
(1 + 2).
|
|
26
|
+
expect(1 + 2).to eq(3)
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
"""
|
|
@@ -41,7 +41,7 @@ Feature: pattern option
|
|
|
41
41
|
"""ruby
|
|
42
42
|
describe "addition" do
|
|
43
43
|
it "adds things" do
|
|
44
|
-
(1 + 2).
|
|
44
|
+
expect(1 + 2).to eq(3)
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
"""
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
Feature: Randomization can be reproduced across test runs
|
|
2
|
+
|
|
3
|
+
In Ruby, randomness is seeded by calling `srand`
|
|
4
|
+
and passing it the seed that you want to use.
|
|
5
|
+
By doing this, subsequent calls to `rand`, `shuffle`, `sample`, etc.
|
|
6
|
+
will all be randomized the same way given the same seed is passed to `srand`.
|
|
7
|
+
|
|
8
|
+
RSpec takes care not to seed randomization directly
|
|
9
|
+
when taking action that involves randomness
|
|
10
|
+
(such as random ordering of examples).
|
|
11
|
+
|
|
12
|
+
Since RSpec does not ever invoke `srand`, this means that you
|
|
13
|
+
are free to choose which, if any, mechanism is used to seed randomization.
|
|
14
|
+
|
|
15
|
+
There is an example below of how to use RSpec's seed for this purpose
|
|
16
|
+
if you wish to do so.
|
|
17
|
+
|
|
18
|
+
If you would like to manage seeding randomization without any help from RSpec,
|
|
19
|
+
please keep the following things in mind:
|
|
20
|
+
|
|
21
|
+
* The seed should never be hard-coded.
|
|
22
|
+
|
|
23
|
+
The first example below only does this to show that seeding randomization
|
|
24
|
+
with a seed other than the one used by RSpec
|
|
25
|
+
will correctly seed randomization.
|
|
26
|
+
|
|
27
|
+
* Report the seed that was chosen.
|
|
28
|
+
|
|
29
|
+
The randomization that was used for a given test run can not be reproduced
|
|
30
|
+
if noone knows what seed was used to begin with.
|
|
31
|
+
|
|
32
|
+
* Provide a mechanism to feed the seed into the tests.
|
|
33
|
+
|
|
34
|
+
Without this, the call to `srand` will have to be hard-coded any time
|
|
35
|
+
it is necessary to replicate a given test run's randomness.
|
|
36
|
+
|
|
37
|
+
Background:
|
|
38
|
+
Given a file named "spec/random_spec.rb" with:
|
|
39
|
+
"""ruby
|
|
40
|
+
require 'spec_helper'
|
|
41
|
+
|
|
42
|
+
describe 'randomized example' do
|
|
43
|
+
it 'prints random numbers' do
|
|
44
|
+
puts 5.times.map { rand(99) }.join("-")
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
Scenario: Specifying a seed using srand provides predictable randomization
|
|
50
|
+
Given a file named "spec/spec_helper.rb" with:
|
|
51
|
+
"""ruby
|
|
52
|
+
srand 123
|
|
53
|
+
"""
|
|
54
|
+
When I run `rspec`
|
|
55
|
+
Then the output should contain "66-92-98-17-83"
|
|
56
|
+
|
|
57
|
+
Scenario: Passing the RSpec seed to srand provides predictable randomization
|
|
58
|
+
Given a file named "spec/spec_helper.rb" with:
|
|
59
|
+
"""ruby
|
|
60
|
+
srand RSpec.configuration.seed
|
|
61
|
+
"""
|
|
62
|
+
When I run `rspec --seed 123`
|
|
63
|
+
Then the output should contain "66-92-98-17-83"
|
|
@@ -1,48 +1,39 @@
|
|
|
1
1
|
Feature: alias_example_to
|
|
2
2
|
|
|
3
3
|
Use `config.alias_example_to` to create new example group methods
|
|
4
|
-
that define examples with the configured metadata.
|
|
4
|
+
that define examples with the configured metadata. You can also
|
|
5
|
+
specify metadata using only symbols.
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
to `true`, you can specify metadata using only symbols.
|
|
8
|
-
|
|
9
|
-
Scenario: Use alias_example_to to define focused example
|
|
7
|
+
Scenario: Use alias_example_to to define pending example
|
|
10
8
|
Given a file named "alias_example_to_spec.rb" with:
|
|
11
9
|
"""ruby
|
|
12
10
|
RSpec.configure do |c|
|
|
13
|
-
c.alias_example_to :
|
|
14
|
-
c.filter_run :focused => true
|
|
11
|
+
c.alias_example_to :pit, :pending => "Pit alias used"
|
|
15
12
|
end
|
|
16
13
|
|
|
17
14
|
describe "an example group" do
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
fit "does another thing" do
|
|
15
|
+
pit "does something later on" do
|
|
16
|
+
fail "not implemented yet"
|
|
22
17
|
end
|
|
23
18
|
end
|
|
24
19
|
"""
|
|
25
20
|
When I run `rspec alias_example_to_spec.rb --format doc`
|
|
26
|
-
Then the output should contain "does
|
|
27
|
-
And the output should
|
|
21
|
+
Then the output should contain "does something later on (PENDING: Pit alias used)"
|
|
22
|
+
And the output should contain "0 failures"
|
|
28
23
|
|
|
29
24
|
Scenario: use symbols as metadata
|
|
30
25
|
Given a file named "use_symbols_as_metadata_spec.rb" with:
|
|
31
26
|
"""ruby
|
|
32
27
|
RSpec.configure do |c|
|
|
33
|
-
c.
|
|
34
|
-
c.alias_example_to :fit, :focused
|
|
35
|
-
c.filter_run :focused
|
|
28
|
+
c.alias_example_to :pit, :pending
|
|
36
29
|
end
|
|
37
30
|
|
|
38
31
|
describe "an example group" do
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
fit "does another thing" do
|
|
32
|
+
pit "does something later on" do
|
|
33
|
+
fail "not implemented yet"
|
|
43
34
|
end
|
|
44
35
|
end
|
|
45
36
|
"""
|
|
46
37
|
When I run `rspec use_symbols_as_metadata_spec.rb --format doc`
|
|
47
|
-
Then the output should contain "does
|
|
48
|
-
And the output should
|
|
38
|
+
Then the output should contain "does something later on (PENDING: No reason given)"
|
|
39
|
+
And the output should contain "0 failures"
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
Feature:
|
|
1
|
+
Feature: Excluding lines from the backtrace
|
|
2
2
|
|
|
3
|
-
To
|
|
3
|
+
To reduce the noise when diagnosing , RSpec excludes matching lines from
|
|
4
|
+
backtraces. The default exclusion patterns are:
|
|
4
5
|
|
|
5
6
|
/\/lib\d*\/ruby\//,
|
|
6
7
|
/org\/jruby\//,
|
|
@@ -9,14 +10,16 @@ Feature: Backtrace cleaning
|
|
|
9
10
|
/spec\/spec_helper\.rb/,
|
|
10
11
|
/lib\/rspec\/(core|expectations|matchers|mocks)/
|
|
11
12
|
|
|
12
|
-
This list can be modified or replaced with the `
|
|
13
|
+
This list can be modified or replaced with the `backtrace_exclusion_patterns`
|
|
14
|
+
option. Additionally, rspec can be run with the `--backtrace` option to skip
|
|
15
|
+
backtrace cleaning entirely.
|
|
13
16
|
|
|
14
|
-
Scenario: default
|
|
17
|
+
Scenario: using default backtrace_exclusion_patterns
|
|
15
18
|
Given a file named "spec/failing_spec.rb" with:
|
|
16
19
|
"""ruby
|
|
17
20
|
describe "2 + 2" do
|
|
18
21
|
it "is 5" do
|
|
19
|
-
(2+2).
|
|
22
|
+
expect(2+2).to eq(5)
|
|
20
23
|
end
|
|
21
24
|
end
|
|
22
25
|
"""
|
|
@@ -24,11 +27,11 @@ Feature: Backtrace cleaning
|
|
|
24
27
|
Then the output should contain "1 example, 1 failure"
|
|
25
28
|
And the output should not contain "lib/rspec/expectations"
|
|
26
29
|
|
|
27
|
-
Scenario:
|
|
30
|
+
Scenario: replacing backtrace_exclusion_patterns
|
|
28
31
|
Given a file named "spec/spec_helper.rb" with:
|
|
29
32
|
"""ruby
|
|
30
33
|
RSpec.configure do |config|
|
|
31
|
-
config.
|
|
34
|
+
config.backtrace_exclusion_patterns = [
|
|
32
35
|
/spec_helper/
|
|
33
36
|
]
|
|
34
37
|
end
|
|
@@ -42,7 +45,7 @@ Feature: Backtrace cleaning
|
|
|
42
45
|
require 'spec_helper'
|
|
43
46
|
describe "foo" do
|
|
44
47
|
it "returns baz" do
|
|
45
|
-
foo.
|
|
48
|
+
expect(foo).to eq("baz")
|
|
46
49
|
end
|
|
47
50
|
end
|
|
48
51
|
"""
|
|
@@ -50,7 +53,7 @@ Feature: Backtrace cleaning
|
|
|
50
53
|
Then the output should contain "1 example, 1 failure"
|
|
51
54
|
And the output should contain "lib/rspec/expectations"
|
|
52
55
|
|
|
53
|
-
Scenario:
|
|
56
|
+
Scenario: appending to backtrace_exclusion_patterns
|
|
54
57
|
Given a file named "spec/matchers/be_baz_matcher.rb" with:
|
|
55
58
|
"""ruby
|
|
56
59
|
RSpec::Matchers.define :be_baz do |_|
|
|
@@ -62,12 +65,12 @@ Feature: Backtrace cleaning
|
|
|
62
65
|
And a file named "spec/example_spec.rb" with:
|
|
63
66
|
"""ruby
|
|
64
67
|
RSpec.configure do |config|
|
|
65
|
-
config.
|
|
68
|
+
config.backtrace_exclusion_patterns << /be_baz_matcher/
|
|
66
69
|
end
|
|
67
70
|
|
|
68
71
|
describe "bar" do
|
|
69
72
|
it "is baz" do
|
|
70
|
-
"bar".
|
|
73
|
+
expect("bar").to be_baz
|
|
71
74
|
end
|
|
72
75
|
end
|
|
73
76
|
"""
|
|
@@ -76,7 +79,7 @@ Feature: Backtrace cleaning
|
|
|
76
79
|
But the output should not contain "be_baz_matcher"
|
|
77
80
|
And the output should not contain "lib/rspec/expectations"
|
|
78
81
|
|
|
79
|
-
Scenario:
|
|
82
|
+
Scenario: running rspec with the --backtrace option
|
|
80
83
|
Given a file named "spec/matchers/be_baz_matcher.rb" with:
|
|
81
84
|
"""ruby
|
|
82
85
|
RSpec::Matchers.define :be_baz do |_|
|
|
@@ -88,12 +91,12 @@ Feature: Backtrace cleaning
|
|
|
88
91
|
And a file named "spec/example_spec.rb" with:
|
|
89
92
|
"""ruby
|
|
90
93
|
RSpec.configure do |config|
|
|
91
|
-
config.
|
|
94
|
+
config.backtrace_exclusion_patterns << /be_baz_matcher/
|
|
92
95
|
end
|
|
93
96
|
|
|
94
97
|
describe "bar" do
|
|
95
98
|
it "is baz" do
|
|
96
|
-
"bar".
|
|
99
|
+
expect("bar").to be_baz
|
|
97
100
|
end
|
|
98
101
|
end
|
|
99
102
|
"""
|