mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 09:42:07 +08:00
5897709a90
Using the runtime information, we will be able to more efficiently group the test files across the test processes hence leading to better utilization of resources.
95 lines
2.3 KiB
Ruby
Executable File
95 lines
2.3 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
# frozen_string_literal: true
|
|
|
|
ENV["RAILS_ENV"] ||= "test"
|
|
|
|
require "./lib/turbo_tests"
|
|
require "optparse"
|
|
|
|
requires = []
|
|
formatters = []
|
|
verbose = false
|
|
fail_fast = nil
|
|
seed = rand(2**16)
|
|
profile = false
|
|
profile_print_slowest_examples_count = 10
|
|
use_runtime_info = nil
|
|
|
|
OptionParser
|
|
.new do |opts|
|
|
opts.on("-r", "--require PATH", "Require a file.") { |filename| requires << filename }
|
|
|
|
opts.on("-f", "--format FORMATTER", "Choose a formatter.") do |name|
|
|
formatters << { name: name, outputs: [] }
|
|
end
|
|
|
|
opts.on("-o", "--out FILE", "Write output to a file instead of $stdout") do |filename|
|
|
formatters << { name: "progress", outputs: [] } if formatters.empty?
|
|
formatters.last[:outputs] << filename
|
|
end
|
|
|
|
opts.on("-v", "--verbose", "More output") { verbose = true }
|
|
|
|
opts.on(
|
|
"-p",
|
|
"--profile=[COUNT]",
|
|
"Benchmark the runtime of each example and list the slowest examples (default: 10)",
|
|
) do |count|
|
|
profile = true
|
|
profile_print_slowest_examples_count = count.to_i if count
|
|
end
|
|
|
|
opts.on("--fail-fast=[N]") do |n|
|
|
n =
|
|
begin
|
|
Integer(n)
|
|
rescue StandardError
|
|
nil
|
|
end
|
|
fail_fast = (n.nil? || n < 1) ? 1 : n
|
|
end
|
|
|
|
opts.on("--seed SEED", "The seed for the random order") { |s| seed = s.to_i }
|
|
|
|
opts.on("--use-runtime-info", "Use runtime info for tests group splitting") do
|
|
use_runtime_info = true
|
|
end
|
|
end
|
|
.parse!(ARGV)
|
|
|
|
requires.each { |f| require(f) }
|
|
|
|
formatters << { name: "progress", outputs: [] } if formatters.empty?
|
|
|
|
formatters.each { |formatter| formatter[:outputs] << "-" if formatter[:outputs].empty? }
|
|
|
|
if ARGV.empty?
|
|
files = TurboTests::Runner.default_spec_folders
|
|
use_runtime_info = true if use_runtime_info.nil?
|
|
else
|
|
files = ARGV
|
|
use_runtime_info = false if use_runtime_info.nil?
|
|
end
|
|
|
|
puts "::group::Run turbo_rspec" if ENV["GITHUB_ACTIONS"]
|
|
puts "Running turbo_rspec (seed: #{seed}) using files in: #{files}"
|
|
puts "::endgroup::" if ENV["GITHUB_ACTIONS"]
|
|
|
|
success =
|
|
TurboTests::Runner.run(
|
|
formatters: formatters,
|
|
files: files,
|
|
verbose: verbose,
|
|
fail_fast: fail_fast,
|
|
use_runtime_info: use_runtime_info,
|
|
seed: seed.to_s,
|
|
profile:,
|
|
profile_print_slowest_examples_count:,
|
|
)
|
|
|
|
if success
|
|
exit 0
|
|
else
|
|
exit 1
|
|
end
|