summaryrefslogtreecommitdiff
path: root/spec/ruby/core/file/chmod_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/file/chmod_spec.rb')
-rw-r--r--spec/ruby/core/file/chmod_spec.rb113
1 files changed, 11 insertions, 102 deletions
diff --git a/spec/ruby/core/file/chmod_spec.rb b/spec/ruby/core/file/chmod_spec.rb
index f42dea6585..e0fd10ceb1 100644
--- a/spec/ruby/core/file/chmod_spec.rb
+++ b/spec/ruby/core/file/chmod_spec.rb
@@ -1,4 +1,4 @@
-require File.expand_path('../../../spec_helper', __FILE__)
+require_relative '../../spec_helper'
describe "File#chmod" do
before :each do
@@ -15,36 +15,9 @@ describe "File#chmod" do
@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, -2**8, -2, -1,
- -0.5, 0, 1, 2, 5.555575, 16, 32, 64, 2**8, 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, #-2**8, -2, -1,
- -0.5, 0, 1, 2, 5.555575, 16, 32, 64, 2**8, 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, -2**8, -2, -1,
- -0.5, 0, 1, 2, 5.555575, 16, 32, 64, 2**8]#, 2**16, 2**30
- vals.each { |v|
- lambda { @file.chmod(v) }.should_not raise_error
- }
- end
+ it "raises RangeError with too large values" do
+ -> { @file.chmod(2**64) }.should.raise(RangeError)
+ -> { @file.chmod(-2**63 - 1) }.should.raise(RangeError)
end
it "invokes to_int on non-integer argument" do
@@ -123,87 +96,23 @@ describe "File.chmod" 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, -2**8, -2, -1,
- -0.5, 0, 1, 2, 5.555575, 16, 32, 64, 2**8, 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, #-2**8, -2, -1,
- -0.5, 0, 1, 2, 5.555575, 16, 32, 64, 2**8, 2**16, 2**30]
- vals.each { |v|
- lambda { File.chmod(v, @file) }.should_not raise_error
- }
- end
- end
-
- platform_is :darwin do
- it "succeeds with valid values" do
- vals = [-2**8, -2, -1, -0.5, 0, 1, 2, 5.555575, 16, 32, 64, 2**8]
- vals.each { |v|
- lambda { File.chmod(v, @file) }.should_not raise_error
- }
- end
-
- it "fails with invalid values" do
- vals = [-2**30, -2**16, 2**16, 2**30]
- vals.each { |v|
- lambda { File.chmod(v, @file) }.should raise_error(RangeError)
- }
- end
- end
-
- platform_is :freebsd, :openbsd do
- it "succeeds with valid values" do
- vals = [-0.5, 0, 1, 2, 5.555575, 16, 32, 64, 2**8]
- vals.each { |v|
- lambda { File.chmod(v, @file) }.should_not raise_error
- }
- end
- end
-
- # -256, -2 and -1 raise Errno::EFTYPE on FreeBSD
- platform_is :freebsd do
- it "fails with invalid values" do
- vals = [-2**30, -2**16, 2**16, 2**30]
- vals.each { |v|
- lambda { File.chmod(v, @file) }.should raise_error(RangeError)
- }
- vals = [-2**8, -2, -1, 65535]
- vals.each { |v|
- lambda { File.chmod(v, @file) }.should raise_error(Errno::EFTYPE)
- }
- end
- end
-
- platform_is :openbsd do
- it "fails with invalid values" do
- vals = [-2**30, -2**16, -2**8, -2, -1, 2**16, 2**30]
- vals.each { |v|
- lambda { File.chmod(v, @file) }.should raise_error(Errno::EINVAL)
- }
- end
+ it "raises RangeError with too large values" do
+ -> { File.chmod(2**64, @file) }.should.raise(RangeError)
+ -> { File.chmod(-2**63 - 1, @file) }.should.raise(RangeError)
end
it "accepts an object that has a #to_path method" do
File.chmod(0, mock_to_path(@file))
end
- it "throws a TypeError if the given path is not coercable into a string" do
- lambda { File.chmod(0, []) }.should raise_error(TypeError)
+ it "throws a TypeError if the given path is not coercible into a string" do
+ -> { File.chmod(0, []) }.should.raise(TypeError)
end
it "raises an error for a non existent path" do
- lambda {
+ -> {
File.chmod(0644, "#{@file}.not.existing")
- }.should raise_error(Errno::ENOENT)
+ }.should.raise(Errno::ENOENT)
end
it "invokes to_int on non-integer argument" do