rspec-core 2.99.0 → 3.0.0

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 (216) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.sig +0 -0
  3. data/.yardopts +1 -0
  4. data/Changelog.md +339 -1
  5. data/License.txt +1 -0
  6. data/README.md +19 -37
  7. data/exe/rspec +2 -23
  8. data/lib/rspec/core/backport_random.rb +336 -0
  9. data/lib/rspec/core/backtrace_formatter.rb +70 -0
  10. data/lib/rspec/core/configuration.rb +479 -577
  11. data/lib/rspec/core/configuration_options.rb +71 -54
  12. data/lib/rspec/core/drb.rb +111 -0
  13. data/lib/rspec/core/dsl.rb +86 -18
  14. data/lib/rspec/core/example.rb +267 -119
  15. data/lib/rspec/core/example_group.rb +381 -393
  16. data/lib/rspec/core/filter_manager.rb +133 -114
  17. data/lib/rspec/core/flat_map.rb +18 -0
  18. data/lib/rspec/core/formatters/base_formatter.rb +51 -125
  19. data/lib/rspec/core/formatters/base_text_formatter.rb +34 -286
  20. data/lib/rspec/core/formatters/console_codes.rb +24 -1
  21. data/lib/rspec/core/formatters/deprecation_formatter.rb +25 -26
  22. data/lib/rspec/core/formatters/documentation_formatter.rb +27 -25
  23. data/lib/rspec/core/formatters/helpers.rb +14 -36
  24. data/lib/rspec/core/formatters/html_formatter.rb +58 -65
  25. data/lib/rspec/core/formatters/html_printer.rb +12 -18
  26. data/lib/rspec/core/formatters/json_formatter.rb +54 -31
  27. data/lib/rspec/core/formatters/profile_formatter.rb +67 -0
  28. data/lib/rspec/core/formatters/progress_formatter.rb +11 -15
  29. data/lib/rspec/core/formatters/snippet_extractor.rb +22 -11
  30. data/lib/rspec/core/formatters.rb +90 -43
  31. data/lib/rspec/core/hooks.rb +325 -270
  32. data/lib/rspec/core/memoized_helpers.rb +45 -156
  33. data/lib/rspec/core/metadata.rb +284 -236
  34. data/lib/rspec/core/metadata_filter.rb +86 -0
  35. data/lib/rspec/core/mocking_adapters/flexmock.rb +29 -0
  36. data/lib/rspec/core/{mocking/with_mocha.rb → mocking_adapters/mocha.rb} +19 -16
  37. data/lib/rspec/core/mocking_adapters/null.rb +12 -0
  38. data/lib/rspec/core/mocking_adapters/rr.rb +29 -0
  39. data/lib/rspec/core/mocking_adapters/rspec.rb +30 -0
  40. data/lib/rspec/core/notifications.rb +511 -0
  41. data/lib/rspec/core/option_parser.rb +49 -74
  42. data/lib/rspec/core/ordering.rb +156 -0
  43. data/lib/rspec/core/pending.rb +94 -96
  44. data/lib/rspec/core/project_initializer/.rspec +3 -0
  45. data/lib/rspec/core/project_initializer/spec/spec_helper.rb +78 -0
  46. data/lib/rspec/core/project_initializer.rb +24 -64
  47. data/lib/rspec/core/rake_task.rb +44 -130
  48. data/lib/rspec/core/reporter.rb +76 -59
  49. data/lib/rspec/core/ruby_project.rb +2 -1
  50. data/lib/rspec/core/runner.rb +117 -52
  51. data/lib/rspec/core/shared_context.rb +10 -10
  52. data/lib/rspec/core/shared_example_group.rb +108 -121
  53. data/lib/rspec/core/version.rb +3 -1
  54. data/lib/rspec/core/warnings.rb +40 -0
  55. data/lib/rspec/core/world.rb +66 -10
  56. data/lib/rspec/core.rb +64 -104
  57. data.tar.gz.sig +3 -0
  58. metadata +75 -322
  59. metadata.gz.sig +1 -0
  60. data/exe/autospec +0 -13
  61. data/features/Autotest.md +0 -38
  62. data/features/README.md +0 -17
  63. data/features/Upgrade.md +0 -364
  64. data/features/command_line/README.md +0 -28
  65. data/features/command_line/example_name_option.feature +0 -97
  66. data/features/command_line/exit_status.feature +0 -82
  67. data/features/command_line/format_option.feature +0 -75
  68. data/features/command_line/init.feature +0 -18
  69. data/features/command_line/line_number_appended_to_path.feature +0 -140
  70. data/features/command_line/line_number_option.feature +0 -53
  71. data/features/command_line/order.feature +0 -26
  72. data/features/command_line/pattern_option.feature +0 -49
  73. data/features/command_line/rake_task.feature +0 -122
  74. data/features/command_line/require_option.feature +0 -43
  75. data/features/command_line/ruby.feature +0 -22
  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 -48
  79. data/features/configuration/backtrace_clean_patterns.feature +0 -102
  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/fail_fast.feature +0 -77
  84. data/features/configuration/failure_exit_code.feature +0 -36
  85. data/features/configuration/order_and_seed.feature +0 -3
  86. data/features/configuration/output_stream.feature +0 -24
  87. data/features/configuration/pattern.feature +0 -38
  88. data/features/configuration/profile.feature +0 -220
  89. data/features/configuration/read_options_from_file.feature +0 -90
  90. data/features/configuration/run_all_when_everything_filtered.feature +0 -76
  91. data/features/configuration/show_failures_in_pending_blocks.feature +0 -61
  92. data/features/configuration/treat_symbols_as_metadata_keys_with_true_values.feature +0 -52
  93. data/features/example_groups/basic_structure.feature +0 -55
  94. data/features/example_groups/shared_context.feature +0 -74
  95. data/features/example_groups/shared_examples.feature +0 -294
  96. data/features/expectation_framework_integration/configure_expectation_framework.feature +0 -197
  97. data/features/filtering/exclusion_filters.feature +0 -138
  98. data/features/filtering/if_and_unless.feature +0 -168
  99. data/features/filtering/inclusion_filters.feature +0 -105
  100. data/features/formatters/configurable_colors.feature +0 -31
  101. data/features/formatters/custom_formatter.feature +0 -36
  102. data/features/formatters/json_formatter.feature +0 -30
  103. data/features/formatters/text_formatter.feature +0 -46
  104. data/features/helper_methods/arbitrary_methods.feature +0 -40
  105. data/features/helper_methods/let.feature +0 -50
  106. data/features/helper_methods/modules.feature +0 -149
  107. data/features/hooks/around_hooks.feature +0 -343
  108. data/features/hooks/before_and_after_hooks.feature +0 -427
  109. data/features/hooks/filtering.feature +0 -234
  110. data/features/metadata/current_example.feature +0 -56
  111. data/features/metadata/described_class.feature +0 -17
  112. data/features/metadata/user_defined.feature +0 -113
  113. data/features/mock_framework_integration/use_any_framework.feature +0 -106
  114. data/features/mock_framework_integration/use_flexmock.feature +0 -96
  115. data/features/mock_framework_integration/use_mocha.feature +0 -97
  116. data/features/mock_framework_integration/use_rr.feature +0 -98
  117. data/features/mock_framework_integration/use_rspec.feature +0 -97
  118. data/features/pending/pending_examples.feature +0 -229
  119. data/features/spec_files/arbitrary_file_suffix.feature +0 -13
  120. data/features/step_definitions/additional_cli_steps.rb +0 -49
  121. data/features/subject/attribute_of_subject.feature +0 -124
  122. data/features/subject/explicit_subject.feature +0 -101
  123. data/features/subject/implicit_subject.feature +0 -63
  124. data/features/subject/one_liner_syntax.feature +0 -71
  125. data/features/support/env.rb +0 -14
  126. data/features/support/rubinius.rb +0 -6
  127. data/lib/autotest/discover.rb +0 -10
  128. data/lib/autotest/rspec2.rb +0 -77
  129. data/lib/rspec/core/backtrace_cleaner.rb +0 -46
  130. data/lib/rspec/core/backward_compatibility.rb +0 -55
  131. data/lib/rspec/core/caller_filter.rb +0 -60
  132. data/lib/rspec/core/command_line.rb +0 -47
  133. data/lib/rspec/core/deprecated_mutable_array_proxy.rb +0 -32
  134. data/lib/rspec/core/deprecation.rb +0 -26
  135. data/lib/rspec/core/drb_command_line.rb +0 -26
  136. data/lib/rspec/core/drb_options.rb +0 -87
  137. data/lib/rspec/core/extensions/instance_eval_with_args.rb +0 -44
  138. data/lib/rspec/core/extensions/kernel.rb +0 -9
  139. data/lib/rspec/core/extensions/module_eval_with_args.rb +0 -38
  140. data/lib/rspec/core/extensions/ordered.rb +0 -27
  141. data/lib/rspec/core/formatters/text_mate_formatter.rb +0 -34
  142. data/lib/rspec/core/metadata_hash_builder.rb +0 -97
  143. data/lib/rspec/core/mocking/with_absolutely_nothing.rb +0 -11
  144. data/lib/rspec/core/mocking/with_flexmock.rb +0 -27
  145. data/lib/rspec/core/mocking/with_rr.rb +0 -27
  146. data/lib/rspec/core/mocking/with_rspec.rb +0 -27
  147. data/lib/rspec/core/shared_example_group/collection.rb +0 -45
  148. data/spec/autotest/discover_spec.rb +0 -49
  149. data/spec/autotest/failed_results_re_spec.rb +0 -45
  150. data/spec/autotest/rspec_spec.rb +0 -133
  151. data/spec/command_line/order_spec.rb +0 -204
  152. data/spec/rspec/core/backtrace_cleaner_spec.rb +0 -68
  153. data/spec/rspec/core/caller_filter_spec.rb +0 -58
  154. data/spec/rspec/core/command_line_spec.rb +0 -127
  155. data/spec/rspec/core/command_line_spec_output.txt +0 -0
  156. data/spec/rspec/core/configuration_options_spec.rb +0 -417
  157. data/spec/rspec/core/configuration_spec.rb +0 -2072
  158. data/spec/rspec/core/deprecation_spec.rb +0 -27
  159. data/spec/rspec/core/deprecations_spec.rb +0 -59
  160. data/spec/rspec/core/drb_command_line_spec.rb +0 -102
  161. data/spec/rspec/core/drb_options_spec.rb +0 -193
  162. data/spec/rspec/core/dsl_spec.rb +0 -25
  163. data/spec/rspec/core/example_group_spec.rb +0 -1337
  164. data/spec/rspec/core/example_spec.rb +0 -502
  165. data/spec/rspec/core/filter_manager_spec.rb +0 -246
  166. data/spec/rspec/core/formatters/base_formatter_spec.rb +0 -108
  167. data/spec/rspec/core/formatters/base_text_formatter_spec.rb +0 -524
  168. data/spec/rspec/core/formatters/console_codes_spec.rb +0 -50
  169. data/spec/rspec/core/formatters/deprecation_formatter_spec.rb +0 -263
  170. data/spec/rspec/core/formatters/documentation_formatter_spec.rb +0 -89
  171. data/spec/rspec/core/formatters/helpers_spec.rb +0 -104
  172. data/spec/rspec/core/formatters/html_formatted.html +0 -397
  173. data/spec/rspec/core/formatters/html_formatter_spec.rb +0 -131
  174. data/spec/rspec/core/formatters/json_formatter_spec.rb +0 -115
  175. data/spec/rspec/core/formatters/progress_formatter_spec.rb +0 -30
  176. data/spec/rspec/core/formatters/snippet_extractor_spec.rb +0 -26
  177. data/spec/rspec/core/formatters/text_mate_formatted.html +0 -397
  178. data/spec/rspec/core/formatters/text_mate_formatter_spec.rb +0 -107
  179. data/spec/rspec/core/hooks_filtering_spec.rb +0 -227
  180. data/spec/rspec/core/hooks_spec.rb +0 -269
  181. data/spec/rspec/core/kernel_extensions_spec.rb +0 -9
  182. data/spec/rspec/core/memoized_helpers_spec.rb +0 -776
  183. data/spec/rspec/core/metadata_spec.rb +0 -514
  184. data/spec/rspec/core/option_parser_spec.rb +0 -297
  185. data/spec/rspec/core/pending_example_spec.rb +0 -260
  186. data/spec/rspec/core/pending_spec.rb +0 -27
  187. data/spec/rspec/core/project_initializer_spec.rb +0 -130
  188. data/spec/rspec/core/rake_task_spec.rb +0 -202
  189. data/spec/rspec/core/reporter_spec.rb +0 -167
  190. data/spec/rspec/core/resources/a_bar.rb +0 -0
  191. data/spec/rspec/core/resources/a_foo.rb +0 -0
  192. data/spec/rspec/core/resources/a_spec.rb +0 -1
  193. data/spec/rspec/core/resources/custom_example_group_runner.rb +0 -14
  194. data/spec/rspec/core/resources/formatter_specs.rb +0 -60
  195. data/spec/rspec/core/resources/utf8_encoded.rb +0 -8
  196. data/spec/rspec/core/rspec_matchers_spec.rb +0 -45
  197. data/spec/rspec/core/ruby_project_spec.rb +0 -26
  198. data/spec/rspec/core/runner_spec.rb +0 -82
  199. data/spec/rspec/core/shared_context_spec.rb +0 -114
  200. data/spec/rspec/core/shared_example_group/collection_spec.rb +0 -70
  201. data/spec/rspec/core/shared_example_group_spec.rb +0 -138
  202. data/spec/rspec/core/world_spec.rb +0 -142
  203. data/spec/rspec/core_spec.rb +0 -108
  204. data/spec/spec_helper.rb +0 -135
  205. data/spec/support/config_options_helper.rb +0 -15
  206. data/spec/support/helper_methods.rb +0 -55
  207. data/spec/support/in_sub_process.rb +0 -37
  208. data/spec/support/isolate_load_path_mutation.rb +0 -6
  209. data/spec/support/isolated_directory.rb +0 -10
  210. data/spec/support/isolated_home_directory.rb +0 -16
  211. data/spec/support/matchers.rb +0 -65
  212. data/spec/support/mathn_integration_support.rb +0 -12
  213. data/spec/support/sandboxed_mock_space.rb +0 -116
  214. data/spec/support/shared_example_groups.rb +0 -42
  215. data/spec/support/silence_dsl_deprecations.rb +0 -32
  216. data/spec/support/spec_files.rb +0 -44
