rspec-core 2.12.2 → 2.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. data/Changelog.md +31 -0
  2. data/README.md +11 -10
  3. data/features/command_line/example_name_option.feature +6 -10
  4. data/features/command_line/tag.feature +15 -8
  5. data/features/configuration/backtrace_clean_patterns.feature +102 -0
  6. data/features/configuration/failure_exit_code.feature +36 -0
  7. data/features/configuration/order_and_seed.feature +3 -0
  8. data/features/configuration/output_stream.feature +24 -0
  9. data/features/configuration/pattern.feature +30 -0
  10. data/features/configuration/profile.feature +163 -0
  11. data/features/configuration/run_all_when_everything_filtered.feature +60 -0
  12. data/features/configuration/show_failures_in_pending_blocks.feature +61 -0
  13. data/features/configuration/treat_symbols_as_metadata_keys_with_true_values.feature +52 -0
  14. data/features/filtering/exclusion_filters.feature +1 -2
  15. data/features/formatters/configurable_colors.feature +31 -0
  16. data/features/step_definitions/additional_cli_steps.rb +21 -0
  17. data/features/subject/explicit_subject.feature +19 -0
  18. data/lib/autotest/rspec2.rb +1 -1
  19. data/lib/rspec/core.rb +1 -2
  20. data/lib/rspec/core/configuration.rb +33 -3
  21. data/lib/rspec/core/configuration_options.rb +5 -5
  22. data/lib/rspec/core/deprecation.rb +1 -1
  23. data/lib/rspec/core/example.rb +2 -2
  24. data/lib/rspec/core/example_group.rb +1 -3
  25. data/lib/rspec/core/formatters/base_text_formatter.rb +93 -27
  26. data/lib/rspec/core/formatters/documentation_formatter.rb +3 -3
  27. data/lib/rspec/core/formatters/progress_formatter.rb +3 -3
  28. data/lib/rspec/core/memoized_helpers.rb +425 -0
  29. data/lib/rspec/core/metadata.rb +6 -2
  30. data/lib/rspec/core/option_parser.rb +8 -2
  31. data/lib/rspec/core/pending.rb +7 -0
  32. data/lib/rspec/core/shared_context.rb +1 -1
  33. data/lib/rspec/core/version.rb +1 -1
  34. data/spec/autotest/failed_results_re_spec.rb +4 -4
  35. data/spec/autotest/rspec_spec.rb +25 -20
  36. data/spec/command_line/order_spec.rb +21 -21
  37. data/spec/rspec/core/command_line_spec.rb +6 -6
  38. data/spec/rspec/core/configuration_options_spec.rb +86 -72
  39. data/spec/rspec/core/configuration_spec.rb +161 -156
  40. data/spec/rspec/core/deprecations_spec.rb +4 -4
  41. data/spec/rspec/core/drb_command_line_spec.rb +9 -9
  42. data/spec/rspec/core/drb_options_spec.rb +46 -33
  43. data/spec/rspec/core/dsl_spec.rb +3 -3
  44. data/spec/rspec/core/example_group_spec.rb +156 -124
  45. data/spec/rspec/core/example_spec.rb +68 -52
  46. data/spec/rspec/core/filter_manager_spec.rb +36 -36
  47. data/spec/rspec/core/formatters/base_formatter_spec.rb +9 -9
  48. data/spec/rspec/core/formatters/base_text_formatter_spec.rb +104 -42
  49. data/spec/rspec/core/formatters/documentation_formatter_spec.rb +4 -4
  50. data/spec/rspec/core/formatters/helpers_spec.rb +13 -13
  51. data/spec/rspec/core/formatters/html_formatted-1.8.7-jruby.html +5 -17
  52. data/spec/rspec/core/formatters/html_formatted-1.8.7-rbx.html +159 -44
  53. data/spec/rspec/core/formatters/html_formatted-1.8.7.html +14 -14
  54. data/spec/rspec/core/formatters/html_formatted-1.9.2.html +20 -20
  55. data/spec/rspec/core/formatters/html_formatted-1.9.3-jruby.html +5 -5
  56. data/spec/rspec/core/formatters/html_formatted-1.9.3-rbx.html +159 -44
  57. data/spec/rspec/core/formatters/html_formatted-1.9.3.html +20 -20
  58. data/spec/rspec/core/formatters/{html_formatted-1.9.2-jruby.html → html_formatted-2.0.0.html} +24 -18
  59. data/spec/rspec/core/formatters/html_formatter_spec.rb +9 -5
  60. data/spec/rspec/core/formatters/json_formatter_spec.rb +9 -9
  61. data/spec/rspec/core/formatters/progress_formatter_spec.rb +4 -4
  62. data/spec/rspec/core/formatters/snippet_extractor_spec.rb +3 -3
  63. data/spec/rspec/core/formatters/text_mate_formatted-1.8.7-jruby.html +5 -17
  64. data/spec/rspec/core/formatters/text_mate_formatted-1.8.7-rbx.html +159 -44
  65. data/spec/rspec/core/formatters/text_mate_formatted-1.8.7.html +16 -16
  66. data/spec/rspec/core/formatters/text_mate_formatted-1.9.2.html +23 -23
  67. data/spec/rspec/core/formatters/text_mate_formatted-1.9.3-jruby.html +5 -17
  68. data/spec/rspec/core/formatters/text_mate_formatted-1.9.3-rbx.html +159 -44
  69. data/spec/rspec/core/formatters/text_mate_formatted-1.9.3.html +23 -23
  70. data/spec/rspec/core/formatters/{text_mate_formatted-1.9.2-jruby.html → text_mate_formatted-2.0.0.html} +25 -19
  71. data/spec/rspec/core/formatters/text_mate_formatter_spec.rb +8 -4
  72. data/spec/rspec/core/hooks_filtering_spec.rb +16 -16
  73. data/spec/rspec/core/hooks_spec.rb +11 -11
  74. data/spec/rspec/core/kernel_extensions_spec.rb +1 -1
  75. data/spec/rspec/core/memoized_helpers_spec.rb +458 -0
  76. data/spec/rspec/core/metadata_spec.rb +74 -74
  77. data/spec/rspec/core/option_parser_spec.rb +27 -27
  78. data/spec/rspec/core/pending_example_spec.rb +32 -32
  79. data/spec/rspec/core/project_initializer_spec.rb +8 -8
  80. data/spec/rspec/core/rake_task_spec.rb +16 -16
  81. data/spec/rspec/core/reporter_spec.rb +3 -3
  82. data/spec/rspec/core/resources/formatter_specs.rb +4 -4
  83. data/spec/rspec/core/ruby_project_spec.rb +4 -2
  84. data/spec/rspec/core/shared_context_spec.rb +34 -7
  85. data/spec/rspec/core/shared_example_group_spec.rb +14 -14
  86. data/spec/rspec/core/world_spec.rb +9 -9
  87. data/spec/rspec/core_spec.rb +5 -5
  88. data/spec/spec_helper.rb +4 -0
  89. data/spec/support/shared_example_groups.rb +4 -4
  90. data/spec/support/spec_files.rb +2 -2
  91. metadata +158 -150
  92. data/lib/rspec/core/let.rb +0 -110
  93. data/lib/rspec/core/subject.rb +0 -223
  94. data/spec/rspec/core/let_spec.rb +0 -55
  95. data/spec/rspec/core/subject_spec.rb +0 -255
