guard-rspec 2.6.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5b05dac5d61c3b5485d893327c8c6c03c80cf25b
4
- data.tar.gz: f2e183903733e7513e95b8f1bbc200c0b99ea848
3
+ metadata.gz: dbb56ed9604ac21d3cae7a6c7beaf37d20c3beab
4
+ data.tar.gz: 53990653ab1d6803a35b335af297437b40340826
5
5
  SHA512:
6
- metadata.gz: e2002ac0ca7798d31c05a6e7c37199ff0817fbdaf33e7ed836f50433aac1e9fdb3282018bd7bf84cbc9f7952aa0e4a744bab29e97ec4c222f2206df5522dcde5
7
- data.tar.gz: 7896a5a2a10d5742ed22e32958ff08eb15f5151da43f10283ccce7dc00c773c993ee3809bd1df651f48b30c308ef4a77c52c7d93ad8323b2c49149932738760a
6
+ metadata.gz: f26e6c5fa2e01614e6020568bd95465422a72ee498435b323fe88e4f4d0c150e661e627936aacea3534f9419dd45357bda79dc6a553a7bb56de34758d9b1b478
7
+ data.tar.gz: f93d9d5d4edf51fb289c57f56c2d706860b0b107973d95f962a69abc67842713077ccd8cd08f2e6365445b65f5de59af9572ed3b4ba6cf0b4095af9c4abc7a3f
data/README.md CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  RSpec guard allows to automatically & intelligently launch specs when files are modified.
4
4
 
5
- * Compatible with RSpec >= 2.11 (use guard-rspec 1.2.x for older release, including RSpec 1.x)
6
- * Tested against Ruby 1.8.7, 1.9.2, 1.9.3, REE and the latest versions of JRuby & Rubinius.
5
+ * Compatible with RSpec >= 2.13 (use guard-rspec 1.2.x for older release, including RSpec 1.x)
6
+ * Tested against Ruby 1.8.7, 1.9.3, 2.0.0, REE and the latest versions of JRuby & Rubinius.
7
7
 
8
8
  ## Install
9
9
 
@@ -40,7 +40,7 @@ RSpec guard can be adapted to all kinds of projects.
40
40
  ### Standard RubyGem project
41
41
 
42
42
  ``` ruby
43
- guard 'rspec' do
43
+ guard :rspec do
44
44
  watch(%r{^spec/.+_spec\.rb$})
45
45
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
46
46
  watch('spec/spec_helper.rb') { "spec" }
@@ -50,7 +50,7 @@ end
50
50
  ### Typical Rails app
51
51
 
52
52
  ``` ruby
53
- guard 'rspec' do
53
+ guard :rspec do
54
54
  watch('spec/spec_helper.rb') { "spec" }
55
55
  watch('config/routes.rb') { "spec/routing" }
56
56
  watch('app/controllers/application_controller.rb') { "spec/controllers" }
@@ -113,6 +113,12 @@ guard 'rspec', :parallel => true, :parallel_cli => '-n 2' do
113
113
  # ...
114
114
  end
115
115
  ```
116
+ [Foreman](https://github.com/ddollar/foreman) is supported, but you must enable it:
117
+ ``` ruby
118
+ guard 'rspec', :foreman => true do
119
+ # ...
120
+ end
121
+ ```
116
122
 
117
123
  Former `:color`, `:drb`, `:fail_fast` and `:formatter` options are deprecated and no longer have effect.
118
124
 
@@ -124,15 +130,16 @@ Former `:color`, `:drb`, `:fail_fast` and `:formatter` options are deprecated an
124
130
  :binstubs => true # use "bin/rspec" to run the RSpec command (takes precedence over :bundle), default: false
125
131
  :rvm => ['1.8.7', '1.9.2'] # directly run your specs on multiple Rubies, default: nil
126
132
  :notification => false # display Growl (or Libnotify) notification after the specs are done running, default: true
127
- :all_after_pass => false # run all specs after changed specs pass, default: true
128
- :all_on_start => false # run all the specs at startup, default: true
129
- :keep_failed => false # keep failed specs until they pass, default: true
133
+ :all_after_pass => true # run all specs after changed specs pass, default: false
134
+ :all_on_start => true # run all the specs at startup, default: false
135
+ :keep_failed => true # keep failed specs until they pass, default: false
130
136
  :run_all => { :cli => "-p" } # cli arguments to use when running all specs, default: same as :cli
131
137
  :spec_paths => ["spec"] # specify an array of paths that contain spec files
132
138
  :exclude => "spec/foo/**/*" # exclude files based on glob
133
139
  :spring => true # enable spring support; default: false
134
140
  :turnip => true # enable turnip support; default: false
135
141
  :zeus => true # enable zeus support; default: false
142
+ :foreman => true # enable foreman support; default: false
136
143
  :focus_on_failed => false # focus on the first 10 failed specs first, rerun till they pass
137
144
  :parallel => true # run all specs in parallel using [ParallelTests](https://github.com/grosser/parallel_tests) gem, default: false
138
145
  :parallel_cli => "-n 2" # pass arbitrary Parallel Tests arguments, default: ""
data/lib/guard/rspec.rb CHANGED
@@ -12,9 +12,9 @@ module Guard
12
12
  super
13
13
  @options = {
14
14
  :focus_on_failed => false,
15
- :all_after_pass => true,
16
- :all_on_start => true,
17
- :keep_failed => true,
15
+ :all_after_pass => false,
16
+ :all_on_start => false,
17
+ :keep_failed => false,
18
18
  :spec_paths => ["spec"],
19
19
  :run_all => {}
20
20
  }.merge(options)
@@ -61,9 +61,9 @@ module Guard
61
61
  if single_spec && @inspector.clean([single_spec]).length == 1
62
62
  failed_specs = failed_specs.select{|p| p.include? single_spec}
63
63
  end
64
-
64
+
65
65
  if failed_specs.any?
66
- # some sane limit, stuff will explode if all tests fail
66
+ # some sane limit, stuff will explode if all tests fail
67
67
  # ... cap at 10
68
68
 
69
69
  paths = failed_specs[0..10]
@@ -118,7 +118,7 @@ module Guard
118
118
 
119
119
  def add_failed(paths)
120
120
  if @options[:keep_failed]
121
- @failed_paths += paths
121
+ @failed_paths += paths
122
122
  @failed_paths.uniq!
123
123
  end
124
124
  end
@@ -2,23 +2,17 @@ module Guard
2
2
  class RSpec
3
3
  class Inspector
4
4
 
5
- def initialize(options = {})
6
- self.excluded = options[:exclude]
7
- self.spec_paths = options[:spec_paths]
8
- end
5
+ attr_accessor :excluded, :spec_paths
9
6
 
10
- def excluded
11
- @excluded || []
7
+ def initialize(options = {})
8
+ self.excluded = options.fetch(:exclude, [])
9
+ self.spec_paths = options.fetch(:spec_paths, [])
12
10
  end
13
11
 
14
12
  def excluded=(pattern)
15
13
  @excluded = Dir[pattern.to_s]
16
14
  end
17
15
 
18
- def spec_paths
19
- @spec_paths || []
20
- end
21
-
22
16
  def spec_paths=(paths)
23
17
  @spec_paths = Array(paths)
24
18
  end
@@ -19,15 +19,20 @@ module Guard
19
19
  :notification => true,
20
20
  :spring => false,
21
21
  :turnip => false,
22
- :zeus => false
22
+ :zeus => false,
23
+ :foreman => false
23
24
  }.merge(options)
24
25
 
25
26
  unless ENV['SPEC_OPTS'].nil?
26
27
  UI.warning "The SPEC_OPTS environment variable is present. This can conflict with guard-rspec, particularly notifications."
27
28
  end
28
29
 
29
- if @options[:bundler] && @options[:zeus] && !@options[:binstubs]
30
- UI.warning "Running Zeus within bundler is waste of time. It is recommended to set bundler option to false, when using zeus."
30
+ if options[:bundler] && !options[:binstubs]
31
+ if options[:zeus]
32
+ UI.warning "Running Zeus within bundler is waste of time. Bundler option is set to false, when using Zeus."
33
+ elsif options[:spring]
34
+ UI.warning "Running Spring within bundler is waste of time. Bundler option is set to false, when using Spring."
35
+ end
31
36
  end
32
37
 
33
38
  deprecations_warnings
@@ -78,20 +83,20 @@ module Guard
78
83
  private
79
84
 
80
85
  def environment_variables
81
- return if @options[:env].nil?
82
- "export " + @options[:env].map {|key, value| "#{key}=#{value}"}.join(' ') + ';'
86
+ return if options[:env].nil?
87
+ "export " + options[:env].map {|key, value| "#{key}=#{value}"}.join(' ') + ';'
83
88
  end
84
89
 
85
90
  def rspec_arguments(paths, options)
86
91
  arg_parts = []
87
92
  arg_parts << options[:cli]
88
- if @options[:notification]
93
+ if options[:notification]
89
94
  arg_parts << parsed_or_default_formatter unless options[:cli] =~ formatter_regex
90
95
  arg_parts << "-r #{File.dirname(__FILE__)}/formatter.rb"
91
96
  arg_parts << "-f Guard::RSpec::Formatter"
92
97
  end
93
98
  arg_parts << "--failure-exit-code #{FAILURE_EXIT_CODE}" if failure_exit_code_supported?
94
- arg_parts << "-r turnip/rspec" if @options[:turnip]
99
+ arg_parts << "-r turnip/rspec" if options[:turnip]
95
100
  arg_parts << paths.join(' ')
96
101
 
97
102
  arg_parts.compact.join(' ')
@@ -109,7 +114,8 @@ module Guard
109
114
  def rspec_command(paths, options)
110
115
  cmd_parts = []
111
116
  cmd_parts << environment_variables
112
- cmd_parts << "rvm #{@options[:rvm].join(',')} exec" if @options[:rvm].respond_to?(:join)
117
+ cmd_parts << "rvm #{options[:rvm].join(',')} exec" if options[:rvm].respond_to?(:join)
118
+ cmd_parts << bin_command('foreman run') if foreman?
113
119
  cmd_parts << "bundle exec" if bundle_exec?
114
120
  cmd_parts << executable_prefix if executable_prefix?
115
121
  cmd_parts << rspec_executable
@@ -121,7 +127,7 @@ module Guard
121
127
  def run_via_shell(paths, options)
122
128
  success = system(rspec_command(paths, options))
123
129
 
124
- if @options[:notification] && !drb_used? && !success && rspec_command_exited_with_an_exception?
130
+ if options[:notification] && !drb_used? && !success && rspec_command_exited_with_an_exception?
125
131
  Notifier.notify("Failed", :title => "RSpec results", :image => :failed, :priority => 2)
126
132
  end
127
133
 
@@ -152,7 +158,7 @@ module Guard
152
158
  end
153
159
 
154
160
  def drb_used?
155
- @drb_used ||= @options[:cli] && @options[:cli].include?('--drb')
161
+ @drb_used ||= options[:cli] && options[:cli].include?('--drb')
156
162
  end
157
163
 
158
164
  # W we can avoid loading a large chunk of rspec
@@ -180,7 +186,7 @@ module Guard
180
186
  end
181
187
 
182
188
  def bundler_allowed?
183
- @bundler_allowed ||= File.exist?("#{Dir.pwd}/Gemfile")
189
+ @bundler_allowed ||= (File.exist?("#{Dir.pwd}/Gemfile") && !zeus? && !spring?)
184
190
  end
185
191
 
186
192
  def bundler?
@@ -192,35 +198,39 @@ module Guard
192
198
  end
193
199
 
194
200
  def executable_prefix?
195
- zeus? || spring?
201
+ zeus? || spring? || foreman?
196
202
  end
197
203
 
198
204
  def executable_prefix
199
- prefix = binstubs? ? "#{binstubs}/" : ''
200
205
  if zeus?
201
- prefix << 'zeus'
206
+ bin_command('zeus')
202
207
  elsif spring? && !parallel?
203
- prefix << 'spring'
204
- else
205
- prefix = nil
208
+ bin_command('spring')
206
209
  end
207
- return prefix
208
210
  end
209
211
 
210
212
  def zeus?
211
- @options[:zeus] || false
213
+ options.fetch(:zeus, false)
212
214
  end
213
215
 
214
216
  def parallel?
215
- @options[:parallel] || false
217
+ options.fetch(:parallel, false)
216
218
  end
217
219
 
218
220
  def spring?
219
- @options[:spring] || false
221
+ options.fetch(:spring, false)
222
+ end
223
+
224
+ def foreman?
225
+ options.fetch(:foreman, false)
220
226
  end
221
227
 
222
228
  def binstubs
223
- @options[:binstubs] == true ? "bin" : @options[:binstubs]
229
+ options[:binstubs] == true ? "bin" : options[:binstubs]
230
+ end
231
+
232
+ def bin_command(command)
233
+ binstubs? ? "#{binstubs}/#{command}" : command
224
234
  end
225
235
 
226
236
  def bundle_exec?
@@ -230,12 +240,12 @@ module Guard
230
240
  def deprecations_warnings
231
241
  [:color, :drb, [:fail_fast, "fail-fast"], [:formatter, "format"]].each do |option|
232
242
  key, value = option.is_a?(Array) ? option : [option, option.to_s]
233
- if @options.key?(key)
243
+ if options.key?(key)
234
244
  @options.delete(key)
235
245
  UI.info %{DEPRECATION WARNING: The :#{key} option is deprecated. Pass standard command line argument "--#{value}" to RSpec with the :cli option.}
236
246
  end
237
247
  end
238
- if @options.key?(:version)
248
+ if options.key?(:version)
239
249
  @options.delete(:version)
240
250
  UI.info %{DEPRECATION WARNING: The :version option is deprecated. Only RSpec 2 is now supported.}
241
251
  end
@@ -1,4 +1,4 @@
1
- guard 'rspec' do
1
+ guard :rspec do
2
2
  watch(%r{^spec/.+_spec\.rb$})
3
3
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
4
4
  watch('spec/spec_helper.rb') { "spec" }
@@ -1,5 +1,5 @@
1
1
  module Guard
2
2
  module RSpecVersion
3
- VERSION = "2.6.0"
3
+ VERSION = "3.0.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thibaud Guillaume-Gentil
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-30 00:00:00.000000000 Z
11
+ date: 2013-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: guard