Skip to content

Commit 20535f8

Browse files
author
Bryan Madsen
committed
create a text log of failed parallel tests
Change-Id: Ia1681235bb8a9f7c9f88da9b67c0b739b480e285 Reviewed-on: https://gerrit.instructure.com/5929 Tested-by: Hudson <hudson@instructure.com> Reviewed-by: Brian Palmer <brianp@instructure.com>
1 parent a13ae7c commit 20535f8

4 files changed

Lines changed: 49 additions & 11 deletions

File tree

script/spec

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ else
77
require File.expand_path(File.dirname(__FILE__) + "/../config/environment") unless defined?(RAILS_ROOT)
88
end
99
require 'spec/autorun'
10-
require 'vendor/plugins/parallel_tests/spec_summary_logger.rb' if ENV['TEST_ENV_NUMBER'] != nil
10+
require 'vendor/plugins/parallel_tests/spec_error_logger.rb' if ENV['TEST_ENV_NUMBER'] != nil
11+
require 'vendor/plugins/parallel_tests/spec_error_count_logger.rb' if ENV['TEST_ENV_NUMBER'] != nil
1112
exit ::Spec::Runner::CommandLine.run

vendor/plugins/parallel_tests/spec_summary_logger.rb renamed to vendor/plugins/parallel_tests/spec_error_count_logger.rb

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
require 'parallel_specs'
22
require File.join(File.dirname(__FILE__), 'spec_logger_base')
33

4-
class ParallelSpecs::SpecSummaryLogger < ParallelSpecs::SpecLoggerBase
4+
class ParallelSpecs::SpecErrorCountLogger < ParallelSpecs::SpecLoggerBase
55
def initialize(options, output=nil)
66
super
77
@passed_examples = []
@@ -27,12 +27,4 @@ def dump_summary(duration, example_count, failure_count, pending_count)
2727
end
2828
@output.flush
2929
end
30-
31-
def dump_failure(*args)
32-
lock_output do
33-
@output.print ''
34-
end
35-
@output.flush
36-
end
37-
3830
end
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
require 'parallel_specs'
2+
require File.join(File.dirname(__FILE__), 'spec_logger_base')
3+
4+
class ParallelSpecs::SpecErrorLogger < ParallelSpecs::SpecLoggerBase
5+
def initialize(options, output=nil)
6+
super
7+
@passed_examples = []
8+
@pending_examples = []
9+
@failed_examples = []
10+
end
11+
12+
def example_passed(example)
13+
@passed_examples << example
14+
end
15+
16+
def example_pending(*args)
17+
@pending_examples << args
18+
end
19+
20+
def example_failed(example, count, failure)
21+
@failed_examples << failure
22+
end
23+
24+
def dump_summary(duration, example_count, failure_count, pending_count)
25+
lock_output do
26+
env_test_number = ENV['TEST_ENV_NUMBER']
27+
env_test_number = 1 if ENV['TEST_ENV_NUMBER'].blank?
28+
@output.puts ""
29+
@output.puts ""
30+
@output.puts "FOR TEST EXECUTOR #{env_test_number}: #{@failed_examples.size} failed, #{@passed_examples.size} passed:"
31+
@failed_examples.each.with_index do | failure, i |
32+
@output.puts ""
33+
@output.puts "#{ i + 1 })"
34+
@output.puts failure.header
35+
unless failure.exception.nil?
36+
@output.puts failure.exception.to_s
37+
failure.exception.backtrace.each do | caller |
38+
@output.puts caller
39+
end
40+
end
41+
end
42+
end
43+
@output.flush
44+
end
45+
end

vendor/plugins/parallel_tests/spec_logger_base.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def initialize(options, output=nil)
1414
output ||= options # rspec 2 has output as first argument
1515

1616
if String === output
17-
FileUtils.mkdir_p(File.dirname(output+ENV['TEST_ENV_NUMBER']+'.log'))
17+
FileUtils.mkdir_p(File.dirname(output))
1818
File.open(output, 'w'){} # overwrite previous results
1919
@output = File.open(output, 'a')
2020
elsif File === output

0 commit comments

Comments
 (0)