@@ -1,3 +1,34 @@
1
+ ### 2.13.0 / 2013-02-23
2
+ [full changelog](http://github.com/rspec/rspec-core/compare/v2.12.2...v2.13.0)
3
+
4
+ Enhancements
5
+
6
+ * Allow `--profile` option to take a count argument that
7
+ determines the number of slow examples to dump
8
+ (Greggory Rothmeier).
9
+ * Add `subject!` that is the analog to `let!`. It defines an
10
+ explicit subject and sets a `before` hook that will invoke
11
+ the subject (Zubin Henner).
12
+ * Fix `let` and `subject` declaration so that `super`
13
+ and `return` can be used in them, just like in a normal
14
+ method. (Myron Marston)
15
+ * Allow output colors to be configured individually.
16
+ (Charlie Maffitt)
17
+
18
+ Bug fixes
19
+
20
+ * Don't blow up when dumping error output for instances
21
+ of anonymous error classes (Myron Marston).
22
+ * Fix default backtrace filters so lines from projects
23
+ containing "gems" in the name are not filtered, but
24
+ lines from installed gems still are (Myron Marston).
25
+ * Fix autotest command so that is uses double quotes
26
+ rather than single quotes for windows compatibility
27
+ (Jonas Tingeborn).
28
+ * Fix `its` so that uses of `subject` in a `before` or `let`
29
+ declaration in the parent group continue to reference the
30
+ parent group's subject. (Olek Janiszewski)
31
+
1
32
  ### 2.12.2 / 2012-12-13
2
33
  [full changelog](http://github.com/rspec/rspec-core/compare/v2.12.1...v2.12.2)
3
34
 
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/badge.png)](https://codeclimate.com/github/rspec/rspec-core)
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
@@ -28,7 +28,7 @@ describe Order do
28
28
  :price => Money.new(2.22, :USD),
29
29
  :quantity => 2
30
30
  )))
31
- order.total.should eq(Money.new(5.55, :USD))
31
+ expect(order.total).to eq(Money.new(5.55, :USD))
32
32
  end
33
33
  end
34
34
  ```
@@ -77,7 +77,7 @@ in any group using `include_examples`.
77
77
  ```ruby
78
78
  shared_examples "collections" do |collection_class|
79
79
  it "is empty when first created" do
80
- collection_class.new.should be_empty
80
+ expect(collection_class.new).to be_empty
81
81
  end
82
82
  end
83
83
 
@@ -102,7 +102,7 @@ etc, but no examples.
102
102
  ## metadata
103
103
 
104
104
  rspec-core stores a metadata hash with every example and group, which
105
- contains like their descriptions, the locations at which they were
105
+ contains their descriptions, the locations at which they were
106
106
  declared, etc, etc. This hash powers many of rspec-core's features,
107
107
  including output formatters (which access descriptions and locations),
108
108
  and filtering before and after hooks.
@@ -112,7 +112,7 @@ extension, you can access it from an example like this:
112
112
 
113
113
  ```ruby
114
114
  it "does something" do
115
- example.metadata[:description].should eq("does something")
115
+ expect(example.metadata[:description]).to eq("does something")
116
116
  end
117
117
  ```
118
118
 
@@ -125,19 +125,19 @@ using the `described_class` method, which is a wrapper for
125
125
  ```ruby
126
126
  describe Widget do
127
127
  example do
128
- described_class.should equal(Widget)
128
+ expect(described_class).to equal(Widget)
129
129
  end
130
130
  end
131
131
  ```
132
132
 
133
133
  This is useful in extensions or shared example groups in which the specific
134
- class is unknown. Taking the shared examples example from above, we can
134
+ class is unknown. Taking the collections shared example group from above, we can
135
135
  clean it up a bit using `described_class`:
136
136
 
137
137
  ```ruby
138
138
  shared_examples "collections" do
139
139
  it "is empty when first created" do
140
- described.new.should be_empty
140
+ expect(described_class.new).to be_empty
141
141
  end
142
142
  end
143
143
 
@@ -153,7 +153,8 @@ end
153
153
  ## the `rspec` command
154
154
 
155
155
  When you install the rspec-core gem, it installs the `rspec` executable,
156
- which you'll use to run rspec. The `rspec` comes with many useful options.
156
+ which you'll use to run rspec. The `rspec` command comes with many useful
157
+ options.
157
158
  Run `rspec --help` to see the complete list.
158
159
 
159
160
  ## store command line options `.rspec`
@@ -198,7 +199,7 @@ this before you write any implementation code:
198
199
  # in spec/calculator_spec.rb
199
200
  describe Calculator do
200
201
  it "add(x,y) returns the sum of its arguments" do
201
- Calculator.new.add(1, 2).should eq(3)
202
+ expect(Calculator.new.add(1, 2)).to eq(3)
202
203
  end
203
204
  end
204
205
  ```
@@ -2,13 +2,13 @@ Feature: --example option
2
2
 
3
3
  Use the --example (or -e) option to filter examples by name.
4
4
 
5
- The argument is compiled to a Ruby Regexp, and matched against the full
6
- description of the example, which is the concatenation of descriptions of the
7
- group (including any nested groups) and the example.
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
8
 
9
9
  This allows you to run a single uniquely named example, all examples with
10
10
  similar names, all the examples in a uniquely named group, etc, etc.
11
-
11
+
12
12
  You can also use the option more than once to specify multiple example matches.
13
13
 
14
14
  Background:
