1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Make the test suite pass on real Android/Termux environment

Attempting to create a hard link raises EACCES
This commit is contained in:
Yusuke Endoh 2020-10-12 21:26:05 +09:00
parent 6527411f05
commit 2fd71112fb
7 changed files with 44 additions and 9 deletions

View file

@ -13,7 +13,7 @@ describe "File.link" do
rm_r @link, @file
end
platform_is_not :windows do
platform_is_not :windows, :android do
it "link a file with another" do
File.link(@file, @link).should == 0
File.should.exist?(@link)

View file

@ -11,7 +11,7 @@ describe "File::Stat#nlink" do
rm_r @link, @file
end
platform_is_not :windows do
platform_is_not :windows, :android do
it "returns the number of links to a file" do
File::Stat.new(@file).nlink.should == 1
File.link(@file, @link)

View file

@ -34,8 +34,16 @@ describe 'Socket#listen' do
@server.close
end
it 'raises Errno::EOPNOTSUPP' do
-> { @server.listen(1) }.should raise_error(Errno::EOPNOTSUPP)
platform_is_not :android do
it 'raises Errno::EOPNOTSUPP' do
-> { @server.listen(1) }.should raise_error(Errno::EOPNOTSUPP)
end
end
platform_is :android do
it 'raises Errno::EACCES' do
-> { @server.listen(1) }.should raise_error(Errno::EACCES)
end
end
end

View file

@ -9,7 +9,11 @@ describe :file_identical, shared: true do
touch(@file2) { |f| f.puts "file2" }
rm_r @link
File.link(@file1, @link)
begin
File.link(@file1, @link)
rescue Errno::EACCES
File.symlink(@file1, @link)
end
end
after :each do

View file

@ -72,8 +72,13 @@ class TestFileUtils < Test::Unit::TestCase
end
def check_have_hardlink?
File.link nil, nil
rescue NotImplementedError
Dir.mktmpdir do |dir|
Dir.chdir(dir) do
File.write "dummy", "dummy"
File.link "dummy", "hardlink"
end
end
rescue NotImplementedError, Errno::EACCES
return false
rescue
return true

View file

@ -345,9 +345,26 @@ class TestPathname < Test::Unit::TestCase
def has_symlink?
begin
File.symlink("", "")
rescue NotImplementedError, Errno::EACCES
rescue NotImplementedError
return false
rescue Errno::ENOENT
return false
rescue Errno::EACCES
return false
end
return true
end
def has_hardlink?
begin
with_tmpchdir("rubytest-pathname") {|dir|
File.write("dummy", "dummy")
File.link("dummy", "hardlink")
}
rescue NotImplementedError
return false
rescue Errno::EACCES
return false
end
return true
end
@ -886,6 +903,7 @@ class TestPathname < Test::Unit::TestCase
end
def test_make_link
return if !has_hardlink?
with_tmpchdir('rubytest-pathname') {|dir|
open("a", "w") {|f| f.write "abc" }
Pathname("l").make_link(Pathname("a"))

View file

@ -130,7 +130,7 @@ class TestFileExhaustive < Test::Unit::TestCase
@hardlinkfile = make_tmp_filename("hardlinkfile")
begin
File.link(regular_file, @hardlinkfile)
rescue NotImplementedError, Errno::EINVAL # EINVAL for Windows Vista
rescue NotImplementedError, Errno::EINVAL, Errno::EACCES # EINVAL for Windows Vista, EACCES for Android Termux
@hardlinkfile = nil
end
@hardlinkfile