rspec-core 2.99.2 → 3.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (165) hide show
  1. checksums.yaml +14 -6
  2. checksums.yaml.gz.sig +2 -0
  3. data.tar.gz.sig +0 -0
  4. data/Changelog.md +103 -191
  5. data/License.txt +1 -0
  6. data/README.md +4 -25
  7. data/features/Upgrade.md +2 -14
  8. data/features/command_line/dry_run.feature +29 -0
  9. data/features/command_line/example_name_option.feature +1 -1
  10. data/features/command_line/fail_fast.feature +26 -0
  11. data/features/command_line/format_option.feature +3 -3
  12. data/features/command_line/line_number_option.feature +16 -11
  13. data/features/command_line/order.feature +2 -3
  14. data/features/command_line/pattern_option.feature +3 -3
  15. data/features/command_line/randomization.feature +63 -0
  16. data/features/command_line/require_option.feature +2 -2
  17. data/features/command_line/ruby.feature +1 -1
  18. data/features/configuration/alias_example_to.feature +13 -22
  19. data/features/configuration/{backtrace_clean_patterns.feature → backtrace_exclusion_patterns.feature} +17 -14
  20. data/features/configuration/custom_settings.feature +11 -11
  21. data/features/configuration/overriding_global_ordering.feature +93 -0
  22. data/features/configuration/profile.feature +13 -13
  23. data/features/configuration/read_options_from_file.feature +7 -7
  24. data/features/example_groups/basic_structure.feature +1 -1
  25. data/features/example_groups/shared_context.feature +8 -8
  26. data/features/example_groups/shared_examples.feature +6 -14
  27. data/features/expectation_framework_integration/configure_expectation_framework.feature +27 -122
  28. data/features/filtering/exclusion_filters.feature +2 -5
  29. data/features/filtering/inclusion_filters.feature +1 -5
  30. data/features/formatters/json_formatter.feature +2 -2
  31. data/features/formatters/text_formatter.feature +4 -4
  32. data/features/helper_methods/arbitrary_methods.feature +2 -2
  33. data/features/helper_methods/let.feature +5 -5
  34. data/features/helper_methods/modules.feature +5 -8
  35. data/features/hooks/around_hooks.feature +2 -2
  36. data/features/hooks/before_and_after_hooks.feature +14 -14
  37. data/features/hooks/filtering.feature +12 -14
  38. data/features/metadata/described_class.feature +1 -1
  39. data/features/metadata/user_defined.feature +16 -29
  40. data/features/mock_framework_integration/use_flexmock.feature +1 -1
  41. data/features/mock_framework_integration/use_mocha.feature +1 -1
  42. data/features/mock_framework_integration/use_rr.feature +1 -1
  43. data/features/mock_framework_integration/use_rspec.feature +5 -5
  44. data/features/pending/pending_examples.feature +5 -5
  45. data/features/spec_files/arbitrary_file_suffix.feature +1 -1
  46. data/features/step_definitions/additional_cli_steps.rb +3 -3
  47. data/features/subject/explicit_subject.feature +8 -8
  48. data/features/subject/implicit_receiver.feature +29 -0
  49. data/features/subject/implicit_subject.feature +4 -4
  50. data/features/support/env.rb +10 -3
  51. data/features/support/require_expect_syntax_in_aruba_specs.rb +16 -0
  52. data/lib/rspec/core.rb +11 -48
  53. data/lib/rspec/core/backport_random.rb +302 -0
  54. data/lib/rspec/core/backtrace_formatter.rb +65 -0
  55. data/lib/rspec/core/command_line.rb +7 -18
  56. data/lib/rspec/core/configuration.rb +202 -507
  57. data/lib/rspec/core/configuration_options.rb +17 -30
  58. data/lib/rspec/core/example.rb +29 -39
  59. data/lib/rspec/core/example_group.rb +166 -259
  60. data/lib/rspec/core/filter_manager.rb +30 -47
  61. data/lib/rspec/core/flat_map.rb +17 -0
  62. data/lib/rspec/core/formatters.rb +0 -138
  63. data/lib/rspec/core/formatters/base_formatter.rb +46 -1
  64. data/lib/rspec/core/formatters/base_text_formatter.rb +38 -61
  65. data/lib/rspec/core/formatters/deprecation_formatter.rb +21 -52
  66. data/lib/rspec/core/formatters/helpers.rb +0 -28
  67. data/lib/rspec/core/formatters/html_formatter.rb +1 -1
  68. data/lib/rspec/core/formatters/json_formatter.rb +38 -9
  69. data/lib/rspec/core/formatters/snippet_extractor.rb +14 -5
  70. data/lib/rspec/core/hooks.rb +55 -39
  71. data/lib/rspec/core/memoized_helpers.rb +17 -167
  72. data/lib/rspec/core/metadata.rb +16 -64
  73. data/lib/rspec/core/option_parser.rb +30 -39
  74. data/lib/rspec/core/ordering.rb +154 -0
  75. data/lib/rspec/core/pending.rb +12 -69
  76. data/lib/rspec/core/project_initializer.rb +12 -10
  77. data/lib/rspec/core/rake_task.rb +5 -108
  78. data/lib/rspec/core/reporter.rb +15 -18
  79. data/lib/rspec/core/runner.rb +16 -30
  80. data/lib/rspec/core/shared_context.rb +3 -5
  81. data/lib/rspec/core/shared_example_group.rb +3 -51
  82. data/lib/rspec/core/shared_example_group/collection.rb +1 -19
  83. data/lib/rspec/core/version.rb +1 -1
  84. data/lib/rspec/core/warnings.rb +22 -0
  85. data/lib/rspec/core/world.rb +12 -8
  86. data/spec/command_line/order_spec.rb +20 -23
  87. data/spec/rspec/core/backtrace_formatter_spec.rb +216 -0
  88. data/spec/rspec/core/command_line_spec.rb +32 -48
  89. data/spec/rspec/core/configuration_options_spec.rb +19 -50
  90. data/spec/rspec/core/configuration_spec.rb +142 -713
  91. data/spec/rspec/core/drb_command_line_spec.rb +2 -0
  92. data/spec/rspec/core/dsl_spec.rb +0 -1
  93. data/spec/rspec/core/example_group_spec.rb +192 -223
  94. data/spec/rspec/core/example_spec.rb +40 -16
  95. data/spec/rspec/core/filter_manager_spec.rb +2 -2
  96. data/spec/rspec/core/formatters/base_formatter_spec.rb +0 -41
  97. data/spec/rspec/core/formatters/base_text_formatter_spec.rb +5 -123
  98. data/spec/rspec/core/formatters/deprecation_formatter_spec.rb +2 -87
  99. data/spec/rspec/core/formatters/documentation_formatter_spec.rb +2 -3
  100. data/spec/rspec/core/formatters/{text_mate_formatted.html → html_formatted-1.8.7-jruby.html} +44 -25
  101. data/spec/rspec/core/formatters/html_formatted-1.8.7-rbx.html +477 -0
  102. data/spec/rspec/core/formatters/{html_formatted.html → html_formatted-1.8.7.html} +42 -25
  103. data/spec/rspec/core/formatters/html_formatted-1.9.2.html +425 -0
  104. data/spec/rspec/core/formatters/html_formatted-1.9.3-jruby.html +416 -0
  105. data/spec/rspec/core/formatters/html_formatted-1.9.3-rbx.html +477 -0
  106. data/spec/rspec/core/formatters/html_formatted-1.9.3.html +419 -0
  107. data/spec/rspec/core/formatters/html_formatted-2.0.0.html +425 -0
  108. data/spec/rspec/core/formatters/html_formatter_spec.rb +21 -46
  109. data/spec/rspec/core/formatters/json_formatter_spec.rb +97 -8
  110. data/spec/rspec/core/hooks_filtering_spec.rb +5 -5
  111. data/spec/rspec/core/hooks_spec.rb +61 -47
  112. data/spec/rspec/core/memoized_helpers_spec.rb +20 -322
  113. data/spec/rspec/core/metadata_spec.rb +1 -24
  114. data/spec/rspec/core/option_parser_spec.rb +20 -62
  115. data/spec/rspec/core/ordering_spec.rb +102 -0
  116. data/spec/rspec/core/pending_example_spec.rb +0 -40
  117. data/spec/rspec/core/project_initializer_spec.rb +1 -25
  118. data/spec/rspec/core/rake_task_spec.rb +5 -72
  119. data/spec/rspec/core/random_spec.rb +47 -0
  120. data/spec/rspec/core/reporter_spec.rb +23 -48
  121. data/spec/rspec/core/runner_spec.rb +31 -39
  122. data/spec/rspec/core/shared_context_spec.rb +3 -15
  123. data/spec/rspec/core/shared_example_group/collection_spec.rb +4 -17
  124. data/spec/rspec/core/shared_example_group_spec.rb +12 -45
  125. data/spec/rspec/core/{deprecation_spec.rb → warnings_spec.rb} +3 -1
  126. data/spec/rspec/core_spec.rb +4 -21
  127. data/spec/spec_helper.rb +41 -5
  128. data/spec/support/helper_methods.rb +0 -29
  129. data/spec/support/sandboxed_mock_space.rb +0 -16
  130. data/spec/support/shared_example_groups.rb +7 -36
  131. data/spec/support/stderr_splitter.rb +36 -0
  132. metadata +163 -157
  133. metadata.gz.sig +1 -0
  134. data/exe/autospec +0 -13
  135. data/features/Autotest.md +0 -38
  136. data/features/configuration/treat_symbols_as_metadata_keys_with_true_values.feature +0 -52
  137. data/features/subject/attribute_of_subject.feature +0 -124
  138. data/features/subject/one_liner_syntax.feature +0 -71
  139. data/lib/autotest/discover.rb +0 -10
  140. data/lib/autotest/rspec2.rb +0 -77
  141. data/lib/rspec/core/backtrace_cleaner.rb +0 -46
  142. data/lib/rspec/core/backward_compatibility.rb +0 -55
  143. data/lib/rspec/core/caller_filter.rb +0 -60
  144. data/lib/rspec/core/deprecated_mutable_array_proxy.rb +0 -32
  145. data/lib/rspec/core/deprecation.rb +0 -26
  146. data/lib/rspec/core/extensions/instance_eval_with_args.rb +0 -44
  147. data/lib/rspec/core/extensions/kernel.rb +0 -9
  148. data/lib/rspec/core/extensions/module_eval_with_args.rb +0 -38
  149. data/lib/rspec/core/extensions/ordered.rb +0 -27
  150. data/lib/rspec/core/formatters/console_codes.rb +0 -42
  151. data/lib/rspec/core/formatters/text_mate_formatter.rb +0 -34
  152. data/lib/rspec/core/metadata_hash_builder.rb +0 -97
  153. data/lib/rspec/core/minitest_assertions_adapter.rb +0 -28
  154. data/lib/rspec/core/test_unit_assertions_adapter.rb +0 -30
  155. data/spec/autotest/discover_spec.rb +0 -49
  156. data/spec/autotest/failed_results_re_spec.rb +0 -45
  157. data/spec/autotest/rspec_spec.rb +0 -133
  158. data/spec/rspec/core/backtrace_cleaner_spec.rb +0 -68
  159. data/spec/rspec/core/caller_filter_spec.rb +0 -58
  160. data/spec/rspec/core/deprecations_spec.rb +0 -59
  161. data/spec/rspec/core/formatters/console_codes_spec.rb +0 -50
  162. data/spec/rspec/core/formatters/text_mate_formatter_spec.rb +0 -107
  163. data/spec/rspec/core/kernel_extensions_spec.rb +0 -9
  164. data/spec/rspec/core/pending_spec.rb +0 -27
  165. data/spec/support/silence_dsl_deprecations.rb +0 -32
