@@ -106,181 +106,181 @@ def assert_windows(*args, &block)
106106 assert_true Process . pid > 0
107107end
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