diff options
Diffstat (limited to 'spec/default.mspec')
| -rw-r--r-- | spec/default.mspec | 61 |
1 files changed, 27 insertions, 34 deletions
diff --git a/spec/default.mspec b/spec/default.mspec index 3b5024f0c6..d756dc31ff 100644 --- a/spec/default.mspec +++ b/spec/default.mspec @@ -4,13 +4,14 @@ if (opt = ENV["RUBYOPT"]) and (opt = opt.dup).sub!(/(?:\A|\s)-w(?=\z|\s)/, '') ENV["RUBYOPT"] = opt end -# Enabld leakcheckers by ruby/mspec -ENV["CHECK_LEAKS"] ||= "true" +# Enable constant leak checks by ruby/mspec +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") +OBJDIR = File.expand_path("spec/ruby/optional/capi/ext") unless defined?(OBJDIR) class MSpecScript @testing_ruby = true @@ -31,6 +32,18 @@ class MSpecScript ] end + # 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 + 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 + + set :files, get(:command_line) + get(:language) + get(:core) + get(:library) + get(:security) + get(:optional) + if ENV.key?("COVERAGE") set :excludes, ["Coverage"] end @@ -38,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 @@ -79,7 +68,8 @@ require 'mspec/runner/formatters/dotted' class DottedFormatter prepend Module.new { - BASE = __dir__ + "/ruby/" + BASE = __dir__ + "/ruby/" unless defined?(BASE) + COUNT_WIDTH = 6 unless defined?(COUNT_WIDTH) def initialize(out = nil) super @@ -87,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 @@ -103,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 |
