DEV: Use parallel-compatible formatter for logging autospec failures

The old method would cause the parallel processes to overwrite each other. The parallel formatter allows multiple processes to write to the same file.
This commit is contained in:
David Taylor 2019-04-02 15:33:26 +01:00
parent a2c6683e3b
commit 02ed5e78e1
2 changed files with 22 additions and 2 deletions

View File

@ -1,4 +1,5 @@
require "rspec/core/formatters/base_text_formatter"
require "parallel_tests/rspec/logger_base"
module Autospec; end
@ -43,3 +44,18 @@ class Autospec::Formatter < RSpec::Core::Formatters::BaseTextFormatter
end
end
class Autospec::ParallelFormatter < ParallelTests::RSpec::LoggerBase
RSpec::Core::Formatters.register self, :example_failed
def message(*args);end
def dump_failures(*args);end
def dump_summary(*args);end
def dump_pending(*args);end
def seed(*args);end
def example_failed(notification)
output.puts notification.example.metadata[:location] + " "
end
end

View File

@ -14,14 +14,18 @@ module Autospec
self.abort
end
# we use our custom rspec formatter
args = ["-r", "#{File.dirname(__FILE__)}/formatter.rb",
"-f", "Autospec::Formatter"]
args = ["-r", "#{File.dirname(__FILE__)}/formatter.rb"]
command = begin
if ENV["PARALLEL_SPEC"] &&
!specs.split.any? { |s| puts s; s =~ /\:/ } # Parallel spec can't run specific groups
args += ["-f", "progress", "-f", "Autospec::ParallelFormatter", "-o", "./tmp/rspec_result"]
args += ["-f", "ParallelTests::RSpec::RuntimeLogger", "-o", "./tmp/parallel_runtime_rspec.log"] if specs == "spec"
"parallel_rspec -- #{args.join(" ")} -- #{specs.split.join(" ")}"
else
args += ["-f", "Autospec::Formatter"]
"bin/rspec #{args.join(" ")} #{specs.split.join(" ")}"
end
end