91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
# File 'lib/spring/test/application.rb', line 91
def run(command, opts = {})
start_time = Time.now
Bundler.with_clean_env do
Process.spawn(
env,
command.to_s,
out: stdout.last,
err: stderr.last,
in: :close,
chdir: root.to_s,
)
end
_, status = Timeout.timeout(opts.fetch(:timeout, DEFAULT_TIMEOUT)) { Process.wait2 }
if pid = spring_env.pid
@server_pid = pid
lines = `ps -A -o ppid= -o pid= | egrep '^\\s*#{@server_pid}'`.lines
@application_pids = lines.map { |l| l.split.last.to_i }
end
output = read_streams
puts dump_streams(command, output) if ENV["SPRING_DEBUG"]
@times << (Time.now - start_time) if @times
output.merge(status: status, command: command)
rescue Timeout::Error => e
raise e, "Output:\n\n#{dump_streams(command, read_streams)}"
end
|