rspec-core 3.0.0.beta1 → 3.0.0.beta2

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.
Files changed (145) hide show
  1. data.tar.gz.sig +0 -0
  2. data/Changelog.md +137 -0
  3. data/README.md +2 -2
  4. data/exe/rspec +2 -23
  5. data/features/README.md +1 -5
  6. data/features/command_line/README.md +7 -10
  7. data/features/command_line/exit_status.feature +1 -1
  8. data/features/command_line/format_option.feature +1 -1
  9. data/features/command_line/init.feature +40 -1
  10. data/features/command_line/line_number_option.feature +2 -2
  11. data/features/command_line/ruby.feature +5 -4
  12. data/features/configuration/enable_global_dsl.feature +54 -0
  13. data/features/example_groups/aliasing.feature +48 -0
  14. data/features/example_groups/basic_structure.feature +1 -1
  15. data/features/expectation_framework_integration/configure_expectation_framework.feature +1 -1
  16. data/features/filtering/if_and_unless.feature +0 -30
  17. data/features/formatters/custom_formatter.feature +32 -0
  18. data/features/formatters/regression_tests.feature +95 -0
  19. data/features/hooks/around_hooks.feature +1 -0
  20. data/features/hooks/before_and_after_hooks.feature +2 -2
  21. data/features/mock_framework_integration/use_flexmock.feature +11 -13
  22. data/features/mock_framework_integration/use_mocha.feature +11 -13
  23. data/features/mock_framework_integration/use_rr.feature +11 -13
  24. data/features/mock_framework_integration/use_rspec.feature +11 -13
  25. data/features/pending_and_skipped_examples/README.md +3 -0
  26. data/features/pending_and_skipped_examples/pending_examples.feature +118 -0
  27. data/features/pending_and_skipped_examples/skipped_examples.feature +106 -0
  28. data/features/step_definitions/additional_cli_steps.rb +34 -0
  29. data/features/subject/explicit_subject.feature +1 -1
  30. data/features/subject/one_liner_syntax.feature +71 -0
  31. data/lib/rspec/core.rb +6 -14
  32. data/lib/rspec/core/backtrace_formatter.rb +16 -4
  33. data/lib/rspec/core/command_line.rb +2 -3
  34. data/lib/rspec/core/configuration.rb +114 -125
  35. data/lib/rspec/core/configuration_options.rb +32 -18
  36. data/lib/rspec/core/dsl.rb +80 -18
  37. data/lib/rspec/core/example.rb +84 -33
  38. data/lib/rspec/core/example_group.rb +95 -43
  39. data/lib/rspec/core/filter_manager.rb +31 -40
  40. data/lib/rspec/core/formatters.rb +137 -0
  41. data/lib/rspec/core/formatters/base_formatter.rb +28 -41
  42. data/lib/rspec/core/formatters/base_text_formatter.rb +26 -37
  43. data/lib/rspec/core/formatters/deprecation_formatter.rb +48 -27
  44. data/lib/rspec/core/formatters/documentation_formatter.rb +27 -22
  45. data/lib/rspec/core/formatters/html_formatter.rb +48 -56
  46. data/lib/rspec/core/formatters/html_printer.rb +11 -18
  47. data/lib/rspec/core/formatters/json_formatter.rb +18 -22
  48. data/lib/rspec/core/formatters/legacy_formatter.rb +227 -0
  49. data/lib/rspec/core/formatters/progress_formatter.rb +7 -10
  50. data/lib/rspec/core/hooks.rb +250 -217
  51. data/lib/rspec/core/memoized_helpers.rb +43 -9
  52. data/lib/rspec/core/mocking_adapters/flexmock.rb +29 -0
  53. data/lib/rspec/core/{mocking/with_mocha.rb → mocking_adapters/mocha.rb} +19 -16
  54. data/lib/rspec/core/mocking_adapters/null.rb +12 -0
  55. data/lib/rspec/core/mocking_adapters/rr.rb +28 -0
  56. data/lib/rspec/core/mocking_adapters/rspec.rb +30 -0
  57. data/lib/rspec/core/notifications.rb +100 -0
  58. data/lib/rspec/core/option_parser.rb +11 -18
  59. data/lib/rspec/core/pending.rb +78 -47
  60. data/lib/rspec/core/project_initializer.rb +2 -49
  61. data/lib/rspec/core/project_initializer/dot_rspec +3 -0
  62. data/lib/rspec/core/project_initializer/spec_helper.rb +82 -0
  63. data/lib/rspec/core/rake_task.rb +5 -14
  64. data/lib/rspec/core/reporter.rb +24 -32
  65. data/lib/rspec/core/ruby_project.rb +1 -1
  66. data/lib/rspec/core/runner.rb +14 -4
  67. data/lib/rspec/core/shared_example_group.rb +40 -13
  68. data/lib/rspec/core/version.rb +1 -1
  69. data/spec/command_line/order_spec.rb +15 -15
  70. data/spec/rspec/core/backtrace_formatter_spec.rb +15 -1
  71. data/spec/rspec/core/command_line_spec.rb +18 -17
  72. data/spec/rspec/core/configuration_options_spec.rb +57 -34
  73. data/spec/rspec/core/configuration_spec.rb +162 -184
  74. data/spec/rspec/core/drb_command_line_spec.rb +5 -7
  75. data/spec/rspec/core/drb_options_spec.rb +2 -2
  76. data/spec/rspec/core/dsl_spec.rb +79 -15
  77. data/spec/rspec/core/example_group_spec.rb +253 -39
  78. data/spec/rspec/core/example_spec.rb +149 -33
  79. data/spec/rspec/core/filter_manager_spec.rb +9 -26
  80. data/spec/rspec/core/formatters/base_formatter_spec.rb +2 -5
  81. data/spec/rspec/core/formatters/base_text_formatter_spec.rb +42 -145
  82. data/spec/rspec/core/formatters/deprecation_formatter_spec.rb +64 -34
  83. data/spec/rspec/core/formatters/documentation_formatter_spec.rb +15 -28
  84. data/spec/rspec/core/formatters/helpers_spec.rb +2 -2
  85. data/spec/rspec/core/formatters/{html_formatted-1.8.7.html → html_formatted-2.1.0.html} +22 -44
  86. data/spec/rspec/core/formatters/{html_formatted-1.8.7-jruby.html → html_formatted.html} +30 -49
  87. data/spec/rspec/core/formatters/html_formatter_spec.rb +35 -19
  88. data/spec/rspec/core/formatters/json_formatter_spec.rb +42 -40
  89. data/spec/rspec/core/formatters/legacy_formatter_spec.rb +137 -0
  90. data/spec/rspec/core/formatters/progress_formatter_spec.rb +38 -25
  91. data/spec/rspec/core/formatters/snippet_extractor_spec.rb +1 -1
  92. data/spec/rspec/core/formatters_spec.rb +120 -0
  93. data/spec/rspec/core/hooks_filtering_spec.rb +1 -1
  94. data/spec/rspec/core/hooks_spec.rb +13 -2
  95. data/spec/rspec/core/memoized_helpers_spec.rb +17 -8
  96. data/spec/rspec/core/metadata_spec.rb +3 -3
  97. data/spec/rspec/core/option_parser_spec.rb +53 -46
  98. data/spec/rspec/core/ordering_spec.rb +4 -4
  99. data/spec/rspec/core/pending_example_spec.rb +23 -126
  100. data/spec/rspec/core/pending_spec.rb +8 -0
  101. data/spec/rspec/core/project_initializer_spec.rb +8 -41
  102. data/spec/rspec/core/rake_task_spec.rb +15 -4
  103. data/spec/rspec/core/random_spec.rb +1 -1
  104. data/spec/rspec/core/reporter_spec.rb +50 -37
  105. data/spec/rspec/core/resources/formatter_specs.rb +9 -11
  106. data/spec/rspec/core/rspec_matchers_spec.rb +1 -1
  107. data/spec/rspec/core/ruby_project_spec.rb +3 -3
  108. data/spec/rspec/core/runner_spec.rb +65 -23
  109. data/spec/rspec/core/shared_context_spec.rb +4 -4
  110. data/spec/rspec/core/shared_example_group/collection_spec.rb +1 -1
  111. data/spec/rspec/core/shared_example_group_spec.rb +20 -11
  112. data/spec/rspec/core/warnings_spec.rb +1 -1
  113. data/spec/rspec/core/world_spec.rb +10 -10
  114. data/spec/rspec/core_spec.rb +2 -2
  115. data/spec/spec_helper.rb +12 -24
  116. data/spec/support/config_options_helper.rb +1 -3
  117. data/spec/support/formatter_support.rb +83 -0
  118. data/spec/support/isolate_load_path_mutation.rb +1 -2
  119. data/spec/support/isolated_directory.rb +1 -1
  120. data/spec/support/isolated_home_directory.rb +1 -1
  121. data/spec/support/legacy_formatter_using_sub_classing_example.rb +87 -0
  122. data/spec/support/matchers.rb +20 -0
  123. data/spec/support/mathn_integration_support.rb +2 -2
  124. data/spec/support/old_style_formatter_example.rb +69 -0
  125. data/spec/support/shared_example_groups.rb +1 -1
  126. data/spec/support/spec_files.rb +3 -3
  127. metadata +192 -69
  128. metadata.gz.sig +3 -1
  129. checksums.yaml +0 -15
  130. checksums.yaml.gz.sig +0 -2
  131. data/features/configuration/show_failures_in_pending_blocks.feature +0 -61
  132. data/features/pending/pending_examples.feature +0 -229
  133. data/features/subject/implicit_receiver.feature +0 -29
  134. data/lib/rspec/core/mocking/with_absolutely_nothing.rb +0 -11
  135. data/lib/rspec/core/mocking/with_flexmock.rb +0 -27
  136. data/lib/rspec/core/mocking/with_rr.rb +0 -27
  137. data/lib/rspec/core/mocking/with_rspec.rb +0 -27
  138. data/spec/rspec/core/formatters/html_formatted-1.8.7-rbx.html +0 -477
  139. data/spec/rspec/core/formatters/html_formatted-1.9.2.html +0 -425
  140. data/spec/rspec/core/formatters/html_formatted-1.9.3-jruby.html +0 -416
  141. data/spec/rspec/core/formatters/html_formatted-1.9.3-rbx.html +0 -477
  142. data/spec/rspec/core/formatters/html_formatted-1.9.3.html +0 -419
  143. data/spec/rspec/core/formatters/html_formatted-2.0.0.html +0 -425
  144. data/spec/support/in_sub_process.rb +0 -37
  145. data/spec/support/sandboxed_mock_space.rb +0 -100
