Skip to content

Commit 3a06f78

Browse files
committed
WIP2
1 parent f4893ae commit 3a06f78

File tree

1 file changed

+154
-154
lines changed

1 file changed

+154
-154
lines changed

test/process.rb

Lines changed: 154 additions & 154 deletions
Original file line numberDiff line numberDiff line change
@@ -106,181 +106,181 @@ def assert_windows(*args, &block)
106106
assert_true Process.pid > 0
107107
end
108108

109-
# assert('Process.spawn') do
110-
# assert_raise(ArgumentError) { spawn }
111-
# assert_raise(TypeError) { spawn 123 }
112-
113-
# pid = spawn 'exit 0'
114-
# wait_for_pid(pid)
115-
116-
# assert_kind_of Integer, pid
117-
# assert_true pid > 0
118-
# assert_not_equal $PID, pid
119-
# assert_kind_of Process::Status, $?
120-
# assert_equal $?.pid, pid
121-
122-
# var = "#{ENV['RAND']}x"
123-
# pid = spawn("echo #{var} > tmp/spawn.txt")
124-
125-
# wait_for_pid(pid)
126-
# assert_equal var, read('tmp/spawn.txt')
127-
# end
128-
129-
# assert('Process.spawn', 'env') do
130-
# var = "x#{ENV['RAND']}"
131-
# env = OS.posix? ? '$MYVAR' : '%MYVAR%'
132-
133-
# pid = spawn({ MYVAR: var }, "echo #{env} > tmp/spawn.txt")
134-
135-
# wait_for_pid(pid)
136-
# assert_equal var, read('tmp/spawn.txt')
137-
# end
138-
139-
# # TODO: More tests for edge cases! whatif no valid pipe,
140-
# assert('Process.spawn', 'pipe') do
141-
# begin
142-
# var = ENV['RAND']
143-
# pip = IO.sysopen('tmp/pipe.txt', 'w')
144-
145-
# pid = spawn("echo #{var}", out: pip)
109+
assert('Process.spawn') do
110+
assert_raise(ArgumentError) { spawn }
111+
assert_raise(TypeError) { spawn 123 }
146112

147-
# wait_for_pid(pid)
148-
# assert_equal var, read('tmp/pipe.txt')
149-
150-
# env = OS.posix? ? '$MYVAR' : '%MYVAR%'
151-
# pid = spawn({ MYVAR: var }, "echo #{env}", out: pip)
152-
153-
# wait_for_pid(pid)
154-
# assert_equal var * 2, read('tmp/pipe.txt')
113+
pid = spawn 'exit 0'
114+
wait_for_pid(pid)
155115

156-
# pid = spawn 'ruby', '-v', out: pip
116+
assert_kind_of Integer, pid
117+
assert_true pid > 0
118+
assert_not_equal $PID, pid
119+
assert_kind_of Process::Status, $?
120+
assert_equal $?.pid, pid
157121

158-
# wait_for_pid(pid)
159-
# assert_include read('tmp/pipe.txt'), 'ruby'
160-
# ensure
161-
# IO._sysclose(pip) if OS.posix?
162-
# end
163-
# end
164-
165-
# assert('Process.spawn', 'pipe error') do
166-
# begin
167-
# pip = IO.sysopen('tmp/pipe.err', 'w')
168-
# pid = spawn('ruby unknown', err: pip)
169-
170-
# wait_for_pid(pid)
171-
# assert_false read('tmp/pipe.err').empty?
172-
# ensure
173-
# IO._sysclose(pip) if OS.posix?
174-
# end
175-
# end
176-
177-
# assert('Process.exec', 'invalid signatures') do
178-
# assert_raise(ArgumentError) { exec }
179-
# assert_raise(TypeError) { exec 123 }
180-
# end
122+
var = "#{ENV['RAND']}x"
123+
pid = spawn("echo #{var} > tmp/spawn.txt")
181124

