mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* bootstraptest/test_autoload.rb, bootstraptest/test_method.rb:
remove tests for $SAFE=4. * lib/pp.rb: use taint instead of untrust to avoid warnings when $VERBOSE is set to true. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41269 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
23ab11f14a
commit
c8151d1235
4 changed files with 11 additions and 87 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
Thu Jun 13 10:47:16 2013 Shugo Maeda <shugo@ruby-lang.org>
|
||||||
|
|
||||||
|
* bootstraptest/test_autoload.rb, bootstraptest/test_method.rb:
|
||||||
|
remove tests for $SAFE=4.
|
||||||
|
|
||||||
|
* lib/pp.rb: use taint instead of untrust to avoid warnings when
|
||||||
|
$VERBOSE is set to true.
|
||||||
|
|
||||||
Thu Jun 13 06:12:18 2013 Tanaka Akira <akr@fsij.org>
|
Thu Jun 13 06:12:18 2013 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
* bignum.c (integer_unpack_num_bdigits_small): Fix a compile error on
|
* bignum.c (integer_unpack_num_bdigits_small): Fix a compile error on
|
||||||
|
|
|
@ -43,46 +43,6 @@ assert_equal 'ok', %q{
|
||||||
ZZZ.ok
|
ZZZ.ok
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_equal 'ok', %q{
|
|
||||||
open("zzz.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
|
|
||||||
autoload :ZZZ, "./zzz.rb"
|
|
||||||
proc{$SAFE=4; ZZZ.ok}.call
|
|
||||||
}
|
|
||||||
|
|
||||||
assert_equal 'ok', %q{
|
|
||||||
open("zzz.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
|
|
||||||
autoload :ZZZ, "./zzz.rb"
|
|
||||||
require "./zzz.rb"
|
|
||||||
proc{$SAFE=4; ZZZ.ok}.call
|
|
||||||
}
|
|
||||||
|
|
||||||
assert_equal 'ok', %q{
|
|
||||||
open("zzz.rb", "w") {|f| f.puts "class ZZZ; def hoge;:ok;end;end"}
|
|
||||||
autoload :ZZZ, File.join(Dir.pwd, 'zzz.rb')
|
|
||||||
module M; end
|
|
||||||
Thread.new{M.instance_eval('$SAFE=4; ZZZ.new.hoge')}.value
|
|
||||||
}
|
|
||||||
|
|
||||||
assert_equal 'ok', %q{
|
|
||||||
open("zzz.rb", "w") {|f| f.puts "class ZZZ; def hoge;:ok;end;end"}
|
|
||||||
autoload :ZZZ, File.join(Dir.pwd, 'zzz.rb')
|
|
||||||
module M; end
|
|
||||||
Thread.new{$SAFE=4; M.instance_eval('ZZZ.new.hoge')}.value
|
|
||||||
}
|
|
||||||
|
|
||||||
assert_equal 'ok', %q{
|
|
||||||
open("zzz.rb", "w") {|f| f.puts "class ZZZ; def hoge;:ok;end;end"}
|
|
||||||
autoload :ZZZ, File.join(Dir.pwd, 'zzz.rb')
|
|
||||||
Thread.new{$SAFE=4; eval('ZZZ.new.hoge')}.value
|
|
||||||
}
|
|
||||||
|
|
||||||
assert_equal 'ok', %q{
|
|
||||||
open("zzz.rb", "w") {|f| f.puts "class ZZZ; def hoge;:ok;end;end"}
|
|
||||||
autoload :ZZZ, File.join(Dir.pwd, 'zzz.rb')
|
|
||||||
module M; end
|
|
||||||
Thread.new{eval('$SAFE=4; ZZZ.new.hoge')}.value
|
|
||||||
}
|
|
||||||
|
|
||||||
assert_equal 'okok', %q{
|
assert_equal 'okok', %q{
|
||||||
open("zzz.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
|
open("zzz.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
|
||||||
autoload :ZZZ, "./zzz.rb"
|
autoload :ZZZ, "./zzz.rb"
|
||||||
|
|
|
@ -886,50 +886,6 @@ class C0; def m *args; [:C0_m, args]; end; end
|
||||||
class C1 < C0; def m a, o=:o; super; end; end
|
class C1 < C0; def m a, o=:o; super; end; end
|
||||||
; C1.new.m 1, 2}
|
; C1.new.m 1, 2}
|
||||||
|
|
||||||
assert_equal %q{[:ok, :ok, :ok, :ok, :ok, :ok, :ng, :ng]}, %q{
|
|
||||||
$ans = []
|
|
||||||
class Foo
|
|
||||||
def m
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
c1 = c2 = nil
|
|
||||||
|
|
||||||
lambda{
|
|
||||||
$SAFE = 4
|
|
||||||
c1 = Class.new{
|
|
||||||
def m
|
|
||||||
end
|
|
||||||
}
|
|
||||||
c2 = Class.new(Foo){
|
|
||||||
alias mm m
|
|
||||||
}
|
|
||||||
}.call
|
|
||||||
|
|
||||||
def test
|
|
||||||
begin
|
|
||||||
yield
|
|
||||||
rescue SecurityError
|
|
||||||
$ans << :ok
|
|
||||||
else
|
|
||||||
$ans << :ng
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
o1 = c1.new
|
|
||||||
o2 = c2.new
|
|
||||||
|
|
||||||
test{o1.m}
|
|
||||||
test{o2.mm}
|
|
||||||
test{o1.send :m}
|
|
||||||
test{o2.send :mm}
|
|
||||||
test{o1.public_send :m}
|
|
||||||
test{o2.public_send :mm}
|
|
||||||
test{o1.method(:m).call}
|
|
||||||
test{o2.method(:mm).call}
|
|
||||||
$ans
|
|
||||||
}
|
|
||||||
|
|
||||||
assert_equal 'ok', %q{
|
assert_equal 'ok', %q{
|
||||||
class C
|
class C
|
||||||
def x=(n)
|
def x=(n)
|
||||||
|
|
|
@ -132,17 +132,17 @@ class PP < PrettyPrint
|
||||||
# and preserves the previous set of objects being printed.
|
# and preserves the previous set of objects being printed.
|
||||||
def guard_inspect_key
|
def guard_inspect_key
|
||||||
if Thread.current[:__recursive_key__] == nil
|
if Thread.current[:__recursive_key__] == nil
|
||||||
Thread.current[:__recursive_key__] = {}.untrust
|
Thread.current[:__recursive_key__] = {}.taint
|
||||||
end
|
end
|
||||||
|
|
||||||
if Thread.current[:__recursive_key__][:inspect] == nil
|
if Thread.current[:__recursive_key__][:inspect] == nil
|
||||||
Thread.current[:__recursive_key__][:inspect] = {}.untrust
|
Thread.current[:__recursive_key__][:inspect] = {}.taint
|
||||||
end
|
end
|
||||||
|
|
||||||
save = Thread.current[:__recursive_key__][:inspect]
|
save = Thread.current[:__recursive_key__][:inspect]
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Thread.current[:__recursive_key__][:inspect] = {}.untrust
|
Thread.current[:__recursive_key__][:inspect] = {}.taint
|
||||||
yield
|
yield
|
||||||
ensure
|
ensure
|
||||||
Thread.current[:__recursive_key__][:inspect] = save
|
Thread.current[:__recursive_key__][:inspect] = save
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue