parallelized_specs 0.3.30 → 0.3.31

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -12,7 +12,7 @@ begin
12
12
  gem.email = "jake@instructure.com"
13
13
  gem.homepage = "http://github.com/jakesorce/#{gem.name}"
14
14
  gem.authors = "Jake Sorce, Bryan Madsen, Shawn Meredith"
15
- gem.version = "0.3.30"
15
+ gem.version = "0.3.31"
16
16
  end
17
17
  Jeweler::GemcutterTasks.new
18
18
  rescue LoadError
@@ -269,49 +269,61 @@ class ParallelizedSpecs
269
269
 
270
270
  def self.rerun()
271
271
  rerun_failed_examples = false
272
- filename = "tmp/parallel_log/rspec.failures"
272
+ rerun_specs = []
273
+ filename = "#{RAILS_ROOT}/tmp/parallel_log/rspec.failures"
273
274
 
274
- if FileTest.exist?("#{RAILS_ROOT}/#{filename}")
275
- @error_count = %x{wc -l "#{RAILS_ROOT}/#{filename}"}.match(/\d/).to_s #counts the number of lines in the file
275
+ @error_count = %x{wc -l "#{filename}"}.match(/\d/).to_s #counts the number of lines in the file
276
+ if @error_count.to_i > 1 && @error_count.to_i < 10
276
277
 
277
- if @error_count.to_i > 1 && @error_count.to_i < 10
278
- puts "rerunning #{@error_count} examples again"
279
- @rerun_failures ||= []
280
- @rerun_passes ||= []
281
-
282
- File.open("#{RAILS_ROOT}/#{filename}").each_line do |l|
283
- rerun_failed_examples = true
284
- puts "#{l} will be ran and marked as a success if it passes"
285
- result = %x[bundle exec rake spec #{l}]
286
- rerun_status = result.match(/FAILED/).to_s
278
+ File.open(filename).each_line do |line|
279
+ if line =~ /spec\/selenium\/helpers/ || line =~ /spec\/selenium\/shared/
280
+ abort "shared specs currently are not eligiable for reruns, marking build as a failure"
281
+ else
282
+ rerun_specs.push line
283
+ end
284
+ end
287
285
 
288
- if rerun_status == "FAILED"
286
+ puts "rerunning #{@error_count} examples again"
287
+ @rerun_failures ||= []
288
+ @rerun_passes ||= []
289
+
290
+ rerun_specs.each do |l|
291
+ rerun_failed_examples = true
292
+ puts "#{l} will be ran and marked as a success if it passes"
293
+ result = %x[bundle exec rake spec #{l}]
294
+ #can't just use exit code, if specs fail to start it will pass or if a spec isn't found, and sometimes rspec 1 exit codes aren't right
295
+ rerun_status = result.match(/1 example, \d failure/).to_s
296
+
297
+ case rerun_status
298
+ when ""
299
+ abort "the spec failed to run on the rerun try, marking build as failed"
300
+ when "1 example, 1 failure"
289
301
  puts "the example failed again"
290
302
  @rerun_failures << l
291
- rerun_status = ""
292
- else
303
+ when "1 example, 0 failure"
293
304
  puts "the example passed and is being marked as a success"
294
305
  @rerun_passes << l
295
- rerun_status = ""
296
- end
297
- end #end file loop
298
- else
299
- puts "#{@error_count} is to many errors to rerun the build will be marked as a failure"
306
+ else
307
+ abort "unexpected outcome on the rerun, marking build as a failure"
308
+ end
309
+ rerun_status = ""
310
+ end #end file loop
311
+ else
312
+ if @error_count == 0
313
+ abort "#{@error_count} errors, but the build failed, errors were not written to the file or there is something else wrong, marking build as a failure"
314
+ elsif @error_count > 10
315
+ abort "#{error_count} errors are to many to rerun, marking the build as a failure"
300
316
  end
317
+ end
301
318
 
302
- if rerun_failed_examples
303
- if @rerun_failures.count > 0
304
- puts "1 or more examples failed on rerun, rspec will mark this build as a failure"
305
- abort "some specs failed on rerun"
306
- elsif @rerun_passes.count >= @error_count.to_i
307
- puts "all rerun examples passed, rspec will mark this build as passed"
308
- else
309
- puts "something unexpected happened not safe to mark the build as passed."
310
- abort "unexpected situation on rerun, marking build as failure"
311
- end
319
+ if rerun_failed_examples
320
+ if @rerun_failures.count > 0
321
+ abort "some specs failed on rerun, the build will be marked as failed"
322
+ elsif @rerun_passes.count >= @error_count.to_i
323
+ puts "all rerun examples passed, rspec will mark this build as passed"
324
+ else
325
+ abort "unexpected situation on rerun, marking build as failure"
312
326
  end
313
- else
314
- "No errors file was found, marking build as a success"
315
327
  end
316
328
  end
317
329
  end
@@ -6,8 +6,6 @@ module RSpec
6
6
  FILENAME = "#{RAILS_ROOT}/tmp/parallel_log/rspec.failures"
7
7
 
8
8
  def example_failed(example, counter, failure)
9
- @rerun_examples ||= []
10
- @rerun_examples << failure
11
9
  f = File.new(FILENAME, "a+")
12
10
  f.puts retry_command(example)
13
11
  end
@@ -32,9 +30,5 @@ module RSpec
32
30
  spec_name = example.description
33
31
  "SPEC=#{Dir.pwd}/#{spec_file} SPEC_OPTS='-e \"#{spec_name}\"'"
34
32
  end
35
-
36
- def close()
37
- @output.close if (IO === @output) & (@output != $stdout)
38
- end
39
33
  end
40
34
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "parallelized_specs"
8
- s.version = "0.3.30"
8
+ s.version = "0.3.31"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jake Sorce, Bryan Madsen, Shawn Meredith"]
12
- s.date = "2012-11-02"
12
+ s.date = "2012-11-05"
13
13
  s.email = "jake@instructure.com"
14
14
  s.files = [
15
15
  "Gemfile",
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parallelized_specs
3
3
  version: !ruby/object:Gem::Version
4
- hash: 47
4
+ hash: 45
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 30
10
- version: 0.3.30
9
+ - 31
10
+ version: 0.3.31
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jake Sorce, Bryan Madsen, Shawn Meredith
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-11-02 00:00:00 Z
18
+ date: 2012-11-05 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: parallel