diff options
Diffstat (limited to 'spec/ruby/core/file/umask_spec.rb')
| -rw-r--r-- | spec/ruby/core/file/umask_spec.rb | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/spec/ruby/core/file/umask_spec.rb b/spec/ruby/core/file/umask_spec.rb new file mode 100644 index 0000000000..fea8cf7633 --- /dev/null +++ b/spec/ruby/core/file/umask_spec.rb @@ -0,0 +1,57 @@ +require_relative '../../spec_helper' + +describe "File.umask" do + before :each do + @orig_umask = File.umask + @file = tmp('test.txt') + touch @file + end + + after :each do + rm_r @file + File.umask(@orig_umask) + end + + it "returns an Integer" do + File.umask.should.is_a?(Integer) + end + + platform_is_not :windows do + it "returns the current umask value for the process" do + File.umask(022) + File.umask(006).should == 022 + File.umask.should == 006 + end + + it "invokes to_int on non-integer argument" do + (obj = mock(022)).should_receive(:to_int).any_number_of_times.and_return(022) + File.umask(obj) + File.umask(obj).should == 022 + end + end + + platform_is :windows do + it "returns the current umask value for this process (basic)" do + File.umask.should == 0 + File.umask(022).should == 0 + File.umask(044).should == 0 + end + + # The value used here is the value of _S_IWRITE. + it "returns the current umask value for this process" do + File.umask(0000200) + File.umask.should == 0000200 + File.umask(0006) + File.umask.should == 0 + end + end + + it "raises RangeError with too large values" do + -> { File.umask(2**64) }.should.raise(RangeError) + -> { File.umask(-2**63 - 1) }.should.raise(RangeError) + end + + it "raises ArgumentError when more than one argument is provided" do + -> { File.umask(022, 022) }.should.raise(ArgumentError) + end +end |
