mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
bootstraptest/runner: manage sub processes with the job server
This commit is contained in:
parent
fc54dbe8b4
commit
09bce061af
Notes:
git
2022-09-28 23:19:28 +09:00
2 changed files with 41 additions and 11 deletions
|
@ -61,7 +61,7 @@ if !Dir.respond_to?(:mktmpdir)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
BT = Struct.new(:ruby,
|
bt = Struct.new(:ruby,
|
||||||
:verbose,
|
:verbose,
|
||||||
:color,
|
:color,
|
||||||
:tty,
|
:tty,
|
||||||
|
@ -76,7 +76,8 @@ BT = Struct.new(:ruby,
|
||||||
:window_width,
|
:window_width,
|
||||||
:width,
|
:width,
|
||||||
:platform,
|
:platform,
|
||||||
) do
|
)
|
||||||
|
BT = Class.new(bt) do
|
||||||
def putc(c)
|
def putc(c)
|
||||||
unless self.quiet
|
unless self.quiet
|
||||||
if self.window_width == nil
|
if self.window_width == nil
|
||||||
|
@ -98,6 +99,40 @@ BT = Struct.new(:ruby,
|
||||||
self.columns += 1
|
self.columns += 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def wn=(wn)
|
||||||
|
if wn <= 0
|
||||||
|
wn = nil
|
||||||
|
if /(?:\A|\s)--jobserver-(?:auth|fds)=\K(\d+),(\d+)/ =~ ENV.delete("MAKEFLAGS")
|
||||||
|
begin
|
||||||
|
r = IO.for_fd($1.to_i(10), "rb", autoclose: false)
|
||||||
|
w = IO.for_fd($2.to_i(10), "wb", autoclose: false)
|
||||||
|
rescue => e
|
||||||
|
r.close if r
|
||||||
|
else
|
||||||
|
r.close_on_exec = true
|
||||||
|
w.close_on_exec = true
|
||||||
|
tokens = r.read_nonblock(1024, exception: false)
|
||||||
|
r.close
|
||||||
|
if String === tokens
|
||||||
|
tokens.freeze
|
||||||
|
auth = w
|
||||||
|
w = nil
|
||||||
|
at_exit {auth << tokens; auth.close}
|
||||||
|
wn = tokens.size + 1
|
||||||
|
else
|
||||||
|
w.close
|
||||||
|
wn = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
unless wn
|
||||||
|
require 'etc'
|
||||||
|
wn = [Etc.nprocessors / 2, 1].max
|
||||||
|
end
|
||||||
|
end
|
||||||
|
super wn
|
||||||
|
end
|
||||||
end.new
|
end.new
|
||||||
|
|
||||||
BT_STATE = Struct.new(:count, :error).new
|
BT_STATE = Struct.new(:count, :error).new
|
||||||
|
@ -145,12 +180,7 @@ def main
|
||||||
BT.quiet = true
|
BT.quiet = true
|
||||||
true
|
true
|
||||||
when /\A-j(\d+)?/
|
when /\A-j(\d+)?/
|
||||||
wn = $1.to_i
|
BT.wn = $1.to_i
|
||||||
if wn <= 0
|
|
||||||
require 'etc'
|
|
||||||
wn = [Etc.nprocessors / 2, 1].max
|
|
||||||
end
|
|
||||||
BT.wn = wn
|
|
||||||
true
|
true
|
||||||
when /\A(-v|--v(erbose))\z/
|
when /\A(-v|--v(erbose))\z/
|
||||||
BT.verbose = true
|
BT.verbose = true
|
||||||
|
@ -297,7 +327,7 @@ def exec_test(pathes)
|
||||||
|
|
||||||
# execute tests
|
# execute tests
|
||||||
if BT.wn > 1
|
if BT.wn > 1
|
||||||
concurrent_exec_test if BT.wn > 1
|
concurrent_exec_test
|
||||||
else
|
else
|
||||||
prev_basename = nil
|
prev_basename = nil
|
||||||
Assertion.all.each do |basename, assertions|
|
Assertion.all.each do |basename, assertions|
|
||||||
|
|
|
@ -806,14 +806,14 @@ btest: $(TEST_RUNNABLE)-btest
|
||||||
no-btest: PHONY
|
no-btest: PHONY
|
||||||
yes-btest: yes-fake miniruby$(EXEEXT) PHONY
|
yes-btest: yes-fake miniruby$(EXEEXT) PHONY
|
||||||
$(ACTIONS_GROUP)
|
$(ACTIONS_GROUP)
|
||||||
$(Q)$(exec) $(BOOTSTRAPRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(BTESTRUBY) $(RUN_OPTS)" $(OPTS) $(TESTOPTS) $(BTESTS)
|
$(Q)$(gnumake_recursive)$(exec) $(BOOTSTRAPRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(BTESTRUBY) $(RUN_OPTS)" $(OPTS) $(TESTOPTS) $(BTESTS)
|
||||||
$(ACTIONS_ENDGROUP)
|
$(ACTIONS_ENDGROUP)
|
||||||
|
|
||||||
btest-ruby: $(TEST_RUNNABLE)-btest-ruby
|
btest-ruby: $(TEST_RUNNABLE)-btest-ruby
|
||||||
no-btest-ruby: PHONY
|
no-btest-ruby: PHONY
|
||||||
yes-btest-ruby: prog PHONY
|
yes-btest-ruby: prog PHONY
|
||||||
$(ACTIONS_GROUP)
|
$(ACTIONS_GROUP)
|
||||||
$(Q)$(exec) $(RUNRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(PROGRAM) -I$(srcdir)/lib $(RUN_OPTS)" -q $(OPTS) $(TESTOPTS) $(BTESTS)
|
$(Q)$(gnumake_recursive)$(exec) $(RUNRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(PROGRAM) -I$(srcdir)/lib $(RUN_OPTS)" $(OPTS) $(TESTOPTS) $(BTESTS)
|
||||||
$(ACTIONS_ENDGROUP)
|
$(ACTIONS_ENDGROUP)
|
||||||
|
|
||||||
rtest: yes-fake miniruby$(EXEEXT) PHONY
|
rtest: yes-fake miniruby$(EXEEXT) PHONY
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue