mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
8b27d153d2
if rb_f_notimplement is given. (rb_define_protected_method): ditto. (rb_define_private_method): ditto. (rb_define_method): use rb_define_method_id. * include/ruby/intern.h (rb_f_notimplement): declared. (rb_define_notimplement_method_id): declared. * proc.c (method_inspect): show not-implemented. * vm_method.c (notimplement_body): new variable. (rb_notimplement_body_p): new function. (rb_method_boundp): return false if not implemented. (rb_f_notimplement): new function. (rb_define_notimplement_method_id): new function. * process.c (rb_f_fork): use rb_f_notimplement if not implemented. * file.c (rb_file_s_lchmod): use rb_f_notimplement if not implemented. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23192 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
64 lines
1.4 KiB
Ruby
64 lines
1.4 KiB
Ruby
require 'test/unit'
|
|
require 'tmpdir'
|
|
|
|
class TestNotImplement < Test::Unit::TestCase
|
|
def test_respond_to_fork
|
|
assert_includes(Process.methods, :fork)
|
|
if /linux/ =~ RUBY_PLATFORM
|
|
assert_equal(true, Process.respond_to?(:fork))
|
|
end
|
|
end
|
|
|
|
def test_respond_to_lchmod
|
|
assert_includes(File.methods, :lchmod)
|
|
if /linux/ =~ RUBY_PLATFORM
|
|
assert_equal(false, File.respond_to?(:lchmod))
|
|
end
|
|
if /freebsd/ =~ RUBY_PLATFORM
|
|
assert_equal(true, File.respond_to?(:lchmod))
|
|
end
|
|
end
|
|
|
|
def test_call_fork
|
|
if Process.respond_to?(:fork)
|
|
assert_nothing_raised {
|
|
pid = fork {}
|
|
Process.wait pid
|
|
}
|
|
end
|
|
end
|
|
|
|
def test_call_lchmod
|
|
if File.respond_to?(:lchmod)
|
|
Dir.mktmpdir {|d|
|
|
f = "#{d}/f"
|
|
g = "#{d}/g"
|
|
File.open(f, "w") {}
|
|
File.symlink f, g
|
|
newmode = 0444
|
|
File.lchmod newmode, "#{d}/g"
|
|
snew = File.lstat(g)
|
|
assert_equal(newmode, snew.mode & 0777)
|
|
}
|
|
end
|
|
end
|
|
|
|
def test_method_inspect_fork
|
|
m = Process.method(:fork)
|
|
if Process.respond_to?(:fork)
|
|
assert_not_match(/not-implemented/, m.inspect)
|
|
else
|
|
assert_match(/not-implemented/, m.inspect)
|
|
end
|
|
end
|
|
|
|
def test_method_inspect_lchmod
|
|
m = File.method(:lchmod)
|
|
if File.respond_to?(:lchmod)
|
|
assert_not_match(/not-implemented/, m.inspect)
|
|
else
|
|
assert_match(/not-implemented/, m.inspect)
|
|
end
|
|
end
|
|
|
|
end
|