@@ -49,7 +49,7 @@ Feature: --example option
49
49
 
50
50
  Scenario: no matches
51
51
  When I run `rspec . --example nothing_like_this`
52
- Then the examples should all pass
52
+ Then the process should succeed even though no examples were run
53
53
 
54
54
  Scenario: match on one word
55
55
  When I run `rspec . --example example`
@@ -67,10 +67,6 @@ Feature: --example option
67
67
  When I run `rspec . --example 'first group first example in first group'`
68
68
  Then the examples should all pass
69
69
 
70
- Scenario: one match in one file using regexp
71
- When I run `rspec . --example 'first .* first example'`
72
- Then the examples should all pass
73
-
74
70
  Scenario: all examples in one group
75
71
  When I run `rspec . --example 'first group'`
76
72
  Then the examples should all pass
@@ -86,7 +82,7 @@ Feature: --example option
86
82
  Scenario: Object#method
87
83
  When I run `rspec . --example 'Array#length'`
88
84
  Then the examples should all pass
89
-
85
+
90
86
  Scenario: Multiple applications of example name option
91
87
  When I run `rspec . --example 'first group' --example 'second group' --format d`
92
88
  Then the examples should all pass
@@ -1,16 +1,16 @@
1
1
  Feature: --tag option
2
2
 
3
3
  Use the --tag (or -t) option to filter the examples by tags.
4
-
4
+
5
5
  The tag can be a simple name or a name:value pair. In the first case,
6
6
  examples with :name => true will be filtered. In the second case, examples
7
7
  with :name => value will be filtered, where value is always a string. In
8
8
  both cases, name is converted to a symbol.
9
-
9
+
10
10
  Tags can also be used to exclude examples by adding a ~ before the tag. For
11
11
  example ~tag will exclude all examples marked with :tag => true and
12
12
  ~tag:value will exclude all examples marked with :tag => value.
13
-
13
+
14
14
  To be compatible with the Cucumber syntax, tags can optionally start with
15
15
  an @ symbol, which will be ignored.
16
16
 
@@ -29,7 +29,7 @@ Feature: --tag option
29
29
 
30
30
  Scenario: filter examples with non-existent tag
31
31
  When I run `rspec . --tag mytag`
32
- And the examples should all pass
32
+ Then the process should succeed even though no examples were run
33
33
 
34
34
  Scenario: filter examples with a simple tag
35
35
  When I run `rspec . --tag focus`
@@ -49,7 +49,7 @@ Feature: --tag option
49
49
  """
50
50
  And the output should contain "2 examples"
51
51
  And the examples should all pass
52
-
52
+
53
53
  Scenario: filter examples with a name:value tag and @
54
54
  When I run `rspec . --tag @type:special`
55
55
  Then the output should contain:
@@ -57,7 +57,7 @@ Feature: --tag option
57
57
  include {:type=>"special"}
58
58
  """
59
59
  And the examples should all pass
60
-
60
+
61
61
  Scenario: exclude examples with a simple tag
62
62
  When I run `rspec . --tag ~skip`
63
63
  Then the output should contain "exclude {:skip=>true}"
@@ -67,7 +67,7 @@ Feature: --tag option
67
67
  When I run `rspec . --tag ~@skip`
68
68
  Then the output should contain "exclude {:skip=>true}"
69
69
  Then the examples should all pass
70
-
70
+
71
71
  Scenario: exclude examples with a name:value tag
72
72
  When I run `rspec . --tag ~speed:slow`
73
73
  Then the output should contain:
@@ -75,7 +75,7 @@ Feature: --tag option
75
75
  exclude {:speed=>"slow"}
