summaryrefslogtreecommitdiff
path: root/spec/rubyspec/core/process
diff options
context:
space:
mode:
Diffstat (limited to 'spec/rubyspec/core/process')
-rw-r--r--spec/rubyspec/core/process/abort_spec.rb6
-rw-r--r--spec/rubyspec/core/process/constants_spec.rb63
-rw-r--r--spec/rubyspec/core/process/daemon_spec.rb123
-rw-r--r--spec/rubyspec/core/process/detach_spec.rb46
-rw-r--r--spec/rubyspec/core/process/egid_spec.rb19
-rw-r--r--spec/rubyspec/core/process/euid_spec.rb59
-rw-r--r--spec/rubyspec/core/process/exec_spec.rb218
-rw-r--r--spec/rubyspec/core/process/exit_spec.rb10
-rw-r--r--spec/rubyspec/core/process/fixtures/common.rb84
-rw-r--r--spec/rubyspec/core/process/fixtures/daemon.rb111
-rw-r--r--spec/rubyspec/core/process/fixtures/kill.rb45
-rw-r--r--spec/rubyspec/core/process/fixtures/map_fd.rb8
-rw-r--r--spec/rubyspec/core/process/fixtures/setpriority.rb12
-rw-r--r--spec/rubyspec/core/process/fork_spec.rb6
-rw-r--r--spec/rubyspec/core/process/getpgid_spec.rb17
-rw-r--r--spec/rubyspec/core/process/getpgrp_spec.rb7
-rw-r--r--spec/rubyspec/core/process/getpriority_spec.rb23
-rw-r--r--spec/rubyspec/core/process/getrlimit_spec.rb91
-rw-r--r--spec/rubyspec/core/process/gid/change_privilege_spec.rb5
-rw-r--r--spec/rubyspec/core/process/gid/eid_spec.rb9
-rw-r--r--spec/rubyspec/core/process/gid/grant_privilege_spec.rb5
-rw-r--r--spec/rubyspec/core/process/gid/re_exchange_spec.rb5
-rw-r--r--spec/rubyspec/core/process/gid/re_exchangeable_spec.rb5
-rw-r--r--spec/rubyspec/core/process/gid/rid_spec.rb5
-rw-r--r--spec/rubyspec/core/process/gid/sid_available_spec.rb5
-rw-r--r--spec/rubyspec/core/process/gid/switch_spec.rb5
-rw-r--r--spec/rubyspec/core/process/gid_spec.rb22
-rw-r--r--spec/rubyspec/core/process/groups_spec.rb54
-rw-r--r--spec/rubyspec/core/process/initgroups_spec.rb20
-rw-r--r--spec/rubyspec/core/process/kill_spec.rb128
-rw-r--r--spec/rubyspec/core/process/maxgroups_spec.rb19
-rw-r--r--spec/rubyspec/core/process/pid_spec.rb9
-rw-r--r--spec/rubyspec/core/process/ppid_spec.rb23
-rw-r--r--spec/rubyspec/core/process/set_proctitle_spec.rb23
-rw-r--r--spec/rubyspec/core/process/setpgid_spec.rb28
-rw-r--r--spec/rubyspec/core/process/setpgrp_spec.rb37
-rw-r--r--spec/rubyspec/core/process/setpriority_spec.rb41
-rw-r--r--spec/rubyspec/core/process/setrlimit_spec.rb232
-rw-r--r--spec/rubyspec/core/process/setsid_spec.rb37
-rw-r--r--spec/rubyspec/core/process/spawn_spec.rb634
-rw-r--r--spec/rubyspec/core/process/status/bit_and_spec.rb5
-rw-r--r--spec/rubyspec/core/process/status/coredump_spec.rb5
-rw-r--r--spec/rubyspec/core/process/status/equal_value_spec.rb5
-rw-r--r--spec/rubyspec/core/process/status/exited_spec.rb37
-rw-r--r--spec/rubyspec/core/process/status/exitstatus_spec.rb13
-rw-r--r--spec/rubyspec/core/process/status/inspect_spec.rb5
-rw-r--r--spec/rubyspec/core/process/status/pid_spec.rb15
-rw-r--r--spec/rubyspec/core/process/status/right_shift_spec.rb5
-rw-r--r--spec/rubyspec/core/process/status/signaled_spec.rb35
-rw-r--r--spec/rubyspec/core/process/status/stopped_spec.rb5
-rw-r--r--spec/rubyspec/core/process/status/stopsig_spec.rb5
-rw-r--r--spec/rubyspec/core/process/status/success_spec.rb51
-rw-r--r--spec/rubyspec/core/process/status/termsig_spec.rb39
-rw-r--r--spec/rubyspec/core/process/status/to_i_spec.rb5
-rw-r--r--spec/rubyspec/core/process/status/to_int_spec.rb5
-rw-r--r--spec/rubyspec/core/process/status/to_s_spec.rb5
-rw-r--r--spec/rubyspec/core/process/sys/getegid_spec.rb5
-rw-r--r--spec/rubyspec/core/process/sys/geteuid_spec.rb5
-rw-r--r--spec/rubyspec/core/process/sys/getgid_spec.rb5
-rw-r--r--spec/rubyspec/core/process/sys/getuid_spec.rb5
-rw-r--r--spec/rubyspec/core/process/sys/issetugid_spec.rb5
-rw-r--r--spec/rubyspec/core/process/sys/setegid_spec.rb5
-rw-r--r--spec/rubyspec/core/process/sys/seteuid_spec.rb5
-rw-r--r--spec/rubyspec/core/process/sys/setgid_spec.rb5
-rw-r--r--spec/rubyspec/core/process/sys/setregid_spec.rb5
-rw-r--r--spec/rubyspec/core/process/sys/setresgid_spec.rb5
-rw-r--r--spec/rubyspec/core/process/sys/setresuid_spec.rb5
-rw-r--r--spec/rubyspec/core/process/sys/setreuid_spec.rb5
-rw-r--r--spec/rubyspec/core/process/sys/setrgid_spec.rb5
-rw-r--r--spec/rubyspec/core/process/sys/setruid_spec.rb5
-rw-r--r--spec/rubyspec/core/process/sys/setuid_spec.rb5
-rw-r--r--spec/rubyspec/core/process/times_spec.rb27
-rw-r--r--spec/rubyspec/core/process/uid/change_privilege_spec.rb5
-rw-r--r--spec/rubyspec/core/process/uid/eid_spec.rb9
-rw-r--r--spec/rubyspec/core/process/uid/grant_privilege_spec.rb5
-rw-r--r--spec/rubyspec/core/process/uid/re_exchange_spec.rb5
-rw-r--r--spec/rubyspec/core/process/uid/re_exchangeable_spec.rb5
-rw-r--r--spec/rubyspec/core/process/uid/rid_spec.rb5
-rw-r--r--spec/rubyspec/core/process/uid/sid_available_spec.rb5
-rw-r--r--spec/rubyspec/core/process/uid/switch_spec.rb5
-rw-r--r--spec/rubyspec/core/process/uid_spec.rb84
-rw-r--r--spec/rubyspec/core/process/wait2_spec.rb29
-rw-r--r--spec/rubyspec/core/process/wait_spec.rb90
-rw-r--r--spec/rubyspec/core/process/waitall_spec.rb48
-rw-r--r--spec/rubyspec/core/process/waitpid2_spec.rb5
-rw-r--r--spec/rubyspec/core/process/waitpid_spec.rb15
86 files changed, 0 insertions, 2956 deletions
diff --git a/spec/rubyspec/core/process/abort_spec.rb b/spec/rubyspec/core/process/abort_spec.rb
deleted file mode 100644
index f7113c8b7e..0000000000
--- a/spec/rubyspec/core/process/abort_spec.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../../../shared/process/abort', __FILE__)
-
-describe "Process.abort" do
- it_behaves_like :process_abort, :abort, Process
-end
diff --git a/spec/rubyspec/core/process/constants_spec.rb b/spec/rubyspec/core/process/constants_spec.rb
deleted file mode 100644
index 2fa93ad8bf..0000000000
--- a/spec/rubyspec/core/process/constants_spec.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-
-describe "Process::Constants" do
- platform_is :darwin, :netbsd, :freebsd do
- it "has the correct constant values on BSD-like systems" do
- Process::WNOHANG.should == 1
- Process::WUNTRACED.should == 2
- Process::PRIO_PROCESS.should == 0
- Process::PRIO_PGRP.should == 1
- Process::PRIO_USER.should == 2
- Process::RLIM_INFINITY.should == 9223372036854775807
- Process::RLIMIT_CPU.should == 0
- Process::RLIMIT_FSIZE.should == 1
- Process::RLIMIT_DATA.should == 2
- Process::RLIMIT_STACK.should == 3
- Process::RLIMIT_CORE.should == 4
- Process::RLIMIT_RSS.should == 5
- Process::RLIMIT_MEMLOCK.should == 6
- Process::RLIMIT_NPROC.should == 7
- Process::RLIMIT_NOFILE.should == 8
- end
- end
-
- platform_is :darwin do
- it "has the correct constant values on Darwin" do
- Process::RLIM_SAVED_MAX.should == 9223372036854775807
- Process::RLIM_SAVED_CUR.should == 9223372036854775807
- Process::RLIMIT_AS.should == 5
- end
- end
-
- platform_is :linux do
- it "has the correct constant values on Linux" do
- Process::WNOHANG.should == 1
- Process::WUNTRACED.should == 2
- Process::PRIO_PROCESS.should == 0
- Process::PRIO_PGRP.should == 1
- Process::PRIO_USER.should == 2
- Process::RLIMIT_CPU.should == 0
- Process::RLIMIT_FSIZE.should == 1
- Process::RLIMIT_DATA.should == 2
- Process::RLIMIT_STACK.should == 3
- Process::RLIMIT_CORE.should == 4
- Process::RLIMIT_RSS.should == 5
- Process::RLIMIT_NPROC.should == 6
- Process::RLIMIT_NOFILE.should == 7
- Process::RLIMIT_MEMLOCK.should == 8
- Process::RLIMIT_AS.should == 9
-
- # These values appear to change according to the platform.
- values = [4294967295, 9223372036854775807, 18446744073709551615]
- values.include?(Process::RLIM_INFINITY).should be_true
- values.include?(Process::RLIM_SAVED_MAX).should be_true
- values.include?(Process::RLIM_SAVED_CUR).should be_true
- end
- end
-
- platform_is :netbsd, :freebsd do
- it "Process::RLIMIT_SBSIZE" do
- Process::RLIMIT_SBSIZE.should == 9 # FIXME: what's it equal?
- Process::RLIMIT_AS.should == 10
- end
- end
-end
diff --git a/spec/rubyspec/core/process/daemon_spec.rb b/spec/rubyspec/core/process/daemon_spec.rb
deleted file mode 100644
index f68ddfe253..0000000000
--- a/spec/rubyspec/core/process/daemon_spec.rb
+++ /dev/null
@@ -1,123 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/common', __FILE__)
-
-platform_is_not :windows do
- describe :process_daemon_keep_stdio_open_false, shared: true do
- it "redirects stdout to /dev/null" do
- @daemon.invoke("keep_stdio_open_false_stdout", @object).should == ""
- end
-
- it "redirects stderr to /dev/null" do
- @daemon.invoke("keep_stdio_open_false_stderr", @object).should == ""
- end
-
- it "redirects stdin to /dev/null" do
- @daemon.invoke("keep_stdio_open_false_stdin", @object).should == ""
- end
-
- it "does not close open files" do
- @daemon.invoke("keep_stdio_open_files", @object).should == "false"
- end
- end
-
- describe :process_daemon_keep_stdio_open_true, shared: true do
- it "does not redirect stdout to /dev/null" do
- @daemon.invoke("keep_stdio_open_true_stdout", @object).should == "writing to stdout"
- end
-
- it "does not redirect stderr to /dev/null" do
- @daemon.invoke("keep_stdio_open_true_stderr", @object).should == "writing to stderr"
- end
-
- it "does not redirect stdin to /dev/null" do
- @daemon.invoke("keep_stdio_open_true_stdin", @object).should == "reading from stdin"
- end
-
- it "does not close open files" do
- @daemon.invoke("keep_stdio_open_files", @object).should == "false"
- end
- end
-
- describe "Process.daemon" do
- before :each do
- @invoke_dir = Dir.pwd
- @daemon = ProcessSpecs::Daemonizer.new
- end
-
- after :each do
- rm_r @daemon.input, @daemon.data if @daemon
- end
-
- it "returns 0" do
- @daemon.invoke("return_value").should == "0"
- end
-
- it "has a different PID after daemonizing" do
- parent, daemon = @daemon.invoke("pid").split(":")
- parent.should_not == daemon
- end
-
- it "has a different process group after daemonizing" do
- parent, daemon = @daemon.invoke("process_group").split(":")
- parent.should_not == daemon
- end
-
- it "does not run existing at_exit handlers when daemonizing" do
- @daemon.invoke("daemonizing_at_exit").should == "not running at_exit"
- end
-
- it "runs at_exit handlers when the daemon exits" do
- @daemon.invoke("daemon_at_exit").should == "running at_exit"
- end
-
- it "changes directory to the root directory if the first argument is not given" do
- @daemon.invoke("stay_in_dir").should == "/"
- end
-
- it "changes directory to the root directory if the first argument is false" do
- @daemon.invoke("stay_in_dir", [false]).should == "/"
- end
-
- it "changes directory to the root directory if the first argument is nil" do
- @daemon.invoke("stay_in_dir", [nil]).should == "/"
- end
-
- it "does not change to the root directory if the first argument is true" do
- @daemon.invoke("stay_in_dir", [true]).should == @invoke_dir
- end
-
- it "does not change to the root directory if the first argument is non-false" do
- @daemon.invoke("stay_in_dir", [:yes]).should == @invoke_dir
- end
-
- describe "when the second argument is not given" do
- it_behaves_like :process_daemon_keep_stdio_open_false, nil, [false]
- end
-
- describe "when the second argument is false" do
- it_behaves_like :process_daemon_keep_stdio_open_false, nil, [false, false]
- end
-
- describe "when the second argument is nil" do
- it_behaves_like :process_daemon_keep_stdio_open_false, nil, [false, nil]
- end
-
- describe "when the second argument is true" do
- it_behaves_like :process_daemon_keep_stdio_open_true, nil, [false, true]
- end
-
- describe "when the second argument is non-false" do
- it_behaves_like :process_daemon_keep_stdio_open_true, nil, [false, :yes]
- end
- end
-end
-
-platform_is :windows do
- describe "Process.daemon" do
- it "raises a NotImplementedError" do
- lambda {
- Process.daemon
- }.should raise_error(NotImplementedError)
- end
- end
-end
diff --git a/spec/rubyspec/core/process/detach_spec.rb b/spec/rubyspec/core/process/detach_spec.rb
deleted file mode 100644
index 7a38e290ce..0000000000
--- a/spec/rubyspec/core/process/detach_spec.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.detach" do
- platform_is_not :windows do
- it "returns a thread" do
- pid = Process.fork { Process.exit! }
- thr = Process.detach(pid)
- thr.should be_kind_of(Thread)
- thr.join
- end
-
- it "produces the exit Process::Status as the thread value" do
- pid = Process.fork { Process.exit! }
- thr = Process.detach(pid)
- thr.join
-
- status = thr.value
- status.should be_kind_of(Process::Status)
- status.pid.should == pid
- end
-
- platform_is_not :openbsd do
- it "reaps the child process's status automatically" do
- pid = Process.fork { Process.exit! }
- Process.detach(pid).join
- lambda { Process.waitpid(pid) }.should raise_error(Errno::ECHILD)
- end
- end
-
- it "sets the :pid thread-local to the PID" do
- pid = Process.fork { Process.exit! }
- thr = Process.detach(pid)
- thr.join
-
- thr[:pid].should == pid
- end
-
- it "provides a #pid method on the returned thread which returns the PID" do
- pid = Process.fork { Process.exit! }
- thr = Process.detach(pid)
- thr.join
-
- thr.pid.should == pid
- end
- end
-end
diff --git a/spec/rubyspec/core/process/egid_spec.rb b/spec/rubyspec/core/process/egid_spec.rb
deleted file mode 100644
index 316343944c..0000000000
--- a/spec/rubyspec/core/process/egid_spec.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.egid" do
- it "returns the effective group ID for this process" do
- Process.egid.should be_kind_of(Integer)
- end
-
- it "also goes by Process::GID.eid" do
- Process::GID.eid.should == Process.egid
- end
-
- it "also goes by Process::Sys.getegid" do
- Process::Sys.getegid.should == Process.egid
- end
-end
-
-describe "Process.egid=" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/euid_spec.rb b/spec/rubyspec/core/process/euid_spec.rb
deleted file mode 100644
index 1855ef66f5..0000000000
--- a/spec/rubyspec/core/process/euid_spec.rb
+++ /dev/null
@@ -1,59 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.euid" do
- it "returns the effective user ID for this process" do
- Process.euid.should be_kind_of(Fixnum)
- end
-
- it "also goes by Process::UID.eid" do
- Process::UID.eid.should == Process.euid
- end
-
- it "also goes by Process::Sys.geteuid" do
- Process::Sys.geteuid.should == Process.euid
- end
-end
-
-describe "Process.euid=" do
-
- platform_is_not :windows do
- it "raises TypeError if not passed an Integer" do
- lambda { Process.euid = Object.new }.should raise_error(TypeError)
- end
-
- as_user do
- it "raises Errno::ERPERM if run by a non superuser trying to set the superuser id" do
- lambda { (Process.euid = 0)}.should raise_error(Errno::EPERM)
- end
-
- it "raises Errno::ERPERM if run by a non superuser trying to set the superuser id from username" do
- lambda { Process.euid = "root" }.should raise_error(Errno::EPERM)
- end
- end
-
- as_superuser do
- describe "if run by a superuser" do
- with_feature :fork do
- it "sets the effective user id for the current process if run by a superuser" do
- read, write = IO.pipe
- pid = Process.fork do
- begin
- read.close
- Process.euid = 1
- write << Process.euid
- write.close
- rescue Exception => e
- write << e << e.backtrace
- end
- Process.exit!
- end
- write.close
- euid = read.gets
- euid.should == "1"
- Process.wait pid
- end
- end
- end
- end
- end
-end
diff --git a/spec/rubyspec/core/process/exec_spec.rb b/spec/rubyspec/core/process/exec_spec.rb
deleted file mode 100644
index b4eddf526e..0000000000
--- a/spec/rubyspec/core/process/exec_spec.rb
+++ /dev/null
@@ -1,218 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.exec" do
- it "raises Errno::ENOENT for an empty string" do
- lambda { Process.exec "" }.should raise_error(Errno::ENOENT)
- end
-
- it "raises Errno::ENOENT for a command which does not exist" do
- lambda { Process.exec "bogus-noent-script.sh" }.should raise_error(Errno::ENOENT)
- end
-
- it "raises an ArgumentError if the command includes a null byte" do
- lambda { Process.exec "\000" }.should raise_error(ArgumentError)
- end
-
- unless File.executable?(__FILE__) # Some FS (e.g. vboxfs) locate all files executable
- platform_is_not :windows do
- it "raises Errno::EACCES when the file does not have execute permissions" do
- lambda { Process.exec __FILE__ }.should raise_error(Errno::EACCES)
- end
- end
-
- platform_is :windows do
- it "raises Errno::EACCES or Errno::ENOEXEC when the file is not an executable file" do
- lambda { Process.exec __FILE__ }.should raise_error(SystemCallError) { |e|
- [Errno::EACCES, Errno::ENOEXEC].should include(e.class)
- }
- end
- end
- end
-
- platform_is_not :openbsd do
- it "raises Errno::EACCES when passed a directory" do
- lambda { Process.exec File.dirname(__FILE__) }.should raise_error(Errno::EACCES)
- end
- end
-
- platform_is :openbsd do
- it "raises Errno::EISDIR when passed a directory" do
- lambda { Process.exec File.dirname(__FILE__) }.should raise_error(Errno::EISDIR)
- end
- end
-
- it "runs the specified command, replacing current process" do
- ruby_exe('Process.exec "echo hello"; puts "fail"', escape: true).should == "hello\n"
- end
-
- it "sets the current directory when given the :chdir option" do
- tmpdir = tmp("")[0..-2]
- platform_is_not :windows do
- ruby_exe("Process.exec(\"pwd\", chdir: #{tmpdir.inspect})", escape: true).should == "#{tmpdir}\n"
- end
- platform_is :windows do
- ruby_exe("Process.exec(\"cd\", chdir: #{tmpdir.inspect})", escape: true).tr('\\', '/').should == "#{tmpdir}\n"
- end
- end
-
- it "flushes STDOUT upon exit when it's not set to sync" do
- ruby_exe("STDOUT.sync = false; STDOUT.write 'hello'").should == "hello"
- end
-
- it "flushes STDERR upon exit when it's not set to sync" do
- ruby_exe("STDERR.sync = false; STDERR.write 'hello'", args: "2>&1").should == "hello"
- end
-
- describe "with a single argument" do
- before :each do
- @dir = tmp("exec_with_dir", false)
- Dir.mkdir @dir
-
- @name = "some_file"
- @path = tmp("exec_with_dir/#{@name}", false)
- touch @path
- end
-
- after :each do
- rm_r @path
- rm_r @dir
- end
-
- platform_is_not :windows do
- it "subjects the specified command to shell expansion" do
- result = Dir.chdir(@dir) do
- ruby_exe('Process.exec "echo *"', escape: true)
- end
- result.chomp.should == @name
- end
-
- it "creates an argument array with shell parsing semantics for whitespace" do
- ruby_exe('Process.exec "echo a b c d"', escape: true).should == "a b c d\n"
- end
- end
-
- platform_is :windows do
- # There is no shell expansion on Windows
- it "does not subject the specified command to shell expansion on Windows" do
- result = Dir.chdir(@dir) do
- ruby_exe('Process.exec "echo *"', escape: true)
- end
- result.should == "*\n"
- end
-
- it "does not create an argument array with shell parsing semantics for whitespace on Windows" do
- ruby_exe('Process.exec "echo a b c d"', escape: true).should == "a b c d\n"
- end
- end
-
- end
-
- describe "with multiple arguments" do
- it "does not subject the arguments to shell expansion" do
- cmd = '"echo", "*"'
- platform_is :windows do
- cmd = '"cmd.exe", "/C", "echo", "*"'
- end
- ruby_exe("Process.exec #{cmd}", escape: true).should == "*\n"
- end
- end
-
- describe "(environment variables)" do
- before :each do
- ENV["FOO"] = "FOO"
- end
-
- after :each do
- ENV["FOO"] = nil
- end
-
- var = '$FOO'
- platform_is :windows do
- var = '%FOO%'
- end
-
- it "sets environment variables in the child environment" do
- ruby_exe('Process.exec({"FOO" => "BAR"}, "echo ' + var + '")', escape: true).should == "BAR\n"
- end
-
- it "unsets environment variables whose value is nil" do
- platform_is_not :windows do
- ruby_exe('Process.exec({"FOO" => nil}, "echo ' + var + '")', escape: true).should == "\n"
- end
- platform_is :windows do
- # On Windows, echo-ing a non-existent env var is treated as echo-ing any other string of text
- ruby_exe('Process.exec({"FOO" => nil}, "echo ' + var + '")', escape: true).should == var + "\n"
- end
- end
-
- it "coerces environment argument using to_hash" do
- ruby_exe('o = Object.new; def o.to_hash; {"FOO" => "BAR"}; end; Process.exec(o, "echo ' + var + '")', escape: true).should == "BAR\n"
- end
-
- it "unsets other environment variables when given a true :unsetenv_others option" do
- platform_is_not :windows do
- ruby_exe('Process.exec("echo ' + var + '", unsetenv_others: true)', escape: true).should == "\n"
- end
- platform_is :windows do
- ruby_exe('Process.exec("' + ENV['COMSPEC'].gsub('\\', '\\\\\\') + ' /C echo ' + var + '", unsetenv_others: true)', escape: true).should == var + "\n"
- end
- end
- end
-
- describe "with a command array" do
- it "uses the first element as the command name and the second as the argv[0] value" do
- platform_is_not :windows do
- ruby_exe('Process.exec(["/bin/sh", "argv_zero"], "-c", "echo $0")', escape: true).should == "argv_zero\n"
- end
- platform_is :windows do
- ruby_exe('Process.exec(["cmd.exe", "/C"], "/C", "echo", "argv_zero")', escape: true).should == "argv_zero\n"
- end
- end
-
- it "coerces the argument using to_ary" do
- platform_is_not :windows do
- ruby_exe('o = Object.new; def o.to_ary; ["/bin/sh", "argv_zero"]; end; Process.exec(o, "-c", "echo $0")', escape: true).should == "argv_zero\n"
- end
- platform_is :windows do
- ruby_exe('o = Object.new; def o.to_ary; ["cmd.exe", "/C"]; end; Process.exec(o, "/C", "echo", "argv_zero")', escape: true).should == "argv_zero\n"
- end
- end
-
- it "raises an ArgumentError if the Array does not have exactly two elements" do
- lambda { Process.exec([]) }.should raise_error(ArgumentError)
- lambda { Process.exec([:a]) }.should raise_error(ArgumentError)
- lambda { Process.exec([:a, :b, :c]) }.should raise_error(ArgumentError)
- end
- end
-
- platform_is_not :windows do
- describe "with an options Hash" do
- describe "with Integer option keys" do
- before :each do
- @name = tmp("exec_fd_map.txt")
- @child_fd_file = tmp("child_fd_file.txt")
- end
-
- after :each do
- rm_r @name, @child_fd_file
- end
-
- it "maps the key to a file descriptor in the child that inherits the file descriptor from the parent specified by the value" do
- map_fd_fixture = fixture __FILE__, "map_fd.rb"
- cmd = <<-EOC
- f = File.open("#{@name}", "w+")
- child_fd = f.fileno + 1
- File.open("#{@child_fd_file}", "w") { |io| io.print child_fd }
- Process.exec "#{ruby_cmd(map_fd_fixture)} \#{child_fd}", { child_fd => f }
- EOC
-
- ruby_exe(cmd, escape: true)
- child_fd = IO.read(@child_fd_file).to_i
- child_fd.to_i.should > STDERR.fileno
-
- File.read(@name).should == "writing to fd: #{child_fd}"
- end
- end
- end
- end
-end
diff --git a/spec/rubyspec/core/process/exit_spec.rb b/spec/rubyspec/core/process/exit_spec.rb
deleted file mode 100644
index 7cbd0c363e..0000000000
--- a/spec/rubyspec/core/process/exit_spec.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../../../shared/process/exit', __FILE__)
-
-describe "Process.exit" do
- it_behaves_like :process_exit, :exit, Process
-end
-
-describe "Process.exit!" do
- it_behaves_like :process_exit!, :exit!, Process
-end
diff --git a/spec/rubyspec/core/process/fixtures/common.rb b/spec/rubyspec/core/process/fixtures/common.rb
deleted file mode 100644
index bdbf1e654b..0000000000
--- a/spec/rubyspec/core/process/fixtures/common.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-module ProcessSpecs
- def self.use_system_ruby(context)
- if defined?(MSpecScript::SYSTEM_RUBY)
- context.send(:before, :all) do
- @ruby = ::RUBY_EXE
- Object.const_set(:RUBY_EXE, MSpecScript::SYSTEM_RUBY)
- end
-
- context.send(:after, :all) do
- Object.const_set(:RUBY_EXE, @ruby)
- end
- end
- end
-
- class Daemonizer
- attr_reader :input, :data
-
- def initialize
- # Fast feedback for implementations without Process.daemon
- raise NotImplementedError, "Process.daemon is not implemented" unless Process.respond_to? :daemon
-
- @script = fixture __FILE__, "daemon.rb"
- @input = tmp("process_daemon_input_file")
- @data = tmp("process_daemon_data_file")
- @args = []
- end
-
- def wait_for_daemon
- sleep 0.001 until File.exist?(@data) and File.size?(@data)
- end
-
- def invoke(behavior, arguments=[])
- args = Marshal.dump(arguments).unpack("H*")
- args << @input << @data << behavior
-
- ruby_exe @script, args: args
-
- wait_for_daemon
-
- return unless File.exist? @data
-
- File.open(@data, "rb") { |f| return f.read.chomp }
- end
- end
-
- class Signalizer
- attr_reader :pid_file, :pid
-
- def initialize(scenario=nil)
- platform_is :windows do
- fail "not supported on windows"
- end
- @script = fixture __FILE__, "kill.rb"
- @pid = nil
- @pid_file = tmp("process_kill_signal_file")
- rm_r @pid_file
-
- @thread = Thread.new do
- Thread.current.abort_on_exception = true
- args = [@pid_file]
- args << scenario if scenario
- @result = ruby_exe @script, args: args
- end
- Thread.pass while @thread.status and !File.exist?(@pid_file)
- while @thread.status && (@pid.nil? || @pid == 0)
- @pid = IO.read(@pid_file).chomp.to_i
- end
- end
-
- def wait_on_result
- @thread.join
- end
-
- def cleanup
- wait_on_result
- rm_r pid_file
- end
-
- def result
- wait_on_result
- @result.chomp if @result
- end
- end
-end
diff --git a/spec/rubyspec/core/process/fixtures/daemon.rb b/spec/rubyspec/core/process/fixtures/daemon.rb
deleted file mode 100644
index 772df2d09e..0000000000
--- a/spec/rubyspec/core/process/fixtures/daemon.rb
+++ /dev/null
@@ -1,111 +0,0 @@
-module ProcessSpecs
- class Daemon
- def initialize(argv)
- args, @input, @data, @behavior = argv
- @args = Marshal.load [args].pack("H*")
- @no_at_exit = false
- end
-
- def run
- send @behavior
-
- # Exit without running any at_exit handlers
- exit!(0) if @no_at_exit
- end
-
- def write(data)
- File.open(@data, "wb") { |f| f.puts data }
- end
-
- def daemonizing_at_exit
- at_exit do
- write "running at_exit"
- end
-
- @no_at_exit = true
- Process.daemon
- write "not running at_exit"
- end
-
- def return_value
- write Process.daemon.to_s
- end
-
- def pid
- parent = Process.pid
- Process.daemon
- daemon = Process.pid
- write "#{parent}:#{daemon}"
- end
-
- def process_group
- parent = Process.getpgrp
- Process.daemon
- daemon = Process.getpgrp
- write "#{parent}:#{daemon}"
- end
-
- def daemon_at_exit
- at_exit do
- write "running at_exit"
- end
-
- Process.daemon
- end
-
- def stay_in_dir
- Process.daemon(*@args)
- write Dir.pwd
- end
-
- def keep_stdio_open_false_stdout
- Process.daemon(*@args)
- $stdout.write "writing to stdout"
- write ""
- end
-
- def keep_stdio_open_false_stderr
- Process.daemon(*@args)
- $stderr.write "writing to stderr"
- write ""
- end
-
- def keep_stdio_open_false_stdin
- Process.daemon(*@args)
-
- # Reading from /dev/null will return right away. If STDIN were not
- # /dev/null, reading would block and the spec would hang. This is not a
- # perfect way to spec the behavior but it works.
- write $stdin.read
- end
-
- def keep_stdio_open_true_stdout
- $stdout.reopen @data
- Process.daemon(*@args)
- $stdout.write "writing to stdout"
- end
-
- def keep_stdio_open_true_stderr
- $stderr.reopen @data
- Process.daemon(*@args)
- $stderr.write "writing to stderr"
- end
-
- def keep_stdio_open_true_stdin
- File.open(@input, "w") { |f| f.puts "reading from stdin" }
-
- $stdin.reopen @input, "r"
- Process.daemon(*@args)
- write $stdin.read
- end
-
- def keep_stdio_open_files
- file = File.open @input, "w"
-
- Process.daemon(*@args)
- write file.closed?
- end
- end
-end
-
-ProcessSpecs::Daemon.new(ARGV).run
diff --git a/spec/rubyspec/core/process/fixtures/kill.rb b/spec/rubyspec/core/process/fixtures/kill.rb
deleted file mode 100644
index 0b88f8ee1f..0000000000
--- a/spec/rubyspec/core/process/fixtures/kill.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-require 'thread'
-
-pid_file = ARGV.shift
-scenario = ARGV.shift
-
-# We must do this first otherwise there will be a race with the process that
-# creates this process and the TERM signal below could go to that process
-# instead, which will likely abort the specs process.
-Process.setsid if scenario
-
-mutex = Mutex.new
-
-Signal.trap(:TERM) do
- if mutex.try_lock
- STDOUT.puts "signaled"
- STDOUT.flush
- $signaled = true
- end
-end
-
-File.open(pid_file, "wb") { |f| f.puts Process.pid }
-
-if scenario
- # We are sending a signal to the process group
- process = "Process.getpgrp"
-
- case scenario
- when "self"
- signal = %["SIGTERM"]
- process = "0"
- when "group_numeric"
- signal = %[-Signal.list["TERM"]]
- when "group_short_string"
- signal = %["-TERM"]
- when "group_full_string"
- signal = %["-SIGTERM"]
- else
- raise "unknown scenario: #{scenario.inspect}"
- end
-
- code = "Process.kill(#{signal}, #{process})"
- system(ENV["RUBY_EXE"], *ENV["RUBY_FLAGS"].split(' '), "-e", code)
-end
-
-sleep 0.001 until mutex.locked? and $signaled
diff --git a/spec/rubyspec/core/process/fixtures/map_fd.rb b/spec/rubyspec/core/process/fixtures/map_fd.rb
deleted file mode 100644
index fc542625b0..0000000000
--- a/spec/rubyspec/core/process/fixtures/map_fd.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-fd = ARGV.shift.to_i
-
-f = File.for_fd fd
-begin
- f.write "writing to fd: #{fd}"
-ensure
- f.close
-end
diff --git a/spec/rubyspec/core/process/fixtures/setpriority.rb b/spec/rubyspec/core/process/fixtures/setpriority.rb
deleted file mode 100644
index cf22d85b12..0000000000
--- a/spec/rubyspec/core/process/fixtures/setpriority.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-case ARGV[0]
-when "process"
- which = Process::PRIO_PROCESS
-when "group"
- Process.setpgrp
- which = Process::PRIO_PGRP
-end
-
-priority = Process.getpriority(which, 0)
-p priority
-p Process.setpriority(which, 0, priority + 1)
-p Process.getpriority(which, 0)
diff --git a/spec/rubyspec/core/process/fork_spec.rb b/spec/rubyspec/core/process/fork_spec.rb
deleted file mode 100644
index 2de2231dc5..0000000000
--- a/spec/rubyspec/core/process/fork_spec.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../../../shared/process/fork', __FILE__)
-
-describe "Process.fork" do
- it_behaves_like :process_fork, :fork, Process
-end
diff --git a/spec/rubyspec/core/process/getpgid_spec.rb b/spec/rubyspec/core/process/getpgid_spec.rb
deleted file mode 100644
index b92fb15152..0000000000
--- a/spec/rubyspec/core/process/getpgid_spec.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.getpgid" do
- platform_is_not :windows do
- it "coerces the argument to an Integer" do
- Process.getpgid(mock_int(Process.pid)).should == Process.getpgrp
- end
-
- it "returns the process group ID for the given process id" do
- Process.getpgid(Process.pid).should == Process.getpgrp
- end
-
- it "returns the process group ID for the calling process id when passed 0" do
- Process.getpgid(0).should == Process.getpgrp
- end
- end
-end
diff --git a/spec/rubyspec/core/process/getpgrp_spec.rb b/spec/rubyspec/core/process/getpgrp_spec.rb
deleted file mode 100644
index 9643a16b2a..0000000000
--- a/spec/rubyspec/core/process/getpgrp_spec.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-# see setpgrp_spec.rb
-
-describe "Process.getpgrp" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/getpriority_spec.rb b/spec/rubyspec/core/process/getpriority_spec.rb
deleted file mode 100644
index 68307b9bd5..0000000000
--- a/spec/rubyspec/core/process/getpriority_spec.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.getpriority" do
- platform_is_not :windows do
-
- it "coerces arguments to Integers" do
- ret = Process.getpriority mock_int(Process::PRIO_PROCESS), mock_int(0)
- ret.should be_kind_of(Fixnum)
- end
-
- it "gets the scheduling priority for a specified process" do
- Process.getpriority(Process::PRIO_PROCESS, 0).should be_kind_of(Fixnum)
- end
-
- it "gets the scheduling priority for a specified process group" do
- Process.getpriority(Process::PRIO_PGRP, 0).should be_kind_of(Fixnum)
- end
-
- it "gets the scheduling priority for a specified user" do
- Process.getpriority(Process::PRIO_USER, 0).should be_kind_of(Fixnum)
- end
- end
-end
diff --git a/spec/rubyspec/core/process/getrlimit_spec.rb b/spec/rubyspec/core/process/getrlimit_spec.rb
deleted file mode 100644
index 7924d43081..0000000000
--- a/spec/rubyspec/core/process/getrlimit_spec.rb
+++ /dev/null
@@ -1,91 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-platform_is :aix do
- # In AIX, if getrlimit(2) is called multiple times with RLIMIT_DATA,
- # the first call and the subequent calls return slightly different
- # values of rlim_cur, even if the process does nothing between
- # the calls. This behavior causes some of the tests in this spec
- # to fail, so call Process.getrlimit(:DATA) once and discard the result.
- # Subsequent calls to Process.getrlimit(:DATA) should return
- # a consistent value of rlim_cur.
- Process.getrlimit(:DATA)
-end
-
-platform_is_not :windows do
- describe "Process.getrlimit" do
- it "returns a two-element Array of Integers" do
- result = Process.getrlimit Process::RLIMIT_CORE
- result.size.should == 2
- result.first.should be_kind_of(Integer)
- result.last.should be_kind_of(Integer)
- end
-
- context "when passed an Object" do
- before do
- @resource = Process::RLIMIT_CORE
- end
-
- it "calls #to_int to convert to an Integer" do
- obj = mock("process getrlimit integer")
- obj.should_receive(:to_int).and_return(@resource)
-
- Process.getrlimit(obj).should == Process.getrlimit(@resource)
- end
-
- it "raises a TypeError if #to_int does not return an Integer" do
- obj = mock("process getrlimit integer")
- obj.should_receive(:to_int).and_return(nil)
-
- lambda { Process.getrlimit(obj) }.should raise_error(TypeError)
- end
- end
-
- context "when passed a Symbol" do
- Process.constants.grep(/\ARLIMIT_/) do |fullname|
- short = $'
- it "coerces :#{short} into #{fullname}" do
- Process.getrlimit(short.to_sym).should == Process.getrlimit(Process.const_get(fullname))
- end
- end
-
- it "raises ArgumentError when passed an unknown resource" do
- lambda { Process.getrlimit(:FOO) }.should raise_error(ArgumentError)
- end
- end
-
- context "when passed a String" do
- Process.constants.grep(/\ARLIMIT_/) do |fullname|
- short = $'
- it "coerces '#{short}' into #{fullname}" do
- Process.getrlimit(short).should == Process.getrlimit(Process.const_get(fullname))
- end
- end
-
- it "raises ArgumentError when passed an unknown resource" do
- lambda { Process.getrlimit("FOO") }.should raise_error(ArgumentError)
- end
- end
-
- context "when passed on Object" do
- before do
- @resource = Process::RLIMIT_CORE
- end
-
- it "calls #to_str to convert to a String" do
- obj = mock("process getrlimit string")
- obj.should_receive(:to_str).and_return("CORE")
- obj.should_not_receive(:to_int)
-
- Process.getrlimit(obj).should == Process.getrlimit(@resource)
- end
-
- it "calls #to_int if #to_str does not return a String" do
- obj = mock("process getrlimit string")
- obj.should_receive(:to_str).and_return(nil)
- obj.should_receive(:to_int).and_return(@resource)
-
- Process.getrlimit(obj).should == Process.getrlimit(@resource)
- end
- end
- end
-end
diff --git a/spec/rubyspec/core/process/gid/change_privilege_spec.rb b/spec/rubyspec/core/process/gid/change_privilege_spec.rb
deleted file mode 100644
index 9670e4970f..0000000000
--- a/spec/rubyspec/core/process/gid/change_privilege_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::GID.change_privilege" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/gid/eid_spec.rb b/spec/rubyspec/core/process/gid/eid_spec.rb
deleted file mode 100644
index 6d6a672fea..0000000000
--- a/spec/rubyspec/core/process/gid/eid_spec.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::GID.eid" do
- it "needs to be reviewed for spec completeness"
-end
-
-describe "Process::GID.eid=" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/gid/grant_privilege_spec.rb b/spec/rubyspec/core/process/gid/grant_privilege_spec.rb
deleted file mode 100644
index 27373c7113..0000000000
--- a/spec/rubyspec/core/process/gid/grant_privilege_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::GID.grant_privilege" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/gid/re_exchange_spec.rb b/spec/rubyspec/core/process/gid/re_exchange_spec.rb
deleted file mode 100644
index 4f3a242680..0000000000
--- a/spec/rubyspec/core/process/gid/re_exchange_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::GID.re_exchange" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/gid/re_exchangeable_spec.rb b/spec/rubyspec/core/process/gid/re_exchangeable_spec.rb
deleted file mode 100644
index 1fc5298f26..0000000000
--- a/spec/rubyspec/core/process/gid/re_exchangeable_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::GID.re_exchangeable?" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/gid/rid_spec.rb b/spec/rubyspec/core/process/gid/rid_spec.rb
deleted file mode 100644
index fb5c51e412..0000000000
--- a/spec/rubyspec/core/process/gid/rid_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::GID.rid" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/gid/sid_available_spec.rb b/spec/rubyspec/core/process/gid/sid_available_spec.rb
deleted file mode 100644
index 59b2c3ae1e..0000000000
--- a/spec/rubyspec/core/process/gid/sid_available_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::GID.sid_available?" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/gid/switch_spec.rb b/spec/rubyspec/core/process/gid/switch_spec.rb
deleted file mode 100644
index 7ae6dae9a7..0000000000
--- a/spec/rubyspec/core/process/gid/switch_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::GID.switch" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/gid_spec.rb b/spec/rubyspec/core/process/gid_spec.rb
deleted file mode 100644
index c39c60a95f..0000000000
--- a/spec/rubyspec/core/process/gid_spec.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.gid" do
- platform_is_not :windows do
- it "returns the correct gid for the user executing this process" do
- current_gid_according_to_unix = `id -gr`.to_i
- Process.gid.should == current_gid_according_to_unix
- end
- end
-
- it "also goes by Process::GID.rid" do
- Process::GID.rid.should == Process.gid
- end
-
- it "also goes by Process::Sys.getgid" do
- Process::Sys.getgid.should == Process.gid
- end
-end
-
-describe "Process.gid=" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/groups_spec.rb b/spec/rubyspec/core/process/groups_spec.rb
deleted file mode 100644
index 0669258bf3..0000000000
--- a/spec/rubyspec/core/process/groups_spec.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.groups" do
- platform_is_not :windows do
- it "gets an Array of the gids of groups in the supplemental group access list" do
- groups = `id -G`.scan(/\d+/).map { |i| i.to_i }
- gid = Process.gid
-
- expected = (groups.sort - [gid]).sort
- actual = (Process.groups - [gid]).sort
- actual.should == expected
- end
-
- # NOTE: This is kind of sketchy.
- it "sets the list of gids of groups in the supplemental group access list" do
- groups = Process.groups
- if Process.uid == 0
- Process.groups = []
- Process.groups.should == []
- Process.groups = groups
- Process.groups.sort.should == groups.sort
- else
- platform_is :aix do
- # setgroups() is not part of the POSIX standard,
- # so its behavior varies from OS to OS. AIX allows a non-root
- # process to set the supplementary group IDs, as long as
- # they are presently in its supplementary group IDs.
- # The order of the following tests matters.
- # After this process executes "Process.groups = []"
- # it should no longer be able to set any supplementary
- # group IDs, even if it originally belonged to them.
- # It should only be able to set its primary group ID.
- Process.groups = groups
- Process.groups.sort.should == groups.sort
- Process.groups = []
- Process.groups.should == []
- Process.groups = [ Process.gid ]
- Process.groups.should == [ Process.gid ]
- supplementary = groups - [ Process.gid ]
- if supplementary.length > 0
- lambda { Process.groups = supplementary }.should raise_error(Errno::EPERM)
- end
- end
- platform_is_not :aix do
- lambda { Process.groups = [] }.should raise_error(Errno::EPERM)
- end
- end
- end
- end
-end
-
-describe "Process.groups=" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/initgroups_spec.rb b/spec/rubyspec/core/process/initgroups_spec.rb
deleted file mode 100644
index 084c52652c..0000000000
--- a/spec/rubyspec/core/process/initgroups_spec.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.initgroups" do
- platform_is_not :windows do
- it "initializes the supplemental group access list" do
- name = `id -un`.strip
- groups = Process.groups
- gid = groups.max.to_i + 1
- augmented_groups = `id -G`.scan(/\d+/).map {|i| i.to_i} << gid
- if Process.uid == 0
- Process.groups = []
- Process.initgroups(name, gid).sort.should == augmented_groups.sort
- Process.groups.sort.should == augmented_groups.sort
- Process.groups = groups
- else
- lambda { Process.initgroups(name, gid) }.should raise_error(Errno::EPERM)
- end
- end
- end
-end
diff --git a/spec/rubyspec/core/process/kill_spec.rb b/spec/rubyspec/core/process/kill_spec.rb
deleted file mode 100644
index 4316daf374..0000000000
--- a/spec/rubyspec/core/process/kill_spec.rb
+++ /dev/null
@@ -1,128 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/common', __FILE__)
-
-describe "Process.kill" do
- ProcessSpecs.use_system_ruby(self)
-
- before :each do
- @pid = Process.pid
- end
-
- it "raises an ArgumentError for unknown signals" do
- lambda { Process.kill("FOO", @pid) }.should raise_error(ArgumentError)
- end
-
- it "raises an ArgumentError if passed a lowercase signal name" do
- lambda { Process.kill("term", @pid) }.should raise_error(ArgumentError)
- end
-
- it "raises an ArgumentError if signal is not a Fixnum or String" do
- signal = mock("process kill signal")
- signal.should_not_receive(:to_int)
-
- lambda { Process.kill(signal, @pid) }.should raise_error(ArgumentError)
- end
-
- it "raises Errno::ESRCH if the process does not exist" do
- pid = Process.spawn(*ruby_exe, "-e", "sleep 10")
- Process.kill("SIGKILL", pid)
- Process.wait(pid)
- lambda {
- Process.kill("SIGKILL", pid)
- }.should raise_error(Errno::ESRCH)
- end
-end
-
-platform_is_not :windows do
- describe "Process.kill" do
- ProcessSpecs.use_system_ruby(self)
-
- before :each do
- @sp = ProcessSpecs::Signalizer.new
- end
-
- after :each do
- @sp.cleanup
- end
-
- it "accepts a Symbol as a signal name" do
- Process.kill(:SIGTERM, @sp.pid)
- @sp.result.should == "signaled"
- end
-
- it "accepts a String as signal name" do
- Process.kill("SIGTERM", @sp.pid)
- @sp.result.should == "signaled"
- end
-
- it "accepts a signal name without the 'SIG' prefix" do
- Process.kill("TERM", @sp.pid)
- @sp.result.should == "signaled"
- end
-
- it "accepts a signal name with the 'SIG' prefix" do
- Process.kill("SIGTERM", @sp.pid)
- @sp.result.should == "signaled"
- end
-
- it "acceps an Integer as a signal value" do
- Process.kill(15, @sp.pid)
- @sp.result.should == "signaled"
- end
-
- it "calls #to_int to coerce the pid to an Integer" do
- Process.kill("SIGTERM", mock_int(@sp.pid))
- @sp.result.should == "signaled"
- end
- end
-
- describe "Process.kill" do
- ProcessSpecs.use_system_ruby(self)
-
- before :each do
- @sp1 = ProcessSpecs::Signalizer.new
- @sp2 = ProcessSpecs::Signalizer.new
- end
-
- after :each do
- @sp1.cleanup
- @sp2.cleanup
- end
-
- it "signals multiple processes" do
- Process.kill("SIGTERM", @sp1.pid, @sp2.pid)
- @sp1.result.should == "signaled"
- @sp2.result.should == "signaled"
- end
-
- it "returns the number of processes signaled" do
- Process.kill("SIGTERM", @sp1.pid, @sp2.pid).should == 2
- end
- end
-
- describe "Process.kill" do
- after :each do
- @sp.cleanup if @sp
- end
-
- it "signals the process group if the PID is zero" do
- @sp = ProcessSpecs::Signalizer.new "self"
- @sp.result.should == "signaled"
- end
-
- it "signals the process group if the signal number is negative" do
- @sp = ProcessSpecs::Signalizer.new "group_numeric"
- @sp.result.should == "signaled"
- end
-
- it "signals the process group if the short signal name starts with a minus sign" do
- @sp = ProcessSpecs::Signalizer.new "group_short_string"
- @sp.result.should == "signaled"
- end
-
- it "signals the process group if the full signal name starts with a minus sign" do
- @sp = ProcessSpecs::Signalizer.new "group_full_string"
- @sp.result.should == "signaled"
- end
- end
-end
diff --git a/spec/rubyspec/core/process/maxgroups_spec.rb b/spec/rubyspec/core/process/maxgroups_spec.rb
deleted file mode 100644
index 8a40a1aba6..0000000000
--- a/spec/rubyspec/core/process/maxgroups_spec.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-platform_is_not :windows do
- describe "Process.maxgroups" do
- it "returns the maximum number of gids allowed in the supplemental group access list" do
- Process.maxgroups.should be_kind_of(Fixnum)
- end
-
- it "sets the maximum number of gids allowed in the supplemental group access list" do
- n = Process.maxgroups
- begin
- Process.maxgroups = n - 1
- Process.maxgroups.should == n - 1
- ensure
- Process.maxgroups = n
- end
- end
- end
-end
diff --git a/spec/rubyspec/core/process/pid_spec.rb b/spec/rubyspec/core/process/pid_spec.rb
deleted file mode 100644
index 114b20f11f..0000000000
--- a/spec/rubyspec/core/process/pid_spec.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.pid" do
- it "returns the process id of this process" do
- pid = Process.pid
- pid.should be_kind_of(Fixnum)
- Process.pid.should == pid
- end
-end
diff --git a/spec/rubyspec/core/process/ppid_spec.rb b/spec/rubyspec/core/process/ppid_spec.rb
deleted file mode 100644
index ec6ce865ee..0000000000
--- a/spec/rubyspec/core/process/ppid_spec.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.ppid" do
- with_feature :fork do
- it "returns the process id of the parent of this process" do
-
- read, write = IO.pipe
-
- child_pid = Process.fork {
- read.close
- write << "#{Process.ppid}\n"
- write.close
- exit!
- }
-
- write.close
- pid = read.gets
- read.close
- Process.wait(child_pid)
- pid.to_i.should == Process.pid
- end
- end
-end
diff --git a/spec/rubyspec/core/process/set_proctitle_spec.rb b/spec/rubyspec/core/process/set_proctitle_spec.rb
deleted file mode 100644
index e004f8efc9..0000000000
--- a/spec/rubyspec/core/process/set_proctitle_spec.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-# Note that there's no way to get the current process title defined as a spec
-# somewhere. Process.setproctitle explicitly does not change `$0` so the only
-# way to get the process title is to shell out.
-describe 'Process.setproctitle' do
- platform_is :linux, :darwin do
- before :each do
- @old_title = $0
- end
-
- after :each do
- Process.setproctitle(@old_title)
- end
-
- it 'should set the process title' do
- title = 'rubyspec-proctitle-test'
-
- Process.setproctitle(title).should == title
- `ps -ocommand= -p#{$$}`.should include(title)
- end
- end
-end
diff --git a/spec/rubyspec/core/process/setpgid_spec.rb b/spec/rubyspec/core/process/setpgid_spec.rb
deleted file mode 100644
index bd1596d0eb..0000000000
--- a/spec/rubyspec/core/process/setpgid_spec.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.setpgid" do
- with_feature :fork do
- it "sets the process group id of the specified process" do
- rd, wr = IO.pipe
-
- pid = Process.fork do
- wr.close
- rd.read
- rd.close
- Process.exit!
- end
-
- rd.close
-
- begin
- Process.getpgid(pid).should == Process.getpgrp
- Process.setpgid(mock_int(pid), mock_int(pid)).should == 0
- Process.getpgid(pid).should == pid
- ensure
- wr.write ' '
- wr.close
- Process.wait pid
- end
- end
- end
-end
diff --git a/spec/rubyspec/core/process/setpgrp_spec.rb b/spec/rubyspec/core/process/setpgrp_spec.rb
deleted file mode 100644
index 8e72795f96..0000000000
--- a/spec/rubyspec/core/process/setpgrp_spec.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-# TODO: put these in the right files.
-describe "Process.setpgrp and Process.getpgrp" do
- platform_is_not :windows do
- it "sets and gets the process group ID of the calling process" do
- # there are two synchronization points here:
- # One for the child to let the parent know that it has finished
- # setting its process group;
- # and another for the parent to let the child know that it's ok to die.
- read1, write1 = IO.pipe
- read2, write2 = IO.pipe
- pid = Process.fork do
- read1.close
- write2.close
- Process.setpgrp
- write1 << Process.getpgrp
- write1.close
- read2.read(1)
- read2.close
- Process.exit!
- end
- write1.close
- read2.close
- pgid = read1.read # wait for child to change process groups
- read1.close
-
- begin
- Process.getpgid(pid).should == pgid.to_i
- ensure
- write2 << "!"
- write2.close
- Process.wait pid
- end
- end
- end
-end
diff --git a/spec/rubyspec/core/process/setpriority_spec.rb b/spec/rubyspec/core/process/setpriority_spec.rb
deleted file mode 100644
index 7b437a547a..0000000000
--- a/spec/rubyspec/core/process/setpriority_spec.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.setpriority" do
- platform_is_not :windows do
- it "sets the scheduling priority for a specified process" do
- priority = Process.getpriority(Process::PRIO_PROCESS, 0)
-
- out = ruby_exe(fixture(__FILE__, "setpriority.rb"), args: "process")
- out = out.lines.map { |l| Integer(l) }
- pr = out[0]
- out.should == [pr, 0, pr+1]
-
- Process.getpriority(Process::PRIO_PROCESS, 0).should == priority
- end
-
- # Darwin and FreeBSD don't seem to handle these at all, getting all out of
- # whack with either permission errors or just the wrong value
- platform_is_not :darwin, :freebsd do
- it "sets the scheduling priority for a specified process group" do
- priority = Process.getpriority(Process::PRIO_PGRP, 0)
-
- out = ruby_exe(fixture(__FILE__, "setpriority.rb"), args: "group")
- out = out.lines.map { |l| Integer(l) }
- pr = out[0]
- out.should == [pr, 0, pr+1]
-
- Process.getpriority(Process::PRIO_PGRP, 0).should == priority
- end
- end
-
- as_superuser do
- it "sets the scheduling priority for a specified user" do
- p = Process.getpriority(Process::PRIO_USER, 0)
- Process.setpriority(Process::PRIO_USER, 0, p + 1).should == 0
- Process.getpriority(Process::PRIO_USER, 0).should == (p + 1)
- Process.setpriority(Process::PRIO_USER, 0, p).should == 0
- end
- end
- end
-
-end
diff --git a/spec/rubyspec/core/process/setrlimit_spec.rb b/spec/rubyspec/core/process/setrlimit_spec.rb
deleted file mode 100644
index 5d137ca6c1..0000000000
--- a/spec/rubyspec/core/process/setrlimit_spec.rb
+++ /dev/null
@@ -1,232 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-platform_is_not :windows do
- describe "Process.setrlimit" do
- context "when passed an Object" do
- before do
- @resource = Process::RLIMIT_CORE
- @limit, @max = Process.getrlimit @resource
- end
-
- it "calls #to_int to convert resource to an Integer" do
- Process.setrlimit(mock_int(@resource), @limit, @max).should be_nil
- end
-
- it "raises a TypeError if #to_int for resource does not return an Integer" do
- obj = mock("process getrlimit integer")
- obj.should_receive(:to_int).and_return(nil)
-
- lambda { Process.setrlimit(obj, @limit, @max) }.should raise_error(TypeError)
- end
-
- it "calls #to_int to convert the soft limit to an Integer" do
- Process.setrlimit(@resource, mock_int(@limit), @max).should be_nil
- end
-
- it "raises a TypeError if #to_int for resource does not return an Integer" do
- obj = mock("process getrlimit integer")
- obj.should_receive(:to_int).and_return(nil)
-
- lambda { Process.setrlimit(@resource, obj, @max) }.should raise_error(TypeError)
- end
-
- it "calls #to_int to convert the hard limit to an Integer" do
- Process.setrlimit(@resource, @limit, mock_int(@max)).should be_nil
- end
-
- it "raises a TypeError if #to_int for resource does not return an Integer" do
- obj = mock("process getrlimit integer")
- obj.should_receive(:to_int).and_return(nil)
-
- lambda { Process.setrlimit(@resource, @limit, obj) }.should raise_error(TypeError)
- end
- end
-
- context "when passed a Symbol" do
- platform_is_not :openbsd do
- it "coerces :AS into RLIMIT_AS" do
- Process.setrlimit(:AS, *Process.getrlimit(Process::RLIMIT_AS)).should be_nil
- end
- end
-
- it "coerces :CORE into RLIMIT_CORE" do
- Process.setrlimit(:CORE, *Process.getrlimit(Process::RLIMIT_CORE)).should be_nil
- end
-
- it "coerces :CPU into RLIMIT_CPU" do
- Process.setrlimit(:CPU, *Process.getrlimit(Process::RLIMIT_CPU)).should be_nil
- end
-
- it "coerces :DATA into RLIMIT_DATA" do
- Process.setrlimit(:DATA, *Process.getrlimit(Process::RLIMIT_DATA)).should be_nil
- end
-
- it "coerces :FSIZE into RLIMIT_FSIZE" do
- Process.setrlimit(:FSIZE, *Process.getrlimit(Process::RLIMIT_FSIZE)).should be_nil
- end
-
- it "coerces :NOFILE into RLIMIT_NOFILE" do
- Process.setrlimit(:NOFILE, *Process.getrlimit(Process::RLIMIT_NOFILE)).should be_nil
- end
-
- it "coerces :STACK into RLIMIT_STACK" do
- Process.setrlimit(:STACK, *Process.getrlimit(Process::RLIMIT_STACK)).should be_nil
- end
-
- platform_is_not :solaris, :aix do
- it "coerces :MEMLOCK into RLIMIT_MEMLOCK" do
- Process.setrlimit(:MEMLOCK, *Process.getrlimit(Process::RLIMIT_MEMLOCK)).should be_nil
- end
- end
-
- platform_is_not :solaris do
- it "coerces :NPROC into RLIMIT_NPROC" do
- Process.setrlimit(:NPROC, *Process.getrlimit(Process::RLIMIT_NPROC)).should be_nil
- end
-
- it "coerces :RSS into RLIMIT_RSS" do
- Process.setrlimit(:RSS, *Process.getrlimit(Process::RLIMIT_RSS)).should be_nil
- end
- end
-
- platform_is :netbsd, :freebsd do
- it "coerces :SBSIZE into RLIMIT_SBSIZE" do
- Process.setrlimit(:SBSIZE, *Process.getrlimit(Process::RLIMIT_SBSIZE)).should be_nil
- end
- end
-
- platform_is :linux do
- it "coerces :RTPRIO into RLIMIT_RTPRIO" do
- Process.setrlimit(:RTPRIO, *Process.getrlimit(Process::RLIMIT_RTPRIO)).should be_nil
- end
-
- if defined?(Process::RLIMIT_RTTIME)
- it "coerces :RTTIME into RLIMIT_RTTIME" do
- Process.setrlimit(:RTTIME, *Process.getrlimit(Process::RLIMIT_RTTIME)).should be_nil
- end
- end
-
- it "coerces :SIGPENDING into RLIMIT_SIGPENDING" do
- Process.setrlimit(:SIGPENDING, *Process.getrlimit(Process::RLIMIT_SIGPENDING)).should be_nil
- end
-
- it "coerces :MSGQUEUE into RLIMIT_MSGQUEUE" do
- Process.setrlimit(:MSGQUEUE, *Process.getrlimit(Process::RLIMIT_MSGQUEUE)).should be_nil
- end
-
- it "coerces :NICE into RLIMIT_NICE" do
- Process.setrlimit(:NICE, *Process.getrlimit(Process::RLIMIT_NICE)).should be_nil
- end
- end
-
- it "raises ArgumentError when passed an unknown resource" do
- lambda { Process.setrlimit(:FOO, 1, 1) }.should raise_error(ArgumentError)
- end
- end
-
- context "when passed a String" do
- platform_is_not :openbsd do
- it "coerces 'AS' into RLIMIT_AS" do
- Process.setrlimit("AS", *Process.getrlimit(Process::RLIMIT_AS)).should be_nil
- end
- end
-
- it "coerces 'CORE' into RLIMIT_CORE" do
- Process.setrlimit("CORE", *Process.getrlimit(Process::RLIMIT_CORE)).should be_nil
- end
-
- it "coerces 'CPU' into RLIMIT_CPU" do
- Process.setrlimit("CPU", *Process.getrlimit(Process::RLIMIT_CPU)).should be_nil
- end
-
- it "coerces 'DATA' into RLIMIT_DATA" do
- Process.setrlimit("DATA", *Process.getrlimit(Process::RLIMIT_DATA)).should be_nil
- end
-
- it "coerces 'FSIZE' into RLIMIT_FSIZE" do
- Process.setrlimit("FSIZE", *Process.getrlimit(Process::RLIMIT_FSIZE)).should be_nil
- end
-
- it "coerces 'NOFILE' into RLIMIT_NOFILE" do
- Process.setrlimit("NOFILE", *Process.getrlimit(Process::RLIMIT_NOFILE)).should be_nil
- end
-
- it "coerces 'STACK' into RLIMIT_STACK" do
- Process.setrlimit("STACK", *Process.getrlimit(Process::RLIMIT_STACK)).should be_nil
- end
-
- platform_is_not :solaris, :aix do
- it "coerces 'MEMLOCK' into RLIMIT_MEMLOCK" do
- Process.setrlimit("MEMLOCK", *Process.getrlimit(Process::RLIMIT_MEMLOCK)).should be_nil
- end
- end
-
- platform_is_not :solaris do
- it "coerces 'NPROC' into RLIMIT_NPROC" do
- Process.setrlimit("NPROC", *Process.getrlimit(Process::RLIMIT_NPROC)).should be_nil
- end
-
- it "coerces 'RSS' into RLIMIT_RSS" do
- Process.setrlimit("RSS", *Process.getrlimit(Process::RLIMIT_RSS)).should be_nil
- end
- end
-
- platform_is :netbsd, :freebsd do
- it "coerces 'SBSIZE' into RLIMIT_SBSIZE" do
- Process.setrlimit("SBSIZE", *Process.getrlimit(Process::RLIMIT_SBSIZE)).should be_nil
- end
- end
-
- platform_is :linux do
- it "coerces 'RTPRIO' into RLIMIT_RTPRIO" do
- Process.setrlimit("RTPRIO", *Process.getrlimit(Process::RLIMIT_RTPRIO)).should be_nil
- end
-
- if defined?(Process::RLIMIT_RTTIME)
- it "coerces 'RTTIME' into RLIMIT_RTTIME" do
- Process.setrlimit("RTTIME", *Process.getrlimit(Process::RLIMIT_RTTIME)).should be_nil
- end
- end
-
- it "coerces 'SIGPENDING' into RLIMIT_SIGPENDING" do
- Process.setrlimit("SIGPENDING", *Process.getrlimit(Process::RLIMIT_SIGPENDING)).should be_nil
- end
-
- it "coerces 'MSGQUEUE' into RLIMIT_MSGQUEUE" do
- Process.setrlimit("MSGQUEUE", *Process.getrlimit(Process::RLIMIT_MSGQUEUE)).should be_nil
- end
-
- it "coerces 'NICE' into RLIMIT_NICE" do
- Process.setrlimit("NICE", *Process.getrlimit(Process::RLIMIT_NICE)).should be_nil
- end
- end
-
- it "raises ArgumentError when passed an unknown resource" do
- lambda { Process.setrlimit("FOO", 1, 1) }.should raise_error(ArgumentError)
- end
- end
-
- context "when passed on Object" do
- before do
- @resource = Process::RLIMIT_CORE
- @limit, @max = Process.getrlimit @resource
- end
-
- it "calls #to_str to convert to a String" do
- obj = mock("process getrlimit string")
- obj.should_receive(:to_str).and_return("CORE")
- obj.should_not_receive(:to_int)
-
- Process.setrlimit(obj, @limit, @max).should be_nil
- end
-
- it "calls #to_int if #to_str does not return a String" do
- obj = mock("process getrlimit string")
- obj.should_receive(:to_str).and_return(nil)
- obj.should_receive(:to_int).and_return(@resource)
-
- Process.setrlimit(obj, @limit, @max).should be_nil
- end
- end
- end
-end
diff --git a/spec/rubyspec/core/process/setsid_spec.rb b/spec/rubyspec/core/process/setsid_spec.rb
deleted file mode 100644
index abb75f8225..0000000000
--- a/spec/rubyspec/core/process/setsid_spec.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.setsid" do
- with_feature :fork do
- it "establishes this process as a new session and process group leader" do
- read, write = IO.pipe
- read2, write2 = IO.pipe
- pid = Process.fork {
- begin
- read.close
- write2.close
- pgid = Process.setsid
- write << pgid
- write.close
- read2.gets
- rescue Exception => e
- write << e << e.backtrace
- end
- Process.exit!
- }
- write.close
- read2.close
- pgid_child = Integer(read.gets)
- read.close
- platform_is_not :aix do
- # AIX does not allow Process.getsid(pid)
- # if pid is in a different session.
- pgid = Process.getsid(pid)
- pgid_child.should == pgid
- end
- write2.close
- Process.wait pid
-
- pgid_child.should_not == Process.getsid
- end
- end
-end
diff --git a/spec/rubyspec/core/process/spawn_spec.rb b/spec/rubyspec/core/process/spawn_spec.rb
deleted file mode 100644
index 330ec8fcd8..0000000000
--- a/spec/rubyspec/core/process/spawn_spec.rb
+++ /dev/null
@@ -1,634 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/common', __FILE__)
-
-newline = "\n"
-platform_is :windows do
- newline = "\r\n"
-end
-
-describe :process_spawn_does_not_close_std_streams, shared: true do
- platform_is_not :windows do
- it "does not close STDIN" do
- code = "STDOUT.puts STDIN.read(0).inspect"
- cmd = "Process.wait Process.spawn(#{ruby_cmd(code).inspect}, #{@options.inspect})"
- ruby_exe(cmd, args: "> #{@output}")
- File.binread(@output).should == %[""#{newline}]
- end
-
- it "does not close STDOUT" do
- code = "STDOUT.puts 'hello'"
- cmd = "Process.wait Process.spawn(#{ruby_cmd(code).inspect}, #{@options.inspect})"
- ruby_exe(cmd, args: "> #{@output}")
- File.binread(@output).should == "hello#{newline}"
- end
-
- it "does not close STDERR" do
- code = "STDERR.puts 'hello'"
- cmd = "Process.wait Process.spawn(#{ruby_cmd(code).inspect}, #{@options.inspect})"
- ruby_exe(cmd, args: "2> #{@output}")
- File.binread(@output).should == "hello#{newline}"
- end
- end
-end
-
-describe "Process.spawn" do
- ProcessSpecs.use_system_ruby(self)
-
- before :each do
- @name = tmp("process_spawn.txt")
- @var = "$FOO"
- platform_is :windows do
- @var = "%FOO%"
- end
- end
-
- after :each do
- rm_r @name
- end
-
- it "executes the given command" do
- lambda { Process.wait Process.spawn("echo spawn") }.should output_to_fd("spawn\n")
- end
-
- it "returns the process ID of the new process as a Fixnum" do
- pid = Process.spawn(*ruby_exe, "-e", "exit")
- Process.wait pid
- pid.should be_an_instance_of(Fixnum)
- end
-
- it "returns immediately" do
- start = Time.now
- pid = Process.spawn(*ruby_exe, "-e", "sleep 10")
- (Time.now - start).should < 5
- Process.kill :KILL, pid
- Process.wait pid
- end
-
- # argv processing
-
- describe "with a single argument" do
- platform_is_not :windows do
- it "subjects the specified command to shell expansion" do
- lambda { Process.wait Process.spawn("echo *") }.should_not output_to_fd("*\n")
- end
-
- it "creates an argument array with shell parsing semantics for whitespace" do
- lambda { Process.wait Process.spawn("echo a b c d") }.should output_to_fd("a b c d\n")
- end
- end
-
- platform_is :windows do
- # There is no shell expansion on Windows
- it "does not subject the specified command to shell expansion on Windows" do
- lambda { Process.wait Process.spawn("echo *") }.should output_to_fd("*\n")
- end
-
- it "does not create an argument array with shell parsing semantics for whitespace on Windows" do
- lambda { Process.wait Process.spawn("echo a b c d") }.should output_to_fd("a b c d\n")
- end
- end
-
- it "calls #to_str to convert the argument to a String" do
- o = mock("to_str")
- o.should_receive(:to_str).and_return("echo foo")
- lambda { Process.wait Process.spawn(o) }.should output_to_fd("foo\n")
- end
-
- it "raises an ArgumentError if the command includes a null byte" do
- lambda { Process.spawn "\000" }.should raise_error(ArgumentError)
- end
-
- it "raises a TypeError if the argument does not respond to #to_str" do
- lambda { Process.spawn :echo }.should raise_error(TypeError)
- end
- end
-
- describe "with multiple arguments" do
- it "does not subject the arguments to shell expansion" do
- lambda { Process.wait Process.spawn("echo", "*") }.should output_to_fd("*\n")
- end
-
- it "preserves whitespace in passed arguments" do
- out = "a b c d\n"
- platform_is :windows do
- # The echo command on Windows takes quotes literally
- out = "\"a b c d\"\n"
- end
- lambda { Process.wait Process.spawn("echo", "a b c d") }.should output_to_fd(out)
- end
-
- it "calls #to_str to convert the arguments to Strings" do
- o = mock("to_str")
- o.should_receive(:to_str).and_return("foo")
- lambda { Process.wait Process.spawn("echo", o) }.should output_to_fd("foo\n")
- end
-
- it "raises an ArgumentError if an argument includes a null byte" do
- lambda { Process.spawn "echo", "\000" }.should raise_error(ArgumentError)
- end
-
- it "raises a TypeError if an argument does not respond to #to_str" do
- lambda { Process.spawn "echo", :foo }.should raise_error(TypeError)
- end
- end
-
- describe "with a command array" do
- it "uses the first element as the command name and the second as the argv[0] value" do
- platform_is_not :windows do
- lambda { Process.wait Process.spawn(["/bin/sh", "argv_zero"], "-c", "echo $0") }.should output_to_fd("argv_zero\n")
- end
- platform_is :windows do
- lambda { Process.wait Process.spawn(["cmd.exe", "/C"], "/C", "echo", "argv_zero") }.should output_to_fd("argv_zero\n")
- end
- end
-
- it "does not subject the arguments to shell expansion" do
- lambda { Process.wait Process.spawn(["echo", "echo"], "*") }.should output_to_fd("*\n")
- end
-
- it "preserves whitespace in passed arguments" do
- out = "a b c d\n"
- platform_is :windows do
- # The echo command on Windows takes quotes literally
- out = "\"a b c d\"\n"
- end
- lambda { Process.wait Process.spawn(["echo", "echo"], "a b c d") }.should output_to_fd(out)
- end
-
- it "calls #to_ary to convert the argument to an Array" do
- o = mock("to_ary")
- platform_is_not :windows do
- o.should_receive(:to_ary).and_return(["/bin/sh", "argv_zero"])
- lambda { Process.wait Process.spawn(o, "-c", "echo $0") }.should output_to_fd("argv_zero\n")
- end
- platform_is :windows do
- o.should_receive(:to_ary).and_return(["cmd.exe", "/C"])
- lambda { Process.wait Process.spawn(o, "/C", "echo", "argv_zero") }.should output_to_fd("argv_zero\n")
- end
- end
-
- it "calls #to_str to convert the first element to a String" do
- o = mock("to_str")
- o.should_receive(:to_str).and_return("echo")
- lambda { Process.wait Process.spawn([o, "echo"], "foo") }.should output_to_fd("foo\n")
- end
-
- it "calls #to_str to convert the second element to a String" do
- o = mock("to_str")
- o.should_receive(:to_str).and_return("echo")
- lambda { Process.wait Process.spawn(["echo", o], "foo") }.should output_to_fd("foo\n")
- end
-
- it "raises an ArgumentError if the Array does not have exactly two elements" do
- lambda { Process.spawn([]) }.should raise_error(ArgumentError)
- lambda { Process.spawn([:a]) }.should raise_error(ArgumentError)
- lambda { Process.spawn([:a, :b, :c]) }.should raise_error(ArgumentError)
- end
-
- it "raises an ArgumentError if the Strings in the Array include a null byte" do
- lambda { Process.spawn ["\000", "echo"] }.should raise_error(ArgumentError)
- lambda { Process.spawn ["echo", "\000"] }.should raise_error(ArgumentError)
- end
-
- it "raises a TypeError if an element in the Array does not respond to #to_str" do
- lambda { Process.spawn ["echo", :echo] }.should raise_error(TypeError)
- lambda { Process.spawn [:echo, "echo"] }.should raise_error(TypeError)
- end
- end
-
- # env handling
-
- after :each do
- ENV.delete("FOO")
- end
-
- it "sets environment variables in the child environment" do
- Process.wait Process.spawn({"FOO" => "BAR"}, "echo #{@var}>#{@name}")
- File.read(@name).should == "BAR\n"
- end
-
- it "unsets environment variables whose value is nil" do
- ENV["FOO"] = "BAR"
- Process.wait Process.spawn({"FOO" => nil}, "echo #{@var}>#{@name}")
- expected = "\n"
- platform_is :windows do
- # Windows does not expand the variable if it is unset
- expected = "#{@var}\n"
- end
- File.read(@name).should == expected
- end
-
- it "calls #to_hash to convert the environment" do
- o = mock("to_hash")
- o.should_receive(:to_hash).and_return({"FOO" => "BAR"})
- Process.wait Process.spawn(o, "echo #{@var}>#{@name}")
- File.read(@name).should == "BAR\n"
- end
-
- it "calls #to_str to convert the environment keys" do
- o = mock("to_str")
- o.should_receive(:to_str).and_return("FOO")
- Process.wait Process.spawn({o => "BAR"}, "echo #{@var}>#{@name}")
- File.read(@name).should == "BAR\n"
- end
-
- it "calls #to_str to convert the environment values" do
- o = mock("to_str")
- o.should_receive(:to_str).and_return("BAR")
- Process.wait Process.spawn({"FOO" => o}, "echo #{@var}>#{@name}")
- File.read(@name).should == "BAR\n"
- end
-
- it "raises an ArgumentError if an environment key includes an equals sign" do
- lambda do
- Process.spawn({"FOO=" => "BAR"}, "echo #{@var}>#{@name}")
- end.should raise_error(ArgumentError)
- end
-
- it "raises an ArgumentError if an environment key includes a null byte" do
- lambda do
- Process.spawn({"\000" => "BAR"}, "echo #{@var}>#{@name}")
- end.should raise_error(ArgumentError)
- end
-
- it "raises an ArgumentError if an environment value includes a null byte" do
- lambda do
- Process.spawn({"FOO" => "\000"}, "echo #{@var}>#{@name}")
- end.should raise_error(ArgumentError)
- end
-
- # :unsetenv_others
-
- before :each do
- @minimal_env = {
- "PATH" => ENV["PATH"],
- "HOME" => ENV["HOME"]
- }
- @common_env_spawn_args = [@minimal_env, "echo #{@var}>#{@name}"]
- end
-
- platform_is_not :windows do
- it "unsets other environment variables when given a true :unsetenv_others option" do
- ENV["FOO"] = "BAR"
- Process.wait Process.spawn(*@common_env_spawn_args, unsetenv_others: true)
- $?.success?.should be_true
- File.read(@name).should == "\n"
- end
- end
-
- it "does not unset other environment variables when given a false :unsetenv_others option" do
- ENV["FOO"] = "BAR"
- Process.wait Process.spawn(*@common_env_spawn_args, unsetenv_others: false)
- $?.success?.should be_true
- File.read(@name).should == "BAR\n"
- end
-
- platform_is_not :windows do
- it "does not unset environment variables included in the environment hash" do
- env = @minimal_env.merge({"FOO" => "BAR"})
- Process.wait Process.spawn(env, "echo #{@var}>#{@name}", unsetenv_others: true)
- $?.success?.should be_true
- File.read(@name).should == "BAR\n"
- end
- end
-
- # :pgroup
-
- platform_is_not :windows do
- it "joins the current process group by default" do
- lambda do
- Process.wait Process.spawn(ruby_cmd("print Process.getpgid(Process.pid)"))
- end.should output_to_fd(Process.getpgid(Process.pid).to_s)
- end
-
- it "joins the current process if pgroup: false" do
- lambda do
- Process.wait Process.spawn(ruby_cmd("print Process.getpgid(Process.pid)"), pgroup: false)
- end.should output_to_fd(Process.getpgid(Process.pid).to_s)
- end
-
- it "joins the current process if pgroup: nil" do
- lambda do
- Process.wait Process.spawn(ruby_cmd("print Process.getpgid(Process.pid)"), pgroup: nil)
- end.should output_to_fd(Process.getpgid(Process.pid).to_s)
- end
-
- it "joins a new process group if pgroup: true" do
- process = lambda do
- Process.wait Process.spawn(ruby_cmd("print Process.getpgid(Process.pid)"), pgroup: true)
- end
-
- process.should_not output_to_fd(Process.getpgid(Process.pid).to_s)
- process.should output_to_fd(/\d+/)
- end
-
- it "joins a new process group if pgroup: 0" do
- process = lambda do
- Process.wait Process.spawn(ruby_cmd("print Process.getpgid(Process.pid)"), pgroup: 0)
- end
-
- process.should_not output_to_fd(Process.getpgid(Process.pid).to_s)
- process.should output_to_fd(/\d+/)
- end
-
- it "joins the specified process group if pgroup: pgid" do
- pgid = Process.getpgid(Process.pid)
- lambda do
- Process.wait Process.spawn(ruby_cmd("print Process.getpgid(Process.pid)"), pgroup: pgid)
- end.should output_to_fd(pgid.to_s)
- end
-
- it "raises an ArgumentError if given a negative :pgroup option" do
- lambda { Process.spawn("echo", pgroup: -1) }.should raise_error(ArgumentError)
- end
-
- it "raises a TypeError if given a symbol as :pgroup option" do
- lambda { Process.spawn("echo", pgroup: :true) }.should raise_error(TypeError)
- end
- end
-
- platform_is :windows do
- it "raises an ArgumentError if given :pgroup option" do
- lambda { Process.spawn("echo", pgroup: false) }.should raise_error(ArgumentError)
- end
- end
-
- # :rlimit_core
- # :rlimit_cpu
- # :rlimit_data
-
- # :chdir
-
- it "uses the current working directory as its working directory" do
- lambda do
- Process.wait Process.spawn(ruby_cmd("print Dir.pwd"))
- end.should output_to_fd(Dir.pwd)
- end
-
- describe "when passed :chdir" do
- before do
- @dir = tmp("spawn_chdir", false)
- Dir.mkdir @dir
- end
-
- after do
- rm_r @dir
- end
-
- it "changes to the directory passed for :chdir" do
- lambda do
- Process.wait Process.spawn(ruby_cmd("print Dir.pwd"), chdir: @dir)
- end.should output_to_fd(@dir)
- end
-
- it "calls #to_path to convert the :chdir value" do
- dir = mock("spawn_to_path")
- dir.should_receive(:to_path).and_return(@dir)
-
- lambda do
- Process.wait Process.spawn(ruby_cmd("print Dir.pwd"), chdir: dir)
- end.should output_to_fd(@dir)
- end
- end
-
- # :umask
-
- it "uses the current umask by default" do
- lambda do
- Process.wait Process.spawn(ruby_cmd("print File.umask"))
- end.should output_to_fd(File.umask.to_s)
- end
-
- platform_is_not :windows do
- it "sets the umask if given the :umask option" do
- lambda do
- Process.wait Process.spawn(ruby_cmd("print File.umask"), umask: 146)
- end.should output_to_fd("146")
- end
- end
-
- # redirection
-
- it "redirects STDOUT to the given file descriptior if out: Fixnum" do
- File.open(@name, 'w') do |file|
- lambda do
- Process.wait Process.spawn("echo glark", out: file.fileno)
- end.should output_to_fd("glark\n", file)
- end
- end
-
- it "redirects STDOUT to the given file if out: IO" do
- File.open(@name, 'w') do |file|
- lambda do
- Process.wait Process.spawn("echo glark", out: file)
- end.should output_to_fd("glark\n", file)
- end
- end
-
- it "redirects STDOUT to the given file if out: String" do
- Process.wait Process.spawn("echo glark", out: @name)
- File.read(@name).should == "glark\n"
- end
-
- it "redirects STDOUT to the given file if out: [String name, String mode]" do
- Process.wait Process.spawn("echo glark", out: [@name, 'w'])
- File.read(@name).should == "glark\n"
- end
-
- it "redirects STDERR to the given file descriptior if err: Fixnum" do
- File.open(@name, 'w') do |file|
- lambda do
- Process.wait Process.spawn("echo glark>&2", err: file.fileno)
- end.should output_to_fd("glark\n", file)
- end
- end
-
- it "redirects STDERR to the given file descriptor if err: IO" do
- File.open(@name, 'w') do |file|
- lambda do
- Process.wait Process.spawn("echo glark>&2", err: file)
- end.should output_to_fd("glark\n", file)
- end
- end
-
- it "redirects STDERR to the given file if err: String" do
- Process.wait Process.spawn("echo glark>&2", err: @name)
- File.read(@name).should == "glark\n"
- end
-
- it "redirects STDERR to child STDOUT if :err => [:child, :out]" do
- File.open(@name, 'w') do |file|
- lambda do
- Process.wait Process.spawn("echo glark>&2", :out => file, :err => [:child, :out])
- end.should output_to_fd("glark\n", file)
- end
- end
-
- it "redirects both STDERR and STDOUT to the given file descriptior" do
- File.open(@name, 'w') do |file|
- lambda do
- Process.wait Process.spawn(ruby_cmd("print(:glark); STDOUT.flush; STDERR.print(:bang)"),
- [:out, :err] => file.fileno)
- end.should output_to_fd("glarkbang", file)
- end
- end
-
- it "redirects both STDERR and STDOUT to the given IO" do
- File.open(@name, 'w') do |file|
- lambda do
- Process.wait Process.spawn(ruby_cmd("print(:glark); STDOUT.flush; STDERR.print(:bang)"),
- [:out, :err] => file)
- end.should output_to_fd("glarkbang", file)
- end
- end
-
- it "redirects both STDERR and STDOUT at the time to the given name" do
- touch @name
- Process.wait Process.spawn(ruby_cmd("print(:glark); STDOUT.flush; STDERR.print(:bang)"), [:out, :err] => @name)
- File.read(@name).should == "glarkbang"
- end
-
- context "when passed close_others: true" do
- before :each do
- @output = tmp("spawn_close_others_true")
- @options = { close_others: true }
- end
-
- after :each do
- rm_r @output
- end
-
- it "closes file descriptors >= 3 in the child process" do
- IO.pipe do |r, w|
- begin
- pid = Process.spawn(ruby_cmd("while File.exist? '#{@name}'; sleep 0.1; end"), @options)
- w.close
- lambda { r.read_nonblock(1) }.should raise_error(EOFError)
- ensure
- rm_r @name
- Process.wait(pid) if pid
- end
- end
- end
-
- it_should_behave_like :process_spawn_does_not_close_std_streams
- end
-
- context "when passed close_others: false" do
- before :each do
- @output = tmp("spawn_close_others_false")
- @options = { close_others: false }
- end
-
- after :each do
- rm_r @output
- end
-
- it "closes file descriptors >= 3 in the child process because they are set close_on_exec by default" do
- IO.pipe do |r, w|
- begin
- pid = Process.spawn(ruby_cmd("while File.exist? '#{@name}'; sleep 0.1; end"), @options)
- w.close
- lambda { r.read_nonblock(1) }.should raise_error(EOFError)
- ensure
- rm_r @name
- Process.wait(pid) if pid
- end
- end
- end
-
- platform_is_not :windows do
- it "does not close file descriptors >= 3 in the child process if fds are set close_on_exec=false" do
- IO.pipe do |r, w|
- r.close_on_exec = false
- w.close_on_exec = false
- begin
- pid = Process.spawn(ruby_cmd("while File.exist? '#{@name}'; sleep 0.1; end"), @options)
- w.close
- lambda { r.read_nonblock(1) }.should raise_error(Errno::EAGAIN)
- ensure
- rm_r @name
- Process.wait(pid) if pid
- end
- end
- end
- end
-
- it_should_behave_like :process_spawn_does_not_close_std_streams
- end
-
- # error handling
-
- it "raises an ArgumentError if passed no command arguments" do
- lambda { Process.spawn }.should raise_error(ArgumentError)
- end
-
- it "raises an ArgumentError if passed env or options but no command arguments" do
- lambda { Process.spawn({}) }.should raise_error(ArgumentError)
- end
-
- it "raises an ArgumentError if passed env and options but no command arguments" do
- lambda { Process.spawn({}, {}) }.should raise_error(ArgumentError)
- end
-
- it "raises an Errno::ENOENT for an empty string" do
- lambda { Process.spawn "" }.should raise_error(Errno::ENOENT)
- end
-
- it "raises an Errno::ENOENT if the command does not exist" do
- lambda { Process.spawn "nonesuch" }.should raise_error(Errno::ENOENT)
- end
-
- unless File.executable?(__FILE__) # Some FS (e.g. vboxfs) locate all files executable
- platform_is_not :windows do
- it "raises an Errno::EACCES when the file does not have execute permissions" do
- lambda { Process.spawn __FILE__ }.should raise_error(Errno::EACCES)
- end
- end
-
- platform_is :windows do
- it "raises Errno::EACCES or Errno::ENOEXEC when the file is not an executable file" do
- lambda { Process.spawn __FILE__ }.should raise_error(SystemCallError) { |e|
- [Errno::EACCES, Errno::ENOEXEC].should include(e.class)
- }
- end
- end
- end
-
- it "raises an Errno::EACCES when passed a directory" do
- lambda { Process.spawn File.dirname(__FILE__) }.should raise_error(Errno::EACCES)
- end
-
- it "raises an ArgumentError when passed a string key in options" do
- lambda { Process.spawn("echo", "chdir" => Dir.pwd) }.should raise_error(ArgumentError)
- end
-
- it "raises an ArgumentError when passed an unknown option key" do
- lambda { Process.spawn("echo", nonesuch: :foo) }.should raise_error(ArgumentError)
- end
-
- platform_is_not :windows do
- describe "with Integer option keys" do
- before :each do
- @name = tmp("spawn_fd_map.txt")
- @io = new_io @name, "w+"
- @io.sync = true
- end
-
- after :each do
- @io.close unless @io.closed?
- rm_r @name
- end
-
- it "maps the key to a file descriptor in the child that inherits the file descriptor from the parent specified by the value" do
- child_fd = @io.fileno + 1
- args = ruby_cmd(fixture(__FILE__, "map_fd.rb"), args: [child_fd.to_s])
- pid = Process.spawn(*args, { child_fd => @io })
- Process.waitpid pid
- @io.rewind
-
- @io.read.should == "writing to fd: #{child_fd}"
- end
- end
- end
-end
diff --git a/spec/rubyspec/core/process/status/bit_and_spec.rb b/spec/rubyspec/core/process/status/bit_and_spec.rb
deleted file mode 100644
index 963d2c6c26..0000000000
--- a/spec/rubyspec/core/process/status/bit_and_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Status#&" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/status/coredump_spec.rb b/spec/rubyspec/core/process/status/coredump_spec.rb
deleted file mode 100644
index 8988cff9e1..0000000000
--- a/spec/rubyspec/core/process/status/coredump_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Status#coredump?" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/status/equal_value_spec.rb b/spec/rubyspec/core/process/status/equal_value_spec.rb
deleted file mode 100644
index 1eaaf82273..0000000000
--- a/spec/rubyspec/core/process/status/equal_value_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Status#==" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/status/exited_spec.rb b/spec/rubyspec/core/process/status/exited_spec.rb
deleted file mode 100644
index 79863360c5..0000000000
--- a/spec/rubyspec/core/process/status/exited_spec.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Status#exited?" do
-
- describe "for a child that exited normally" do
-
- before :each do
- ruby_exe("exit(0)")
- end
-
- it "returns true" do
- $?.exited?.should be_true
- end
- end
-
-
- describe "for a terminated child" do
-
- before :each do
- ruby_exe("Process.kill(:KILL, $$); exit(42)")
- end
-
- platform_is_not :windows do
- it "returns false" do
- $?.exited?.should be_false
- end
- end
-
- platform_is :windows do
- it "always returns true" do
- $?.exited?.should be_true
- end
- end
-
- end
-
-end
diff --git a/spec/rubyspec/core/process/status/exitstatus_spec.rb b/spec/rubyspec/core/process/status/exitstatus_spec.rb
deleted file mode 100644
index 57baf77724..0000000000
--- a/spec/rubyspec/core/process/status/exitstatus_spec.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Status#exitstatus" do
-
- before :each do
- ruby_exe("exit(42)")
- end
-
- it "returns the process exit code" do
- $?.exitstatus.should == 42
- end
-
-end
diff --git a/spec/rubyspec/core/process/status/inspect_spec.rb b/spec/rubyspec/core/process/status/inspect_spec.rb
deleted file mode 100644
index f3e7d8c9ab..0000000000
--- a/spec/rubyspec/core/process/status/inspect_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Status#inspect" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/status/pid_spec.rb b/spec/rubyspec/core/process/status/pid_spec.rb
deleted file mode 100644
index 3389c242ff..0000000000
--- a/spec/rubyspec/core/process/status/pid_spec.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-platform_is_not :windows do
- describe "Process::Status#pid" do
-
- before :each do
- @pid = ruby_exe("print $$").to_i
- end
-
- it "returns the pid of the process" do
- $?.pid.should == @pid
- end
-
- end
-end
diff --git a/spec/rubyspec/core/process/status/right_shift_spec.rb b/spec/rubyspec/core/process/status/right_shift_spec.rb
deleted file mode 100644
index 5786d4163c..0000000000
--- a/spec/rubyspec/core/process/status/right_shift_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Status#>>" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/status/signaled_spec.rb b/spec/rubyspec/core/process/status/signaled_spec.rb
deleted file mode 100644
index 0f80a525c9..0000000000
--- a/spec/rubyspec/core/process/status/signaled_spec.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Status#signaled?" do
-
- describe "for a cleanly exited child" do
-
- before :each do
- ruby_exe("exit(0)")
- end
-
- it "returns false" do
- $?.signaled?.should be_false
- end
- end
-
- describe "for a terminated child" do
-
- before :each do
- ruby_exe("Process.kill(:KILL, $$); exit(42)")
- end
-
- platform_is_not :windows do
- it "returns true" do
- $?.signaled?.should be_true
- end
- end
-
- platform_is :windows do
- it "always returns false" do
- $?.signaled?.should be_false
- end
- end
-
- end
-end
diff --git a/spec/rubyspec/core/process/status/stopped_spec.rb b/spec/rubyspec/core/process/status/stopped_spec.rb
deleted file mode 100644
index e984cefaf7..0000000000
--- a/spec/rubyspec/core/process/status/stopped_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Status#stopped?" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/status/stopsig_spec.rb b/spec/rubyspec/core/process/status/stopsig_spec.rb
deleted file mode 100644
index 95fc5b0e77..0000000000
--- a/spec/rubyspec/core/process/status/stopsig_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Status#stopsig" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/status/success_spec.rb b/spec/rubyspec/core/process/status/success_spec.rb
deleted file mode 100644
index e589d3f819..0000000000
--- a/spec/rubyspec/core/process/status/success_spec.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Status#success?" do
-
- describe "for a child that exited normally" do
-
- before :each do
- ruby_exe("exit(0)")
- end
-
- it "returns true" do
- $?.success?.should be_true
- end
- end
-
- describe "for a child that exited with a non zero status" do
-
- before :each do
- ruby_exe("exit(42)")
- end
-
- it "returns false" do
- $?.success?.should be_false
- end
- end
-
- describe "for a child that was terminated" do
-
- before :each do
- ruby_exe("Process.kill(:KILL, $$); exit(42)")
- end
-
- platform_is_not :windows do
-
- it "returns nil" do
- $?.success?.should be_nil
- end
-
- end
-
- platform_is :windows do
-
- it "always returns true" do
- $?.success?.should be_true
- end
-
- end
-
- end
-
-end
diff --git a/spec/rubyspec/core/process/status/termsig_spec.rb b/spec/rubyspec/core/process/status/termsig_spec.rb
deleted file mode 100644
index d4f55e2521..0000000000
--- a/spec/rubyspec/core/process/status/termsig_spec.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Status#termsig" do
-
- describe "for a child that exited normally" do
-
- before :each do
- ruby_exe("exit(0)")
- end
-
- it "returns true" do
- $?.termsig.should be_nil
- end
- end
-
- describe "for a child that was sent a signal" do
-
- before :each do
- ruby_exe("Process.kill(:KILL, $$); exit(42)")
- end
-
- platform_is_not :windows do
-
- it "returns the signal" do
- $?.termsig.should == Signal.list["KILL"]
- end
-
- end
-
- platform_is :windows do
-
- it "always returns nil" do
- $?.termsig.should be_nil
- end
-
- end
-
- end
-end
diff --git a/spec/rubyspec/core/process/status/to_i_spec.rb b/spec/rubyspec/core/process/status/to_i_spec.rb
deleted file mode 100644
index c45724552e..0000000000
--- a/spec/rubyspec/core/process/status/to_i_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Status#to_i" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/status/to_int_spec.rb b/spec/rubyspec/core/process/status/to_int_spec.rb
deleted file mode 100644
index 8c988d7e19..0000000000
--- a/spec/rubyspec/core/process/status/to_int_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Status#to_int" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/status/to_s_spec.rb b/spec/rubyspec/core/process/status/to_s_spec.rb
deleted file mode 100644
index ac87f4712a..0000000000
--- a/spec/rubyspec/core/process/status/to_s_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Status#to_s" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/sys/getegid_spec.rb b/spec/rubyspec/core/process/sys/getegid_spec.rb
deleted file mode 100644
index c21b890519..0000000000
--- a/spec/rubyspec/core/process/sys/getegid_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Sys.getegid" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/sys/geteuid_spec.rb b/spec/rubyspec/core/process/sys/geteuid_spec.rb
deleted file mode 100644
index 85c8d6e1bb..0000000000
--- a/spec/rubyspec/core/process/sys/geteuid_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Sys.geteuid" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/sys/getgid_spec.rb b/spec/rubyspec/core/process/sys/getgid_spec.rb
deleted file mode 100644
index 945d3340f7..0000000000
--- a/spec/rubyspec/core/process/sys/getgid_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Sys.getgid" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/sys/getuid_spec.rb b/spec/rubyspec/core/process/sys/getuid_spec.rb
deleted file mode 100644
index ead6e3044f..0000000000
--- a/spec/rubyspec/core/process/sys/getuid_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Sys.getuid" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/sys/issetugid_spec.rb b/spec/rubyspec/core/process/sys/issetugid_spec.rb
deleted file mode 100644
index 2919c351a7..0000000000
--- a/spec/rubyspec/core/process/sys/issetugid_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Sys.issetugid" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/sys/setegid_spec.rb b/spec/rubyspec/core/process/sys/setegid_spec.rb
deleted file mode 100644
index edc0d59da4..0000000000
--- a/spec/rubyspec/core/process/sys/setegid_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Sys.setegid" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/sys/seteuid_spec.rb b/spec/rubyspec/core/process/sys/seteuid_spec.rb
deleted file mode 100644
index 70cc78bec4..0000000000
--- a/spec/rubyspec/core/process/sys/seteuid_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Sys.seteuid" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/sys/setgid_spec.rb b/spec/rubyspec/core/process/sys/setgid_spec.rb
deleted file mode 100644
index 25272b1eec..0000000000
--- a/spec/rubyspec/core/process/sys/setgid_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Sys.setgid" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/sys/setregid_spec.rb b/spec/rubyspec/core/process/sys/setregid_spec.rb
deleted file mode 100644
index 18a5834c80..0000000000
--- a/spec/rubyspec/core/process/sys/setregid_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Sys.setregid" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/sys/setresgid_spec.rb b/spec/rubyspec/core/process/sys/setresgid_spec.rb
deleted file mode 100644
index 9f1736b460..0000000000
--- a/spec/rubyspec/core/process/sys/setresgid_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Sys.setresgid" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/sys/setresuid_spec.rb b/spec/rubyspec/core/process/sys/setresuid_spec.rb
deleted file mode 100644
index 94c892bfdf..0000000000
--- a/spec/rubyspec/core/process/sys/setresuid_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Sys.setresuid" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/sys/setreuid_spec.rb b/spec/rubyspec/core/process/sys/setreuid_spec.rb
deleted file mode 100644
index 72a8e61e7a..0000000000
--- a/spec/rubyspec/core/process/sys/setreuid_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Sys.setreuid" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/sys/setrgid_spec.rb b/spec/rubyspec/core/process/sys/setrgid_spec.rb
deleted file mode 100644
index ae820c98b8..0000000000
--- a/spec/rubyspec/core/process/sys/setrgid_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Sys.setrgid" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/sys/setruid_spec.rb b/spec/rubyspec/core/process/sys/setruid_spec.rb
deleted file mode 100644
index 4f40f6666a..0000000000
--- a/spec/rubyspec/core/process/sys/setruid_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Sys.setruid" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/sys/setuid_spec.rb b/spec/rubyspec/core/process/sys/setuid_spec.rb
deleted file mode 100644
index 13bf072ad1..0000000000
--- a/spec/rubyspec/core/process/sys/setuid_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::Sys.setuid" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/times_spec.rb b/spec/rubyspec/core/process/times_spec.rb
deleted file mode 100644
index 01a5595ef9..0000000000
--- a/spec/rubyspec/core/process/times_spec.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.times" do
- it "returns a Struct::Tms" do
- Process.times.should be_kind_of(Struct::Tms)
- end
-
- it "returns current cpu times" do
- t = Process.times
-
- # Do busy work for a wall-clock interval.
- start = Time.now
- 1 until (Time.now - start) > 0.5
-
- # Ensure times is larger. NOTE that there is no
- # guarantee of an upper bound since anything may be
- # happening at the OS level, so we ONLY check that at
- # least an interval has elapsed. Also, we are assuming
- # there is a correlation between wall clock time and
- # process time. In practice, there is an observed
- # discrepancy often 10% or greater. In other words,
- # this is a very fuzzy test.
- t2 = Process.times
- diff = (t2.utime + t2.stime) - (t.utime + t.stime)
- diff.should > 0
- end
-end
diff --git a/spec/rubyspec/core/process/uid/change_privilege_spec.rb b/spec/rubyspec/core/process/uid/change_privilege_spec.rb
deleted file mode 100644
index 91a38bfcdf..0000000000
--- a/spec/rubyspec/core/process/uid/change_privilege_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::UID.change_privilege" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/uid/eid_spec.rb b/spec/rubyspec/core/process/uid/eid_spec.rb
deleted file mode 100644
index 39fcd13d93..0000000000
--- a/spec/rubyspec/core/process/uid/eid_spec.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::UID.eid" do
- it "needs to be reviewed for spec completeness"
-end
-
-describe "Process::UID.eid=" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/uid/grant_privilege_spec.rb b/spec/rubyspec/core/process/uid/grant_privilege_spec.rb
deleted file mode 100644
index c4d3443de8..0000000000
--- a/spec/rubyspec/core/process/uid/grant_privilege_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::UID.grant_privilege" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/uid/re_exchange_spec.rb b/spec/rubyspec/core/process/uid/re_exchange_spec.rb
deleted file mode 100644
index 2f9b0d6a87..0000000000
--- a/spec/rubyspec/core/process/uid/re_exchange_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::UID.re_exchange" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/uid/re_exchangeable_spec.rb b/spec/rubyspec/core/process/uid/re_exchangeable_spec.rb
deleted file mode 100644
index 63f45fa662..0000000000
--- a/spec/rubyspec/core/process/uid/re_exchangeable_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::UID.re_exchangeable?" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/uid/rid_spec.rb b/spec/rubyspec/core/process/uid/rid_spec.rb
deleted file mode 100644
index cdfe08e3be..0000000000
--- a/spec/rubyspec/core/process/uid/rid_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::UID.rid" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/uid/sid_available_spec.rb b/spec/rubyspec/core/process/uid/sid_available_spec.rb
deleted file mode 100644
index 5d51366dd4..0000000000
--- a/spec/rubyspec/core/process/uid/sid_available_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::UID.sid_available?" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/uid/switch_spec.rb b/spec/rubyspec/core/process/uid/switch_spec.rb
deleted file mode 100644
index 6747ee4f43..0000000000
--- a/spec/rubyspec/core/process/uid/switch_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../../spec_helper', __FILE__)
-
-describe "Process::UID.switch" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/uid_spec.rb b/spec/rubyspec/core/process/uid_spec.rb
deleted file mode 100644
index 1b561f47e0..0000000000
--- a/spec/rubyspec/core/process/uid_spec.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.uid" do
- platform_is_not :windows do
- it "returns the correct uid for the user executing this process" do
- current_uid_according_to_unix = `id -ur`.to_i
- Process.uid.should == current_uid_according_to_unix
- end
- end
-
- it "also goes by Process::UID.rid" do
- Process::UID.rid.should == Process.uid
- end
-
- it "also goes by Process::Sys.getuid" do
- Process::Sys.getuid.should == Process.uid
- end
-end
-
-describe "Process.uid=" do
-
- platform_is_not :windows do
- it "raises TypeError if not passed an Integer" do
- lambda { Process.uid = Object.new }.should raise_error(TypeError)
- end
-
- as_user do
- it "raises Errno::ERPERM if run by a non privileged user trying to set the superuser id" do
- lambda { (Process.uid = 0)}.should raise_error(Errno::EPERM)
- end
-
- it "raises Errno::ERPERM if run by a non privileged user trying to set the superuser id from username" do
- lambda { Process.uid = "root" }.should raise_error(Errno::EPERM)
- end
- end
-
- as_superuser do
- describe "if run by a superuser" do
- with_feature :fork do
- it "sets the real user id for the current process" do
- read, write = IO.pipe
- pid = Process.fork do
- begin
- read.close
- Process.uid = 1
- write << Process.uid
- write.close
- rescue Exception => e
- write << e << e.backtrace
- end
- Process.exit!
- end
- write.close
- uid = read.gets
- uid.should == "1"
- Process.wait pid
- end
-
- it "sets the real user id if preceded by Process.euid=id" do
- read, write = IO.pipe
- pid = Process.fork do
- begin
- read.close
- Process.euid = 1
- Process.uid = 1
- write << Process.uid
- write.close
- rescue Exception => e
- write << e << e.backtrace
- end
- Process.exit!
- end
- write.close
- uid = read.gets
- uid.should == "1"
- Process.wait pid
- end
- end
- end
- end
- end
-
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/wait2_spec.rb b/spec/rubyspec/core/process/wait2_spec.rb
deleted file mode 100644
index 8e1ac763f1..0000000000
--- a/spec/rubyspec/core/process/wait2_spec.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.wait2" do
- before :all do
- # HACK: this kludge is temporarily necessary because some
- # misbehaving spec somewhere else does not clear processes
- begin
- leaked = Process.waitall
- puts "leaked before wait2 specs: #{leaked}" unless leaked.empty?
- rescue NotImplementedError
- end
- end
-
- platform_is_not :windows do
- it "returns the pid and status of child process" do
- pidf = Process.fork { Process.exit! 99 }
- results = Process.wait2
- results.size.should == 2
- pidw, status = results
- pidf.should == pidw
- status.exitstatus.should == 99
- end
- end
-
- it "raises a StandardError if no child processes exist" do
- lambda { Process.wait2 }.should raise_error(Errno::ECHILD)
- lambda { Process.wait2 }.should raise_error(StandardError)
- end
-end
diff --git a/spec/rubyspec/core/process/wait_spec.rb b/spec/rubyspec/core/process/wait_spec.rb
deleted file mode 100644
index 8111621695..0000000000
--- a/spec/rubyspec/core/process/wait_spec.rb
+++ /dev/null
@@ -1,90 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/common', __FILE__)
-
-describe "Process.wait" do
- ProcessSpecs.use_system_ruby(self)
-
- before :all do
- begin
- leaked = Process.waitall
- puts "leaked before wait specs: #{leaked}" unless leaked.empty?
- rescue NotImplementedError
- end
- end
-
- it "raises an Errno::ECHILD if there are no child processes" do
- lambda { Process.wait }.should raise_error(Errno::ECHILD)
- end
-
- platform_is_not :windows do
- it "returns its childs pid" do
- pid = Process.spawn(ruby_cmd('exit'))
- Process.wait.should == pid
- end
-
- it "sets $? to a Process::Status" do
- pid = Process.spawn(ruby_cmd('exit'))
- Process.wait
- $?.should be_kind_of(Process::Status)
- $?.pid.should == pid
- end
-
- it "waits for any child process if no pid is given" do
- pid = Process.spawn(ruby_cmd('exit'))
- Process.wait.should == pid
- lambda { Process.kill(0, pid) }.should raise_error(Errno::ESRCH)
- end
-
- it "waits for a specific child if a pid is given" do
- pid1 = Process.spawn(ruby_cmd('exit'))
- pid2 = Process.spawn(ruby_cmd('exit'))
- Process.wait(pid2).should == pid2
- Process.wait(pid1).should == pid1
- lambda { Process.kill(0, pid1) }.should raise_error(Errno::ESRCH)
- lambda { Process.kill(0, pid2) }.should raise_error(Errno::ESRCH)
- end
-
- it "coerces the pid to an Integer" do
- pid1 = Process.spawn(ruby_cmd('exit'))
- Process.wait(mock_int(pid1)).should == pid1
- lambda { Process.kill(0, pid1) }.should raise_error(Errno::ESRCH)
- end
-
- # This spec is probably system-dependent.
- it "waits for a child whose process group ID is that of the calling process" do
- pid1 = Process.spawn(ruby_cmd('exit'), pgroup: true)
- pid2 = Process.spawn(ruby_cmd('exit'))
-
- Process.wait(0).should == pid2
- Process.wait.should == pid1
- end
-
- # This spec is probably system-dependent.
- it "doesn't block if no child is available when WNOHANG is used" do
- read, write = IO.pipe
- pid = Process.fork do
- read.close
- Signal.trap("TERM") { Process.exit! }
- write << 1
- write.close
- sleep
- end
-
- Process.wait(pid, Process::WNOHANG).should be_nil
-
- # wait for the child to setup its TERM handler
- write.close
- read.read(1)
- read.close
-
- Process.kill("TERM", pid)
- Process.wait.should == pid
- end
-
- it "always accepts flags=0" do
- pid = Process.spawn(ruby_cmd('exit'))
- Process.wait(-1, 0).should == pid
- lambda { Process.kill(0, pid) }.should raise_error(Errno::ESRCH)
- end
- end
-end
diff --git a/spec/rubyspec/core/process/waitall_spec.rb b/spec/rubyspec/core/process/waitall_spec.rb
deleted file mode 100644
index e1fc38d2bc..0000000000
--- a/spec/rubyspec/core/process/waitall_spec.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.waitall" do
- before :all do
- begin
- Process.waitall
- rescue NotImplementedError
- end
- end
-
- it "returns an empty array when there are no children" do
- Process.waitall.should == []
- end
-
- it "takes no arguments" do
- lambda { Process.waitall(0) }.should raise_error(ArgumentError)
- end
-
- platform_is_not :windows do
- it "waits for all children" do
- pids = []
- pids << Process.fork { Process.exit! 2 }
- pids << Process.fork { Process.exit! 1 }
- pids << Process.fork { Process.exit! 0 }
- Process.waitall
- pids.each { |pid|
- lambda { Process.kill(0, pid) }.should raise_error(Errno::ESRCH)
- }
- end
-
- it "returns an array of pid/status pairs" do
- pids = []
- pids << Process.fork { Process.exit! 2 }
- pids << Process.fork { Process.exit! 1 }
- pids << Process.fork { Process.exit! 0 }
- a = Process.waitall
- a.should be_kind_of(Array)
- a.size.should == 3
- pids.each { |pid|
- pid_status = a.assoc(pid)
- pid_status.should be_kind_of(Array)
- pid_status.size.should == 2
- pid_status.first.should == pid
- pid_status.last.should be_kind_of(Process::Status)
- }
- end
- end
-end
diff --git a/spec/rubyspec/core/process/waitpid2_spec.rb b/spec/rubyspec/core/process/waitpid2_spec.rb
deleted file mode 100644
index 303c59fda3..0000000000
--- a/spec/rubyspec/core/process/waitpid2_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.waitpid2" do
- it "needs to be reviewed for spec completeness"
-end
diff --git a/spec/rubyspec/core/process/waitpid_spec.rb b/spec/rubyspec/core/process/waitpid_spec.rb
deleted file mode 100644
index c95e8d59dd..0000000000
--- a/spec/rubyspec/core/process/waitpid_spec.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-
-describe "Process.waitpid" do
- it "needs to be reviewed for spec completeness"
-
- it "returns nil when the process has not yet completed and WNOHANG is specified" do
- pid = spawn("sleep 5")
- begin
- Process.waitpid(pid, Process::WNOHANG).should == nil
- Process.kill("KILL", pid)
- ensure
- Process.wait(pid)
- end
- end
-end