rspec-core 3.0.0.beta2 → 3.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (201) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/.yardopts +1 -0
  5. data/Changelog.md +297 -57
  6. data/README.md +16 -13
  7. data/lib/rspec/core.rb +55 -84
  8. data/lib/rspec/core/backport_random.rb +35 -3
  9. data/lib/rspec/core/backtrace_formatter.rb +4 -13
  10. data/lib/rspec/core/configuration.rb +330 -114
  11. data/lib/rspec/core/configuration_options.rb +38 -22
  12. data/lib/rspec/core/drb.rb +111 -0
  13. data/lib/rspec/core/dsl.rb +8 -2
  14. data/lib/rspec/core/example.rb +203 -94
  15. data/lib/rspec/core/example_group.rb +344 -316
  16. data/lib/rspec/core/filter_manager.rb +135 -90
  17. data/lib/rspec/core/flat_map.rb +1 -0
  18. data/lib/rspec/core/formatters.rb +50 -14
  19. data/lib/rspec/core/formatters/base_formatter.rb +32 -138
  20. data/lib/rspec/core/formatters/base_text_formatter.rb +32 -253
  21. data/lib/rspec/core/formatters/console_codes.rb +65 -0
  22. data/lib/rspec/core/formatters/deprecation_formatter.rb +24 -15
  23. data/lib/rspec/core/formatters/documentation_formatter.rb +7 -10
  24. data/lib/rspec/core/formatters/helpers.rb +15 -9
  25. data/lib/rspec/core/formatters/html_formatter.rb +17 -16
  26. data/lib/rspec/core/formatters/html_printer.rb +1 -0
  27. data/lib/rspec/core/formatters/json_formatter.rb +18 -20
  28. data/lib/rspec/core/formatters/profile_formatter.rb +67 -0
  29. data/lib/rspec/core/formatters/progress_formatter.rb +6 -7
  30. data/lib/rspec/core/formatters/snippet_extractor.rb +8 -6
  31. data/lib/rspec/core/hooks.rb +131 -125
  32. data/lib/rspec/core/memoized_helpers.rb +31 -26
  33. data/lib/rspec/core/metadata.rb +277 -184
  34. data/lib/rspec/core/metadata_filter.rb +86 -0
  35. data/lib/rspec/core/minitest_assertions_adapter.rb +28 -0
  36. data/lib/rspec/core/mocking_adapters/flexmock.rb +1 -1
  37. data/lib/rspec/core/mocking_adapters/mocha.rb +1 -1
  38. data/lib/rspec/core/mocking_adapters/null.rb +1 -1
  39. data/lib/rspec/core/mocking_adapters/rr.rb +2 -1
  40. data/lib/rspec/core/mocking_adapters/rspec.rb +1 -1
  41. data/lib/rspec/core/notifications.rb +435 -24
  42. data/lib/rspec/core/option_parser.rb +16 -25
  43. data/lib/rspec/core/ordering.rb +3 -1
  44. data/lib/rspec/core/pending.rb +57 -33
  45. data/lib/rspec/core/project_initializer.rb +2 -0
  46. data/lib/rspec/core/project_initializer/spec_helper.rb +5 -4
  47. data/lib/rspec/core/rake_task.rb +45 -20
  48. data/lib/rspec/core/reporter.rb +50 -22
  49. data/lib/rspec/core/ruby_project.rb +1 -0
  50. data/lib/rspec/core/runner.rb +93 -39
  51. data/lib/rspec/core/shared_context.rb +7 -5
  52. data/lib/rspec/core/shared_example_group.rb +85 -77
  53. data/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
  54. data/lib/rspec/core/version.rb +3 -1
  55. data/lib/rspec/core/warnings.rb +35 -17
  56. data/lib/rspec/core/world.rb +57 -5
  57. metadata +56 -369
  58. metadata.gz.sig +3 -3
  59. data/features/README.md +0 -13
  60. data/features/Upgrade.md +0 -352
  61. data/features/command_line/README.md +0 -25
  62. data/features/command_line/dry_run.feature +0 -29
  63. data/features/command_line/example_name_option.feature +0 -97
  64. data/features/command_line/exit_status.feature +0 -82
  65. data/features/command_line/fail_fast.feature +0 -26
  66. data/features/command_line/format_option.feature +0 -75
  67. data/features/command_line/init.feature +0 -57
  68. data/features/command_line/line_number_appended_to_path.feature +0 -140
  69. data/features/command_line/line_number_option.feature +0 -58
  70. data/features/command_line/order.feature +0 -25
  71. data/features/command_line/pattern_option.feature +0 -49
  72. data/features/command_line/rake_task.feature +0 -122
  73. data/features/command_line/randomization.feature +0 -63
  74. data/features/command_line/require_option.feature +0 -43
  75. data/features/command_line/ruby.feature +0 -23
  76. data/features/command_line/tag.feature +0 -98
  77. data/features/command_line/warnings_option.feature +0 -29
  78. data/features/configuration/alias_example_to.feature +0 -39
  79. data/features/configuration/backtrace_exclusion_patterns.feature +0 -105
  80. data/features/configuration/custom_settings.feature +0 -84
  81. data/features/configuration/default_path.feature +0 -38
  82. data/features/configuration/deprecation_stream.feature +0 -58
  83. data/features/configuration/enable_global_dsl.feature +0 -54
  84. data/features/configuration/fail_fast.feature +0 -77
  85. data/features/configuration/failure_exit_code.feature +0 -36
  86. data/features/configuration/order_and_seed.feature +0 -3
  87. data/features/configuration/output_stream.feature +0 -24
  88. data/features/configuration/overriding_global_ordering.feature +0 -93
  89. data/features/configuration/pattern.feature +0 -38
  90. data/features/configuration/profile.feature +0 -220
  91. data/features/configuration/read_options_from_file.feature +0 -90
  92. data/features/configuration/run_all_when_everything_filtered.feature +0 -76
  93. data/features/example_groups/aliasing.feature +0 -48
  94. data/features/example_groups/basic_structure.feature +0 -55
  95. data/features/example_groups/shared_context.feature +0 -74
  96. data/features/example_groups/shared_examples.feature +0 -286
  97. data/features/expectation_framework_integration/configure_expectation_framework.feature +0 -102
  98. data/features/filtering/exclusion_filters.feature +0 -135
  99. data/features/filtering/if_and_unless.feature +0 -138
  100. data/features/filtering/inclusion_filters.feature +0 -101
  101. data/features/formatters/configurable_colors.feature +0 -31
  102. data/features/formatters/custom_formatter.feature +0 -68
  103. data/features/formatters/json_formatter.feature +0 -30
  104. data/features/formatters/regression_tests.feature +0 -95
  105. data/features/formatters/text_formatter.feature +0 -46
  106. data/features/helper_methods/arbitrary_methods.feature +0 -40
  107. data/features/helper_methods/let.feature +0 -50
  108. data/features/helper_methods/modules.feature +0 -146
  109. data/features/hooks/around_hooks.feature +0 -344
  110. data/features/hooks/before_and_after_hooks.feature +0 -427
  111. data/features/hooks/filtering.feature +0 -232
  112. data/features/metadata/current_example.feature +0 -56
  113. data/features/metadata/described_class.feature +0 -17
  114. data/features/metadata/user_defined.feature +0 -100
  115. data/features/mock_framework_integration/use_any_framework.feature +0 -106
  116. data/features/mock_framework_integration/use_flexmock.feature +0 -94
  117. data/features/mock_framework_integration/use_mocha.feature +0 -95
  118. data/features/mock_framework_integration/use_rr.feature +0 -96
  119. data/features/mock_framework_integration/use_rspec.feature +0 -95
  120. data/features/pending_and_skipped_examples/README.md +0 -3
  121. data/features/pending_and_skipped_examples/pending_examples.feature +0 -118
  122. data/features/pending_and_skipped_examples/skipped_examples.feature +0 -106
  123. data/features/spec_files/arbitrary_file_suffix.feature +0 -13
  124. data/features/step_definitions/additional_cli_steps.rb +0 -83
  125. data/features/subject/explicit_subject.feature +0 -101
  126. data/features/subject/implicit_subject.feature +0 -63
  127. data/features/subject/one_liner_syntax.feature +0 -71
  128. data/features/support/env.rb +0 -21
  129. data/features/support/require_expect_syntax_in_aruba_specs.rb +0 -16
  130. data/features/support/rubinius.rb +0 -6
  131. data/lib/rspec/core/command_line.rb +0 -35
  132. data/lib/rspec/core/drb_command_line.rb +0 -26
  133. data/lib/rspec/core/drb_options.rb +0 -87
  134. data/lib/rspec/core/formatters/legacy_formatter.rb +0 -227
  135. data/lib/rspec/core/shared_example_group/collection.rb +0 -27
  136. data/spec/command_line/order_spec.rb +0 -211
  137. data/spec/rspec/core/backtrace_formatter_spec.rb +0 -230
  138. data/spec/rspec/core/command_line_spec.rb +0 -112
  139. data/spec/rspec/core/command_line_spec_output.txt +0 -0
  140. data/spec/rspec/core/configuration_options_spec.rb +0 -409
  141. data/spec/rspec/core/configuration_spec.rb +0 -1479
  142. data/spec/rspec/core/drb_command_line_spec.rb +0 -102
  143. data/spec/rspec/core/drb_options_spec.rb +0 -193
  144. data/spec/rspec/core/dsl_spec.rb +0 -88
  145. data/spec/rspec/core/example_group_spec.rb +0 -1533
  146. data/spec/rspec/core/example_spec.rb +0 -642
  147. data/spec/rspec/core/filter_manager_spec.rb +0 -229
  148. data/spec/rspec/core/formatters/base_formatter_spec.rb +0 -64
  149. data/spec/rspec/core/formatters/base_text_formatter_spec.rb +0 -303
  150. data/spec/rspec/core/formatters/deprecation_formatter_spec.rb +0 -208
  151. data/spec/rspec/core/formatters/documentation_formatter_spec.rb +0 -75
  152. data/spec/rspec/core/formatters/helpers_spec.rb +0 -104
  153. data/spec/rspec/core/formatters/html_formatted-2.1.0.html +0 -392
  154. data/spec/rspec/core/formatters/html_formatted.html +0 -397
  155. data/spec/rspec/core/formatters/html_formatter_spec.rb +0 -122
  156. data/spec/rspec/core/formatters/json_formatter_spec.rb +0 -206
  157. data/spec/rspec/core/formatters/legacy_formatter_spec.rb +0 -137
  158. data/spec/rspec/core/formatters/progress_formatter_spec.rb +0 -43
  159. data/spec/rspec/core/formatters/snippet_extractor_spec.rb +0 -26
  160. data/spec/rspec/core/formatters_spec.rb +0 -120
  161. data/spec/rspec/core/hooks_filtering_spec.rb +0 -227
  162. data/spec/rspec/core/hooks_spec.rb +0 -294
  163. data/spec/rspec/core/memoized_helpers_spec.rb +0 -495
  164. data/spec/rspec/core/metadata_spec.rb +0 -491
  165. data/spec/rspec/core/option_parser_spec.rb +0 -262
  166. data/spec/rspec/core/ordering_spec.rb +0 -102
  167. data/spec/rspec/core/pending_example_spec.rb +0 -117
  168. data/spec/rspec/core/pending_spec.rb +0 -8
  169. data/spec/rspec/core/project_initializer_spec.rb +0 -73
  170. data/spec/rspec/core/rake_task_spec.rb +0 -146
  171. data/spec/rspec/core/random_spec.rb +0 -47
  172. data/spec/rspec/core/reporter_spec.rb +0 -155
  173. data/spec/rspec/core/resources/a_bar.rb +0 -0
  174. data/spec/rspec/core/resources/a_foo.rb +0 -0
  175. data/spec/rspec/core/resources/a_spec.rb +0 -1
  176. data/spec/rspec/core/resources/custom_example_group_runner.rb +0 -14
  177. data/spec/rspec/core/resources/formatter_specs.rb +0 -58
  178. data/spec/rspec/core/resources/utf8_encoded.rb +0 -8
  179. data/spec/rspec/core/rspec_matchers_spec.rb +0 -45
  180. data/spec/rspec/core/ruby_project_spec.rb +0 -26
  181. data/spec/rspec/core/runner_spec.rb +0 -151
  182. data/spec/rspec/core/shared_context_spec.rb +0 -102
  183. data/spec/rspec/core/shared_example_group/collection_spec.rb +0 -57
  184. data/spec/rspec/core/shared_example_group_spec.rb +0 -114
  185. data/spec/rspec/core/warnings_spec.rb +0 -29
  186. data/spec/rspec/core/world_spec.rb +0 -142
  187. data/spec/rspec/core_spec.rb +0 -91
  188. data/spec/spec_helper.rb +0 -160
  189. data/spec/support/config_options_helper.rb +0 -13
  190. data/spec/support/formatter_support.rb +0 -83
  191. data/spec/support/helper_methods.rb +0 -26
  192. data/spec/support/isolate_load_path_mutation.rb +0 -5
  193. data/spec/support/isolated_directory.rb +0 -10
  194. data/spec/support/isolated_home_directory.rb +0 -16
  195. data/spec/support/legacy_formatter_using_sub_classing_example.rb +0 -87
  196. data/spec/support/matchers.rb +0 -85
  197. data/spec/support/mathn_integration_support.rb +0 -12
  198. data/spec/support/old_style_formatter_example.rb +0 -69
  199. data/spec/support/shared_example_groups.rb +0 -13
  200. data/spec/support/spec_files.rb +0 -44
  201. data/spec/support/stderr_splitter.rb +0 -36
