Commit graph

163 commits

Author SHA1 Message Date
naruse
e652ecfac7 Suppress warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36576 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-30 06:03:15 +00:00
naruse
787e40097b NetBSD's /proc/<pid>/task is broken.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36575 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-30 05:56:51 +00:00
nobu
c05e6a8cda process.c: try conversion at redirection
* io.c (rb_io_check_io): make public.
* process.c (check_exec_redirect): try conversion to IO on redirect
  parameters.  [ruby-core:44181] [Bug #6269]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36551 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-27 09:25:54 +00:00
nobu
2240eb37b8 popen: shell commands with envvars and execopts
* io.c (is_popen_fork): check if fork and raise NotImplementedError if
  unavailable.
* io.c (rb_io_s_popen): allow environment variables hash and exec
  options as flat parameters, not in an array arguments.
  [Feature#6651] [EXPERIMENTAL]
* process.c (rb_execarg_extract_options): extract exec options, but no
  exceptions on non-exec options and returns them as a Hash.
* process.c (rb_execarg_setenv): set environment variables.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36229 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-27 00:15:51 +00:00
nobu
876d4c4cc8 Revert r36213 "popen: shell commands with envvar"
* io.c (rb_io_s_popen): revert r36213 "popen: shell commands with
  envvar" because it disabled to let single command bypass shell.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36218 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-26 01:01:59 +00:00
nobu
0f0f0f4441 popen: shell commands with envvar
* io.c (is_popen_fork): check if fork and raise NotImplementedError if
  unavailable.
* io.c (rb_io_s_popen): allow shell commands with modified environment
  variables.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36213 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-25 06:42:05 +00:00
akr
a29bdaf63f add a test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36067 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-13 14:00:33 +00:00
akr
94b275c5b3 add a test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36042 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-12 12:44:26 +00:00
akr
640e0a33b7 * process.c (rb_exec_fillarg): treat '=' character as an meta
character to detect assignments preceding command name.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36041 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-12 12:41:08 +00:00
akr
258716bd9d * process.c (rb_fork_internal): call after_fork only unless
chfunc_is_async_signal_safe.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36007 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-10 02:45:38 +00:00
akr
78d7def619 add a test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35946 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-06 12:11:45 +00:00
akr
7685837427 * process.c (try_with_sh): take envp argument.
(exec_with_sh): ditto.  use it for execve.
  (proc_exec_v): provide envp for try_with_sh.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35943 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-06 11:09:26 +00:00
akr
9ab2ce20b3 don't exec in the test process.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35912 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-04 12:52:35 +00:00
akr
033e2187c6 * process.c (rb_proc_exec_e): extended version of rb_proc_exec() to
call execle().
  (rb_proc_exec): use rb_proc_exec_e().
  (rb_exec_err): use rb_proc_exec_e().


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35884 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-03 11:12:20 +00:00
akr
f4f28bf75f * use execve() to preserve environment variables when exec method is
failed.  [ruby-core:44093] [ruby-trunk - Bug #6249]

* include/ruby/intern.h (rb_exec_arg): add envp_str and envp_buf field
  to store envp of execve().

* process.c (proc_exec_v): takes envp_str as an argument and use it
  for execve().
  (rb_proc_exec_ne): extended version of rb_proc_exec_n().
  (rb_proc_exec_n): use rb_proc_exec_ne().
  (rb_proc_exec): follow proc_exec_v() change.
  (fill_envp_buf_i): new function.
  (rb_exec_arg_fixup): set up envp_str and envp_buf.
  (save_env_i): removed.
  (save_env): removed.
  (rb_run_exec_options_err): don't modify environment variables.
  (rb_exec_err): use rb_proc_exec_ne().



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35882 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-03 08:29:48 +00:00
shirosaki
42109a02f0 * include/ruby/win32.h (rb_w32_aspawn_flags): add the declaration of
new function.

* process.c (enum): add EXEC_OPTION_PGROUP and move the position
  above for the usage in proc_spawn_n().

* process.c (proc_spawn_n): add an argument to pass new option
  `new_pgroup`. The option specifies CREATE_NEW_PROCESS_GROUP flag to
  CreateProcessW(). This flag is necessary for the usage of
  Process.kill on the subprocess on Windows.

* process.c (rb_exec_arg_addopt): ditto.

* process.c (rb_spawn_process): ditto.

* process.c (documentation for rb_f_spawn): add documentation for new
  option `new_pgroup` of spawn.

* test/ruby/test_process.rb (TestProcess#test_execopts_new_pgroup):
  add tests for option `new_pgroup`.

* test/ruby/test_thread.rb
  (TestThreadGroup#test_thread_timer_and_interrupt):
  add option `new_pgroup: true` to spawn on Windows. It's needed for
  Process.kill on a subprocess.

* win32/win32.c (CreateChild): add an argument to pass
  dwCreationFlags of CreateProcessW().

* win32/win32.c (rb_w32_spawn): ditto.

* win32/win32.c (rb_w32_aspawn_flags): add new function to pass
  dwCreationFlags.

* win32/win32.c (rb_w32_aspawn): refactor to move the content to
  rb_w32_aspawn_flags().
  [ruby-core:43245][Bug #6131]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35250 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-07 14:10:30 +00:00
nobu
9bf9b3ef95 * process.c (obj2uid, obj2gid): allow strings as input user/group id.
[ruby-core:40923][Feature #5610]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35158 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-28 07:40:02 +00:00
akr
61c148723d * process.c (rb_run_exec_options_err): chdir at last to interpret
relative pathnames from the current directory of the parent process.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34892 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-03 13:53:53 +00:00
usa
bb32987206 * test/ruby/test_process.rb (TestProcess#test_sete[gu]id): silently
skip if not implemented such functions (such as, on Windows).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33980 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-08 04:12:55 +00:00
nobu
8bce84fe5d * process.c (proc_seteuid_m): fix argument.
* test/ruby/test_process.rb (test_geteuid): fix typo.
* test/ruby/test_process.rb (test_getegid, test_set[eg]uid): add.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33953 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-05 10:02:02 +00:00
nagachika
8731a38bff * test/ruby/test_process.rb: clean up a garbage character.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33618 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-03 12:50:57 +00:00
akr
88f1b8cf0c add test for close-on-exec.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33617 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-03 11:15:15 +00:00
akr
b574a4d4a1 * include/ruby/intern.h (rb_fd_set_cloexec): declared.
* io.c (rb_fd_set_cloexec): new function.
  (ruby_dup): call rb_fd_set_cloexec to set close-on-exec flag.
  (rb_sysopen_internal): ditto.
  (rb_pipe): ditto.
  (io_reopen): ditto.
  (io_cntl): ditto.

* process.c (rb_f_exec): change the default :close_others option to
  true.
  (rb_f_system): ditto.
  (move_fds_to_avoid_crash): call rb_fd_set_cloexec to set
  close-on-exec flag.
  (ruby_setsid): ditto.
  (rb_daemon): ditto.

* thread_pthread.c (rb_thread_create_timer_thread): call
  rb_fd_set_cloexec to set close-on-exec flag.

* ruby.c (load_file_internal): ditto.

* file.c (rb_file_s_truncate): ditto.
  (file_load_ok): ditto.

* random.c (fill_random_seed): ditto.

* ext/pty/pty.c (chfunc): ditto.
  (get_device_once): ditto.

* ext/openssl/ossl_bio.c (ossl_obj2bio): ditto.

* ext/socket/init.c (rsock_socket): ditto.
  (rsock_s_accept_nonblock): ditto.
  (rsock_s_accept): ditto.

* ext/socket/socket.c (rsock_sock_s_socketpair): ditto.

* ext/socket/ancdata.c (discard_cmsg): ditto.
  (make_io_for_unix_rights): ditto.

* ext/socket/unixsocket.c (unix_recv_io): ditto.

* ext/io/console/console.c (console_dev): ditto.

[ruby-core:38140] [Feature #5041]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33507 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-22 09:58:15 +00:00
naruse
39ec2f6864 Revert test fixes.
This reverts r33233, r33234, and r33235.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33245 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-10 10:34:15 +00:00
naruse
cf8626a082 Run GC.start before test_too_long_path.
NoMemoryError is raised in MiniTest#exception_details where exception
is made, and no effect. Run GC.start before running to keep the room.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33235 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-09 06:29:36 +00:00
naruse
6199181b09 Catch NoMemoryError.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33234 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-09 02:26:31 +00:00
usa
b8d546db64 * test/ruby/test_process.rb (TestProcess#windows?): new method.
* test/ruby/test_process.rb (TestProcess#*): use above method.

* test/ruby/test_process.rb (TestProcess#test_execopts_redirect):
  windows doesn't support FD_CLOEXEC.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32799 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-01 11:23:44 +00:00
nagachika
d6ec675236 * test/ruby/test_process.rb (test_rlimit_nofile): fix r32734.
move return statement again.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32738 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-29 13:14:59 +00:00
naruse
18f03623a3 Fix r32731: position of definition.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32734 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-29 08:01:45 +00:00
naruse
b7c350d963 Run test_popen_fork on FreeBSD because it can run.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32733 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-29 07:17:37 +00:00
naruse
0a4a5b20db Use setrlimit(NOFILE,1) on OpenBSD.
Because on OpenBSD it freezes if limit=0.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32731 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-29 07:17:35 +00:00
naruse
d7138d72db * test/fileutils/test_fileutils.rb: add OpenBSD case.
patched by Jeremy Evans [ruby-core:38530] see #5097

* test/ruby/test_process.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32707 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-27 15:30:11 +00:00
nobu
706335aa0b * process.c (proc_daemon): should not start timer thread
twice.  fixed Bug#4920.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32221 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-24 08:06:38 +00:00
kosaki
ed02c4122a * process.c (before_exec, after_exec): change SIGPIPE handler to SIG_DFL
before calling execve(). Because r31760 reintroduced an issue that
  system() may hang up (i.e. [ruby-dev:12261]).
* process.c (save_sigpipe, restore_sigpipe): new.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31761 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-28 13:52:03 +00:00
usa
d815916071 * test/ruby/test_process.rb (TestProcess#test_no_curdir): skip silently on
Windows, because this tests a platform specific feature and it'll never be
  supported on ruby on Windows.

* test/ruby/test_dir_m17n.rb (TestDir_M17N#test_filename_extutf8_invalid,
  TestDir_M17N#test_filename_as_bytes_extutf8): ditto.

* test/open-uri/test_open-uri.rb
  (TestOpenURI#test_find_proxy_case_sensitive_env): ditto.

* test/dl/test_handle.rb (DL::TestHandle#test_NEXT,
  DL::TestHandle#test_DEFAULT): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31174 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-25 02:50:17 +00:00
kosaki
bd90dc80f2 * process.c (proc_getmaxgroups, proc_setmaxgroups): Process#maxgroups
and Process#maxgroups= now raise NotImplementedError if the
  platform don't support supplementary groups concept.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31090 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-10 16:54:02 +00:00
matz
1df42597d1 cancel subversion backfire. sorry
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31046 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-07 08:44:45 +00:00
matz
eb807d42ec * gc.c (rb_gc_set_params): allow GC parameter configuration by
environment variables.  based on a patch from funny-falcon at
  https://gist.github.com/856296, but honors safe level.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31044 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-07 08:39:39 +00:00
usa
4f8f4a9ee4 * process.c (check_exec_redirect_fd, check_exec_redirect): raise
ArgumentError if fd >= 3 on Windows because the feature is not
  supported.

* test/ruby/test_process.rb (test_execopts_redirect): remove meaningless
  argument.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31017 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-03 13:13:10 +00:00
usa
0ebf520671 * test/ruby/test_process.rb (test_execopts_redirect): redirecting fd
>= 3 is not supported on Windows, so should not specify such options
  when calling spawn or others.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31016 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-03 12:23:44 +00:00
naruse
ca9f7009db TestProcess#test_wait_and_sigchild randomly fails on FreeBSD
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30814 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-02-07 04:27:46 +00:00
usa
d4f8142d18 * test/ruby/test_process.rb (TestProcess#test_too_long_path{,2}):
should handle Errno::E2BIG, because this test checks crash of ruby,
  not the error type system.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30697 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-28 02:48:46 +00:00
kosaki
41bbb319dd * test/ruby/test_process.rb (TestProcess#test_too_long_path)
TestProcess#test_too_long_path): Reduced string size from 100MB
	  to 10MB. 100MB may cause no memory error. It isn't intended.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30682 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-27 16:36:21 +00:00
kosaki
6c2b2c2853 * test/ruby/test_process.rb (TestProcess#test_too_long_path2):
Factored out from test_too_long_path. A test should only do
	  one test.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30680 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-27 16:33:23 +00:00
nobu
beec203a1d * process.c (proc_exec_v, rb_proc_exec_n, rb_proc_exec)
(proc_spawn_n, proc_spawn): get rid of too huge alloca().
  [ruby-core:34827], [ruby-core:34833]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-26 23:41:47 +00:00
ryan
f52c2cc24d Reduced gem_prelude to just require rubygems. Reviewed by Evan Phoenix
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30538 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-14 02:02:12 +00:00
naruse
3124b5fc3e Refix timing problem.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29806 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-16 06:20:06 +00:00
naruse
cb2235c112 Avoid timing problem.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29790 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-15 09:09:39 +00:00
nobu
6c9e95df88 * test/ruby/test_{process,system}.rb (test_fallback_to_sh):
meaningless and wrong tests where /bin/sh does not exist.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29698 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-05 03:23:10 +00:00
nobu
d0553ffbb5 * process.c (proc_exec_v, proc_spawn_v): try to execute with sh if
no shebang.  [ruby-core:32745] [EXPERIMENTAL]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29695 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-04 16:21:38 +00:00