data.tar.gz.sig CHANGED
Binary file
@@ -1,3 +1,100 @@
1
+ ### 3.0.0.beta2 / 2014-02-17
2
+ [full changelog](http://github.com/rspec/rspec-core/compare/v3.0.0.beta1...v3.0.0.beta2)
3
+
4
+ Breaking Changes for 3.0.0:
5
+
6
+ * Make `mock_with` option more strict. Strings are no longer supported
7
+ (e.g. `mock_with "mocha"`) -- use a symbol instead. Also, unrecognized
8
+ values will now result in an error rather than falling back to the
9
+ null mocking adapter. If you want to use the null mocking adapter,
10
+ use `mock_with :nothing` (as has been documented for a long time).
11
+ (Myron Marston)
12
+ * Remove support for overriding RSpec's built-in `:if` and `:unless`
13
+ filters. (Ashish Dixit)
14
+ * Custom formatters are now required to call
15
+ `RSpec::Core::Formatters.register(formatter_class, *notifications)`
16
+ where `notifications` is the list of events the formatter wishes to
17
+ be notified about. Notifications are handled by methods matching the
18
+ names on formatters. This allows us to add or remove notifications
19
+ without breaking existing formatters. (Jon Rowe)
20
+ * Change arguments passed to formatters. Rather than passing multiple
21
+ arguments (which limits are ability to add additional arguments as
22
+ doing so would break existing formatters), we now pass a notification
23
+ value object that exposes the same data via attributes. This will
24
+ allow us to add new bits of data to a notification event without
25
+ breaking existing formattesr. (Jon Rowe)
26
+ * Remove support for deprecated `:alias` option for
27
+ `RSpec.configuration.add_setting`. (Myron Marston)
28
+ * Remove support for deprecated `RSpec.configuration.requires = [...]`.
29
+ (Myron Marston)
30
+ * Remove support for deprecated `--formatter` CLI option. (Myron Marston)
31
+ * Remove support for deprecated `--configure` CLI option. (Myron Marston)
32
+ * Remove support for deprecated `RSpec::Core::RakeTask#spec_opts=`.
33
+ (Myron Marston)
34
+ * An example group level `pending` block or `:pending` metadata now executes
35
+ the example and cause a failure if it passes, otherwise it will be pending if
36
+ it fails. The old "never run" behaviour is still used for `xexample`, `xit`,
37
+ and `xspecify`, or via a new `skip` method or `:skip` metadata option.
38
+ (Xavier Shay)
39
+ * After calling `pending` inside an example, the remainder of the example will
40
+ now be run. If it passes a failure is raised, otherwise the example is marked
41
+ pending. The old "never run" behaviour is provided a by a new `skip` method.
42
+ (Xavier Shay)
43
+ * Pending blocks inside an example have been removed as a feature with no
44
+ direct replacement. Use `skip` or `pending` without a block. (Xavier Shay)
45
+ * Pending statement is no longer allowed in `before(:all)` hooks. Use `skip`
46
+ instead. (Xavier Shay)
47
+ * Remove `show_failures_in_pending_blocks` configuration option. (Xavier Shay)
48
+ * Remove support for specifying the documentation formatter using
49
+ 's', 'n', 'spec' or 'nested'. (Jon Rowe)
50
+
51
+ Enhancements:
52
+
53
+ * Add `is_expected` for one-liners that read well with the
54
+ `expect`-based syntax. `is_expected` is simply defined as
55
+ `expect(subject)` and can be used in an expression like:
56
+ `it { is_expected.to read_well }`. (Myron Marston)
57
+ * Add example run time to JSON formatter output. (Karthik Kastury)
58
+ * Add more suggested settings to the files generated by
59
+ `rspec --init`. (Myron Marston)
60
+ * Add `config.alias_example_group_to`, which can be used to define a
61
+ new method that defines an example group with the provided metadata.
62
+ (Michi Huber)
63
+ * Add `xdescribe` and `xcontext` as shortcuts to make an example group
64
+ pending. (Myron Marston)
65
+ * Add `fdescribe` and `fcontext` as shortcuts to focus an example group.
66
+ (Myron Marston)
67
+ * Don't autorun specs via `#at_exit` by default. `require 'rspec/autorun'`
68
+ is only needed when running specs via `ruby`, as it always has been.
69
+ Running specs via `rake` or `rspec` are both unaffected. (Ben Hoskings)
70
+ * Add `expose_dsl_globally` config option, defaulting to true. When disabled
71
+ it will remove the monkey patches rspec-core adds to `main` and `Module`
72
+ (e.g. `describe`, `shared_examples_for`, etc). (Jon Rowe)
73
+ * Expose RSpec DSL entry point methods (`describe`,
74
+ `shared_examples_for`, etc) on the `RSpec` constant. Intended for use
75
+ when `expose_dsl_globally` is set to `false`. (Jon Rowe)
76
+ * For consistency, expose all example group aliases (including
77
+ `context`) on the `RSpec` constant. If `expose_dsl_globally` is set to
78
+ `true`, also expose them on `main` and `Module`. Historically, only `describe`
79
+ was exposed. (Jon Rowe, Michi Huber)
80
+
81
+ Bug Fixes:
82
+
83
+ * Fix failure (undefined method `path`) in end-of-run summary
84
+ when `raise_errors_for_deprecations!` is configured. (Myron Marston)
85
+ * Issue error when attempting to use -i or --I on command line,
86
+ too close to -I to be considered short hand for --init. (Jon Rowe)
87
+ * Prevent adding formatters to an output target if the same
88
+ formatter has already been added to that output. (Alex Peattie)
89
+ * Allow a matcher-generated example description to be used when
90
+ the example is pending. (Myron Marston)
91
+ * Ensure the configured `failure_exit_code` is used by the rake
92
+ task when there is a failure. (Jon Rowe)
93
+ * Restore behaviour whereby system exclusion filters take priority over working
94
+ directory (was broken in beta1). (Jon Rowe)
95
+ * Prevent RSpec mangling file names that have substrings containing `line_number`
96
+ or `default_path`. (Matijs van Zuijlen)
97
+
1
98
  ### 3.0.0.beta1 / 2013-11-07
2
99
  [full changelog](http://github.com/rspec/rspec-core/compare/v2.99.0.beta1...v3.0.0.beta1)
3
100
 
@@ -62,6 +159,46 @@ Deprecations
62
159
  longer has an affect now that the behavior it enabled is always
63
160
  enabled. (Myron Marston)
64
161
 
162
+ ### 2.99.0.beta2 / 2014-02-17
163
+ [full changelog](http://github.com/rspec/rspec-core/compare/v2.99.0.beta1...v2.99.0.beta2)
164
+
165
+ Enhancements:
166
+
167
+ * Add `is_expected` for one-liners that read well with the
168
+ `expect`-based syntax. `is_expected` is simply defined as
169
+ `expect(subject)` and can be used in an expression like:
170
+ `it { is_expected.to read_well }`. (Myron Marston)
171
+ * Backport `skip` from RSpec 3, which acts like `pending` did in RSpec 2
172
+ when not given a block, since the behavior of `pending` is changing in
173
+ RSpec 3. (Xavier Shay)
174
+
175
+ Deprecations:
176
+
177
+ * Deprecate inexact `mock_with` config options. RSpec 3 will only support
178
+ the exact symbols `:rspec`, `:mocha`, `:flexmock`, `:rr` or `:nothing`
179
+ (or any module that implements the adapter interface). RSpec 2 did
180
+ fuzzy matching but this will not be supported going forward.
181
+ (Myron Marston)
182
+ * Deprecate `show_failures_in_pending_blocks` config option. To achieve
183
+ the same behavior as the option enabled, you can use a custom
184
+ formatter instead. (Xavier Shay)
185
+ * Add a deprecation warning for the fact that the behavior of `pending`
186
+ is changing in RSpec 3 -- rather than skipping the example (as it did
187
+ in 2.x when no block was provided), it will run the example and mark
188
+ it as failed if no exception is raised. Use `skip` instead to preserve
189
+ the old behavior. (Xavier Shay)
190
+ * Deprecate 's', 'n', 'spec' and 'nested' as aliases for documentation
191
+ formatter. (Jon Rowe)
192
+ * Deprecate `RSpec::Core::Reporter#abort` in favor of
193
+ `RSpec::Core::Reporter#finish`. (Jon Rowe)
194
+
195
+ Bug Fixes:
196
+
197
+ * Fix failure (undefined method `path`) in end-of-run summary
198
+ when `raise_errors_for_deprecations!` is configured. (Myron Marston)
199
+ * Fix issue were overridding spec ordering from the command line wasnt
200
+ fully recognised interally. (Jon Rowe)
201
+
65
202
  ### 2.99.0.beta1 / 2013-11-07
66
203
  [full changelog](http://github.com/rspec/rspec-core/compare/v2.14.7...v2.99.0.beta1)
67
204
 
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # rspec-core [![Build Status](https://secure.travis-ci.org/rspec/rspec-core.png?branch=master)](http://travis-ci.org/rspec/rspec-core) [![Code Climate](https://codeclimate.com/github/rspec/rspec-core.png)](https://codeclimate.com/github/rspec/rspec-core) [![Coverage Status](https://coveralls.io/repos/rspec/rspec-core/badge.png?branch=master)](https://coveralls.io/r/rspec/rspec-core?branch=master)
1
+ # rspec-core [![Build Status](https://secure.travis-ci.org/rspec/rspec-core.png?branch=master)](http://travis-ci.org/rspec/rspec-core) [![Code Climate](https://codeclimate.com/github/rspec/rspec-core.png)](https://codeclimate.com/github/rspec/rspec-core)
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
@@ -166,7 +166,7 @@ the command line.
166
166
  ## autotest integration
167
167
 
168
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)
169
+ integration, please use the `rspec-autotest` gem and see [rspec/rspec-autotest](https://github.com/rspec/rspec-autotest)
170
170
  for details
171
171
 
172
172
  ## get started
data/exe/rspec CHANGED
@@ -1,25 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- begin
4
- require 'rspec/autorun'
5
- rescue LoadError
6
- $stderr.puts <<-EOS
7
- #{'*'*50}
8
- Could not find 'rspec/autorun'
9
-
10
- This may happen if you're using rubygems as your package manager, but it is not
11
- being required through some mechanism before executing the rspec command.
12
-
13
- You may need to do one of the following in your shell:
14
-
15
- # for bash/zsh
16
- export RUBYOPT=rubygems
17
-
18
- # for csh, etc.
19
- set RUBYOPT=rubygems
20
-
21
- For background, please see http://gist.github.com/54177.
22
- #{'*'*50}
23
- EOS
24
- exit(1)
25
- end
3
+ require 'rspec/core'
4
+ RSpec::Core::Runner.invoke
@@ -10,8 +10,4 @@ rspec-core provides the structure for RSpec code examples:
10
10
 
11
11
  ## Issues
12
12
 
13
- This documentation is [open
14
- source](https://github.com/rspec/rspec-core/tree/master/features), and a work
15
- in progress. If you find it incomplete or confusing, please [submit an
16
- issue](http://github.com/rspec/rspec-core/issues), or, better yet, [a pull
17
- request](http://github.com/rspec/rspec-core).
13
+ This documentation is [open source](https://github.com/rspec/rspec-core/tree/master/features), and a work in progress. If you find it incomplete or confusing, please [submit an issue](http://github.com/rspec/rspec-core/issues), or, better yet, [a pull request](http://github.com/rspec/rspec-core).
@@ -8,14 +8,9 @@ For a full list of options, run the `rspec` command with the `--help` flag:
8
8
  ### Run with `ruby`
9
9
 
10
10
  Generally, life is simpler if you just use the `rspec` command. If you must use the `ruby`
11
- command, however, you'll want to do the following:
12
-
13
- * `require 'rspec/autorun'`
14
-
15
- This tells RSpec to run your examples. Do this in any file that you are
16
- passing to the `ruby` command.
17
-
18
- * Update the `LOAD_PATH`
11
+ command, however, you'll need to require `"rspec/autorun"`. You can
12
+ either pass a `-rrspec/autorun` CLI option when invoking `ruby`, or add
13
+ a `require 'rspec/autorun'` to one or more of your spec files.
19
14
 
20
15
  It is conventional to put configuration in and require assorted support files
21
16
  from `spec/spec_helper.rb`. It is also conventional to require that file from
@@ -23,6 +18,8 @@ the spec files using `require 'spec_helper'`. This works because RSpec
23
18
  implicitly adds the `spec` directory to the `LOAD_PATH`. It also adds `lib`, so
24
19
  your implementation files will be on the `LOAD_PATH` as well.
25
20
 
26
- If you're using the `ruby` command, you'll need to do this yourself:
21
+ If you're using the `ruby` command, you'll need to do this yourself
22
+ (with the `-I` option). Putting these together, your command might be
23
+ something like this:
27
24
 
28
- ruby -Ilib -Ispec path/to/spec.rb
25
+ $ ruby -Ilib -Ispec -rrspec/autorun path/to/spec.rb
@@ -71,7 +71,7 @@ Feature: exit status
71
71
  require 'rspec/autorun'
72
72
  at_exit { exit(0) }
73
73
 
74
- describe "exit 0 at_exit" do
74
+ RSpec.describe "exit 0 at_exit" do
75
75
  it "does not interfere with rspec's exit code" do
76
76
  fail
77
77
  end
@@ -34,7 +34,7 @@ Feature: --format option
34
34
  end
35
35
 
36
36
  it "does something that is pending", :pending => true do
37
- expect(5).to be > 3
37
+ expect(5).to be < 3
38
38
  end
39
39
  end
40
40
  """
@@ -1,7 +1,8 @@
1
1
  Feature: --init option
2
2
 
3
3
  Use the --init option on the command line to generate conventional
4
- files for an rspec project.
4
+ files for an rspec project. It generates a `.rspec` and
5
+ `spec/spec_helper.rb` with some example settings to get you started.
5
6
 
6
7
  Scenario: generate .rspec
7
8
  When I run `rspec --init`
@@ -16,3 +17,41 @@ Feature: --init option
16
17
  """
17
18
  When I run `rspec --init`
18
19
  Then the output should contain "exist .rspec"
20
+
21
+ Scenario: Accept and use the recommended settings in spec_helper (which are initially commented out).
22
+ Given I have a brand new project with no files
23
+ And I have run `rspec --init`
24
+ When I accept the recommended settings by removing `=begin` and `=end` from `spec/spec_helper.rb`
25
+ And I create "spec/addition_spec.rb" with the following content:
26
+ """ruby
27
+ RSpec.describe "Addition" do
28
+ it "works" do
29
+ expect(1 + 1).to eq(2)
30
+ end
31
+ end
32
+ """
33
+ And I create "spec/subtraction_spec.rb" with the following content:
34
+ """ruby
35
+ RSpec.describe "Subtraction" do
36
+ it "works" do
37
+ expect(1 - 1).to eq(0)
38
+ end
39
+ end
40
+ """
41
+
42
+ When I run `rspec`
43
+ Then the examples should all pass
44
+ And the output should not contain:
45
+ """
46
+ Addition
47
+ works
48
+ """
49
+
50
+ When I run `rspec spec/addition_spec.rb`
51
+ Then the examples should all pass
52
+ And the output should contain:
53
+ """
54
+ Addition
55
+ works
56
+ """
57
+
@@ -46,9 +46,9 @@ Feature: --line_number option
46
46
 
47
47
  describe 9 do
48
48
 
49
- it { should be > 8 }
49
+ it { is_expected.to be > 8 }
50
50
 
51
- it { should be < 10 }
51
+ it { is_expected.not_to be < 10 }
52
52
 
53
53
  end
54
54
  """
@@ -4,15 +4,15 @@ Feature: run with ruby command
4
4
  `rspec/autorun`.
5
5
 
6
6
  Generally speaking, you're better off using the `rspec` command, which
7
- requires `rspec/autorun` for you, but some tools only work with the `ruby`
8
- command.
7
+ avoids the complexity of `rspec/autorun` (e.g. no `at_exit` hook needed!),
8
+ but some tools only work with the `ruby` command.
9
9
 
10
- Scenario:
10
+ Scenario: Require `rspec/autorun` from a spec file
11
11
  Given a file named "example_spec.rb" with:
12
12
  """ruby
13
13
  require 'rspec/autorun'
14
14
 
15
- describe 1 do
15
+ RSpec.describe 1 do
16
16
  it "is < 2" do
17
17
  expect(1).to be < 2
18
18
  end
@@ -20,3 +20,4 @@ Feature: run with ruby command
20
20
  """
21
21
  When I run `ruby example_spec.rb`
22
22
  Then the output should contain "1 example, 0 failures"
23
+
@@ -0,0 +1,54 @@
1
+ Feature: Global namespace DSL
2
+
3
+ RSpec has a few top-level constructs that allow you to begin describing
4
+ behaviour:
5
+
6
+ * `RSpec.describe`: Define a named context for a group of examples.
7
+ * `RSpec.shared_examples_for`: Define a set of shared examples that can later be included in an example group.
8
+ * `RSpec.shared_context`: define some common context (using `before`, `let`, helper methods, etc) that can later be included in an example group.
9
+
10
+ Historically, these constructs have been available directly off of the main
11
+ object, so that you could use these at the start of a file without the
12
+ `RSpec.` prefix. They have also been available off of any class or module so
13
+ that you can scope your examples within a particular constant namespace.
14
+
15
+ RSpec 3 now provides an option to disable this global monkey patching:
16
+
17
+ `config.expose_dsl_globally = false`.
18
+
19
+ For backwards compatibility it defaults to true.
20
+
21
+ Scenario: by default RSpec allows the DSL to be used globally
22
+ Given a file named "spec/example_spec.rb" with:
23
+ """ruby
24
+ describe "specs here" do
25
+ it "passes" do
26
+ end
27
+ end
28
+ """
29
+ When I run `rspec`
30
+ Then the output should contain "1 example, 0 failures"
31
+
32
+ Scenario: when exposing globally is disabled the top level DSL no longer works
33
+ Given a file named "spec/example_spec.rb" with:
34
+ """ruby
35
+ RSpec.configure { |c| c.expose_dsl_globally = false }
36
+ describe "specs here" do
37
+ it "passes" do
38
+ end
39
+ end
40
+ """
41
+ When I run `rspec`
42
+ Then the output should contain "undefined method `describe'"
43
+
44
+ Scenario: regardless of setting
45
+ Given a file named "spec/example_spec.rb" with:
46
+ """ruby
47
+ RSpec.configure { |c| c.expose_dsl_globally = true }
48
+ RSpec.describe "specs here" do
49
+ it "passes" do
50
+ end
51
+ end
52
+ """
53
+ When I run `rspec`
54
+ Then the output should contain "1 example, 0 failures"
@@ -0,0 +1,48 @@
1
+ Feature: aliasing
2
+
3
+ `describe` and `context` are the default aliases for `example_group`.
4
+ You can define your own aliases for `example_group` and give those
5
+ custom aliases default metadata.
6
+
7
+ RSpec provides a few built-in aliases:
8
+
9
+ * `xdescribe` and `xcontext` add `:pending` metadata to the
10
+ example group in order to temporarily disable the examples.
11
+ * `fdescribe` and `fcontext` add `:focus` metadata to the
12
+ example group in order to make it easy to temporarily
13
+ focus the example group (when combined with `config.filter_run :focus`.)
14
+
15
+ Scenario: custom example group aliases with metadata
16
+ Given a file named "nested_example_group_aliases_spec.rb" with:
17
+ """ruby
18
+ RSpec.configure do |c|
19
+ c.alias_example_group_to :detail, :detailed => true
20
+ end
21
+
22
+ RSpec.detail "a detail" do
23
+ it "can do some less important stuff" do
24
+ end
25
+ end
26
+
27
+ RSpec.describe "a thing" do
28
+ describe "in broad strokes" do
29
+ it "can do things" do
30
+ end
31
+ end
32
+
33
+ detail "something less important" do
34
+ it "can do an unimportant thing" do
35
+ end
36
+ end
37
+ end
38
+ """
39
+ When I run `rspec nested_example_group_aliases_spec.rb --tag detailed -fdoc`
40
+ Then the output should contain:
41
+ """
42
+ a detail
43
+ can do some less important stuff
44
+
45
+ a thing
46
+ something less important
47
+ """
48
+
@@ -23,7 +23,7 @@ Feature: basic structure (describe/it)
23
23
  end
24
24
  end
25
25
  """
26
- When I run `rspec sample_spec.rb -fn`
26
+ When I run `rspec sample_spec.rb -fdoc`
27
27
  Then the output should contain:
28
28
  """
29
29
  something