summaryrefslogtreecommitdiff
path: root/spec/default.mspec
diff options
context:
space:
mode:
Diffstat (limited to 'spec/default.mspec')
-rw-r--r--spec/default.mspec61
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