@@ -0,0 +1,154 @@
1
+ module RSpec
2
+ module Core
3
+ if defined?(::Random)
4
+ RandomNumberGenerator = ::Random
5
+ else
6
+ require 'rspec/core/backport_random'
7
+ RandomNumberGenerator = RSpec::Core::Backports::Random
8
+ end
9
+
10
+ # @private
11
+ module Ordering
12
+ # @private
13
+ # The default global ordering (defined order).
14
+ class Identity
15
+ def order(items)
16
+ items
17
+ end
18
+ end
19
+
20
+ # @private
21
+ # Orders items randomly.
22
+ class Random
23
+ def initialize(configuration)
24
+ @configuration = configuration
25
+ @used = false
26
+ end
27
+
28
+ def used?
29
+ @used
30
+ end
31
+
32
+ def order(items)
33
+ @used = true
34
+ rng = RandomNumberGenerator.new(@configuration.seed)
35
+ shuffle items, rng
36
+ end
37
+
38
+ if RUBY_VERSION > '1.9.3'
39
+ def shuffle(list, rng)
40
+ list.shuffle(:random => rng)
41
+ end
42
+ else
43
+ def shuffle(list, rng)
44
+ shuffled = list.dup
45
+ shuffled.size.times do |i|
46
+ j = i + rng.rand(shuffled.size - i)
47
+ next if i == j
48
+ shuffled[i], shuffled[j] = shuffled[j], shuffled[i]
49
+ end
50
+
51
+ shuffled
52
+ end
53
+ end
54
+ end
55
+
56
+ # @private
57
+ # Orders items based on a custom block.
58
+ class Custom
59
+ def initialize(callable)
60
+ @callable = callable
61
+ end
62
+
63
+ def order(list)
64
+ @callable.call(list)
65
+ end
66
+ end
67
+
68
+ # @private
69
+ # Stores the different ordering strategies.
70
+ class Registry
71
+ def initialize(configuration)
72
+ @configuration = configuration
73
+ @strategies = {}
74
+
75
+ register(:random, Random.new(configuration))
76
+
77
+ identity = Identity.new
78
+ register(:defined, identity)
79
+
80
+ # The default global ordering is --defined.
81
+ register(:global, identity)
82
+ end
83
+
84
+ def fetch(name, &fallback)
85
+ @strategies.fetch(name, &fallback)
86
+ end
87
+
88
+ def register(sym, strategy)
89
+ @strategies[sym] = strategy
90
+ end
91
+
92
+ def used_random_seed?
93
+ @strategies[:random].used?
94
+ end
95
+ end
96
+
97
+ # @private
98
+ # Manages ordering configuration.
99
+ #
100
+ # @note This is not intended to be used externally. Use
101
+ # the APIs provided by `RSpec::Core::Configuration` instead.
102
+ class ConfigurationManager
103
+ attr_reader :seed, :ordering_registry
104
+
105
+ def initialize
106
+ @ordering_registry = Registry.new(self)
107
+ @seed = rand(0xFFFF)
108
+ @seed_forced = false
109
+ @order_forced = false
110
+ end
111
+
112
+ def seed_used?
113
+ ordering_registry.used_random_seed?
114
+ end
115
+
116
+ def seed=(seed)
117
+ return if @seed_forced
118
+ register_ordering(:global, ordering_registry.fetch(:random))
119
+ @seed = seed.to_i
120
+ end
121
+
122
+ def order=(type)
123
+ order, seed = type.to_s.split(':')
124
+ @seed = seed = seed.to_i if seed
125
+
126
+ ordering_name = if order.include?('rand')
127
+ :random
128
+ elsif order == 'defined'
129
+ :defined
130
+ end
131
+
132
+ register_ordering(:global, ordering_registry.fetch(ordering_name)) if ordering_name
133
+ end
134
+
135
+ def force(hash)
136
+ if hash.has_key?(:seed)
137
+ self.seed = hash[:seed]
138
+ @seed_forced = true
139
+ @order_forced = true
140
+ elsif hash.has_key?(:order)
141
+ self.order = hash[:order]
142
+ @order_forced = true
143
+ end
144
+ end
145
+
146
+ def register_ordering(name, strategy = Custom.new(Proc.new { |l| yield l }))
147
+ return if @order_forced && name == :global
148
+ ordering_registry.register(name, strategy)
149
+ end
150
+ end
151
+ end
152
+ end
153
+ end
154
+
@@ -1,14 +1,7 @@
1
1
  module RSpec
