default.mspec: defer job tokens
* spec/default.mspec (MSpecScript::JobServer#cores): defer getting job tokens until required. when running only one spec file, `-j` option has no effect. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58282 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
a2ab6d8f97
commit
07cfb683a4
@ -25,27 +25,40 @@ class MSpecScript
|
|||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
class MSpecScript
|
module MSpecScript::JobServer
|
||||||
|
def cores
|
||||||
if /(?:\A|\s)--jobserver-(?:auth|fds)=(\d+),(\d+)/ =~ ENV["MAKEFLAGS"]
|
if /(?:\A|\s)--jobserver-(?:auth|fds)=(\d+),(\d+)/ =~ ENV["MAKEFLAGS"]
|
||||||
|
cores = 0
|
||||||
begin
|
begin
|
||||||
r = IO.for_fd($1.to_i(10), "rb", autoclose: false)
|
r = IO.for_fd($1.to_i(10), "rb", autoclose: false)
|
||||||
w = IO.for_fd($2.to_i(10), "wb", autoclose: false)
|
w = IO.for_fd($2.to_i(10), "wb", autoclose: false)
|
||||||
rescue
|
|
||||||
r.close if r
|
|
||||||
else
|
|
||||||
jobtokens = r.read_nonblock(1024)
|
jobtokens = r.read_nonblock(1024)
|
||||||
|
else
|
||||||
cores = jobtokens.size
|
cores = jobtokens.size
|
||||||
if cores > 0
|
if cores > 0
|
||||||
jobserver = w
|
jobserver = w
|
||||||
|
w = nil
|
||||||
at_exit {
|
at_exit {
|
||||||
jobserver.print(jobtokens)
|
jobserver.print(jobtokens)
|
||||||
jobserver.close
|
jobserver.close
|
||||||
}
|
}
|
||||||
end
|
MSpecScript::JobServer.module_eval do
|
||||||
remove_method :cores
|
remove_method :cores
|
||||||
define_method(:cores) do
|
define_method(:cores) do
|
||||||
cores
|
cores
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
return cores
|
||||||
|
end
|
||||||
|
ensure
|
||||||
|
r&.close
|
||||||
|
w&.close
|
||||||
|
end
|
||||||
|
end
|
||||||
|
super
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class MSpecScript
|
||||||
|
prepend JobServer
|
||||||
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user