182-
# assert_not_windows('Process.exec') do
183-
# var = ENV['RAND']
184-
# pid = fork { exec({ MYVAR: var }, 'echo $MYVAR > tmp/exec.txt') }
125+
wait_for_pid(pid)
126+
assert_equal var, read('tmp/spawn.txt')
127+
end
128+
129+
assert('Process.spawn', 'env') do
130+
var = "x#{ENV['RAND']}"
131+
env = OS.posix? ? '$MYVAR' : '%MYVAR%'
132+
133+
pid = spawn({ MYVAR: var }, "echo #{env} > tmp/spawn.txt")
134+
135+
wait_for_pid(pid)
136+
assert_equal var, read('tmp/spawn.txt')
137+
end
138+
139+
# TODO: More tests for edge cases! whatif no valid pipe,
140+
assert('Process.spawn', 'pipe') do
141+
begin
142+
var = ENV['RAND']
143+
pip = IO.sysopen('tmp/pipe.txt', 'w')
144+
145+
pid = spawn("echo #{var}", out: pip)
146+
147+
wait_for_pid(pid)
148+
assert_equal var, read('tmp/pipe.txt')
149+
150+
env = OS.posix? ? '$MYVAR' : '%MYVAR%'
151+
pid = spawn({ MYVAR: var }, "echo #{env}", out: pip)
152+
153+
wait_for_pid(pid)
154+
assert_equal var * 2, read('tmp/pipe.txt')
155+
156+
pid = spawn 'ruby', '-v', out: pip
157+
158+
wait_for_pid(pid)
159+
assert_include read('tmp/pipe.txt'), 'ruby'
160+
ensure
161+
IO._sysclose(pip) if OS.posix?
162+
end
163+
end
164+
165+
assert('Process.spawn', 'pipe error') do
166+
begin
167+
pip = IO.sysopen('tmp/pipe.err', 'w')
168+
pid = spawn('ruby unknown', err: pip)
169+
170+
wait_for_pid(pid)
171+
assert_false read('tmp/pipe.err').empty?
172+
ensure
173+
IO._sysclose(pip) if OS.posix?
174+
end
175+
end
176+
177+
assert('Process.exec', 'invalid signatures') do
178+
assert_raise(ArgumentError) { exec }
179+
assert_raise(TypeError) { exec 123 }
180+
end
185181

186-
# wait_for_pid(pid)
187-
# assert_equal var, read('tmp/exec.txt')
182+
assert_not_windows('Process.exec') do
183+
var = ENV['RAND']
184+
pid = fork { exec({ MYVAR: var }, 'echo $MYVAR > tmp/exec.txt') }
188185

189-
# var = "x#{var}"
190-
# pid = fork { exec '/bin/sh', '-c', "echo #{var} > tmp/exec.txt" }
186+
wait_for_pid(pid)
187+
assert_equal var, read('tmp/exec.txt')
191188

192-
# wait_for_pid(pid)
193-
# assert_equal var, read('tmp/exec.txt')
194-
# end
189+
var = "x#{var}"
190+
pid = fork { exec '/bin/sh', '-c', "echo #{var} > tmp/exec.txt" }
195191

196-
# assert_not_windows('Process.exec', '$SHELL') do
197-
# ['/bin/bash', '/bin/sh'].each do |shell|
198-
# ENV['SHELL'] = shell
192+
wait_for_pid(pid)
193+
assert_equal var, read('tmp/exec.txt')
194+
end
195+
196+
assert_not_windows('Process.exec', '$SHELL') do
197+
['/bin/bash', '/bin/sh'].each do |shell|
198+
ENV['SHELL'] = shell
199+
200+
pid = fork { exec 'echo $SHELL > tmp/exec.txt' }
201+
wait_for_pid(pid)
202+
203+
assert_equal shell, read('tmp/exec.txt')
204+
end
205+
end
206+
207+
assert('Process.kill') do
208+
assert_nothing_raised { Process.kill(:EXIT, Process.pid) }
209+
assert_nothing_raised { Process.kill('EXIT', Process.pid) }
210+
assert_nothing_raised { Process.kill(0, Process.pid) }
211+
assert_equal 1, Process.kill(0, Process.pid), 'killed an innocent process'
212+
assert_equal 2, Process.kill(0, Process.pid, Process.pid)
213+
assert_raise(TypeError) { Process.kill(0.0, Process.pid) }
214+
assert_raise(TypeError) { Process.kill(0, 'Process.pid') }
215+
assert_raise(ArgumentError) { Process.kill(:UNKNOWN, Process.pid) }
216+
end
217+
218+
assert('Process.wait2') do
219+
pid = spawn('sleep 2')
220+
p, st = Process.waitpid2(pid, Process::WNOHANG)
221+
222+
assert_nil p
223+
assert_nil st
199224

200-
# pid = fork { exec 'echo $SHELL > tmp/exec.txt' }
201-
# wait_for_pid(pid)
225+
Process.kill :KILL, pid
202226

203-
# assert_equal shell, read('tmp/exec.txt')
204-
# end
205-
# end
227+
loop do
228+
p, st = Process.waitpid2(pid, Process::WNOHANG)
229+
break if p
230+
end
231+
232+
assert_equal pid, p
233+
assert_kind_of Process::Status, st
234+
assert_include [9, nil], st.termsig
235+
end
206236

