mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 18:30:26 -06:00
02ed5e78e1
The old method would cause the parallel processes to overwrite each other. The parallel formatter allows multiple processes to write to the same file.
62 lines
1.5 KiB
Ruby
62 lines
1.5 KiB
Ruby
require "rspec/core/formatters/base_text_formatter"
|
|
require "parallel_tests/rspec/logger_base"
|
|
|
|
module Autospec; end
|
|
|
|
class Autospec::Formatter < RSpec::Core::Formatters::BaseTextFormatter
|
|
|
|
RSpec::Core::Formatters.register self, :example_passed, :example_pending, :example_failed, :start_dump
|
|
|
|
RSPEC_RESULT = "./tmp/rspec_result"
|
|
|
|
def initialize(output)
|
|
super
|
|
FileUtils.mkdir_p("tmp") unless Dir.exists?("tmp")
|
|
end
|
|
|
|
def start(example_count)
|
|
super
|
|
File.delete(RSPEC_RESULT) if File.exists?(RSPEC_RESULT)
|
|
@fail_file = File.open(RSPEC_RESULT, "w")
|
|
end
|
|
|
|
def example_passed(_notification)
|
|
output.print RSpec::Core::Formatters::ConsoleCodes.wrap('.', :success)
|
|
end
|
|
|
|
def example_pending(_notification)
|
|
output.print RSpec::Core::Formatters::ConsoleCodes.wrap('*', :pending)
|
|
end
|
|
|
|
def example_failed(notification)
|
|
output.print RSpec::Core::Formatters::ConsoleCodes.wrap('F', :failure)
|
|
@fail_file.puts(notification.example.metadata[:location] + " ")
|
|
@fail_file.flush
|
|
end
|
|
|
|
def start_dump(notification)
|
|
output.puts
|
|
end
|
|
|
|
def close(filename)
|
|
@fail_file.close
|
|
super(filename)
|
|
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
|
|
|