2
2
  module Core
3
3
  module Pending
4
- class SkipDeclaredInExample < StandardError
5
- attr_reader :argument
6
-
7
- def initialize(argument)
8
- super(argument.to_s)
9
- @argument = argument
10
- end
11
- end
4
+ class PendingDeclaredInExample < StandardError; end
12
5
 
13
6
  # If Test::Unit is loaed, we'll use its error as baseclass, so that Test::Unit
14
7
  # will report unmet RSpec expectations as failures rather than errors.
@@ -78,33 +71,10 @@ module RSpec
78
71
  # it "does something", :pending => "something else getting finished" do
79
72
  # # ...
80
73
  # end
81
- def pending(*args, &block)
82
- RSpec.warn_deprecation(<<-EOS.gsub(/^\s+\|/, ''))
83
- |The semantics of `RSpec::Core::Pending#pending` are changing in
84
- |RSpec 3. In RSpec 2.x, it caused the example to be skipped. In
85
- |RSpec 3, the rest of the example will still be run but is expected
86
- |to fail, and will be marked as a failure (rather than as pending)
87
- |if the example passes.
88
- |
89
- |Any passed block will no longer be executed. This feature is being
90
- |removed since it was semantically inconsistent, and the behaviour it
91
- |offered is being made available with the other ways of marking an
92
- |example pending.
93
- |
94
- |To keep the same skip semantics, change `pending` to `skip`.
95
- |Otherwise, if you want the new RSpec 3 behavior, you can safely
96
- |ignore this warning and continue to upgrade to RSpec 3 without
97
- |addressing it.
98
- |
99
- |Called from #{CallerFilter.first_non_rspec_line}.
100
- |
101
- EOS
102
-
103
- pending_no_warning(*args, &block)
104
- end
74
+ def pending(*args)
75
+ current_example = RSpec.current_example
105
76
 
