summaryrefslogtreecommitdiff
path: root/spec/default.mspec
diff options
context:
space:
mode:
Diffstat (limited to 'spec/default.mspec')
-rw-r--r--spec/default.mspec45
1 files changed, 14 insertions, 31 deletions
diff --git a/spec/default.mspec b/spec/default.mspec
index cae5fa374f..d756dc31ff 100644
--- a/spec/default.mspec
+++ b/spec/default.mspec
@@ -9,6 +9,7 @@ ENV["CHECK_CONSTANT_LEAKS"] ||= "true"
require "./rbconfig" unless defined?(RbConfig)
require_relative "../tool/test-coverage" if ENV.key?("COVERAGE")
+require_relative "../tool/lib/test/jobserver"
load File.dirname(__FILE__) + '/ruby/default.mspec'
OBJDIR = File.expand_path("spec/ruby/optional/capi/ext") unless defined?(OBJDIR)
class MSpecScript
@@ -34,7 +35,9 @@ class MSpecScript
# Disable to run for bundled gems in test-spec
set :bundled_gems, (File.readlines("#{srcdir}/gems/bundled_gems").map do |line|
next if /^\s*(?:#|$)/ =~ line
- "#{srcdir}/spec/ruby/library/" + line.split.first
+ gem = line.split.first
+ gem = "openstruct" if gem == "ostruct"
+ "#{srcdir}/spec/ruby/library/#{gem}"
end.compact)
set :stdlibs, Dir.glob("#{srcdir}/spec/ruby/library/*")
set :library, get(:stdlibs).to_a - get(:bundled_gems).to_a
@@ -48,34 +51,10 @@ end
module MSpecScript::JobServer
def cores(max = 1)
- if max > 1 and /(?:\A|\s)--jobserver-(?:auth|fds)=(\d+),(\d+)/ =~ ENV["MAKEFLAGS"]
- cores = 1
- begin
- r = IO.for_fd($1.to_i(10), "rb", autoclose: false)
- w = IO.for_fd($2.to_i(10), "wb", autoclose: false)
- jobtokens = r.read_nonblock(max - 1)
- cores = jobtokens.size
- if cores > 0
- cores += 1
- jobserver = w
- w = nil
- at_exit {
- jobserver.print(jobtokens)
- jobserver.close
- }
- MSpecScript::JobServer.module_eval do
- remove_method :cores
- define_method(:cores) do
- cores
- end
- end
- return cores
- end
- rescue Errno::EBADF
- ensure
- r&.close
- w&.close
- end
+ MSpecScript::JobServer.remove_method :cores
+ if cores = Test::JobServer.max_jobs(max)
+ MSpecScript::JobServer.define_method(:cores) { cores }
+ return cores
end
super
end
@@ -90,6 +69,7 @@ require 'mspec/runner/formatters/dotted'
class DottedFormatter
prepend Module.new {
BASE = __dir__ + "/ruby/" unless defined?(BASE)
+ COUNT_WIDTH = 6 unless defined?(COUNT_WIDTH)
def initialize(out = nil)
super
@@ -97,7 +77,10 @@ class DottedFormatter
@columns = nil
else
columns = ENV["COLUMNS"]&.to_i
- @columns = columns&.nonzero? || 80
+ columns = 80 unless columns&.nonzero?
+ w = COUNT_WIDTH + 1
+ round = 20
+ @columns = (columns - w) / round * round + w
end
@dotted = 0
@loaded = false
@@ -113,7 +96,7 @@ class DottedFormatter
def after(*)
if @columns
if @dotted == 0
- s = sprintf("%6d ", @count)
+ s = sprintf("%*d ", COUNT_WIDTH, @count)
print(s)
@dotted += s.size
end