207-
# assert('Process.kill') do
208-
# assert_nothing_raised { Process.kill(:EXIT, Process.pid) }
209-
# assert_nothing_raised { Process.kill('EXIT', Process.pid) }
210-
# assert_nothing_raised { Process.kill(0, Process.pid) }
211-
# assert_equal 1, Process.kill(0, Process.pid), 'killed an innocent process'
212-
# assert_equal 2, Process.kill(0, Process.pid, Process.pid)
213-
# assert_raise(TypeError) { Process.kill(0.0, Process.pid) }
214-
# assert_raise(TypeError) { Process.kill(0, 'Process.pid') }
215-
# assert_raise(ArgumentError) { Process.kill(:UNKNOWN, Process.pid) }
216-
# end
237+
assert('Process.waitall') do
238+
assert_true Process.waitall.empty?
217239

218-
# assert('Process.wait2') do
219-
# pid = spawn('sleep 2')
220-
# p, st = Process.waitpid2(pid, Process::WNOHANG)
240+
pids = []
241+
pids << spawn('exit 2')
242+
pids << spawn('exit 1')
243+
pids << spawn('exit 0')
221244

222-
# assert_nil p
223-
# assert_nil st
245+
a = Process.waitall
224246

225-
# Process.kill :KILL, pid
247+
pids.each do |pid|
248+
assert_raise(RuntimeError) { Process.kill(0, pid) }
249+
end
226250

227-
# loop do
228-
# p, st = Process.waitpid2(pid, Process::WNOHANG)
229-
# break if p
230-
# end
251+
assert_kind_of Array, a
252+
assert_equal 3, a.size
231253

232-
# assert_equal pid, p
233-
# assert_kind_of Process::Status, st
234-
# assert_include [9, nil], st.termsig
235-
# end
254+
pids.each do |pid|
255+
pid_status = a.find { |i| i[0] == pid }
236256

237-
# assert('Process.waitall') do
238-
# assert_true Process.waitall.empty?
239-
240-
# pids = []
241-
# pids << spawn('exit 2')
242-
# pids << spawn('exit 1')
243-
# pids << spawn('exit 0')
257+
assert_kind_of Array, pid_status
258+
assert_equal 2, pid_status.size
259+
assert_equal pid, pid_status.first
260+
assert_kind_of Process::Status, pid_status.last
261+
end
262+
end
244263

245-
# a = Process.waitall
264+
assert('Process.system') do
265+
assert_raise(ArgumentError) { system }
266+
assert_raise(TypeError) { system 123 }
246267

247-
# pids.each do |pid|
248-
# assert_raise(RuntimeError) { Process.kill(0, pid) }
249-
# end
250-
251-
# assert_kind_of Array, a
252-
# assert_equal 3, a.size
253-
254-
# pids.each do |pid|
255-
# pid_status = a.find { |i| i[0] == pid }
256-
257-
# assert_kind_of Array, pid_status
258-
# assert_equal 2, pid_status.size
259-
# assert_equal pid, pid_status.first
260-
# assert_kind_of Process::Status, pid_status.last
261-
# end
262-
# end
263-
264-
# assert('Process.system') do
265-
# assert_raise(ArgumentError) { system }
266-
# assert_raise(TypeError) { system 123 }
267-
268-
# assert_true system 'exit 0'
269-
# assert_equal 0, $?.exitstatus
270-
# assert_false system 'exit 1'
271-
# assert_equal 1, $?.exitstatus
268+
assert_true system 'exit 0'
269+
assert_equal 0, $?.exitstatus
270+
assert_false system 'exit 1'
271+
assert_equal 1, $?.exitstatus
272272

273-
# assert_nothing_raised { system 'exit' }
273+
assert_nothing_raised { system 'exit' }
274274

275-
# var = ENV['RAND']
276-
# env = OS.posix? ? '$MYVAR' : '%MYVAR%'
275+
var = ENV['RAND']
276+
env = OS.posix? ? '$MYVAR' : '%MYVAR%'
277277

278-
# system({ MYVAR: var }, "echo #{env} > tmp/system.txt")
278+
system({ MYVAR: var }, "echo #{env} > tmp/system.txt")
279279

280-
# assert_equal var, read('tmp/system.txt')
281-
# end
280+
assert_equal var, read('tmp/system.txt')
281+
end
282282

283-
# assert_windows('Process.fork') do
284-
# assert_false Process.respond_to? :fork
285-
# assert_false Kernel.respond_to? :fork
286-
# end
283+
assert_windows('Process.fork') do
284+
assert_false Process.respond_to? :fork
285+
assert_false Kernel.respond_to? :fork
286+
end

0 commit comments

Comments
 (0)