106
- def pending_no_warning(*args)
107
- return self.class.before(:each) { pending(*args) } unless RSpec.current_example
77
+ return self.class.before(:each) { pending(*args) } unless current_example
108
78
 
109
79
  options = args.last.is_a?(Hash) ? args.pop : {}
110
80
  message = args.first || NO_REASON_GIVEN
@@ -113,55 +83,28 @@ module RSpec
113
83
  return block_given? ? yield : nil
114
84
  end
115
85
 
116
- RSpec.current_example.metadata[:pending] = true
117
- RSpec.current_example.metadata[:execution_result][:pending_message] = message
118
- RSpec.current_example.execution_result[:pending_fixed] = false
86
+ current_example.metadata[:pending] = true
87
+ current_example.metadata[:execution_result][:pending_message] = message
88
+ current_example.execution_result[:pending_fixed] = false
119
89
  if block_given?
120
90
  begin
121
91
  result = begin
122
92
  yield
123
- RSpec.current_example.example_group_instance.instance_eval { verify_mocks_for_rspec }
93
+ current_example.example_group_instance.instance_eval { verify_mocks_for_rspec }
124
94
  end
125
- RSpec.current_example.metadata[:pending] = false
95
+ current_example.metadata[:pending] = false
126
96
  rescue Exception => e