metadata.gz.sig CHANGED
@@ -1,3 +1,3 @@
1
- >V���];
2
- bk'5&���.�>�i��3������P+,�3@�����w(34Pw*�2'[�%�L؝�h��%�����km��=S9d�1JN;]��#1q�g_Հk�������j+�g�s�o�<*ԉ�l��,Wߚm <��h| ��/����n�<���XM�Y�Ss�<���0,~��P3s�m�G��;�
3
- `*4�ĵ_����$$�m ���gC#f���?Dl��D-/6>T ��-$c1��u��
1
+ }3����mq�@E��Iֆug�����K��-ޘ?Y���Ӿ��D���}���7�=K��o�u+pغ3�Q�w4*Tk�ƫ�P�:q�s��k>^���
2
+ 1J~��d��C�����(�zd�}F��4��G�l������ Gu�ꗘ
3
+ �+�I+ǩ�;)��I$]�8��ۙou����#�*���P
@@ -1,13 +0,0 @@
1
- rspec-core provides the structure for RSpec code examples:
2
-
3
- describe Account do
4
- it "has a balance of zero when first opened" do
5
- # example code goes here - for more on the
6
- # code inside the examples, see rspec-expectations
7
- # and rspec-mocks
8
- end
9
- end
10
-
11
- ## Issues
12
-
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).
@@ -1,352 +0,0 @@
1
- The [Changelog](changelog) has a complete list of everything that changed, but
2
- here are more detailed explanations for those items that warrant them.
3
-
4
- # rspec-core-2.7.0.rc1
5
-
6
- ## what's new
7
-
8
- ### `rspec` command with no arguments
9
-
10
- Now you can just type
11
-
12
- rspec
13
-
14
- to run all the specs in the `spec` directory. If you keep your specs in a
15
- different directory, you can override the default with the `--default_path`
16
- argument in a config file:
17
-
18
- # in .rspec
19
- --default_path specs
20
-
21
- ### `rspec` command supports multiple line numbers
22
-
23
- Use either of the following to run the examples declared on lines
24
- 37 and 42 of `a_spec.rb`:
25
-
26
- rspec path/to/a_spec.rb --line_number 37 --line_number 42
27
- rspec path/to/a_spec.rb:37:42
28
-
29
- ## what's changed
30
-
31
- ### `skip_bundler` and `gemfile` rake task options are deprecated and have no effect.
32
-
33
- RSpec's rake task invokes the `rspec` command in a subshell. If you invoke
34
- `bundle exec rake` or include `Bundler.setup` in your `Rakefile`, then
35
- Bundler will be activated in the subshell as well.
36
-
37
- Previously, the rake task managed this for you based on the presence of a
38
- `Gemfile`. In 2.7.0.rc1, this is done based on the presence of the
39
- `BUNDLE_GEMFILE` environment variable, which is set in the parent shell by Bundler.
40
-
41
- In 2.7.0.rc2 (not yet released), the rake task doesn't do anything at all.
42
- Turns out Bundler just does the right thing, so rspec doesn't need to do
43
- anything.
44
-
45
- # rspec-core-2.6
46
-
47
- ## new APIs for sharing content
48
-
49
- Use `shared_context` together with `include_context` to share before/after
50
- hooks, let declarations, and method definitions across example groups.
51
-
52
- Use `shared_examples` together with `include_examples` to share examples
53
- across different contexts.
54
-
55
- All of the old APIs are still supported, but these 4 are easy to remember, and
56
- serve most use cases.
57
-
58
- See `shared_context` and `shared_examples` under "Example Groups" for more
59
- information.
60
-
61
- ## `treat_symbols_as_metadata_keys_with_true_values`
62
-
63
- Yes it's a long name, but it's a great feature, and it's going to be the
64
- default behavior in rspec-3. This lets you add metadata to a group or example
65
- like this:
66
-
67
- describe "something", :awesome do
68
- ...
69
-
70
- And then you can run that group (or example) using the tags feature:
71
-
72
- rspec spec --tag awesome
73
-
74
- We're making this an opt-in for rspec-2.6 because `describe "string", :symbol`
75
- is a perfectly legal construct in pre-2.6 releases and we want to maintain
76
- compatibility in minor releases as much as is possible.
77
-
78
- # rspec-core-2.3
79
-
80
- ## `config.expect_with`
81
-
82
- Use this to configure RSpec to use rspec/expectations (default),
83
- stdlib assertions (Test::Unit with Ruby 1.8, MiniTest with Ruby 1.9),
84
- or both:
85
-
86
- RSpec.configure do |config|
87
- config.expect_with :rspec # => rspec/expectations
88
- config.expect_with :stdlib # => Test::Unit or MinitTest
89
- config.expect_with :rspec, :stdlib # => both
90
- end
91
-
92
- # rspec-core-2.1
93
-
94
- ## Command line
95
-
96
- ### `--tags`
97
-
98
- Now you can tag groups and examples using metadata and access those tags from
99
- the command line. So if you have a group with `:foo => true`:
100
-
101
- describe "something", :foo => true do
102
- it "does something" do
103
- # ...
104
- end
105
- end
106
-
107
- ... now you can run just that group like this:
108
-
109
- rspec spec --tags foo
110
-
111
- ### `--fail-fast`
112
-
113
- Add this flag to the command line to tell rspec to clean up and exit after the
114
- first failure:
115
-
116
- rspec spec --fail-fast
117
-
118
- ## Metata/filtering
119
-
120
- ### :if and :unless keys
121
-
122
- Use :if and :unless keys to conditionally run examples with simple boolean
123
- expressions:
124
-
125
- describe "something" do
126
- it "does something", :if => RUBY_VERSION == 1.8.7 do
127
- # ...
128
- end
129
- it "does something", :unless => RUBY_VERSION == 1.8.7 do
130
- # ...
131
- end
132
- end
133
-
134
- ## Conditionally 'pending' examples
135
-
136
- Make examples pending based on a condition. This is most useful when you
137
- have an example that runs in multiple contexts and fails in one of those due to
138
- a bug in a third-party dependency that you expect to be fixed in the future.
139
-
140
- describe "something" do
141
- it "does something that doesn't yet work right on JRuby" do
142
- pending("waiting for the JRuby team to fix issue XYZ", :if => RUBY_PLATFORM == 'java') do
143
- # the content of your spec
144
- end
145
- end
146
- end
147
-
148
- This example would run normally on all ruby interpretters except JRuby. On JRuby,
149
- it uses the block form of `pending`, which causes the example to still be run and
150
- will remain pending as long as it fails. In the future, if you upgraded your
151
- JRuby installation to a newer release that allows the example to pass, RSpec
152
- will report it as a failure (`Expected pending '...' to fail. No Error was raised.`),
153
- so that know that you can remove the call to `pending`.
154
-
155
- # New features in rspec-core-2.0
156
-
157
- ### Runner
158
-
159
- The new runner for rspec-2 comes from Micronaut.
160
-
161
- ### Metadata!
162
-
163
- In rspec-2, every example and example group comes with metadata information
164
- like the file and line number on which it was declared, the arguments passed to
165
- `describe` and `it`, etc. This metadata can be appended to through a hash
166
- argument passed to `describe` or `it`, allowing us to pre and post-process
167
- each example in a variety of ways.
168
-
169
- ### Filtering
170
-
171
- The most obvious use is for filtering the run. For example:
172
-
173
- # in spec/spec_helper.rb
174
- RSpec.configure do |c|
175
- c.filter_run :focus => true
176
- end
177
-
178
- # in any spec file
179
- describe "something" do
180
- it "does something", :focus => true do
181
- # ....
182
- end
183
- end
184
-
185
- When you run the `rspec` command, rspec will run only the examples that have
186
- `:focus => true` in the hash.
187
-
188
- You can also add `run_all_when_everything_filtered` to the config:
189
-
190
- RSpec.configure do |c|
191
- c.filter_run :focus => true
192
- c.run_all_when_everything_filtered = true
193
- end
194
-
195
- Now if there are no examples tagged with `:focus => true`, all examples
196
- will be run. This makes it really easy to focus on one example for a
197
- while, but then go back to running all of the examples by removing that
198
- argument from `it`. Works with `describe` too, in which case it runs
199
- all of the examples in that group.
200
-
201
- The configuration will accept a lambda, which provides a lot of flexibility
202
- in filtering examples. Say, for example, you have a spec for functionality that
203
- behaves slightly differently in Ruby 1.8 and Ruby 1.9. We have that in
204
- rspec-core, and here's how we're getting the right stuff to run under the
205
- right version:
206
-
207
- # in spec/spec_helper.rb
208
- RSpec.configure do |c|
209
- c.exclusion_filter = { :ruby => lambda {|version|
210
- !(RUBY_VERSION.to_s =~ /^#{version.to_s}/)
211
- }}
212
- end
213
-
214
- # in any spec file
215
- describe "something" do
216
- it "does something", :ruby => 1.8 do
217
- # ....
218
- end
219
-
220
- it "does something", :ruby => 1.9 do
221
- # ....
222
- end
223
- end
224
-
225
- In this case, we're using `exclusion_filter` instead of `filter_run` or
226
- `filter`, which indicate _inclusion_ filters. So each of those examples is
227
- excluded if we're _not_ running the version of Ruby they work with.
228
-
229
- ### Shared example groups
230
-
231
- Shared example groups are now run in a nested group within the including group
232
- (they used to be run in the same group). Nested groups inherit `before`, `after`,
233
- `around`, and `let` hooks, as well as any methods that are defined in the parent
234
- group.
235
-
236
- This new approach provides better encapsulation, better output, and an
237
- opportunity to add contextual information to the shared group via a block
238
- passed to `it_should_behave_like`.
239
-
240
- See [features/example\_groups/shared\_example\_group.feature](http://github.com/rspec/rspec-core/blob/master/features/example_groups/shared_example_group.feature) for more information.
241
-
242
- NOTICE: The including example groups no longer have access to any of the
243
- methods, hooks, or state defined inside a shared group. This will break rspec-1
244
- specs that were using shared example groups to extend the behavior of including
245
- groups.
246
-
247
- # Upgrading from rspec-1.x
248
-
249
- ### rspec command
250
-
251
- The command to run specs is now `rspec` instead of `spec`.
252
-
253
- rspec ./spec
254
-
255
- #### Co-habitation of rspec-1 and rspec-2
256
-
257
- Early beta versions of RSpec-2 included a `spec` command, which conflicted with
258
- the RSpec-1 `spec` command because RSpec-1's was installed by the rspec gem,
259
- while RSpec-2's is installed by the rspec-core gem.
260
-
261
- If you installed one of these early versions, the safest bet is to uninstall
262
- rspec-1 and rspec-core-2, and then reinstall both. After you do this, you will
263
- be able to run rspec-2 like this:
264
-
265
- rspec ./spec
266
-
267
- ... and rspec-1 like this:
268
-
269
- spec _1.3.1_ ./spec
270
-
271
- Rubygems inspects the first argument to any gem executable to see if it's
272
- formatted like a version number surrounded by underscores. If so, it uses that
273
- version (e.g. `1.3.1`). If not, it uses the most recent version (e.g.
274
- `2.0.0`).
275
-
276
- ### rake task
277
-
278
- A few things changed in the Rake task used to run specs:
279
-
280
- 1. The file in which it is defined changed from `spec/rake/spectask` to
281
- `rspec/core/rake_task`
282
-
283
- 2. The `spec_opts` accessor has been deprecated in favor of `rspec_opts`. Also,
284
- the `rspec` command no longer supports the `--options` command line option
285
- so the options must be embedded directly in the Rakefile, or stored in the
286
- `.rspec` files mentioned above.
287
-
288
- 3. The `spec_files` accessor has been replaced by `pattern`.
289
-
290
- # rspec-1
291
- require 'spec/rake/spectask'
292
-
293
- Spec::Rake::SpecTask.new do |t|
294
- t.spec_opts = ['--options', "\"spec/spec.opts\""]
295
- t.spec_files = FileList['spec/**/*.rb']
296
- end
297
-
298
- # rspec-2
299
- require 'rspec/core/rake_task'
300
-
301
- RSpec::Core::RakeTask.new do |t|
302
- t.rspec_opts = ["-c", "-f progress", "-r ./spec/spec_helper.rb"]
303
- t.pattern = 'spec/**/*_spec.rb'
304
- end
305
-
306
- ### RSpec is the new Spec
307
-
308
- The root namespace (top level module) is now `RSpec` instead of `Spec`, and
309
- the root directory under `lib` within all of the `rspec` gems is `rspec` instead of `spec`.
310
-
311
- ### Configuration
312
-
313
- Typically in `spec/spec_helper.rb`, configuration is now done like this:
314
-
315
- RSpec.configure do |c|
316
- # ....
317
- end
318
-
319
- ### .rspec
320
-
321
- Command line options can be persisted in a `.rspec` file in a project. You
322
- can also store a `.rspec` file in your home directory (`~/.rspec`) with global
323
- options. Precedence is:
324
-
325
- command line
326
- ./.rspec
327
- ~/.rspec
328
-
329
- ### `context` is no longer a top-level method
330
-
331
- We removed `context` from the main object because it was creating conflicts with
332
- IRB and some users who had `Context` domain objects. `describe` is still there,
333
- so if you want to use `context` at the top level, just alias it:
334
-
335
- alias :context :describe
336
-
337
- Of course, you can still use `context` to declare a nested group:
338
-
339
- describe "something" do
340
- context "in some context" do
341
- it "does something" do
342
- # ...
343
- end
344
- end
345
- end
346
-
347
- ### `$KCODE` no longer set implicitly to `'u'`
348
-
349
- In RSpec-1, the runner set `$KCODE` to `'u'`, which impacts, among other
350
- things, the behaviour of Regular Expressions when applied to non-ascii
351
- characters. This is no longer the case in RSpec-2.
352
-
@@ -1,25 +0,0 @@
1
- The `rspec` command comes with several options you can use to customize RSpec's
2
- behavior, including output formats, filtering examples, etc.
3
-
4
- For a full list of options, run the `rspec` command with the `--help` flag:
5
-
6
- $ rspec --help
7
-
8
- ### Run with `ruby`
9
-
10
- Generally, life is simpler if you just use the `rspec` command. If you must use the `ruby`
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.
14
-
15
- It is conventional to put configuration in and require assorted support files
16
- from `spec/spec_helper.rb`. It is also conventional to require that file from
17
- the spec files using `require 'spec_helper'`. This works because RSpec
18
- implicitly adds the `spec` directory to the `LOAD_PATH`. It also adds `lib`, so
19
- your implementation files will be on the `LOAD_PATH` as well.
20
-
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:
24
-
25
- $ ruby -Ilib -Ispec -rrspec/autorun path/to/spec.rb
@@ -1,29 +0,0 @@
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"
@@ -1,97 +0,0 @@
1
- Feature: --example option
2
-
3
- Use the --example (or -e) option to filter examples by name.
4
-
5
- The argument is matched against the full description of the example,
6
- which is the concatenation of descriptions of the group (including
7
- any nested groups) and the example.
8
-
9
- This allows you to run a single uniquely named example, all examples with
10
- similar names, all the examples in a uniquely named group, etc, etc.
11
-
12
- You can also use the option more than once to specify multiple example matches.
13
-
14
- Background:
15
- Given a file named "first_spec.rb" with:
16
- """ruby
17
- describe "first group" do
18
- it "first example in first group" do; end
19
- it "second example in first group" do; end
20
- end
21
- """
22
- And a file named "second_spec.rb" with:
23
- """ruby
24
- describe "second group" do
25
- it "first example in second group" do; end
26
- it "second example in second group" do; end
27
- end
28
- """
29
- And a file named "third_spec.rb" with:
30
- """ruby
31
- describe "third group" do
32
- it "first example in third group" do; end
33
- context "nested group" do
34
- it "first example in nested group" do; end
35
- it "second example in nested group" do; end
36
- end
37
- end
38
- """
39
- And a file named "fourth_spec.rb" with:
40
- """ruby
41
- describe Array do
42
- describe "#length" do
43
- it "is the number of items" do
44
- expect(Array.new([1,2,3]).length).to eq 3
45
- end
46
- end
47
- end
48
- """
49
-
50
- Scenario: no matches
51
- When I run `rspec . --example nothing_like_this`
52
- Then the process should succeed even though no examples were run
53
-
54
- Scenario: match on one word
55
- When I run `rspec . --example example`
56
- Then the examples should all pass
57
-
58
- Scenario: one match in each context
59
- When I run `rspec . --example 'first example'`
60
- Then the examples should all pass
61
-
62
- Scenario: one match in one file using just the example name
63
- When I run `rspec . --example 'first example in first group'`
64
- Then the examples should all pass
65
-
66
- Scenario: one match in one file using the example name and the group name
67
- When I run `rspec . --example 'first group first example in first group'`
68
- Then the examples should all pass
69
-
70
- Scenario: all examples in one group
71
- When I run `rspec . --example 'first group'`
72
- Then the examples should all pass
73
-
74
- Scenario: one match in one file with group name
75
- When I run `rspec . --example 'second group first example'`
76
- Then the examples should all pass
77
-
78
- Scenario: all examples in one group including examples in nested groups
79
- When I run `rspec . --example 'third group'`
80
- Then the examples should all pass
81
-
82
- Scenario: Object#method
83
- When I run `rspec . --example 'Array#length'`
84
- Then the examples should all pass
85
-
86
- Scenario: Multiple applications of example name option
87
- When I run `rspec . --example 'first group' --example 'second group' --format d`
88
- Then the examples should all pass
89
- And the output should contain all of these:
90
- |first example in first group|
91
- |second example in first group|
92
- |first example in second group|
93
- |second example in second group|
94
- And the output should not contain any of these:
95
- |first example in third group|
96
- |nested group first example in nested group|
97
- |nested group second example in nested group|