mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
spec/: skip some specs so that no failure occurs in root privilege
Follow up of r61757, This change makes `sudo make test-spec` pass on my machine. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61760 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
5d0103f973
commit
205f0dcf3a
10 changed files with 143 additions and 113 deletions
|
@ -66,20 +66,22 @@ end
|
|||
# The permissions flag are not supported on Windows as stated in documentation:
|
||||
# The permissions may be modified by the value of File.umask, and are ignored on NT.
|
||||
platform_is_not :windows do
|
||||
describe "Dir.mkdir" do
|
||||
before :each do
|
||||
@dir = tmp "noperms"
|
||||
end
|
||||
as_user do
|
||||
describe "Dir.mkdir" do
|
||||
before :each do
|
||||
@dir = tmp "noperms"
|
||||
end
|
||||
|
||||
after :each do
|
||||
File.chmod 0777, @dir
|
||||
rm_r @dir
|
||||
end
|
||||
after :each do
|
||||
File.chmod 0777, @dir
|
||||
rm_r @dir
|
||||
end
|
||||
|
||||
it "raises a SystemCallError when lacking adequate permissions in the parent dir" do
|
||||
Dir.mkdir @dir, 0000
|
||||
it "raises a SystemCallError when lacking adequate permissions in the parent dir" do
|
||||
Dir.mkdir @dir, 0000
|
||||
|
||||
lambda { Dir.mkdir "#{@dir}/subdir" }.should raise_error(SystemCallError)
|
||||
lambda { Dir.mkdir "#{@dir}/subdir" }.should raise_error(SystemCallError)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -49,13 +49,15 @@ describe :dir_delete, shared: true do
|
|||
|
||||
# this won't work on Windows, since chmod(0000) does not remove all permissions
|
||||
platform_is_not :windows do
|
||||
it "raises an Errno::EACCES if lacking adequate permissions to remove the directory" do
|
||||
parent = DirSpecs.mock_rmdir("noperm")
|
||||
child = DirSpecs.mock_rmdir("noperm", "child")
|
||||
File.chmod(0000, parent)
|
||||
lambda do
|
||||
Dir.send @method, child
|
||||
end.should raise_error(Errno::EACCES)
|
||||
as_user do
|
||||
it "raises an Errno::EACCES if lacking adequate permissions to remove the directory" do
|
||||
parent = DirSpecs.mock_rmdir("noperm")
|
||||
child = DirSpecs.mock_rmdir("noperm", "child")
|
||||
File.chmod(0000, parent)
|
||||
lambda do
|
||||
Dir.send @method, child
|
||||
end.should raise_error(Errno::EACCES)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -71,37 +71,39 @@ describe "File#chmod" do
|
|||
end
|
||||
|
||||
platform_is_not :windows do
|
||||
it "with '0222' makes file writable but not readable or executable" do
|
||||
@file.chmod(0222)
|
||||
File.readable?(@filename).should == false
|
||||
File.writable?(@filename).should == true
|
||||
File.executable?(@filename).should == false
|
||||
end
|
||||
as_user do
|
||||
it "with '0222' makes file writable but not readable or executable" do
|
||||
@file.chmod(0222)
|
||||
File.readable?(@filename).should == false
|
||||
File.writable?(@filename).should == true
|
||||
File.executable?(@filename).should == false
|
||||
end
|
||||
|
||||
it "with '0444' makes file readable but not writable or executable" do
|
||||
@file.chmod(0444)
|
||||
File.readable?(@filename).should == true
|
||||
File.writable?(@filename).should == false
|
||||
File.executable?(@filename).should == false
|
||||
end
|
||||
it "with '0444' makes file readable but not writable or executable" do
|
||||
@file.chmod(0444)
|
||||
File.readable?(@filename).should == true
|
||||
File.writable?(@filename).should == false
|
||||
File.executable?(@filename).should == false
|
||||
end
|
||||
|
||||
it "with '0666' makes file readable and writable but not executable" do
|
||||
@file.chmod(0666)
|
||||
File.readable?(@filename).should == true
|
||||
File.writable?(@filename).should == true
|
||||
File.executable?(@filename).should == false
|
||||
end
|
||||
it "with '0666' makes file readable and writable but not executable" do
|
||||
@file.chmod(0666)
|
||||
File.readable?(@filename).should == true
|
||||
File.writable?(@filename).should == true
|
||||
File.executable?(@filename).should == false
|
||||
end
|
||||
|
||||
it "with '0111' makes file executable but not readable or writable" do
|
||||
@file.chmod(0111)
|
||||
File.readable?(@filename).should == false
|
||||
File.writable?(@filename).should == false
|
||||
File.executable?(@filename).should == true
|
||||
end
|
||||
it "with '0111' makes file executable but not readable or writable" do
|
||||
@file.chmod(0111)
|
||||
File.readable?(@filename).should == false
|
||||
File.writable?(@filename).should == false
|
||||
File.executable?(@filename).should == true
|
||||
end
|
||||
|
||||
it "modifies the permission bits of the files specified" do
|
||||
@file.chmod(0755)
|
||||
File.stat(@filename).mode.should == 33261
|
||||
it "modifies the permission bits of the files specified" do
|
||||
@file.chmod(0755)
|
||||
File.stat(@filename).mode.should == 33261
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -204,18 +206,20 @@ describe "File.chmod" do
|
|||
end
|
||||
|
||||
platform_is_not :windows do
|
||||
it "with '0222' makes file writable but not readable or executable" do
|
||||
File.chmod(0222, @file)
|
||||
File.readable?(@file).should == false
|
||||
File.writable?(@file).should == true
|
||||
File.executable?(@file).should == false
|
||||
end
|
||||
as_user do
|
||||
it "with '0222' makes file writable but not readable or executable" do
|
||||
File.chmod(0222, @file)
|
||||
File.readable?(@file).should == false
|
||||
File.writable?(@file).should == true
|
||||
File.executable?(@file).should == false
|
||||
end
|
||||
|
||||
it "with '0444' makes file readable but not writable or executable" do
|
||||
File.chmod(0444, @file)
|
||||
File.readable?(@file).should == true
|
||||
File.writable?(@file).should == false
|
||||
File.executable?(@file).should == false
|
||||
it "with '0444' makes file readable but not writable or executable" do
|
||||
File.chmod(0444, @file)
|
||||
File.readable?(@file).should == true
|
||||
File.writable?(@file).should == false
|
||||
File.executable?(@file).should == false
|
||||
end
|
||||
end
|
||||
|
||||
it "with '0666' makes file readable and writable but not executable" do
|
||||
|
@ -225,11 +229,13 @@ describe "File.chmod" do
|
|||
File.executable?(@file).should == false
|
||||
end
|
||||
|
||||
it "with '0111' makes file executable but not readable or writable" do
|
||||
File.chmod(0111, @file)
|
||||
File.readable?(@file).should == false
|
||||
File.writable?(@file).should == false
|
||||
File.executable?(@file).should == true
|
||||
as_user do
|
||||
it "with '0111' makes file executable but not readable or writable" do
|
||||
File.chmod(0111, @file)
|
||||
File.readable?(@file).should == false
|
||||
File.writable?(@file).should == false
|
||||
File.executable?(@file).should == true
|
||||
end
|
||||
end
|
||||
|
||||
it "modifies the permission bits of the files specified" do
|
||||
|
|
|
@ -147,11 +147,13 @@ describe "File.open" do
|
|||
end
|
||||
|
||||
platform_is_not :windows do
|
||||
it "creates a new write-only file when invoked with 'w' and '0222'" do
|
||||
rm_r @file
|
||||
File.open(@file, 'w', 0222) {}
|
||||
File.readable?(@file).should == false
|
||||
File.writable?(@file).should == true
|
||||
as_user do
|
||||
it "creates a new write-only file when invoked with 'w' and '0222'" do
|
||||
rm_r @file
|
||||
File.open(@file, 'w', 0222) {}
|
||||
File.readable?(@file).should == false
|
||||
File.writable?(@file).should == true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -464,17 +466,21 @@ describe "File.open" do
|
|||
end
|
||||
|
||||
platform_is_not :windows do
|
||||
it "raises an Errno::EACCES when opening non-permitted file" do
|
||||
@fh = File.open(@file, "w")
|
||||
@fh.chmod(000)
|
||||
lambda { fh1 = File.open(@file); fh1.close }.should raise_error(Errno::EACCES)
|
||||
as_user do
|
||||
it "raises an Errno::EACCES when opening non-permitted file" do
|
||||
@fh = File.open(@file, "w")
|
||||
@fh.chmod(000)
|
||||
lambda { fh1 = File.open(@file); fh1.close }.should raise_error(Errno::EACCES)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
it "raises an Errno::EACCES when opening read-only file" do
|
||||
@fh = File.open(@file, "w")
|
||||
@fh.chmod(0444)
|
||||
lambda { File.open(@file, "w") }.should raise_error(Errno::EACCES)
|
||||
as_user do
|
||||
it "raises an Errno::EACCES when opening read-only file" do
|
||||
@fh = File.open(@file, "w")
|
||||
@fh.chmod(0444)
|
||||
lambda { File.open(@file, "w") }.should raise_error(Errno::EACCES)
|
||||
end
|
||||
end
|
||||
|
||||
it "opens a file for binary read" do
|
||||
|
|
|
@ -24,9 +24,11 @@ describe "File.owned?" do
|
|||
end
|
||||
|
||||
platform_is_not :windows do
|
||||
it "returns false when the file is not owned by the user" do
|
||||
system_file = '/etc/passwd'
|
||||
File.owned?(system_file).should == false
|
||||
as_user do
|
||||
it "returns false when the file is not owned by the user" do
|
||||
system_file = '/etc/passwd'
|
||||
File.owned?(system_file).should == false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -22,10 +22,12 @@ describe "File::Stat#owned?" do
|
|||
end
|
||||
|
||||
platform_is_not :windows do
|
||||
it "returns false if the file is not owned by the user" do
|
||||
system_file = '/etc/passwd'
|
||||
st = File.stat(system_file)
|
||||
st.owned?.should == false
|
||||
as_user do
|
||||
it "returns false if the file is not owned by the user" do
|
||||
system_file = '/etc/passwd'
|
||||
st = File.stat(system_file)
|
||||
st.owned?.should == false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -27,21 +27,23 @@ describe :kernel_require_basic, shared: true do
|
|||
|
||||
# Can't make a file unreadable on these platforms
|
||||
platform_is_not :windows, :cygwin do
|
||||
describe "with an unreadable file" do
|
||||
before :each do
|
||||
@path = tmp("unreadable_file.rb")
|
||||
touch @path
|
||||
File.chmod 0000, @path
|
||||
end
|
||||
as_user do
|
||||
describe "with an unreadable file" do
|
||||
before :each do
|
||||
@path = tmp("unreadable_file.rb")
|
||||
touch @path
|
||||
File.chmod 0000, @path
|
||||
end
|
||||
|
||||
after :each do
|
||||
File.chmod 0666, @path
|
||||
rm_r @path
|
||||
end
|
||||
after :each do
|
||||
File.chmod 0666, @path
|
||||
rm_r @path
|
||||
end
|
||||
|
||||
it "raises a LoadError" do
|
||||
File.exist?(@path).should be_true
|
||||
lambda { @object.send(@method, @path) }.should raise_error(LoadError)
|
||||
it "raises a LoadError" do
|
||||
File.exist?(@path).should be_true
|
||||
lambda { @object.send(@method, @path) }.should raise_error(LoadError)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,18 +2,20 @@ require File.expand_path('../../../spec_helper', __FILE__)
|
|||
|
||||
describe "Process.initgroups" do
|
||||
platform_is_not :windows do
|
||||
it "initializes the supplemental group access list" do
|
||||
name = `id -un`.strip
|
||||
groups = Process.groups
|
||||
gid = groups.max.to_i + 1
|
||||
augmented_groups = `id -G`.scan(/\d+/).map {|i| i.to_i} << gid
|
||||
if Process.uid == 0
|
||||
Process.groups = []
|
||||
Process.initgroups(name, gid).sort.should == augmented_groups.sort
|
||||
Process.groups.sort.should == augmented_groups.sort
|
||||
Process.groups = groups
|
||||
else
|
||||
lambda { Process.initgroups(name, gid) }.should raise_error(Errno::EPERM)
|
||||
as_user do
|
||||
it "initializes the supplemental group access list" do
|
||||
name = `id -un`.strip
|
||||
groups = Process.groups
|
||||
gid = groups.max.to_i + 1
|
||||
augmented_groups = `id -G`.scan(/\d+/).map {|i| i.to_i} << gid
|
||||
if Process.uid == 0
|
||||
Process.groups = []
|
||||
Process.initgroups(name, gid).sort.should == augmented_groups.sort
|
||||
Process.groups.sort.should == augmented_groups.sort
|
||||
Process.groups = groups
|
||||
else
|
||||
lambda { Process.initgroups(name, gid) }.should raise_error(Errno::EPERM)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -34,9 +34,11 @@ describe "Socket#bind on SOCK_DGRAM socket" do
|
|||
end
|
||||
|
||||
platform_is_not :windows, :cygwin do
|
||||
it "raises Errno::EACCES when the current user does not have permission to bind" do
|
||||
sockaddr1 = Socket.pack_sockaddr_in(1, "127.0.0.1")
|
||||
lambda { @sock.bind(sockaddr1) }.should raise_error(Errno::EACCES)
|
||||
as_user do
|
||||
it "raises Errno::EACCES when the current user does not have permission to bind" do
|
||||
sockaddr1 = Socket.pack_sockaddr_in(1, "127.0.0.1")
|
||||
lambda { @sock.bind(sockaddr1) }.should raise_error(Errno::EACCES)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -73,9 +75,11 @@ describe "Socket#bind on SOCK_STREAM socket" do
|
|||
end
|
||||
|
||||
platform_is_not :windows, :cygwin do
|
||||
it "raises Errno::EACCES when the current user does not have permission to bind" do
|
||||
sockaddr1 = Socket.pack_sockaddr_in(1, "127.0.0.1")
|
||||
lambda { @sock.bind(sockaddr1) }.should raise_error(Errno::EACCES)
|
||||
as_user do
|
||||
it "raises Errno::EACCES when the current user does not have permission to bind" do
|
||||
sockaddr1 = Socket.pack_sockaddr_in(1, "127.0.0.1")
|
||||
lambda { @sock.bind(sockaddr1) }.should raise_error(Errno::EACCES)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -9,7 +9,9 @@ describe :file_writable, shared: true do
|
|||
|
||||
it "returns true if named file is writable by the effective user id of the process, otherwise false" do
|
||||
platform_is_not :windows do
|
||||
@object.send(@method, "/etc/passwd").should == false
|
||||
as_user do
|
||||
@object.send(@method, "/etc/passwd").should == false
|
||||
end
|
||||
end
|
||||
File.open(@file,'w') { @object.send(@method, @file).should == true }
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue