parallelized_specs 0.3.91 → 0.3.92
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.
- data/Rakefile +1 -1
- data/lib/parallelized_specs.rb +33 -20
- data/lib/parallelized_specs/failures_rerun_logger.rb +2 -2
- data/parallelized_specs.gemspec +2 -2
- metadata +4 -4
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.
|
15
|
+
gem.version = "0.3.92"
|
16
16
|
end
|
17
17
|
Jeweler::GemcutterTasks.new
|
18
18
|
rescue LoadError
|
data/lib/parallelized_specs.rb
CHANGED
@@ -293,11 +293,33 @@ class ParallelizedSpecs
|
|
293
293
|
end
|
294
294
|
end
|
295
295
|
|
296
|
+
def update_rerun_summary(result, file)
|
297
|
+
File.open(file, 'a+') { |f| f.puts(result) }
|
298
|
+
end
|
299
|
+
|
300
|
+
def parse_result(result)
|
301
|
+
puts "this is the result\n#{result}"
|
302
|
+
#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
|
303
|
+
rerun_status = result.scan(/\d*[^\D]\d*/).to_a
|
304
|
+
puts "this is the rerun_status\n#{rerun_status}"
|
305
|
+
example_index = rerun_status.length - 2
|
306
|
+
@examples = rerun_status[example_index].to_i
|
307
|
+
@failures = rerun_status.last.to_i
|
308
|
+
end
|
309
|
+
|
310
|
+
def rerun_spec(spec)
|
311
|
+
puts "#{spec} will be ran and marked as a success if it passes"
|
312
|
+
result = %x[DISPLAY=:99 bundle exec rake spec #{spec}]
|
313
|
+
parse_result(result)
|
314
|
+
result
|
315
|
+
end
|
316
|
+
|
296
317
|
def self.rerun()
|
297
318
|
puts "beginning the failed specs rerun process"
|
298
319
|
rerun_failed_examples = false
|
299
320
|
rerun_specs = []
|
300
321
|
filename = "#{RAILS_ROOT}/tmp/parallel_log/rspec.failures"
|
322
|
+
failure_summary = "#{RAILS_ROOT}/tmp/parallel_log/rerun_failure_summary.log"
|
301
323
|
|
302
324
|
@error_count = %x{wc -l "#{filename}"}.match(/\d*[^\D]/).to_s #counts the number of lines in the file
|
303
325
|
@error_count = @error_count.to_i
|
@@ -310,36 +332,26 @@ class ParallelizedSpecs
|
|
310
332
|
else
|
311
333
|
rerun_specs.push line
|
312
334
|
end
|
335
|
+
rerun_failed_examples = true
|
336
|
+
puts "failed specs will be rerun\n rerunning #{@error_count} examples"
|
337
|
+
@rerun_failures ||= []
|
338
|
+
@rerun_passes ||= []
|
313
339
|
end
|
314
340
|
|
315
|
-
puts "failed specs will be rerun\n rerunning #{@error_count} examples"
|
316
|
-
@rerun_failures ||= []
|
317
|
-
@rerun_passes ||= []
|
318
|
-
|
319
341
|
rerun_specs.each do |l|
|
320
|
-
|
321
|
-
puts "#{l} will be ran and marked as a success if it passes"
|
322
|
-
|
323
|
-
result = %x[DISPLAY=:99 bundle exec rake spec #{l}]
|
324
|
-
|
325
|
-
|
326
|
-
puts "this is the result\n#{result}"
|
327
|
-
#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
|
328
|
-
rerun_status = result.scan(/\d*[^\D]\d*/).to_a
|
329
|
-
puts "this is the rerun_status\n#{rerun_status}"
|
330
|
-
|
331
|
-
example_index = rerun_status.length - 2
|
332
|
-
@examples = rerun_status[example_index].to_i
|
333
|
-
@failures = rerun_status.last.to_i
|
342
|
+
result = rerun_spec(l)
|
334
343
|
|
335
344
|
if @examples == 0 and @failures == 0
|
345
|
+
update_rerun_summary(result, failure_summary)
|
336
346
|
abort "spec didn't actually run, ending rerun process early"
|
337
347
|
end
|
338
348
|
|
339
349
|
if @examples == 0 #when specs fail to run it exits with 0 examples, 0 failures and won't be matched by the previous regex
|
350
|
+
update_rerun_summary(result, failure_summary)
|
340
351
|
abort "the spec failed to run on the rerun try, marking build as failed"
|
341
352
|
elsif @failures > 0
|
342
353
|
puts "the example failed again"
|
354
|
+
update_rerun_summary(result, failure_summary)
|
343
355
|
@rerun_failures << l
|
344
356
|
elsif @examples > 0 && @failures == 0
|
345
357
|
puts "the example passed and is being marked as a success"
|
@@ -347,7 +359,6 @@ class ParallelizedSpecs
|
|
347
359
|
else
|
348
360
|
abort "unexpected outcome on the rerun, marking build as a failure"
|
349
361
|
end
|
350
|
-
rerun_status = ""
|
351
362
|
end #end file loop
|
352
363
|
|
353
364
|
when @error_count == 0
|
@@ -361,6 +372,9 @@ class ParallelizedSpecs
|
|
361
372
|
|
362
373
|
if rerun_failed_examples
|
363
374
|
if @rerun_failures.count > 0
|
375
|
+
File.open(failure_summary).each_line do |line|
|
376
|
+
puts.line
|
377
|
+
end
|
364
378
|
abort "some specs failed on rerun, the build will be marked as failed"
|
365
379
|
elsif @rerun_passes.count >= @error_count
|
366
380
|
puts "all rerun examples passed, rspec will mark this build as passed"
|
@@ -369,6 +383,5 @@ class ParallelizedSpecs
|
|
369
383
|
end
|
370
384
|
end
|
371
385
|
end
|
372
|
-
|
373
386
|
end
|
374
387
|
|
@@ -27,11 +27,11 @@ module RSpec
|
|
27
27
|
end
|
28
28
|
|
29
29
|
|
30
|
-
def retry_command(example)
|
30
|
+
def retry_command(example, failure)
|
31
31
|
puts "Storing #{example_group.location} for a post build rerun attempt"
|
32
32
|
spec_file = example_group.location.match(/.*rb/).to_s
|
33
33
|
spec_name = example.description
|
34
|
-
"SPEC=#{spec_file} SPEC_OPTS=\"-e \\\"#{spec_name}\\\"\""
|
34
|
+
"SPEC=#{spec_file} SPEC_OPTS=\"-e \\\"#{spec_name}\\\"\"* #{failure}"
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
data/parallelized_specs.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "parallelized_specs"
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.92"
|
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 = "2013-01-
|
12
|
+
s.date = "2013-01-26"
|
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:
|
4
|
+
hash: 171
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 92
|
10
|
+
version: 0.3.92
|
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: 2013-01-
|
18
|
+
date: 2013-01-26 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: parallel
|