ruby/spec/default.mspec

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

122 строки
2.7 KiB
Plaintext
Исходник Обычный вид История

# -*- ruby -*-
$VERBOSE = false
if (opt = ENV["RUBYOPT"]) and (opt = opt.dup).sub!(/(?:\A|\s)-w(?=\z|\s)/, '')
ENV["RUBYOPT"] = opt
end
require "./rbconfig" unless defined?(RbConfig)
require_relative "../tool/test-coverage" if ENV.key?("COVERAGE")
load File.dirname(__FILE__) + '/ruby/default.mspec'
OBJDIR = File.expand_path("spec/ruby/optional/capi/ext")
class MSpecScript
@testing_ruby = true
builddir = Dir.pwd
srcdir = ENV['SRCDIR']
2021-10-18 04:13:15 +03:00
srcdir ||= File.read("Makefile", encoding: "US-ASCII")[/^\s*srcdir\s*=\s*(.+)/i, 1] rescue nil
config = RbConfig::CONFIG
# The default implementation to run the specs.
set :target, File.join(builddir, "miniruby#{config['exeext']}")
set :prefix, File.expand_path('ruby', File.dirname(__FILE__))
if srcdir
srcdir = File.expand_path(srcdir)
set :flags, %W[
-I#{srcdir}/lib
#{srcdir}/tool/runruby.rb --archdir=#{builddir} --extout=#{config['EXTOUT']}
--
]
end
if ENV.key?("COVERAGE")
set :excludes, ["Coverage"]
end
end
module MSpecScript::JobServer
def cores(max = 1)
2022-11-07 09:51:04 +03:00
if max > 1 and /(?:\A|\s)--jobserver-(?:auth|fds)=(\d+),(\d+)/ =~ ENV["MAKEFLAGS"]
cores = 1
begin
2022-11-07 09:51:04 +03:00
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
end
super
end
end
class MSpecScript
prepend JobServer
end
2021-11-26 16:31:38 +03:00
require 'mspec/runner/formatters/dotted'
class DottedFormatter
prepend Module.new {
BASE = __dir__ + "/ruby/"
def initialize(out = nil)
super
if out
@columns = nil
else
columns = ENV["COLUMNS"]
@columns = columns ? columns.to_i : 80
end
@dotted = 0
@loaded = false
end
def register
super
MSpec.register :load, self
MSpec.register :unload, self
end
def after(*)
super
if !@loaded and @columns and (@dotted += 1) >= @columns
print "\n"
@dotted = 0
end
end
def load(*)
2021-11-27 12:57:29 +03:00
file = MSpec.file || MSpec.files_array.first
print "#{file.delete_prefix(BASE)}: "
2021-11-26 16:31:38 +03:00
@loaded = true
end
def unload
super
if @loaded
print "\n"
@dotted = 0
end
end
}
end