require_relative '../../spec_helper' describe "File.chown" do before :each do @fname = tmp('file_chown_test') touch @fname end after :each do rm_r @fname end as_superuser do platform_is :windows do it "does not modify the owner id of the file" do File.chown 0, nil, @fname File.stat(@fname).uid.should == 0 File.chown 501, nil, @fname File.stat(@fname).uid.should == 0 end it "does not modify the group id of the file" do File.chown nil, 0, @fname File.stat(@fname).gid.should == 0 File.chown nil, 501, @fname File.stat(@fname).gid.should == 0 end end platform_is_not :windows do it "changes the owner id of the file" do File.chown 501, nil, @fname File.stat(@fname).uid.should == 501 File.chown 0, nil, @fname File.stat(@fname).uid.should == 0 end it "changes the group id of the file" do File.chown nil, 501, @fname File.stat(@fname).gid.should == 501 File.chown nil, 0, @fname File.stat(@fname).uid.should == 0 end it "does not modify the owner id of the file if passed nil or -1" do File.chown 501, nil, @fname File.chown nil, nil, @fname File.stat(@fname).uid.should == 501 File.chown nil, -1, @fname File.stat(@fname).uid.should == 501 end it "does not modify the group id of the file if passed nil or -1" do File.chown nil, 501, @fname File.chown nil, nil, @fname File.stat(@fname).gid.should == 501 File.chown nil, -1, @fname File.stat(@fname).gid.should == 501 end end end it "returns the number of files processed" do File.chown(nil, nil, @fname, @fname).should == 2 end platform_is_not :windows do it "raises an error for a non existent path" do -> { File.chown(nil, nil, "#{@fname}_not_existing") }.should raise_error(Errno::ENOENT) end end it "accepts an object that has a #to_path method" do File.chown(nil, nil, mock_to_path(@fname)).should == 1 end end describe "File#chown" do before :each do @fname = tmp('file_chown_test') @file = File.open(@fname, 'w') end after :each do @file.close unless @file.closed? rm_r @fname end as_superuser do platform_is :windows do it "does not modify the owner id of the file" do @file.chown 0, nil @file.stat.uid.should == 0 @file.chown 501, nil @file.stat.uid.should == 0 end it "does not modify the group id of the file" do @file.chown nil, 0 @file.stat.gid.should == 0 @file.chown nil, 501 @file.stat.gid.should == 0 end end platform_is_not :windows do it "changes the owner id of the file" do @file.chown 501, nil @file.stat.uid.should == 501 @file.chown 0, nil @file.stat.uid.should == 0 end it "changes the group id of the file" do @file.chown nil, 501 @file.stat.gid.should == 501 @file.chown nil, 0 @file.stat.uid.should == 0 end it "does not modify the owner id of the file if passed nil or -1" do @file.chown 501, nil @file.chown nil, nil @file.stat.uid.should == 501 @file.chown nil, -1 @file.stat.uid.should == 501 end it "does not modify the group id of the file if passed nil or -1" do @file.chown nil, 501 @file.chown nil, nil @file.stat.gid.should == 501 @file.chown nil, -1 @file.stat.gid.should == 501 end end end it "returns 0" do @file.chown(nil, nil).should == 0 end end