127
- RSpec.current_example.execution_result[:exception] = e
97
+ current_example.execution_result[:exception] = e
128
98
  ensure
129
99
  teardown_mocks_for_rspec
130
100
  end
131
101
  if result
132
- RSpec.current_example.execution_result[:pending_fixed] = true
102
+ current_example.execution_result[:pending_fixed] = true
133
103
  raise PendingExampleFixedError.new
134
104
  end
135
105
  end
136
- raise SkipDeclaredInExample.new(message)
137
- end
138
-
139
- # Backport from RSpec 3 to aid in upgrading.
140
- #
141
- # Not using alias method because we explictly want to discard any block.
142
- def skip(*args)
143
- pending_no_warning(*args)
106
+ raise PendingDeclaredInExample.new(message)
144
107
  end
145
-
146
- def self.const_missing(name)
147
- return super unless name == :PendingDeclaredInExample
148
-
149
- RSpec.deprecate("RSpec::Core::PendingDeclaredInExample",
150
- :replacement => "RSpec::Core::Pending::SkipDeclaredInExample")
151
-
152
- SkipDeclaredInExample
153
- end
154
- end
155
-
156
- # Alias the error for compatibility with extension gems (e.g. formatters)
157
- # that depend on the const name of the error in RSpec <= 2.8.
158
- def self.const_missing(name)
159
- return super unless name == :PendingExampleFixedError
160
-
161
- RSpec.deprecate("RSpec::Core::PendingExampleFixedError",
162
- :replacement => "RSpec::Core::Pending::PendingExampleFixedError")
163
-
164
- Pending::PendingExampleFixedError
165
108
  end
166
109
  end
167
110
  end
@@ -8,10 +8,6 @@ module RSpec
8
8
  def run
9
9
  create_spec_helper_file
10
10
  create_dot_rspec_file