76
76
  """
77
77
  Then the examples should all pass
78
-
78
+
79
79
  Scenario: exclude examples with a name:value tag and @
80
80
  When I run `rspec . --tag ~@speed:slow`
81
81
  Then the output should contain:
@@ -89,3 +89,10 @@ Feature: --tag option
89
89
  Then the output should contain "include {:focus=>true}"
90
90
  And the output should contain "exclude {:skip=>true}"
91
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
@@ -0,0 +1,102 @@
1
+ Feature: Backtrace cleaning
2
+
3
+ To aid in diagnozing spec failures, RSpec cleans matching lines from backtraces. The default patterns cleaned are:
4
+
5
+ /\/lib\d*\/ruby\//,
6
+ /org\/jruby\//,
7
+ /bin\//,
8
+ /gems/,
9
+ /spec\/spec_helper\.rb/,
10
+ /lib\/rspec\/(core|expectations|matchers|mocks)/
11
+
12
+ This list can be modified or replaced with the `backtrace_clean_patterns` option. Additionally, rspec can be run with the `--backtrace` option to skip backtrace cleaning entirely.
13
+
14
+ Scenario: default configuration
15
+ Given a file named "spec/failing_spec.rb" with:
16
+ """ruby
17
+ describe "2 + 2" do
18
+ it "is 5" do
19
+ (2+2).should eq(5)
20
+ end
21
+ end
22
+ """
23
+ When I run `rspec`
24
+ Then the output should contain "1 example, 1 failure"
25
+ And the output should not contain "lib/rspec/expectations"
26
+
27
+ Scenario: With a custom setting for backtrace_clean_patterns
28
+ Given a file named "spec/spec_helper.rb" with:
29
+ """ruby
30
+ RSpec.configure do |config|
31
+ config.backtrace_clean_patterns = [
32
+ /spec_helper/
33
+ ]
34
+ end
35
+
36
+ def foo
37
+ "bar"
38
+ end
39
+ """
40
+ And a file named "spec/example_spec.rb" with:
41
+ """ruby
42
+ require 'spec_helper'
43
+ describe "foo" do
44
+ it "returns baz" do
45
+ foo.should eq("baz")
46
+ end
47
+ end
48
+ """
49
+ When I run `rspec`
50
+ Then the output should contain "1 example, 1 failure"
51
+ And the output should contain "lib/rspec/expectations"
52
+
53
+ Scenario: Adding a pattern
54
+ Given a file named "spec/matchers/be_baz_matcher.rb" with:
55
+ """ruby
56
+ RSpec::Matchers.define :be_baz do |_|
57
+ match do |actual|
58
+ actual == "baz"
59
+ end
60
+ end
61
+ """
62
+ And a file named "spec/example_spec.rb" with:
63
+ """ruby
64
+ RSpec.configure do |config|
65
+ config.backtrace_clean_patterns << /be_baz_matcher/
66
+ end
67
+
68
+ describe "bar" do
69
+ it "is baz" do
70
+ "bar".should be_baz
71
+ end
72
+ end
73
+ """
74
+ When I run `rspec`
75
+ Then the output should contain "1 example, 1 failure"
76
+ But the output should not contain "be_baz_matcher"
77
+ And the output should not contain "lib/rspec/expectations"
78
+
79
+ Scenario: Running with the --backtrace option
80
+ Given a file named "spec/matchers/be_baz_matcher.rb" with:
81
+ """ruby
82
+ RSpec::Matchers.define :be_baz do |_|
83
+ match do |actual|
84
+ actual == "baz"
85
+ end
86
+ end
87
+ """
88
+ And a file named "spec/example_spec.rb" with:
89
+ """ruby
90
+ RSpec.configure do |config|
91
+ config.backtrace_clean_patterns << /be_baz_matcher/
92
+ end
93
+
94
+ describe "bar" do
95
+ it "is baz" do
96
+ "bar".should be_baz
97
+ end
98
+ end
99
+ """
100
+ When I run `rspec --backtrace`
101
+ Then the output should contain "1 example, 1 failure"
102
+ And the output should not contain "be_baz_matcher"
@@ -0,0 +1,36 @@
1
+ Feature: failure exit code
2
+
3
+ Use the feature_exit_code option to set a custom exit code when RSpec fails.
4
+
5
+ RSpec.configure { |c| c.failure_exit_code = 42 }
6
+
7
+ Background:
8
+ Given a file named "spec/spec_helper.rb" with:
9
+ """ruby
10
+ RSpec.configure { |c| c.failure_exit_code = 42 }
11
+ """
12
+
13
+ Scenario: a failing spec with the default exit code
14
+ Given a file named "spec/example_spec.rb" with:
15
+ """ruby
16
+ describe "something" do
17
+ it "fails" do
18
+ fail
19
+ end
20
+ end
21
+ """
22
+ When I run `rspec spec/example_spec.rb`
23
+ Then the exit status should be 1
24
+
25
+ Scenario: a failing spec with a custom exit code
26
+ Given a file named "spec/example_spec.rb" with:
27
+ """ruby
28
+ require 'spec_helper'
29
+ describe "something" do
30
+ it "fails" do
31
+ fail
32
+ end
33
+ end
34
+ """
35
+ When I run `rspec spec/example_spec.rb`
36
+ Then the exit status should be 42
@@ -0,0 +1,3 @@
1
+ Feature: set the order and/or seed
2
+
3
+ You can set the order to run specs and specify a seed if you are running the specs using the 'random' ordering. See <a href='../command_line/order.feature'>the documentation on the --order command line option</a> for more on this.
@@ -0,0 +1,24 @@
1
+ Feature: output_stream
2
+
3
+ Define a custom output stream (default `$stdout`). Aliases: `:output`, `:out`.
4
+
5
+ RSpec.configure { |c| c.output_stream = File.open('saved_output', 'w') }
6
+
7
+ Background:
8
+ Given a file named "spec/spec_helper.rb" with:
9
+ """ruby
10
+ RSpec.configure {|c| c.output_stream = File.open('saved_output', 'w') }
11
+ """
12
+
13
+ Scenario: redirecting output
14
+ Given a file named "spec/example_spec.rb" with:
15
+ """ruby
16
+ require 'spec_helper'
17
+ describe "an example" do
18
+ it "passes" do
19
+ true
20
+ end
21
+ end
22
+ """
23
+ When I run `rspec spec/example_spec.rb`
24
+ Then the file "saved_output" should contain "1 example, 0 failures"
@@ -0,0 +1,30 @@
1
+ Feature: pattern
2
+
3
+ Use the pattern option to tell RSpec to look for specs in files that match a pattern other than "**/*_spec.rb".
4
+
5
+ Background:
6
+ Given a file named "spec/example_spec.rb" with:
7
+ """ruby
8
+ describe "two specs here" do
9
+ it "passes" do
10
+ end
11
+
12
+ it "passes too" do
13
+ end
14
+ end
15
+ """
16
+ And a file named "spec/example_test.rb" with:
17
+ """ruby
18
+ describe "only one spec" do
19
+ it "passes" do
20
+ end
21
+ end
22
+ """
23
+
24
+ Scenario: by default, RSpec runs files that match "**/*_spec.rb"
25
+ When I run `rspec`
26
+ Then the output should contain "2 examples, 0 failures"
27
+
28
+ Scenario: the --pattern flag makes RSpec run files matching the specified pattern and ignore the default pattern
29
+ When I run `rspec -P "**/*_test.rb"`
30
+ Then the output should contain "1 example, 0 failures"
@@ -0,0 +1,163 @@
1
+ Feature: Profile examples
2
+
3
+ The `--profile` command line option (available from `RSpec.configure` as
4
+ `#profile_examples`), when set, will cause RSpec to dump out a list of
5
+ your slowest examples. By default, it prints the 10 slowest examples,
6
+ but you can set it to a different value to have it print more or fewer
7
+ slow examples.
8
+
9
+ Background:
10
+ Given a file named "spec/spec_helper.rb" with:
11
+ """ruby
12
+ """
13
+ And a file named "spec/example_spec.rb" with:
14
+ """ruby
15
+ require "spec_helper"
16
+
17
+ describe "something" do
18
+ it "sleeps for 0.1 secionds (example 1)" do
19
+ sleep 0.1
20
+ 1.should == 1
21
+ end
22
+
23
+ it "sleeps for 0 seconds (example 2)" do
24
+ 2.should == 2
25
+ end
26
+
27
+ it "sleeps for 0.15 seconds (example 3)" do
28
+ sleep 0.15
29
+ 3.should == 3
30
+ end
31
+
32
+ it "sleeps for 0.05 seconds (example 4)" do
33
+ sleep 0.05
34
+ 4.should == 4
35
+ end
36
+
37
+ it "sleeps for 0.05 seconds (example 5)" do
38
+ sleep 0.05
39
+ 5.should == 5
40
+ end
41
+
42
+ it "sleeps for 0.05 seconds (example 6)" do
43
+ sleep 0.05
44
+ 6.should == 6
45
+ end
46
+
47
+ it "sleeps for 0.05 seconds (example 7)" do
48
+ sleep 0.05
49
+ 7.should == 7
50
+ end
51
+
52
+ it "sleeps for 0.05 seconds (example 8)" do
53
+ sleep 0.05
54
+ 8.should == 8
55
+ end
56
+
57
+ it "sleeps for 0.05 seconds (example 9)" do
58
+ sleep 0.05
59
+ 9.should == 9
60
+ end
61
+
62
+ it "sleeps for 0.05 seconds (example 10)" do
63
+ sleep 0.05
64
+ 10.should == 10
65
+ end
66
+
67
+ it "sleeps for 0.05 seconds (example 11)" do
68
+ sleep 0.05
69
+ 11.should == 11
70
+ end
71
+ end
72
+ """
73
+
74
+ Scenario: by default does not show profile
75
+ When I run `rspec spec`
76
+ Then the examples should all pass
77
+ And the output should not contain "example 1"
78
+ And the output should not contain "example 2"
79
+ And the output should not contain "example 3"
80
+ And the output should not contain "example 4"
81
+ And the output should not contain "example 5"
82
+ And the output should not contain "example 6"
83
+ And the output should not contain "example 7"
84
+ And the output should not contain "example 8"
85
+ And the output should not contain "example 9"
86
+ And the output should not contain "example 10"
87
+ And the output should not contain "example 11"
88
+
89
+ Scenario: setting `profile_examples` to true shows 10 examples
90
+ Given a file named "spec/spec_helper.rb" with:
91
+ """ruby
92
+ RSpec.configure { |c| c.profile_examples = true }
93
+ """
94
+ When I run `rspec spec`
95
+ Then the examples should all pass
96
+ And the output should contain "Top 10 slowest examples"
97
+ And the output should contain "example 1"
98
+ And the output should not contain "example 2"
99
+ And the output should contain "example 3"
100
+ And the output should contain "example 4"
101
+ And the output should contain "example 5"
102
+ And the output should contain "example 6"
103
+ And the output should contain "example 7"
104
+ And the output should contain "example 8"
105
+ And the output should contain "example 9"
106
+ And the output should contain "example 10"
107
+ And the output should contain "example 11"
108
+
109
+ Scenario: setting `profile_examples` to 2 shows 2 examples
110
+ Given a file named "spec/spec_helper.rb" with:
111
+ """ruby
112
+ RSpec.configure { |c| c.profile_examples = 2 }
113
+ """
114
+ When I run `rspec spec`
115
+ Then the examples should all pass
116
+ And the output should contain "Top 2 slowest examples"
117
+ And the output should contain "example 1"
118
+ And the output should not contain "example 2"
119
+ And the output should contain "example 3"
120
+ And the output should not contain "example 4"
121
+ And the output should not contain "example 5"
122
+ And the output should not contain "example 6"
123
+ And the output should not contain "example 7"
124
+ And the output should not contain "example 8"
125
+ And the output should not contain "example 9"
126
+ And the output should not contain "example 10"
127
+ And the output should not contain "example 11"
128
+
129
+ Scenario: setting profile examples through CLI
130
+ When I run `rspec spec --profile 2`
131
+ Then the examples should all pass
132
+ And the output should contain "Top 2 slowest examples"
133
+ And the output should contain "example 1"
134
+ And the output should not contain "example 2"
135
+ And the output should contain "example 3"
136
+ And the output should not contain "example 4"
137
+ And the output should not contain "example 5"
138
+ And the output should not contain "example 6"
139
+ And the output should not contain "example 7"
140
+ And the output should not contain "example 8"
141
+ And the output should not contain "example 9"
142
+ And the output should not contain "example 10"
143
+ And the output should not contain "example 11"
144
+
145
+ Scenario: Using `--no-profile` overrules config options
146
+ Given a file named "spec/spec_helper.rb" with:
147
+ """ruby
148
+ RSpec.configure { |c| c.profile_examples = true }
149
+ """
150
+ When I run `rspec spec --no-profile`
151
+ Then the examples should all pass
152
+ And the output should not contain "example 1"
153
+ And the output should not contain "example 2"
154
+ And the output should not contain "example 3"
155
+ And the output should not contain "example 4"
156
+ And the output should not contain "example 5"
157
+ And the output should not contain "example 6"
158
+ And the output should not contain "example 7"
159
+ And the output should not contain "example 8"
160
+ And the output should not contain "example 9"
161
+ And the output should not contain "example 10"
162
+ And the output should not contain "example 11"
163
+