From 827e71bda54ffab6e2b2e0434b235c6190055cdb Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 23 Feb 2013 03:34:04 +0000 Subject: test_process.rb: fix test * test/ruby/test_process.rb (assert_fail_too_long_path): get rid of syntax error on sh, increase command line size until it exceeds the limit. [Bug #7904] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39417 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/ruby/test_process.rb | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'test/ruby/test_process.rb') diff --git a/test/ruby/test_process.rb b/test/ruby/test_process.rb index 9ee7bdfd93..a70dca692e 100644 --- a/test/ruby/test_process.rb +++ b/test/ruby/test_process.rb @@ -1380,24 +1380,34 @@ class TestProcess < Test::Unit::TestCase def test_spawn_too_long_path bug4314 = '[ruby-core:34842]' - assert_fail_too_long_path("a", bug4314) + assert_fail_too_long_path(%w"echo", bug4314) end def test_aspawn_too_long_path bug4315 = '[ruby-core:34833]' - assert_fail_too_long_path("a|", bug4315) + assert_fail_too_long_path(%w"echo |", bug4315) end - def assert_fail_too_long_path(cmd, mesg) - size = 1_000_000 / cmd.size + def assert_fail_too_long_path((cmd, sep), mesg) + sep ||= "" + min = 1_000 / (cmd.size + sep.size) + cmds = Array.new(min, cmd) exs = [Errno::ENOENT] exs << Errno::E2BIG if defined?(Errno::E2BIG) EnvUtil.suppress_warning do assert_raise(*exs, mesg) do begin - Process.spawn(cmd * size) + loop do + Process.spawn(cmds.join(sep), [STDOUT, STDERR]=>:close) + min = [cmds.size, min].max + cmds *= 100 + end rescue NoMemoryError - raise if (size /= 2) < 250 + size = cmds.size + raise if min >= size - 1 + min = [min, size /= 2].max + cmds[size..-1] = [] + raise if size < 250 retry end end -- cgit v1.2.3