11
- delete_if_confirmed("autotest/discover.rb", <<-MESSAGE)
12
- RSpec registers its own discover.rb with Autotest, so autotest/discover.rb is
13
- no longer needed.
14
- MESSAGE
15
11
 
16
12
  delete_if_confirmed("lib/tasks/rspec.rake", <<-MESSAGE)
17
13
  If the file in lib/tasks/rspec.rake is the one generated by rspec-rails-1x,
@@ -35,9 +31,9 @@ CONTENT
35
31
 
36
32
  def create_spec_helper_file
37
33
  if File.exist?('spec/spec_helper.rb')
38
- report_exists("spec/spec_helper.rb")
34
+ report_exists('spec/spec_helper.rb')
39
35
  else
40
- report_creating("spec/spec_helper.rb")
36
+ report_creating('spec/spec_helper.rb')
41
37
  FileUtils.mkdir_p('spec')
42
38
  File.open('spec/spec_helper.rb','w') do |f|
43
39
  f.write <<-CONTENT
@@ -48,15 +44,21 @@ CONTENT
48
44
  #
49
45
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
50
46
  RSpec.configure do |config|
51
- config.treat_symbols_as_metadata_keys_with_true_values = true
52
- config.run_all_when_everything_filtered = true
53
- config.filter_run :focus
47
+ # Limit the spec run to only specs with the focus metadata. If no specs have
48
+ # the filtering metadata and `run_all_when_everything_filtered = true` then
49
+ # all specs will run.
50
+ #config.filter_run :focus
51
+
52
+ # Run all specs when none match the provided filter. This works well in
53
+ # conjunction with `config.filter_run :focus`, as it will run the entire
54
+ # suite when no specs have `:filter` metadata.
55
+ #config.run_all_when_everything_filtered = true
54
56
 
55
57
  # Run specs in random order to surface order dependencies. If you find an
56
58
  # order dependency and want to debug it, you can fix the order by providing
57
59
  # the seed, which is printed after each run.
58
60
  # --seed 1234
59
- config.order = 'random'
61
+ #config.order = 'random'
60
62
  end
61
63
  CONTENT
62
64
  end
@@ -1,5 +1,4 @@
1
- require 'rspec/core'
2
- require 'rspec/core/backward_compatibility'
1
+ require 'rspec/support/warnings'
3
2
  require 'rake'
4
3
  require 'rake/tasklib'
5
4
  require 'shellwords'
@@ -21,31 +20,6 @@ module RSpec
21
20
  # 'spec/**/*_spec.rb'
22
21
  attr_accessor :pattern
23
22
 
24
- # @deprecated
25
- # Has no effect. The rake task now checks ENV['BUNDLE_GEMFILE'] instead.
26
- def skip_bundler=(*)
27
- deprecate("RSpec::Core::RakeTask#skip_bundler=")
28
- end
29
-
30
- # @deprecated
31
- # Has no effect. The rake task now checks ENV['BUNDLE_GEMFILE'] instead.
32
- def gemfile=(*)
33
- deprecate("RSpec::Core::RakeTask#gemfile=", :replacement => 'ENV["BUNDLE_GEMFILE"]')
34
- end
35
-
36
- # @deprecated
37
- # Use ruby_opts="-w" instead.
38
- #
39
- # When true, requests that the specs be run with the warning flag set.
40
- # e.g. "ruby -w"
41
- #
42
- # default:
43
- # false
44
- def warning=(true_or_false)
45
- deprecate("RSpec::Core::RakeTask#warning=", :replacement => 'ruby_opts="-w"')
46
- @warning = true_or_false
47
- end
48
-
49
23
  # Whether or not to fail Rake when an error occurs (typically when examples fail).
50
24
  #
51
25
  # default:
@@ -62,51 +36,6 @@ module RSpec
62
36
  # true
63
37
  attr_accessor :verbose
64
38
 