@@ -1,140 +0,0 @@
1
- Feature: line number appended to file path
2
-
3
- To run one or more examples or groups, you can append the line number to the path, e.g.
4
-
5
- rspec path/to/example_spec.rb:37
6
-
7
- Background:
8
- Given a file named "example_spec.rb" with:
9
- """ruby
10
- describe "outer group" do
11
-
12
- it "first example in outer group" do
13
-
14
- end
15
-
16
- it "second example in outer group" do
17
-
18
- end
19
-
20
- describe "nested group" do
21
-
22
- it "example in nested group" do
23
-
24
- end
25
-
26
- end
27
-
28
- end
29
- """
30
- And a file named "example2_spec.rb" with:
31
- """ruby
32
- describe "yet another group" do
33
- it "first example in second file" do
34
- end
35
- it "second example in second file" do
36
- end
37
- end
38
- """
39
-
40
- Scenario: nested groups - outer group on declaration line
41
- When I run `rspec example_spec.rb:1 --format doc`
42
- Then the examples should all pass
43
- And the output should contain "second example in outer group"
44
- And the output should contain "first example in outer group"
45
- And the output should contain "example in nested group"
46
-
47
- Scenario: nested groups - outer group inside block before example
48
- When I run `rspec example_spec.rb:2 --format doc`
49
- Then the examples should all pass
50
- And the output should contain "second example in outer group"
51
- And the output should contain "first example in outer group"
52
- And the output should contain "example in nested group"
53
-
54
- Scenario: nested groups - inner group on declaration line
55
- When I run `rspec example_spec.rb:11 --format doc`
56
- Then the examples should all pass
57
- And the output should contain "example in nested group"
58
- And the output should not contain "second example in outer group"
59
- And the output should not contain "first example in outer group"
60
-
61
- Scenario: nested groups - inner group inside block before example
62
- When I run `rspec example_spec.rb:12 --format doc`
63
- Then the examples should all pass
64
- And the output should contain "example in nested group"
65
- And the output should not contain "second example in outer group"
66
- And the output should not contain "first example in outer group"
67
-
68
- Scenario: two examples - first example on declaration line
69
- When I run `rspec example_spec.rb:3 --format doc`
70
- Then the examples should all pass
71
- And the output should contain "first example in outer group"
72
- But the output should not contain "second example in outer group"
73
- And the output should not contain "example in nested group"
74
-
75
- Scenario: two examples - first example inside block
76
- When I run `rspec example_spec.rb:4 --format doc`
77
- Then the examples should all pass
78
- And the output should contain "first example in outer group"
79
- But the output should not contain "second example in outer group"
80
- And the output should not contain "example in nested group"
81
-
82
- Scenario: two examples - first example on end
83
- When I run `rspec example_spec.rb:5 --format doc`
84
- Then the examples should all pass
85
- And the output should contain "first example in outer group"
86
- But the output should not contain "second example in outer group"
87
- And the output should not contain "example in nested group"
88
-
89
- Scenario: two examples - first example after end but before next example
90
- When I run `rspec example_spec.rb:6 --format doc`
91
- Then the examples should all pass
92
- And the output should contain "first example in outer group"
93
- But the output should not contain "second example in outer group"
94
- And the output should not contain "example in nested group"
95
-
96
- Scenario: two examples - second example on declaration line
97
- When I run `rspec example_spec.rb:7 --format doc`
98
- Then the examples should all pass
99
- And the output should contain "second example in outer group"
100
- But the output should not contain "first example in outer group"
101
- And the output should not contain "example in nested group"
102
-
103
- Scenario: two examples - second example inside block
104
- When I run `rspec example_spec.rb:7 --format doc`
105
- Then the examples should all pass
106
- And the output should contain "second example in outer group"
107
- But the output should not contain "first example in outer group"
108
- And the output should not contain "example in nested group"
109
-
110
- Scenario: two examples - second example on end
111
- When I run `rspec example_spec.rb:7 --format doc`
112
- Then the examples should all pass
113
- And the output should contain "second example in outer group"
114
- But the output should not contain "first example in outer group"
115
- And the output should not contain "example in nested group"
116
-
117
- Scenario: specified multiple times for different files
118
- When I run `rspec example_spec.rb:7 example2_spec.rb:4 --format doc`
119
- Then the examples should all pass
120
- And the output should contain "second example in outer group"
121
- And the output should contain "second example in second file"
122
- But the output should not contain "first example in outer group"
123
- And the output should not contain "nested group"
124
- And the output should not contain "first example in second file"
125
-
126
- Scenario: specified multiple times for the same file with multiple arguments
127
- When I run `rspec example_spec.rb:7 example_spec.rb:11 --format doc`
128
- Then the examples should all pass
129
- And the output should contain "second example in outer group"
130
- And the output should contain "nested group"
131
- But the output should not contain "first example in outer group"
132
- And the output should not contain "second file"
133
-
134
- Scenario: specified multiple times for the same file with a single argument
135
- When I run `rspec example_spec.rb:7:11 --format doc`
136
- Then the examples should all pass
137
- And the output should contain "second example in outer group"
138
- And the output should contain "nested group"
139
- But the output should not contain "first example in outer group"
140
- And the output should not contain "second file"
@@ -1,53 +0,0 @@
1
- Feature: --line_number option
2
-
3
- To run a examples or groups by line numbers, one can use the --line_number option:
4
-
5
- rspec path/to/example_spec.rb --line_number 37
6
-
7
- This option can be specified multiple times.
8
-
9
- Scenario: standard examples
10
- Given a file named "example_spec.rb" with:
11
- """ruby
12
- require "rspec/expectations"
13
-
14
- describe 9 do
15
-
16
- it "should be > 8" do
17
- 9.should be > 8
18
- end
19
-
20
- it "should be < 10" do
21
- 9.should be < 10
22
- end
23
-
24
- it "should be 3 squared" do
25
- 9.should be 3*3
26
- end
27
-
28
- end
29
- """
30
- When I run `rspec example_spec.rb --line_number 5`
31
- Then the examples should all pass
32
- And the output should contain "1 example"
33
-
34
- When I run `rspec example_spec.rb --line_number 5 --line_number 9`
35
- Then the examples should all pass
36
- And the output should contain "2 examples"
37
-
38
- Scenario: one liner
39
- Given a file named "example_spec.rb" with:
40
- """ruby
41
- require "rspec/expectations"
42
-
43
- describe 9 do
44
-
45
- it { is_expected.to be > 8 }
46
-
47
- it { is_expected.not_to be < 10 }
48
-
49
- end
50
- """
51
- When I run `rspec example_spec.rb --line_number 5`
52
- Then the examples should all pass
53
- And the output should contain "1 example"
@@ -1,26 +0,0 @@
1
- Feature: --order (new in rspec-core-2.8)
2
-
3
- Use the `--order` option to tell RSpec how to order the files, groups, and
4
- examples. Options are `defined` and `rand`.
5
-
6
- `defined` is the default, which executes groups and examples in the
7
- order they are defined as the spec files are loaded.
8
-
9
- Use `rand` to randomize the order of files, groups within files, and
10
- examples within groups.*
11
-
12
- * Nested groups are always run from top-level to bottom-level in order to avoid
13
- executing `before(:all)` and `after(:all)` hooks more than once, but the order
14
- of groups at each level is randomized.
15
-
16
- You can also specify a seed
17
-
18
- <h3>Examples</h3>
19
-
20
- --order defined
21
- --order rand
22
- --order rand:123
23
- --seed 123 # same as --order rand:123
24
-
25
- The `defined` option is only necessary when you have `--order rand` stored in a
26
- config file (e.g. `.rspec`) and you want to override it from the command line.
@@ -1,49 +0,0 @@
1
- Feature: pattern option
2
-
3
- By default, RSpec loads files matching the pattern:
4
-
5
- "spec/**/*_spec.rb"
6
-
7
- Use the `--pattern` option to declare a different pattern.
8
-
9
- Scenario: default pattern
10
- Given a file named "spec/example_spec.rb" with:
11
- """ruby
12
- describe "addition" do
13
- it "adds things" do
14
- (1 + 2).should eq(3)
15
- end
16
- end
17
- """
18
- When I run `rspec`
19
- Then the output should contain "1 example, 0 failures"
20
-
21
- Scenario: override the default pattern on the command line
22
- Given a file named "spec/example.spec" with:
23
- """ruby
24
- describe "addition" do
25
- it "adds things" do
26
- (1 + 2).should eq(3)
27
- end
28
- end
29
- """
30
- When I run `rspec --pattern "spec/**/*.spec"`
31
- Then the output should contain "1 example, 0 failures"
32
-
33
- Scenario: override the default pattern in configuration
34
- Given a file named "spec/spec_helper.rb" with:
35
- """ruby
36
- RSpec.configure do |config|
37
- config.pattern << ',**/*.spec'
38
- end
39
- """
40
- And a file named "spec/example.spec" with:
41
- """ruby
42
- describe "addition" do
43
- it "adds things" do
44
- (1 + 2).should eq(3)
45
- end
46
- end
47
- """
48
- When I run `rspec -rspec_helper`
49
- Then the output should contain "1 example, 0 failures"
@@ -1,122 +0,0 @@
1
- Feature: rake task
2
-
3
- RSpec ships with a rake task with a number of useful options
4
-
5
- Scenario: default options with passing spec (prints command and exit status is 0)
6
- Given a file named "Rakefile" with:
7
- """ruby
8
- require 'rspec/core/rake_task'
9
-
10
- RSpec::Core::RakeTask.new(:spec)
11
-
12
- task :default => :spec
13
- """
14
- And a file named "spec/thing_spec.rb" with:
15
- """ruby
16
- describe "something" do
17
- it "does something" do
18
- # pass
19
- end
20
- end
21
- """
22
- When I run `rake`
23
- Then the output should match /(ruby|rbx) -S rspec/
24
- Then the exit status should be 0
25
-
26
- Scenario: default options with failing spec (exit status is 1)
27
- Given a file named "Rakefile" with:
28
- """ruby
29
- require 'rspec/core/rake_task'
30
-
31
- RSpec::Core::RakeTask.new(:spec)
32
-
33
- task :default => :spec
34
- """
35
- And a file named "spec/thing_spec.rb" with:
36
- """ruby
37
- describe "something" do
38
- it "does something" do
39
- fail
40
- end
41
- end
42
- """
43
- When I run `rake`
44
- Then the exit status should be 1
45
-
46
- Scenario: fail_on_error = false with failing spec (exit status is 0)
47
- Given a file named "Rakefile" with:
48
- """ruby
49
- require 'rspec/core/rake_task'
50
-
51
- RSpec::Core::RakeTask.new(:spec) do |t|
52
- t.fail_on_error = false
53
- end
54
-
55
- task :default => :spec
56
- """
57
- And a file named "spec/thing_spec.rb" with:
58
- """ruby
59
- describe "something" do
60
- it "does something" do
61
- fail
62
- end
63
- end
64
- """
65
- When I run `rake`
66
- Then the exit status should be 0
67
-
68
- Scenario: rspec_opts is specified in order to pass args to the rspec command
69
- Given a file named "Rakefile" with:
70
- """ruby
71
- require 'rspec/core/rake_task'
72
-
73
- RSpec::Core::RakeTask.new(:spec) do |t|
74
- t.rspec_opts = "--tag fast"
75
- end
76
- """
77
- And a file named "spec/thing_spec.rb" with:
78
- """ruby
79
- describe "something" do
80
- it "has a tag", :fast => true do
81
- # pass
82
- end
83
-
84
- it "does not have a tag" do
85
- fail
86
- end
87
- end
88
- """
89
- When I run `rake spec`
90
- Then the exit status should be 0
91
- Then the output should match:
92
- """
93
- (ruby|rbx) -S rspec ./spec/thing_spec.rb --tag fast
94
- """
95
-
96
- Scenario: rspec_opts is specified using arguments to the rake task
97
- Given a file named "Rakefile" with:
98
- """ruby
99
- require 'rspec/core/rake_task'
100
-
101
- RSpec::Core::RakeTask.new(:spec, :tag) do |t, task_args|
102
- t.rspec_opts = "--tag #{task_args[:tag]}"
103
- end
104
- """
105
- And a file named "spec/thing_spec.rb" with:
106
- """ruby
107
- describe "something" do
108
- it "has a tag", :fast => true do
109
- # pass
110
- end
111
-
112
- it "does not have a tag" do
113
- fail
114
- end
115
- end
116
- """
117
- When I run `rake spec[fast]`
118
- Then the exit status should be 0
119
- Then the output should match:
120
- """
121
- (ruby|rbx) -S rspec ./spec/thing_spec.rb --tag fast
122
- """
@@ -1,43 +0,0 @@
1
- Feature: --require option
2
-
3
- Use the `--require` (or `-r`) option to specify a file to require
4
- before running specs.
5
-
6
- Scenario: using the --require option
7
- Given a file named "logging_formatter.rb" with:
8
- """ruby
9
- require "rspec/core/formatters/base_text_formatter"
10
- require 'delegate'
11
-
12
- class LoggingFormatter < RSpec::Core::Formatters::BaseTextFormatter
13
- def initialize(output)
14
- super LoggingIO.new(output)
15
- end
16
-
17
- class LoggingIO < SimpleDelegator
18
- def initialize(output)
19
- @file = File.new('rspec.log', 'w')
20
- super
21
- end
22
-
23
- def puts(message)
24
- [@file, __getobj__].each { |out| out.puts message }
25
- end
26
-
27
- def close
28
- @file.close
29
- end
30
- end
31
- end
32
- """
33
- And a file named "spec/example_spec.rb" with:
34
- """ruby
35
- describe "an embarassing situation" do
36
- it "happens to everyone" do
37
- end
38
- end
39
- """
40
- When I run `rspec --require ./logging_formatter.rb --format LoggingFormatter`
41
- Then the output should contain "1 example, 0 failures"
42
- And the file "rspec.log" should contain "1 example, 0 failures"
43
- And the exit status should be 0
@@ -1,22 +0,0 @@
1
- Feature: run with ruby command
2
-
3
- You can use the `ruby` command to run specs. You just need to require
4
- `rspec/autorun`.
5
-
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.
9
-
10
- Scenario:
11
- Given a file named "example_spec.rb" with:
12
- """ruby
13
- require 'rspec/autorun'
14
-
15
- describe 1 do
16
- it "is < 2" do
17
- 1.should be < 2
18
- end
19
- end
20
- """
21
- When I run `ruby example_spec.rb`
22
- Then the output should contain "1 example, 0 failures"
@@ -1,98 +0,0 @@
1
- Feature: --tag option
2
-
3
- Use the --tag (or -t) option to filter the examples by tags.
4
-
5
- The tag can be a simple name or a name:value pair. In the first case,
6
- examples with :name => true will be filtered. In the second case, examples
7
- with :name => value will be filtered, where value is always a string. In
8
- both cases, name is converted to a symbol.
9
-
10
- Tags can also be used to exclude examples by adding a ~ before the tag. For
11
- example ~tag will exclude all examples marked with :tag => true and
12
- ~tag:value will exclude all examples marked with :tag => value.
13
-
14
- To be compatible with the Cucumber syntax, tags can optionally start with
15
- an @ symbol, which will be ignored.
16
-
17
- Background:
18
- Given a file named "tagged_spec.rb" with:
19
- """ruby
20
- describe "group with tagged specs" do
21
- it "example I'm working now", :focus => true do; end
22
- it "special example with string", :type => 'special' do; end
23
- it "special example with symbol", :type => :special do; end
24
- it "slow example", :skip => true do; end
25
- it "ordinary example", :speed => 'slow' do; end
26
- it "untagged example" do; end
27
- end
28
- """
29
-
30
- Scenario: filter examples with non-existent tag
31
- When I run `rspec . --tag mytag`
32
- Then the process should succeed even though no examples were run
33
-
34
- Scenario: filter examples with a simple tag
35
- When I run `rspec . --tag focus`
36
- Then the output should contain "include {:focus=>true}"
37
- And the examples should all pass
38
-
39
- Scenario: filter examples with a simple tag and @
40
- When I run `rspec . --tag @focus`
41
- Then the output should contain "include {:focus=>true}"
42
- Then the examples should all pass
43
-
44
- Scenario: filter examples with a name:value tag
45
- When I run `rspec . --tag type:special`
46
- Then the output should contain:
47
- """
48
- include {:type=>"special"}
49
- """
50
- And the output should contain "2 examples"
51
- And the examples should all pass
52
-
53
- Scenario: filter examples with a name:value tag and @
54
- When I run `rspec . --tag @type:special`
55
- Then the output should contain:
56
- """
57
- include {:type=>"special"}
58
- """
59
- And the examples should all pass
60
-
61
- Scenario: exclude examples with a simple tag
62
- When I run `rspec . --tag ~skip`
63
- Then the output should contain "exclude {:skip=>true}"
64
- Then the examples should all pass
65
-
66
- Scenario: exclude examples with a simple tag and @
67
- When I run `rspec . --tag ~@skip`
68
- Then the output should contain "exclude {:skip=>true}"
69
- Then the examples should all pass
70
-
71
- Scenario: exclude examples with a name:value tag
72
- When I run `rspec . --tag ~speed:slow`
73
- Then the output should contain:
74
- """
75
- exclude {:speed=>"slow"}
76
- """
77
- Then the examples should all pass
78
-
79
- Scenario: exclude examples with a name:value tag and @
80
- When I run `rspec . --tag ~@speed:slow`
81
- Then the output should contain:
82
- """
83
- exclude {:speed=>"slow"}
84
- """
85
- Then the examples should all pass
86
-
87
- Scenario: filter examples with a simple tag, exclude examples with another tag
88
- When I run `rspec . --tag focus --tag ~skip`
89
- Then the output should contain "include {:focus=>true}"
90
- And the output should contain "exclude {:skip=>true}"
91
- And the examples should all pass
92
-
93
- Scenario: exclude examples with multiple tags
94
- When I run `rspec . --tag ~skip --tag ~speed:slow`
95
- Then the output should contain one of the following:
96
- | exclude {:skip=>true, :speed=>"slow"} |
97
- | exclude {:speed=>"slow", :skip=>true} |
98
- Then the examples should all pass
@@ -1,29 +0,0 @@
1
- Feature: run with warnings enabled
2
-
3
- You can use the `--warnings` option to run specs with warnings enabled
4
-
5
- @unsupported-on-rbx
6
- Scenario:
7
- Given a file named "example_spec.rb" with:
8
- """ruby
9
- describe do
10
- it 'generates warning' do
11
- @undefined
12
- end
13
- end
14
- """
15
- When I run `rspec --warnings example_spec.rb`
16
- Then the output should contain "warning"
17
-
18
- @unsupported-on-rbx
19
- Scenario:
20
- Given a file named "example_spec.rb" with:
21
- """ruby
22
- describe do
23
- it 'generates warning' do
24
- @undefined
25
- end
26
- end
27
- """
28
- When I run `rspec example_spec.rb`
29
- Then the output should not contain "warning"
@@ -1,48 +0,0 @@
1
- Feature: alias_example_to
2
-
3
- Use `config.alias_example_to` to create new example group methods
4
- that define examples with the configured metadata.
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.
8
-
9
- Scenario: Use alias_example_to to define focused example
10
- Given a file named "alias_example_to_spec.rb" with:
11
- """ruby
12
- RSpec.configure do |c|
13
- c.alias_example_to :fit, :focused => true
14
- c.filter_run :focused => true
15
- end
16
-
17
- describe "an example group" do
18
- it "does one thing" do
19
- end
20
-
21
- fit "does another thing" do
22
- end
23
- end
24
- """
25
- When I run `rspec alias_example_to_spec.rb --format doc`
26
- Then the output should contain "does another thing"
27
- And the output should not contain "does one thing"
28
-
29
- Scenario: use symbols as metadata
30
- Given a file named "use_symbols_as_metadata_spec.rb" with:
31
- """ruby
32
- RSpec.configure do |c|
33
- c.treat_symbols_as_metadata_keys_with_true_values = true
34
- c.alias_example_to :fit, :focused
35
- c.filter_run :focused
36
- end
37
-
38
- describe "an example group" do
39
- it "does one thing" do
40
- end
41
-
42
- fit "does another thing" do
43
- end
44
- end
45
- """
46
- When I run `rspec use_symbols_as_metadata_spec.rb --format doc`
47
- Then the output should contain "does another thing"
48
- And the output should not contain "does one thing"