mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
fix env leaks
* lib/rubygems/test_case.rb (setup, teardown): fix environment variable change leaks. * test/cgi/update_env.rb: ditto. * test/rake/test_rake_application_options.rb (setup, teardown): ditto. * test/rake/test_rake_file_utils.rb (setup, teardown): ditto. * test/rubygems/test_gem_request.rb (setup): add https_proxy. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49950 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
31eb193883
commit
05c29680e5
13 changed files with 119 additions and 93 deletions
|
@ -221,6 +221,9 @@ class Gem::TestCase < MiniTest::Unit::TestCase
|
||||||
@orig_gem_home = ENV['GEM_HOME']
|
@orig_gem_home = ENV['GEM_HOME']
|
||||||
@orig_gem_path = ENV['GEM_PATH']
|
@orig_gem_path = ENV['GEM_PATH']
|
||||||
@orig_gem_vendor = ENV['GEM_VENDOR']
|
@orig_gem_vendor = ENV['GEM_VENDOR']
|
||||||
|
@orig_gem_spec_cache = ENV['GEM_SPEC_CACHE']
|
||||||
|
@orig_rubygems_gemdeps = ENV['RUBYGEMS_GEMDEPS']
|
||||||
|
@orig_rubygems_host = ENV['RUBYGEMS_HOST']
|
||||||
|
|
||||||
ENV['GEM_VENDOR'] = nil
|
ENV['GEM_VENDOR'] = nil
|
||||||
|
|
||||||
|
@ -353,6 +356,9 @@ class Gem::TestCase < MiniTest::Unit::TestCase
|
||||||
ENV['GEM_HOME'] = @orig_gem_home
|
ENV['GEM_HOME'] = @orig_gem_home
|
||||||
ENV['GEM_PATH'] = @orig_gem_path
|
ENV['GEM_PATH'] = @orig_gem_path
|
||||||
ENV['GEM_VENDOR'] = @orig_gem_vendor
|
ENV['GEM_VENDOR'] = @orig_gem_vendor
|
||||||
|
ENV['GEM_SPEC_CACHE'] = @orig_gem_spec_cache
|
||||||
|
ENV['RUBYGEMS_GEMDEPS'] = @orig_rubygems_gemdeps
|
||||||
|
ENV['RUBYGEMS_HOST'] = @orig_rubygems_host
|
||||||
|
|
||||||
Gem.ruby = @orig_ruby if @orig_ruby
|
Gem.ruby = @orig_ruby if @orig_ruby
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,25 @@
|
||||||
require 'test/unit'
|
require 'test/unit'
|
||||||
require 'cgi'
|
require 'cgi'
|
||||||
require 'stringio'
|
require 'stringio'
|
||||||
|
require_relative 'update_env'
|
||||||
|
|
||||||
|
|
||||||
class CGICookieTest < Test::Unit::TestCase
|
class CGICookieTest < Test::Unit::TestCase
|
||||||
|
include UpdateEnv
|
||||||
|
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
ENV['REQUEST_METHOD'] = 'GET'
|
@environ = {}
|
||||||
|
update_env(
|
||||||
|
'REQUEST_METHOD' => 'GET',
|
||||||
|
'SCRIPT_NAME' => nil,
|
||||||
|
)
|
||||||
@str1="\xE3\x82\x86\xE3\x82\x93\xE3\x82\x86\xE3\x82\x93"
|
@str1="\xE3\x82\x86\xE3\x82\x93\xE3\x82\x86\xE3\x82\x93"
|
||||||
@str1.force_encoding("UTF-8") if defined?(::Encoding)
|
@str1.force_encoding("UTF-8") if defined?(::Encoding)
|
||||||
end
|
end
|
||||||
|
|
||||||
def teardown
|
def teardown
|
||||||
%W[REQUEST_METHOD SCRIPT_NAME].each do |name|
|
ENV.update(@environ)
|
||||||
ENV.delete(name)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
require 'test/unit'
|
require 'test/unit'
|
||||||
require 'cgi'
|
require 'cgi'
|
||||||
require 'stringio'
|
require 'stringio'
|
||||||
|
require_relative 'update_env'
|
||||||
|
|
||||||
|
|
||||||
class CGICoreTest < Test::Unit::TestCase
|
class CGICoreTest < Test::Unit::TestCase
|
||||||
|
include UpdateEnv
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
|
@environ = {}
|
||||||
#@environ = {
|
#@environ = {
|
||||||
# 'SERVER_PROTOCOL' => 'HTTP/1.1',
|
# 'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
# 'REQUEST_METHOD' => 'GET',
|
# 'REQUEST_METHOD' => 'GET',
|
||||||
|
@ -15,35 +17,32 @@ class CGICoreTest < Test::Unit::TestCase
|
||||||
#ENV.update(@environ)
|
#ENV.update(@environ)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def teardown
|
def teardown
|
||||||
@environ.each do |key, val| ENV.delete(key) end
|
ENV.update(@environ)
|
||||||
$stdout = STDOUT
|
$stdout = STDOUT
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_cgi_parse_illegal_query
|
def test_cgi_parse_illegal_query
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'GET',
|
'REQUEST_METHOD' => 'GET',
|
||||||
'QUERY_STRING' => 'a=111&&b=222&c&d=',
|
'QUERY_STRING' => 'a=111&&b=222&c&d=',
|
||||||
'HTTP_COOKIE' => '_session_id=12345; name1=val1&val2;',
|
'HTTP_COOKIE' => '_session_id=12345; name1=val1&val2;',
|
||||||
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
||||||
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
}
|
)
|
||||||
ENV.update(@environ)
|
|
||||||
cgi = CGI.new
|
cgi = CGI.new
|
||||||
assert_equal(["a","b","c","d"],cgi.keys.sort)
|
assert_equal(["a","b","c","d"],cgi.keys.sort)
|
||||||
assert_equal("",cgi["d"])
|
assert_equal("",cgi["d"])
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_cgi_core_params_GET
|
def test_cgi_core_params_GET
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'GET',
|
'REQUEST_METHOD' => 'GET',
|
||||||
'QUERY_STRING' => 'id=123&id=456&id=&id&str=%40h+%3D%7E+%2F%5E%24%2F',
|
'QUERY_STRING' => 'id=123&id=456&id=&id&str=%40h+%3D%7E+%2F%5E%24%2F',
|
||||||
'HTTP_COOKIE' => '_session_id=12345; name1=val1&val2;',
|
'HTTP_COOKIE' => '_session_id=12345; name1=val1&val2;',
|
||||||
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
||||||
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
}
|
)
|
||||||
ENV.update(@environ)
|
|
||||||
cgi = CGI.new
|
cgi = CGI.new
|
||||||
## cgi[]
|
## cgi[]
|
||||||
assert_equal('123', cgi['id'])
|
assert_equal('123', cgi['id'])
|
||||||
|
@ -68,14 +67,13 @@ class CGICoreTest < Test::Unit::TestCase
|
||||||
|
|
||||||
def test_cgi_core_params_POST
|
def test_cgi_core_params_POST
|
||||||
query_str = 'id=123&id=456&id=&str=%40h+%3D%7E+%2F%5E%24%2F'
|
query_str = 'id=123&id=456&id=&str=%40h+%3D%7E+%2F%5E%24%2F'
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'POST',
|
'REQUEST_METHOD' => 'POST',
|
||||||
'CONTENT_LENGTH' => query_str.length.to_s,
|
'CONTENT_LENGTH' => query_str.length.to_s,
|
||||||
'HTTP_COOKIE' => '_session_id=12345; name1=val1&val2;',
|
'HTTP_COOKIE' => '_session_id=12345; name1=val1&val2;',
|
||||||
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
||||||
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
}
|
)
|
||||||
ENV.update(@environ)
|
|
||||||
$stdin = StringIO.new
|
$stdin = StringIO.new
|
||||||
$stdin << query_str
|
$stdin << query_str
|
||||||
$stdin.rewind
|
$stdin.rewind
|
||||||
|
@ -93,13 +91,12 @@ class CGICoreTest < Test::Unit::TestCase
|
||||||
|
|
||||||
def test_cgi_core_params_encoding_check
|
def test_cgi_core_params_encoding_check
|
||||||
query_str = 'str=%BE%BE%B9%BE'
|
query_str = 'str=%BE%BE%B9%BE'
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'POST',
|
'REQUEST_METHOD' => 'POST',
|
||||||
'CONTENT_LENGTH' => query_str.length.to_s,
|
'CONTENT_LENGTH' => query_str.length.to_s,
|
||||||
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
||||||
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
}
|
)
|
||||||
ENV.update(@environ)
|
|
||||||
$stdin = StringIO.new
|
$stdin = StringIO.new
|
||||||
$stdin << query_str
|
$stdin << query_str
|
||||||
$stdin.rewind
|
$stdin.rewind
|
||||||
|
@ -131,14 +128,13 @@ class CGICoreTest < Test::Unit::TestCase
|
||||||
|
|
||||||
|
|
||||||
def test_cgi_core_cookie
|
def test_cgi_core_cookie
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'GET',
|
'REQUEST_METHOD' => 'GET',
|
||||||
'QUERY_STRING' => 'id=123&id=456&id=&str=%40h+%3D%7E+%2F%5E%24%2F',
|
'QUERY_STRING' => 'id=123&id=456&id=&str=%40h+%3D%7E+%2F%5E%24%2F',
|
||||||
'HTTP_COOKIE' => '_session_id=12345; name1=val1&val2;',
|
'HTTP_COOKIE' => '_session_id=12345; name1=val1&val2;',
|
||||||
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
||||||
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
}
|
)
|
||||||
ENV.update(@environ)
|
|
||||||
cgi = CGI.new
|
cgi = CGI.new
|
||||||
assert_not_equal(nil,cgi.cookies)
|
assert_not_equal(nil,cgi.cookies)
|
||||||
[ ['_session_id', ['12345'], ],
|
[ ['_session_id', ['12345'], ],
|
||||||
|
@ -156,11 +152,10 @@ class CGICoreTest < Test::Unit::TestCase
|
||||||
|
|
||||||
|
|
||||||
def test_cgi_core_maxcontentlength
|
def test_cgi_core_maxcontentlength
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'POST',
|
'REQUEST_METHOD' => 'POST',
|
||||||
'CONTENT_LENGTH' => (64 * 1024 * 1024).to_s
|
'CONTENT_LENGTH' => (64 * 1024 * 1024).to_s
|
||||||
}
|
)
|
||||||
ENV.update(@environ)
|
|
||||||
ex = assert_raise(StandardError) do
|
ex = assert_raise(StandardError) do
|
||||||
CGI.new
|
CGI.new
|
||||||
end
|
end
|
||||||
|
@ -169,14 +164,13 @@ class CGICoreTest < Test::Unit::TestCase
|
||||||
|
|
||||||
|
|
||||||
def test_cgi_core_out
|
def test_cgi_core_out
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'GET',
|
'REQUEST_METHOD' => 'GET',
|
||||||
'QUERY_STRING' => 'id=123&id=456&id=&str=%40h+%3D%7E+%2F%5E%24%2F',
|
'QUERY_STRING' => 'id=123&id=456&id=&str=%40h+%3D%7E+%2F%5E%24%2F',
|
||||||
'HTTP_COOKIE' => '_session_id=12345; name1=val1&val2;',
|
'HTTP_COOKIE' => '_session_id=12345; name1=val1&val2;',
|
||||||
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
||||||
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
}
|
)
|
||||||
ENV.update(@environ)
|
|
||||||
cgi = CGI.new
|
cgi = CGI.new
|
||||||
## euc string
|
## euc string
|
||||||
euc_str = "\270\253\244\355\241\242\277\315\244\254\245\264\245\337\244\316\244\350\244\246\244\300"
|
euc_str = "\270\253\244\355\241\242\277\315\244\254\245\264\245\337\244\316\244\350\244\246\244\300"
|
||||||
|
@ -201,7 +195,7 @@ class CGICoreTest < Test::Unit::TestCase
|
||||||
cgi.out(options) { euc_str }
|
cgi.out(options) { euc_str }
|
||||||
assert_equal('en', options['language'])
|
assert_equal('en', options['language'])
|
||||||
## HEAD method
|
## HEAD method
|
||||||
ENV['REQUEST_METHOD'] = 'HEAD'
|
update_env('REQUEST_METHOD' => 'HEAD')
|
||||||
options = { 'charset'=>'utf8' }
|
options = { 'charset'=>'utf8' }
|
||||||
$stdout = StringIO.new
|
$stdout = StringIO.new
|
||||||
cgi.out(options) { euc_str }
|
cgi.out(options) { euc_str }
|
||||||
|
@ -214,10 +208,9 @@ class CGICoreTest < Test::Unit::TestCase
|
||||||
|
|
||||||
|
|
||||||
def test_cgi_core_print
|
def test_cgi_core_print
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'GET',
|
'REQUEST_METHOD' => 'GET',
|
||||||
}
|
)
|
||||||
ENV.update(@environ)
|
|
||||||
cgi = CGI.new
|
cgi = CGI.new
|
||||||
$stdout = StringIO.new
|
$stdout = StringIO.new
|
||||||
str = "foobar"
|
str = "foobar"
|
||||||
|
@ -229,10 +222,9 @@ class CGICoreTest < Test::Unit::TestCase
|
||||||
|
|
||||||
|
|
||||||
def test_cgi_core_environs
|
def test_cgi_core_environs
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'GET',
|
'REQUEST_METHOD' => 'GET',
|
||||||
}
|
)
|
||||||
ENV.update(@environ)
|
|
||||||
cgi = CGI.new
|
cgi = CGI.new
|
||||||
##
|
##
|
||||||
list1 = %w[ AUTH_TYPE CONTENT_TYPE GATEWAY_INTERFACE PATH_INFO
|
list1 = %w[ AUTH_TYPE CONTENT_TYPE GATEWAY_INTERFACE PATH_INFO
|
||||||
|
@ -246,9 +238,8 @@ class CGICoreTest < Test::Unit::TestCase
|
||||||
# list2 = %w[ CONTENT_LENGTH SERVER_PORT ]
|
# list2 = %w[ CONTENT_LENGTH SERVER_PORT ]
|
||||||
## string expected
|
## string expected
|
||||||
list1.each do |name|
|
list1.each do |name|
|
||||||
@environ[name] = "**#{name}**"
|
update_env(name => "**#{name}**")
|
||||||
end
|
end
|
||||||
ENV.update(@environ)
|
|
||||||
list1.each do |name|
|
list1.each do |name|
|
||||||
method = name.sub(/\AHTTP_/, '').downcase
|
method = name.sub(/\AHTTP_/, '').downcase
|
||||||
actual = cgi.__send__ method
|
actual = cgi.__send__ method
|
||||||
|
@ -256,23 +247,22 @@ class CGICoreTest < Test::Unit::TestCase
|
||||||
assert_equal(expected, actual)
|
assert_equal(expected, actual)
|
||||||
end
|
end
|
||||||
## integer expected
|
## integer expected
|
||||||
ENV['CONTENT_LENGTH'] = '123'
|
update_env('CONTENT_LENGTH' => '123')
|
||||||
ENV['SERVER_PORT'] = '8080'
|
update_env('SERVER_PORT' => '8080')
|
||||||
assert_equal(123, cgi.content_length)
|
assert_equal(123, cgi.content_length)
|
||||||
assert_equal(8080, cgi.server_port)
|
assert_equal(8080, cgi.server_port)
|
||||||
## raw cookie
|
## raw cookie
|
||||||
ENV['HTTP_COOKIE'] = 'name1=val1'
|
update_env('HTTP_COOKIE' => 'name1=val1')
|
||||||
ENV['HTTP_COOKIE2'] = 'name2=val2'
|
update_env('HTTP_COOKIE2' => 'name2=val2')
|
||||||
assert_equal('name1=val1', cgi.raw_cookie)
|
assert_equal('name1=val1', cgi.raw_cookie)
|
||||||
assert_equal('name2=val2', cgi.raw_cookie2)
|
assert_equal('name2=val2', cgi.raw_cookie2)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def test_cgi_core_htmltype_header
|
def test_cgi_core_htmltype_header
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'GET',
|
'REQUEST_METHOD' => 'GET',
|
||||||
}
|
)
|
||||||
ENV.update(@environ)
|
|
||||||
## no htmltype
|
## no htmltype
|
||||||
cgi = CGI.new
|
cgi = CGI.new
|
||||||
assert_raise(NoMethodError) do cgi.doctype end
|
assert_raise(NoMethodError) do cgi.doctype end
|
||||||
|
|
|
@ -1,23 +1,25 @@
|
||||||
require 'test/unit'
|
require 'test/unit'
|
||||||
require 'cgi'
|
require 'cgi'
|
||||||
require 'time'
|
require 'time'
|
||||||
|
require_relative 'update_env'
|
||||||
|
|
||||||
|
|
||||||
class CGIHeaderTest < Test::Unit::TestCase
|
class CGIHeaderTest < Test::Unit::TestCase
|
||||||
|
include UpdateEnv
|
||||||
|
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
@environ = {
|
@environ = {}
|
||||||
|
update_env(
|
||||||
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
'REQUEST_METHOD' => 'GET',
|
'REQUEST_METHOD' => 'GET',
|
||||||
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
||||||
}
|
)
|
||||||
ENV.update(@environ)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def teardown
|
def teardown
|
||||||
@environ.each do |key, val| ENV.delete(key) end
|
ENV.update(@environ)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,19 @@
|
||||||
require 'test/unit'
|
require 'test/unit'
|
||||||
require 'cgi'
|
require 'cgi'
|
||||||
|
require_relative 'update_env'
|
||||||
|
|
||||||
|
|
||||||
class CGIModrubyTest < Test::Unit::TestCase
|
class CGIModrubyTest < Test::Unit::TestCase
|
||||||
|
include UpdateEnv
|
||||||
|
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
@environ = {
|
@environ = {}
|
||||||
|
update_env(
|
||||||
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
'REQUEST_METHOD' => 'GET',
|
'REQUEST_METHOD' => 'GET',
|
||||||
#'QUERY_STRING' => 'a=foo&b=bar',
|
#'QUERY_STRING' => 'a=foo&b=bar',
|
||||||
}
|
)
|
||||||
ENV.update(@environ)
|
|
||||||
CGI.class_eval { const_set(:MOD_RUBY, true) }
|
CGI.class_eval { const_set(:MOD_RUBY, true) }
|
||||||
Apache._reset()
|
Apache._reset()
|
||||||
#@cgi = CGI.new
|
#@cgi = CGI.new
|
||||||
|
@ -20,7 +22,7 @@ class CGIModrubyTest < Test::Unit::TestCase
|
||||||
|
|
||||||
|
|
||||||
def teardown
|
def teardown
|
||||||
@environ.each do |key, val| ENV.delete(key) end
|
ENV.update(@environ)
|
||||||
CGI.class_eval { remove_const(:MOD_RUBY) }
|
CGI.class_eval { remove_const(:MOD_RUBY) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ require 'test/unit'
|
||||||
require 'cgi'
|
require 'cgi'
|
||||||
require 'tempfile'
|
require 'tempfile'
|
||||||
require 'stringio'
|
require 'stringio'
|
||||||
|
require_relative 'update_env'
|
||||||
|
|
||||||
|
|
||||||
##
|
##
|
||||||
|
@ -104,16 +105,21 @@ end
|
||||||
|
|
||||||
|
|
||||||
class CGIMultipartTest < Test::Unit::TestCase
|
class CGIMultipartTest < Test::Unit::TestCase
|
||||||
|
include UpdateEnv
|
||||||
|
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
ENV['REQUEST_METHOD'] = 'POST'
|
@environ = {}
|
||||||
|
update_env(
|
||||||
|
'REQUEST_METHOD' => 'POST',
|
||||||
|
'CONTENT_TYPE' => nil,
|
||||||
|
'CONTENT_LENGTH' => nil,
|
||||||
|
)
|
||||||
@tempfiles = []
|
@tempfiles = []
|
||||||
end
|
end
|
||||||
|
|
||||||
def teardown
|
def teardown
|
||||||
%w[ REQUEST_METHOD CONTENT_TYPE CONTENT_LENGTH REQUEST_METHOD ].each do |name|
|
ENV.update(@environ)
|
||||||
ENV.delete(name)
|
|
||||||
end
|
|
||||||
$stdin.close() if $stdin.is_a?(Tempfile)
|
$stdin.close() if $stdin.is_a?(Tempfile)
|
||||||
$stdin = STDIN
|
$stdin = STDIN
|
||||||
@tempfiles.each {|t|
|
@tempfiles.each {|t|
|
||||||
|
|
|
@ -4,30 +4,33 @@ require 'cgi/session'
|
||||||
require 'cgi/session/pstore'
|
require 'cgi/session/pstore'
|
||||||
require 'stringio'
|
require 'stringio'
|
||||||
require 'tmpdir'
|
require 'tmpdir'
|
||||||
|
require_relative 'update_env'
|
||||||
|
|
||||||
class CGISessionTest < Test::Unit::TestCase
|
class CGISessionTest < Test::Unit::TestCase
|
||||||
|
include UpdateEnv
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
|
@environ = {}
|
||||||
@session_dir = Dir.mktmpdir(%w'session dir')
|
@session_dir = Dir.mktmpdir(%w'session dir')
|
||||||
end
|
end
|
||||||
|
|
||||||
def teardown
|
def teardown
|
||||||
@environ.each do |key, val| ENV.delete(key) end
|
ENV.update(@environ)
|
||||||
$stdout = STDOUT
|
$stdout = STDOUT
|
||||||
FileUtils.rm_rf(@session_dir)
|
FileUtils.rm_rf(@session_dir)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_cgi_session_filestore
|
def test_cgi_session_filestore
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'GET',
|
'REQUEST_METHOD' => 'GET',
|
||||||
# 'QUERY_STRING' => 'id=123&id=456&id=&str=%40h+%3D%7E+%2F%5E%24%2F',
|
# 'QUERY_STRING' => 'id=123&id=456&id=&str=%40h+%3D%7E+%2F%5E%24%2F',
|
||||||
# 'HTTP_COOKIE' => '_session_id=12345; name1=val1&val2;',
|
# 'HTTP_COOKIE' => '_session_id=12345; name1=val1&val2;',
|
||||||
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
||||||
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
}
|
)
|
||||||
value1="value1"
|
value1="value1"
|
||||||
value2="\x8F\xBC\x8D]"
|
value2="\x8F\xBC\x8D]"
|
||||||
value2.force_encoding("SJIS") if defined?(::Encoding)
|
value2.force_encoding("SJIS") if defined?(::Encoding)
|
||||||
ENV.update(@environ)
|
|
||||||
cgi = CGI.new
|
cgi = CGI.new
|
||||||
session = CGI::Session.new(cgi,"tmpdir"=>@session_dir)
|
session = CGI::Session.new(cgi,"tmpdir"=>@session_dir)
|
||||||
session["key1"]=value1
|
session["key1"]=value1
|
||||||
|
@ -38,14 +41,13 @@ class CGISessionTest < Test::Unit::TestCase
|
||||||
$stdout = StringIO.new
|
$stdout = StringIO.new
|
||||||
cgi.out{""}
|
cgi.out{""}
|
||||||
|
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'GET',
|
'REQUEST_METHOD' => 'GET',
|
||||||
# 'HTTP_COOKIE' => "_session_id=#{session_id}",
|
# 'HTTP_COOKIE' => "_session_id=#{session_id}",
|
||||||
'QUERY_STRING' => "_session_id=#{session.session_id}",
|
'QUERY_STRING' => "_session_id=#{session.session_id}",
|
||||||
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
||||||
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
}
|
)
|
||||||
ENV.update(@environ)
|
|
||||||
cgi = CGI.new
|
cgi = CGI.new
|
||||||
session = CGI::Session.new(cgi,"tmpdir"=>@session_dir)
|
session = CGI::Session.new(cgi,"tmpdir"=>@session_dir)
|
||||||
$stdout = StringIO.new
|
$stdout = StringIO.new
|
||||||
|
@ -55,17 +57,16 @@ class CGISessionTest < Test::Unit::TestCase
|
||||||
|
|
||||||
end
|
end
|
||||||
def test_cgi_session_pstore
|
def test_cgi_session_pstore
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'GET',
|
'REQUEST_METHOD' => 'GET',
|
||||||
# 'QUERY_STRING' => 'id=123&id=456&id=&str=%40h+%3D%7E+%2F%5E%24%2F',
|
# 'QUERY_STRING' => 'id=123&id=456&id=&str=%40h+%3D%7E+%2F%5E%24%2F',
|
||||||
# 'HTTP_COOKIE' => '_session_id=12345; name1=val1&val2;',
|
# 'HTTP_COOKIE' => '_session_id=12345; name1=val1&val2;',
|
||||||
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
||||||
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
}
|
)
|
||||||
value1="value1"
|
value1="value1"
|
||||||
value2="\x8F\xBC\x8D]"
|
value2="\x8F\xBC\x8D]"
|
||||||
value2.force_encoding("SJIS") if defined?(::Encoding)
|
value2.force_encoding("SJIS") if defined?(::Encoding)
|
||||||
ENV.update(@environ)
|
|
||||||
cgi = CGI.new
|
cgi = CGI.new
|
||||||
session = CGI::Session.new(cgi,"tmpdir"=>@session_dir,"database_manager"=>CGI::Session::PStore)
|
session = CGI::Session.new(cgi,"tmpdir"=>@session_dir,"database_manager"=>CGI::Session::PStore)
|
||||||
session["key1"]=value1
|
session["key1"]=value1
|
||||||
|
@ -76,14 +77,13 @@ class CGISessionTest < Test::Unit::TestCase
|
||||||
$stdout = StringIO.new
|
$stdout = StringIO.new
|
||||||
cgi.out{""}
|
cgi.out{""}
|
||||||
|
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'GET',
|
'REQUEST_METHOD' => 'GET',
|
||||||
# 'HTTP_COOKIE' => "_session_id=#{session_id}",
|
# 'HTTP_COOKIE' => "_session_id=#{session_id}",
|
||||||
'QUERY_STRING' => "_session_id=#{session.session_id}",
|
'QUERY_STRING' => "_session_id=#{session.session_id}",
|
||||||
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
||||||
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
}
|
)
|
||||||
ENV.update(@environ)
|
|
||||||
cgi = CGI.new
|
cgi = CGI.new
|
||||||
session = CGI::Session.new(cgi,"tmpdir"=>@session_dir,"database_manager"=>CGI::Session::PStore)
|
session = CGI::Session.new(cgi,"tmpdir"=>@session_dir,"database_manager"=>CGI::Session::PStore)
|
||||||
$stdout = StringIO.new
|
$stdout = StringIO.new
|
||||||
|
@ -92,17 +92,16 @@ class CGISessionTest < Test::Unit::TestCase
|
||||||
session.close
|
session.close
|
||||||
end
|
end
|
||||||
def test_cgi_session_specify_session_id
|
def test_cgi_session_specify_session_id
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'GET',
|
'REQUEST_METHOD' => 'GET',
|
||||||
# 'QUERY_STRING' => 'id=123&id=456&id=&str=%40h+%3D%7E+%2F%5E%24%2F',
|
# 'QUERY_STRING' => 'id=123&id=456&id=&str=%40h+%3D%7E+%2F%5E%24%2F',
|
||||||
# 'HTTP_COOKIE' => '_session_id=12345; name1=val1&val2;',
|
# 'HTTP_COOKIE' => '_session_id=12345; name1=val1&val2;',
|
||||||
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
||||||
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
}
|
)
|
||||||
value1="value1"
|
value1="value1"
|
||||||
value2="\x8F\xBC\x8D]"
|
value2="\x8F\xBC\x8D]"
|
||||||
value2.force_encoding("SJIS") if defined?(::Encoding)
|
value2.force_encoding("SJIS") if defined?(::Encoding)
|
||||||
ENV.update(@environ)
|
|
||||||
cgi = CGI.new
|
cgi = CGI.new
|
||||||
session = CGI::Session.new(cgi,"tmpdir"=>@session_dir,"session_id"=>"foo")
|
session = CGI::Session.new(cgi,"tmpdir"=>@session_dir,"session_id"=>"foo")
|
||||||
session["key1"]=value1
|
session["key1"]=value1
|
||||||
|
@ -115,14 +114,13 @@ class CGISessionTest < Test::Unit::TestCase
|
||||||
$stdout = StringIO.new
|
$stdout = StringIO.new
|
||||||
cgi.out{""}
|
cgi.out{""}
|
||||||
|
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'GET',
|
'REQUEST_METHOD' => 'GET',
|
||||||
# 'HTTP_COOKIE' => "_session_id=#{session_id}",
|
# 'HTTP_COOKIE' => "_session_id=#{session_id}",
|
||||||
'QUERY_STRING' => "_session_id=#{session.session_id}",
|
'QUERY_STRING' => "_session_id=#{session.session_id}",
|
||||||
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
||||||
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
}
|
)
|
||||||
ENV.update(@environ)
|
|
||||||
cgi = CGI.new
|
cgi = CGI.new
|
||||||
session = CGI::Session.new(cgi,"tmpdir"=>@session_dir)
|
session = CGI::Session.new(cgi,"tmpdir"=>@session_dir)
|
||||||
$stdout = StringIO.new
|
$stdout = StringIO.new
|
||||||
|
@ -132,17 +130,16 @@ class CGISessionTest < Test::Unit::TestCase
|
||||||
session.close
|
session.close
|
||||||
end
|
end
|
||||||
def test_cgi_session_specify_session_key
|
def test_cgi_session_specify_session_key
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'GET',
|
'REQUEST_METHOD' => 'GET',
|
||||||
# 'QUERY_STRING' => 'id=123&id=456&id=&str=%40h+%3D%7E+%2F%5E%24%2F',
|
# 'QUERY_STRING' => 'id=123&id=456&id=&str=%40h+%3D%7E+%2F%5E%24%2F',
|
||||||
# 'HTTP_COOKIE' => '_session_id=12345; name1=val1&val2;',
|
# 'HTTP_COOKIE' => '_session_id=12345; name1=val1&val2;',
|
||||||
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
||||||
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
}
|
)
|
||||||
value1="value1"
|
value1="value1"
|
||||||
value2="\x8F\xBC\x8D]"
|
value2="\x8F\xBC\x8D]"
|
||||||
value2.force_encoding("SJIS") if defined?(::Encoding)
|
value2.force_encoding("SJIS") if defined?(::Encoding)
|
||||||
ENV.update(@environ)
|
|
||||||
cgi = CGI.new
|
cgi = CGI.new
|
||||||
session = CGI::Session.new(cgi,"tmpdir"=>@session_dir,"session_key"=>"bar")
|
session = CGI::Session.new(cgi,"tmpdir"=>@session_dir,"session_key"=>"bar")
|
||||||
session["key1"]=value1
|
session["key1"]=value1
|
||||||
|
@ -154,14 +151,13 @@ class CGISessionTest < Test::Unit::TestCase
|
||||||
$stdout = StringIO.new
|
$stdout = StringIO.new
|
||||||
cgi.out{""}
|
cgi.out{""}
|
||||||
|
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'GET',
|
'REQUEST_METHOD' => 'GET',
|
||||||
'HTTP_COOKIE' => "bar=#{session_id}",
|
'HTTP_COOKIE' => "bar=#{session_id}",
|
||||||
# 'QUERY_STRING' => "bar=#{session.session_id}",
|
# 'QUERY_STRING' => "bar=#{session.session_id}",
|
||||||
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
'SERVER_SOFTWARE' => 'Apache 2.2.0',
|
||||||
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
}
|
)
|
||||||
ENV.update(@environ)
|
|
||||||
cgi = CGI.new
|
cgi = CGI.new
|
||||||
session = CGI::Session.new(cgi,"tmpdir"=>@session_dir,"session_key"=>"bar")
|
session = CGI::Session.new(cgi,"tmpdir"=>@session_dir,"session_key"=>"bar")
|
||||||
$stdout = StringIO.new
|
$stdout = StringIO.new
|
||||||
|
|
|
@ -1,12 +1,15 @@
|
||||||
require 'test/unit'
|
require 'test/unit'
|
||||||
require 'cgi'
|
require 'cgi'
|
||||||
require 'stringio'
|
require 'stringio'
|
||||||
|
require_relative 'update_env'
|
||||||
|
|
||||||
|
|
||||||
class CGITagHelperTest < Test::Unit::TestCase
|
class CGITagHelperTest < Test::Unit::TestCase
|
||||||
|
include UpdateEnv
|
||||||
|
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
|
@environ = {}
|
||||||
#@environ = {
|
#@environ = {
|
||||||
# 'SERVER_PROTOCOL' => 'HTTP/1.1',
|
# 'SERVER_PROTOCOL' => 'HTTP/1.1',
|
||||||
# 'REQUEST_METHOD' => 'GET',
|
# 'REQUEST_METHOD' => 'GET',
|
||||||
|
@ -17,16 +20,15 @@ class CGITagHelperTest < Test::Unit::TestCase
|
||||||
|
|
||||||
|
|
||||||
def teardown
|
def teardown
|
||||||
@environ.each do |key, val| ENV.delete(key) end
|
ENV.update(@environ)
|
||||||
$stdout = STDOUT
|
$stdout = STDOUT
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def test_cgi_tag_helper_html3
|
def test_cgi_tag_helper_html3
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'GET',
|
'REQUEST_METHOD' => 'GET',
|
||||||
}
|
)
|
||||||
ENV.update(@environ)
|
|
||||||
## html3
|
## html3
|
||||||
cgi = CGI.new('html3')
|
cgi = CGI.new('html3')
|
||||||
assert_equal('<A HREF=""></A>',cgi.a)
|
assert_equal('<A HREF=""></A>',cgi.a)
|
||||||
|
@ -337,10 +339,9 @@ class CGITagHelperTest < Test::Unit::TestCase
|
||||||
=end
|
=end
|
||||||
|
|
||||||
def test_cgi_tag_helper_html5
|
def test_cgi_tag_helper_html5
|
||||||
@environ = {
|
update_env(
|
||||||
'REQUEST_METHOD' => 'GET',
|
'REQUEST_METHOD' => 'GET',
|
||||||
}
|
)
|
||||||
ENV.update(@environ)
|
|
||||||
## html5
|
## html5
|
||||||
cgi = CGI.new('html5')
|
cgi = CGI.new('html5')
|
||||||
assert_equal('<HEADER></HEADER>',cgi.header)
|
assert_equal('<HEADER></HEADER>',cgi.header)
|
||||||
|
|
|
@ -1,21 +1,25 @@
|
||||||
require 'test/unit'
|
require 'test/unit'
|
||||||
require 'cgi'
|
require 'cgi'
|
||||||
require 'stringio'
|
require 'stringio'
|
||||||
|
require_relative 'update_env'
|
||||||
|
|
||||||
|
|
||||||
class CGIUtilTest < Test::Unit::TestCase
|
class CGIUtilTest < Test::Unit::TestCase
|
||||||
include CGI::Util
|
include CGI::Util
|
||||||
|
include UpdateEnv
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
ENV['REQUEST_METHOD'] = 'GET'
|
@environ = {}
|
||||||
|
update_env(
|
||||||
|
'REQUEST_METHOD' => 'GET',
|
||||||
|
'SCRIPT_NAME' => nil,
|
||||||
|
)
|
||||||
@str1="&<>\" \xE3\x82\x86\xE3\x82\x93\xE3\x82\x86\xE3\x82\x93"
|
@str1="&<>\" \xE3\x82\x86\xE3\x82\x93\xE3\x82\x86\xE3\x82\x93"
|
||||||
@str1.force_encoding("UTF-8") if defined?(::Encoding)
|
@str1.force_encoding("UTF-8") if defined?(::Encoding)
|
||||||
end
|
end
|
||||||
|
|
||||||
def teardown
|
def teardown
|
||||||
%W[REQUEST_METHOD SCRIPT_NAME].each do |name|
|
ENV.update(@environ)
|
||||||
ENV.delete(name)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
8
test/cgi/update_env.rb
Normal file
8
test/cgi/update_env.rb
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
module UpdateEnv
|
||||||
|
def update_env(environ)
|
||||||
|
environ.each do |key, val|
|
||||||
|
@environ[key] = ENV[key] unless @environ.key?(key)
|
||||||
|
ENV[key] = val
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -7,6 +7,7 @@ class TestRakeApplicationOptions < Rake::TestCase
|
||||||
def setup
|
def setup
|
||||||
super
|
super
|
||||||
|
|
||||||
|
@testkey = ENV['TESTKEY']
|
||||||
clear_argv
|
clear_argv
|
||||||
Rake::FileUtilsExt.verbose_flag = false
|
Rake::FileUtilsExt.verbose_flag = false
|
||||||
Rake::FileUtilsExt.nowrite_flag = false
|
Rake::FileUtilsExt.nowrite_flag = false
|
||||||
|
@ -14,6 +15,7 @@ class TestRakeApplicationOptions < Rake::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def teardown
|
def teardown
|
||||||
|
ENV['TESTKEY'] = @testkey
|
||||||
clear_argv
|
clear_argv
|
||||||
Rake::FileUtilsExt.verbose_flag = false
|
Rake::FileUtilsExt.verbose_flag = false
|
||||||
Rake::FileUtilsExt.nowrite_flag = false
|
Rake::FileUtilsExt.nowrite_flag = false
|
||||||
|
|
|
@ -3,10 +3,15 @@ require 'fileutils'
|
||||||
require 'stringio'
|
require 'stringio'
|
||||||
|
|
||||||
class TestRakeFileUtils < Rake::TestCase
|
class TestRakeFileUtils < Rake::TestCase
|
||||||
|
def setup
|
||||||
|
super
|
||||||
|
@rake_test_sh = ENV['RAKE_TEST_SH']
|
||||||
|
end
|
||||||
|
|
||||||
def teardown
|
def teardown
|
||||||
FileUtils::LN_SUPPORTED[0] = true
|
FileUtils::LN_SUPPORTED[0] = true
|
||||||
RakeFileUtils.verbose_flag = Rake::FileUtilsExt::DEFAULT
|
RakeFileUtils.verbose_flag = Rake::FileUtilsExt::DEFAULT
|
||||||
|
ENV['RAKE_TEST_SH'] = @rake_test_sh
|
||||||
|
|
||||||
super
|
super
|
||||||
end
|
end
|
||||||
|
|
|
@ -16,7 +16,7 @@ class TestGemRequest < Gem::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
@proxies = %w[http_proxy HTTP_PROXY http_proxy_user HTTP_PROXY_USER http_proxy_pass HTTP_PROXY_PASS no_proxy NO_PROXY]
|
@proxies = %w[http_proxy https_proxy HTTP_PROXY http_proxy_user HTTP_PROXY_USER http_proxy_pass HTTP_PROXY_PASS no_proxy NO_PROXY]
|
||||||
@old_proxies = @proxies.map {|k| ENV[k] }
|
@old_proxies = @proxies.map {|k| ENV[k] }
|
||||||
@proxies.each {|k| ENV[k] = nil }
|
@proxies.each {|k| ENV[k] = nil }
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue