summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-02-17 13:31:43 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-02-17 13:31:43 +0000
commit3d031cea420f9dcfbd6beda8908fe05e849210e8 (patch)
treeb84946b46581e87e634e55943740b1ff2da3ecf5 /test
parent1b4df625468bdd34f13fd7cec7b87da49c2501da (diff)
test_fileutils.rb: no broken symlinks on Cygwin
* test/fileutils/test_fileutils.rb (no_broken_symlink): exclude test using broken symlinks on Cygwin, which are not allowed because of the directory flag of Windows native symlink. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57648 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/fileutils/test_fileutils.rb40
1 files changed, 36 insertions, 4 deletions
diff --git a/test/fileutils/test_fileutils.rb b/test/fileutils/test_fileutils.rb
index 3a534881df..16257e6091 100644
--- a/test/fileutils/test_fileutils.rb
+++ b/test/fileutils/test_fileutils.rb
@@ -74,6 +74,15 @@ class TestFileUtils < Test::Unit::TestCase
return true
end
+ @@no_broken_symlink = false
+ if /cygwin/ =~ RUBY_PLATFORM and /\bwinsymlinks:native(?:strict)?\b/ =~ ENV["CYGWIN"]
+ @@no_broken_symlink = true
+ end
+
+ def no_broken_symlink?
+ @@no_broken_symlink
+ end
+
def root_in_posix?
if /cygwin/ =~ RUBY_PLATFORM
# FIXME: privilege if groups include root user?
@@ -324,6 +333,7 @@ class TestFileUtils < Test::Unit::TestCase
assert_raise(ArgumentError) {
cp 'tmp/cptmp_symlink', 'tmp/cptmp'
}
+ return if no_broken_symlink?
# src==dest (3) looped symlink
File.symlink 'symlink', 'tmp/symlink'
assert_raise(Errno::ELOOP) {
@@ -390,6 +400,7 @@ class TestFileUtils < Test::Unit::TestCase
def test_cp_r_symlink
# symlink in a directory
mkdir 'tmp/cpr_src'
+ touch 'tmp/cpr_src/SLdest'
ln_s 'SLdest', 'tmp/cpr_src/symlink'
cp_r 'tmp/cpr_src', 'tmp/cpr_dest'
assert_symlink 'tmp/cpr_dest/symlink'
@@ -415,7 +426,7 @@ class TestFileUtils < Test::Unit::TestCase
assert_nothing_raised {
cp_r 'tmp/cross', 'tmp/cross2', :preserve => true
}
- end if have_symlink?
+ end if have_symlink? and !no_broken_symlink?
def test_cp_r_pathname
# pathname
@@ -471,6 +482,9 @@ class TestFileUtils < Test::Unit::TestCase
assert_raise(ArgumentError) {
mv 'tmp/cptmp_symlink', 'tmp/cptmp'
}
+ end if have_symlink?
+
+ def test_mv_broken_symlink
# src==dest (3) looped symlink
File.symlink 'symlink', 'tmp/symlink'
assert_raise(Errno::ELOOP) {
@@ -482,7 +496,7 @@ class TestFileUtils < Test::Unit::TestCase
mv 'tmp/src', 'tmp/dest'
}
assert_equal true, File.symlink?('tmp/dest')
- end if have_symlink?
+ end if have_symlink? and !no_broken_symlink?
def test_mv_pathname
# pathname
@@ -744,6 +758,9 @@ class TestFileUtils < Test::Unit::TestCase
assert_raise(Errno::EEXIST) {
ln 'tmp/symlink', 'tmp/cptmp' # symlink -> normal file
}
+ end if have_symlink?
+
+ def test_ln_broken_symlink
# src==dest (3) looped symlink
File.symlink 'cptmp_symlink', 'tmp/cptmp_symlink'
begin
@@ -751,7 +768,7 @@ class TestFileUtils < Test::Unit::TestCase
rescue => err
assert_kind_of SystemCallError, err
end
- end if have_symlink?
+ end if have_symlink? and !no_broken_symlink?
def test_ln_pathname
# pathname
@@ -773,11 +790,16 @@ class TestFileUtils < Test::Unit::TestCase
assert_equal fname, File.readlink('tmp/lnsdest')
rm_f 'tmp/lnsdest'
end
+ end
+
+ def test_ln_s_broken_symlink
assert_nothing_raised {
ln_s 'symlink', 'tmp/symlink'
}
assert_symlink 'tmp/symlink'
+ end if have_symlink? and !no_broken_symlink?
+ def test_ln_s_pathname
# pathname
touch 'tmp/lnsdest'
assert_nothing_raised {
@@ -798,10 +820,15 @@ class TestFileUtils < Test::Unit::TestCase
ln_sf fname, 'tmp/lnsdest'
ln_sf fname, 'tmp/lnsdest'
end
+ end if have_symlink?
+
+ def test_ln_sf_broken_symlink
assert_nothing_raised {
ln_sf 'symlink', 'tmp/symlink'
}
+ end if have_symlink? and !no_broken_symlink?
+ def test_ln_sf_pathname
# pathname
touch 'tmp/lns_dest'
assert_nothing_raised {
@@ -981,13 +1008,16 @@ class TestFileUtils < Test::Unit::TestCase
assert_raise(ArgumentError) {
install 'tmp/cptmp_symlink', 'tmp/cptmp'
}
+ end if have_symlink?
+
+ def test_install_broken_symlink
# src==dest (3) looped symlink
File.symlink 'symlink', 'tmp/symlink'
assert_raise(Errno::ELOOP) {
# File#install invokes open(2), always ELOOP must be raised
install 'tmp/symlink', 'tmp/symlink'
}
- end if have_symlink?
+ end if have_symlink? and !no_broken_symlink?
def test_install_pathname
# pathname
@@ -1389,6 +1419,7 @@ class TestFileUtils < Test::Unit::TestCase
def test_copy_entry_symlink
# root is a symlink
+ touch 'tmp/somewhere'
File.symlink 'somewhere', 'tmp/symsrc'
copy_entry 'tmp/symsrc', 'tmp/symdest'
assert_symlink 'tmp/symdest'
@@ -1396,6 +1427,7 @@ class TestFileUtils < Test::Unit::TestCase
# content is a symlink
mkdir 'tmp/dir'
+ touch 'tmp/dir/somewhere'
File.symlink 'somewhere', 'tmp/dir/sym'
copy_entry 'tmp/dir', 'tmp/dirdest'
assert_directory 'tmp/dirdest'