65
- # Use rcov for code coverage?
66
- #
67
- # Due to the many ways `rcov` can run, if this option is enabled, it is
68
- # required that `require 'rspec/autorun'` appears in `spec_helper`.rb
69
- #
70
- # default:
71
- # false
72
- def rcov
73
- deprecate("RSpec::Core::RakeTask#rcov")
74
- @rcov
75
- end
76
-
77
- def rcov=(true_or_false)
78
- deprecate("RSpec::Core::RakeTask#rcov=")
79
- @rcov = true_or_false
80
- end
81
-
82
- # Path to rcov.
83
- #
84
- # default:
85
- # 'rcov'
86
- def rcov_path
87
- deprecate("RSpec::Core::RakeTask#rcov_path")
88
- @rcov_path
89
- end
90
-
91
- def rcov_path=(path)
92
- deprecate("RSpec::Core::RakeTask#rcov_path=")
93
- @rcov_path = path
94
- end
95
-
96
- # Command line options to pass to rcov.
97
- #
98
- # default:
99
- # nil
100
- def rcov_opts
101
- deprecate("RSpec::Core::RakeTask#rcov_opts")
102
- @rcov_opts
103
- end
104
-
105
- def rcov_opts=(opts)
106
- deprecate("RSpec::Core::RakeTask#rcov_opts=")
107
- @rcov_opts = opts
108
- end
109
-
110
39
  # Command line options to pass to ruby.
111
40
  #
112
41
  # default:
@@ -133,7 +62,7 @@ module RSpec
133
62
  # default:
134
63
  # nil
135
64
  def spec_opts=(opts)
136
- deprecate('RSpec::Core::RakeTask#spec_opts=', :replacement => 'rspec_opts=')
65
+ RSpec.deprecate('RSpec::Core::RakeTask#spec_opts=', :replacement => 'rspec_opts=')
137
66
  @rspec_opts = opts
138
67
  end
139
68
 
@@ -152,11 +81,9 @@ module RSpec
152
81
 
153
82
  def setup_ivars(args)
154
83
  @name = args.shift || :spec
155
- @rcov_opts, @ruby_opts, @rspec_opts = nil, nil, nil
156
- @warning, @rcov = false, false
84
+ @ruby_opts, @rspec_opts = nil, nil, nil
157
85
  @verbose, @fail_on_error = true, true
158
86
 
159
- @rcov_path = 'rcov'
160
87
  @rspec_path = 'rspec'
161
88
  @pattern = './spec{,/*/**}/*_spec.rb'
162
89
  end
@@ -175,21 +102,11 @@ module RSpec
175
102
 
176
103
  private
177
104
 
178
- if "".respond_to?(:shellescape)
179
- def shellescape(string)
180
- string.shellescape
181
- end
182
- else # 1.8.6's shellwords doesn't provide shellescape :(.
183
- def shellescape(string)
184
- string.gsub(/"/, '\"').gsub(/'/, "\\\\'")
185
- end
186
- end
187
-
188
105
  def files_to_run
189
106
  if ENV['SPEC']
190
107
  FileList[ ENV['SPEC'] ].sort
191
108
  else
192
- FileList[ pattern ].sort.map { |f| shellescape(f) }
109
+ FileList[ pattern ].sort.map(&:shellescape)
193
110
  end
194
111
  end
195
112
 
@@ -197,35 +114,15 @@ module RSpec
197
114
  cmd_parts = []
198
115
  cmd_parts << RUBY
199
116
  cmd_parts << ruby_opts
200
- cmd_parts << "-w" if @warning
201
- cmd_parts << "-S" << runner
202
- cmd_parts << "-Ispec:lib" << @rcov_opts if @rcov
117
+ cmd_parts << "-S" << rspec_path
203
118
  cmd_parts << files_to_run
204
- cmd_parts << "--" if @rcov && rspec_opts
205
119
  cmd_parts << rspec_opts
206
120
  cmd_parts.flatten.reject(&blank).join(" ")
207
121
  end
208
122
 
209
- def runner
210
- @rcov ? @rcov_path : rspec_path
211
- end
212
-
213
123
  def blank
214
124
  lambda {|s| s.nil? || s == ""}
215
125
  end
216
-
217
- def deprecate deprecated, opts = {}
218
- # unless RSpec is loaded, deprecate won't work (simply requiring the
219
- # deprecate file isn't enough) so this is a check for "is rspec already
220
- # loaded?" "ok use the main deprecate hook" otherwise "simple fallback"
221
- # Note that we don't need rspec to be loaded for the rake task to work
222
- if RSpec.respond_to?(:deprecate)
223
- RSpec.deprecate deprecated, opts
224
- else
225
- warn "DEPRECATION: #{deprecated} is deprecated."
226
- end
227
- end
228
-
229
126
  end
230
127
  end
231
128
  end