mirror of
https://github.com/ruby/ruby.git
synced 2025-09-19 18:43:59 +02:00
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
This commit is contained in:
parent
f4af54f212
commit
876d4c4cc8
3 changed files with 43 additions and 63 deletions
|
@ -275,53 +275,34 @@ class TestProcess < Test::Unit::TestCase
|
|||
assert_equal("PATH\n", io.read)
|
||||
}
|
||||
|
||||
IO.popen([{"FOO"=>"BAR"}, *ENVCOMMAND]) {|io|
|
||||
assert_match(/^FOO=BAR$/, io.read)
|
||||
}
|
||||
|
||||
with_tmpchdir {|d|
|
||||
system({"fofo"=>"haha"}, *ENVCOMMAND, STDOUT=>"out")
|
||||
assert_match(/^fofo=haha$/, File.read("out").chomp, message)
|
||||
}
|
||||
end
|
||||
|
||||
def _test_execopts_env_popen(cmd)
|
||||
message = cmd.inspect
|
||||
IO.popen([{"FOO"=>"BAR"}, *cmd]) {|io|
|
||||
assert_match(/^FOO=BAR$/, io.read, message)
|
||||
assert_match(/^fofo=haha$/, File.read("out").chomp)
|
||||
}
|
||||
|
||||
old = ENV["hmm"]
|
||||
begin
|
||||
ENV["hmm"] = "fufu"
|
||||
IO.popen(cmd) {|io| assert_match(/^hmm=fufu$/, io.read, message)}
|
||||
IO.popen([{"hmm"=>""}, *cmd]) {|io| assert_match(/^hmm=$/, io.read, message)}
|
||||
IO.popen([{"hmm"=>nil}, *cmd]) {|io| assert_not_match(/^hmm=/, io.read, message)}
|
||||
IO.popen(ENVCOMMAND) {|io| assert_match(/^hmm=fufu$/, io.read) }
|
||||
IO.popen([{"hmm"=>""}, *ENVCOMMAND]) {|io| assert_match(/^hmm=$/, io.read) }
|
||||
IO.popen([{"hmm"=>nil}, *ENVCOMMAND]) {|io| assert_not_match(/^hmm=/, io.read) }
|
||||
ENV["hmm"] = ""
|
||||
IO.popen(cmd) {|io| assert_match(/^hmm=$/, io.read, message)}
|
||||
IO.popen([{"hmm"=>""}, *cmd]) {|io| assert_match(/^hmm=$/, io.read, message)}
|
||||
IO.popen([{"hmm"=>nil}, *cmd]) {|io| assert_not_match(/^hmm=/, io.read, message)}
|
||||
IO.popen(ENVCOMMAND) {|io| assert_match(/^hmm=$/, io.read) }
|
||||
IO.popen([{"hmm"=>""}, *ENVCOMMAND]) {|io| assert_match(/^hmm=$/, io.read) }
|
||||
IO.popen([{"hmm"=>nil}, *ENVCOMMAND]) {|io| assert_not_match(/^hmm=/, io.read) }
|
||||
ENV["hmm"] = nil
|
||||
IO.popen(cmd) {|io| assert_not_match(/^hmm=/, io.read, message)}
|
||||
IO.popen([{"hmm"=>""}, *cmd]) {|io| assert_match(/^hmm=$/, io.read, message)}
|
||||
IO.popen([{"hmm"=>nil}, *cmd]) {|io| assert_not_match(/^hmm=/, io.read, message)}
|
||||
IO.popen(ENVCOMMAND) {|io| assert_not_match(/^hmm=/, io.read) }
|
||||
IO.popen([{"hmm"=>""}, *ENVCOMMAND]) {|io| assert_match(/^hmm=$/, io.read) }
|
||||
IO.popen([{"hmm"=>nil}, *ENVCOMMAND]) {|io| assert_not_match(/^hmm=/, io.read) }
|
||||
ensure
|
||||
ENV["hmm"] = old
|
||||
end
|
||||
end
|
||||
|
||||
def test_execopts_env_popen_vector
|
||||
_test_execopts_env_popen(ENVCOMMAND)
|
||||
end
|
||||
|
||||
def test_execopts_env_popen_string
|
||||
with_tmpchdir do |d|
|
||||
open('test-script', 'w') do |f|
|
||||
ENVCOMMAND.each_with_index do |cmd, i|
|
||||
next if i.zero? or cmd == "-e"
|
||||
f.puts cmd
|
||||
end
|
||||
end
|
||||
_test_execopts_env_popen("#{RUBY} test-script")
|
||||
end
|
||||
end
|
||||
|
||||
def test_execopts_preserve_env_on_exec_failure
|
||||
with_tmpchdir {|d|
|
||||
write_file 's', <<-"End"
|
||||
|
@ -622,7 +603,7 @@ class TestProcess < Test::Unit::TestCase
|
|||
def test_execopts_popen
|
||||
with_tmpchdir {|d|
|
||||
IO.popen("#{RUBY} -e 'puts :foo'") {|io| assert_equal("foo\n", io.read) }
|
||||
IO.popen(["echo bar"]) {|io| assert_equal("bar\n", io.read) }
|
||||
assert_raise(Errno::ENOENT) { IO.popen(["echo bar"]) {} } # assuming "echo bar" command not exist.
|
||||
IO.popen(ECHO["baz"]) {|io| assert_equal("baz\n", io.read) }
|
||||
assert_raise(ArgumentError) {
|
||||
IO.popen([*ECHO["qux"], STDOUT=>STDOUT]) {|io| }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue