Bug #14375 » spec-ruby-core-file-chmod_umask.patch
| spec/ruby/core/file/chmod_spec.rb | ||
|---|---|---|
|
require File.expand_path('../../../spec_helper', __FILE__)
|
||
|
# See umask_spec also
|
||
|
FILE_VALS =
|
||
|
if PlatformGuard.new(:netbsd).match?
|
||
|
# -256, -2 and -1 raise Errno::EFTYPE on NetBSD
|
||
|
[-2**30, -2**16, -0.5, 0, 1, 2, 5.555575, 16, 32, 64, 256, 2**16, 2**30]
|
||
|
elsif PlatformGuard.new(:freebsd, :openbsd, :darwin).match?
|
||
|
# -256, -2 and -1 raise Errno::EINVAL on OpenBSD
|
||
|
[ -0.5, 0, 1, 2, 5.555575, 16, 32, 64, 256]
|
||
|
elsif PlatformGuard.new(:mingw).match?
|
||
|
[ -2**15, -256, -2, -1,-0.5, 0, 1, 2, 5.555575, 16, 32, 64, 256, 2**15]
|
||
|
else
|
||
|
[-2**30, -2**16, -256, -2, -1,-0.5, 0, 1, 2, 5.555575, 16, 32, 64, 256, 2**16, 2**30]
|
||
|
end
|
||
|
describe "File#chmod" do
|
||
|
before :each do
|
||
|
@filename = tmp('i_exist.exe')
|
||
| ... | ... | |
|
@file.chmod(0755).should == 0
|
||
|
end
|
||
|
platform_is_not :freebsd, :netbsd, :openbsd, :darwin do
|
||
|
it "always succeeds with any numeric values" do
|
||
|
vals = [-2**30, -2**16, -256, -2, -1,
|
||
|
-0.5, 0, 1, 2, 5.555575, 16, 32, 64, 256, 2**16, 2**30]
|
||
|
vals.each { |v|
|
||
|
lambda { @file.chmod(v) }.should_not raise_error
|
||
|
}
|
||
|
end
|
||
|
end
|
||
|
# -256, -2 and -1 raise Errno::EFTYPE on NetBSD
|
||
|
platform_is :netbsd do
|
||
|
it "always succeeds with any numeric values" do
|
||
|
vals = [-2**30, -2**16, #-256, -2, -1,
|
||
|
-0.5, 0, 1, 2, 5.555575, 16, 32, 64, 256, 2**16, 2**30]
|
||
|
vals.each { |v|
|
||
|
lambda { @file.chmod(v) }.should_not raise_error
|
||
|
}
|
||
|
end
|
||
|
end
|
||
|
# -256, -2 and -1 raise Errno::EINVAL on OpenBSD
|
||
|
platform_is :freebsd, :openbsd, :darwin do
|
||
|
it "always succeeds with any numeric values" do
|
||
|
vals = [#-2**30, -2**16, -256, -2, -1,
|
||
|
-0.5, 0, 1, 2, 5.555575, 16, 32, 64, 256]#, 2**16, 2**30
|
||
|
vals.each { |v|
|
||
|
lambda { @file.chmod(v) }.should_not raise_error
|
||
|
}
|
||
|
end
|
||
|
it "always succeeds with any numeric values" do
|
||
|
FILE_VALS.each { |v|
|
||
|
lambda { @file.chmod(v) }.should_not raise_error
|
||
|
}
|
||
|
end
|
||
|
it "invokes to_int on non-integer argument" do
|
||
| ... | ... | |
|
@count.should == 1
|
||
|
end
|
||
|
platform_is_not :freebsd, :netbsd, :openbsd, :darwin do
|
||
|
it "always succeeds with any numeric values" do
|
||
|
vals = [-2**30, -2**16, -256, -2, -1,
|
||
|
-0.5, 0, 1, 2, 5.555575, 16, 32, 64, 256, 2**16, 2**30]
|
||
|
vals.each { |v|
|
||
|
lambda { File.chmod(v, @file) }.should_not raise_error
|
||
|
}
|
||
|
end
|
||
|
end
|
||
|
# -256, -2 and -1 raise Errno::EFTYPE on NetBSD
|
||
|
platform_is :netbsd do
|
||
|
it "always succeeds with any numeric values" do
|
||
|
vals = [-2**30, -2**16, #-256, -2, -1,
|
||
|
-0.5, 0, 1, 2, 5.555575, 16, 32, 64, 256, 2**16, 2**30]
|
||
|
vals.each { |v|
|
||
|
lambda { File.chmod(v, @file) }.should_not raise_error
|
||
|
}
|
||
|
end
|
||
|
it "always succeeds with any numeric values" do
|
||
|
FILE_VALS.each { |v|
|
||
|
lambda { File.chmod(v, @file) }.should_not raise_error
|
||
|
}
|
||
|
end
|
||
|
platform_is :darwin do
|
||
| spec/ruby/core/file/umask_spec.rb | ||
|---|---|---|
|
require File.expand_path('../../../spec_helper', __FILE__)
|
||
|
# See chmod_spec also
|
||
|
FILE_VALS =
|
||
|
if PlatformGuard.new(:netbsd).match?
|
||
|
# -256, -2 and -1 raise Errno::EFTYPE on NetBSD
|
||
|
[-2**30, -2**16, -0.5, 0, 1, 2, 5.555575, 16, 32, 64, 256, 2**16, 2**30]
|
||
|
elsif PlatformGuard.new(:freebsd, :openbsd, :darwin).match?
|
||
|
# -256, -2 and -1 raise Errno::EINVAL on OpenBSD
|
||
|
[ -0.5, 0, 1, 2, 5.555575, 16, 32, 64, 256]
|
||
|
elsif PlatformGuard.new(:mingw).match?
|
||
|
[ -2**15, -256, -2, -1,-0.5, 0, 1, 2, 5.555575, 16, 32, 64, 256, 2**15]
|
||
|
else
|
||
|
[-2**30, -2**16, -256, -2, -1,-0.5, 0, 1, 2, 5.555575, 16, 32, 64, 256, 2**16, 2**30]
|
||
|
end
|
||
|
describe "File.umask" do
|
||
|
before :each do
|
||
|
@orig_umask = File.umask
|
||
| ... | ... | |
|
end
|
||
|
end
|
||
|
platform_is_not :freebsd, :darwin do
|
||
|
it "always succeeds with any integer values" do
|
||
|
vals = [-2**30, -2**16, -256, -2,
|
||
|
-1.5, -1, 0.5, 0, 1, 2, 7.77777, 16, 32, 64, 256, 2**16, 2**30]
|
||
|
vals.each { |v|
|
||
|
lambda { File.umask(v) }.should_not raise_error
|
||
|
}
|
||
|
end
|
||
|
it "always succeeds with any integer values" do
|
||
|
FILE_VALS.each { |v|
|
||
|
lambda { File.umask(v) }.should_not raise_error
|
||
|
}
|
||
|
end
|
||
|
platform_is :freebsd, :darwin do
|
||
|
it "always succeeds with any integer values" do
|
||
|
vals = [-256, -2,
|
||
|
-1.5, -1, 0.5, 0, 1, 2, 7.77777, 16, 32, 64, 256]
|
||
|
vals.each { |v|
|
||
|
lambda { File.umask(v) }.should_not raise_error
|
||
|
}
|
||
|
end
|
||
|
it "fails with invalid values" do
|
||
|
vals = [-2**30, -2**16, 2**16, 2**30]
|
||
|
vals.each { |v|
|
||