summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-03-18 14:39:41 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-03-18 14:39:41 +0000
commitcc23dc6b239466817ec50c74c77264944180e1c8 (patch)
tree88c5f9c568c4567c4a3d939f7a1218fa47536eb7
parent685061590b2a9bd8d8274e0ae2478d407d4a1ddf (diff)
merge revision(s) 59602,59887: [Backport #13816]
High Sierra's APFS cannot use invalid filenames [Bug #13816] added workaround for APFS file format. * TestFileExhaustive#test_atime: It fails with nano-sec precise. I changed to use unixtime for this assertion for APFS. * TestFileExhaustive#test_expand_path: skip assertion when given invalid charactor on APFS. [Bug #13816][ruby-core:82383] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@62814 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog16
-rw-r--r--test/ruby/test_dir_m17n.rb10
-rw-r--r--test/ruby/test_file_exhaustive.rb11
-rw-r--r--version.h2
4 files changed, 36 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index eb3a2f7cf9..ed36db1086 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+Sun Mar 18 23:36:24 2018 SHIBATA Hiroshi <hsbt@ruby-lang.org>
+
+ added workaround for APFS file format.
+
+ * TestFileExhaustive#test_atime: It fails with nano-sec precise. I
+ changed to use unixtime for this assertion for APFS.
+
+ * TestFileExhaustive#test_expand_path: skip assertion when given
+ invalid charactor on APFS.
+
+ [Bug #13816]
+
+Sun Mar 18 23:36:04 2018 NARUSE, Yui <naruse@ruby-lang.org>
+
+ High Sierra's APFS cannot use invalid filenames [Bug #13816]
+
Sun Mar 18 23:31:44 2018 Nobuyoshi Nakada <nobu@ruby-lang.org>
test_framework.rb: for case-sensitive filesystem
diff --git a/test/ruby/test_dir_m17n.rb b/test/ruby/test_dir_m17n.rb
index 4e50b350da..6456587fd7 100644
--- a/test/ruby/test_dir_m17n.rb
+++ b/test/ruby/test_dir_m17n.rb
@@ -1,6 +1,7 @@
# frozen_string_literal: false
require 'test/unit'
require 'tmpdir'
+require '-test-/file'
class TestDir_M17N < Test::Unit::TestCase
def with_tmpdir
@@ -57,6 +58,8 @@ class TestDir_M17N < Test::Unit::TestCase
end
def test_filename_extutf8_invalid
+ # High Sierra's APFS cannot use invalid filenames
+ return if Bug::File::Fs.fsname(Dir.tmpdir) == "apfs"
with_tmpdir {|d|
assert_separately(%w[-EASCII-8BIT], <<-'EOS', :chdir=>d)
filename = "\xff".force_encoding("ASCII-8BIT") # invalid byte sequence as UTF-8
@@ -370,7 +373,12 @@ class TestDir_M17N < Test::Unit::TestCase
a = "file_one*".force_encoding Encoding::IBM437
b = "file_two*".force_encoding Encoding::EUC_JP
assert_equal([a, b].map(&:encoding), Dir[a, b].map(&:encoding))
- dir = "\u{76EE 5F551}"
+ if Bug::File::Fs.fsname(Dir.pwd) == "apfs"
+ # High Sierra's APFS cannot use filenames with undefined character
+ dir = "\u{76EE}"
+ else
+ dir = "\u{76EE 5F551}"
+ end
Dir.mkdir(dir)
list << dir
bug12081 = '[ruby-core:73868] [Bug #12081]'
diff --git a/test/ruby/test_file_exhaustive.rb b/test/ruby/test_file_exhaustive.rb
index 2741a10062..c1b67ac960 100644
--- a/test/ruby/test_file_exhaustive.rb
+++ b/test/ruby/test_file_exhaustive.rb
@@ -3,6 +3,7 @@ require "test/unit"
require "fileutils"
require "tmpdir"
require "socket"
+require '-test-/file'
class TestFileExhaustive < Test::Unit::TestCase
DRIVE = Dir.pwd[%r'\A(?:[a-z]:|//[^/]+/[^/]+)'i]
@@ -554,7 +555,13 @@ class TestFileExhaustive < Test::Unit::TestCase
t2 = File.open(file) {|f| f.atime}
assert_kind_of(Time, t1)
assert_kind_of(Time, t2)
- assert_equal(t1, t2)
+ # High Sierra's APFS can handle nano-sec precise.
+ # t1 value is difference from t2 on APFS.
+ if Bug::File::Fs.fsname(Dir.tmpdir) == "apfs"
+ assert_equal(t1.to_i, t2.to_i)
+ else
+ assert_equal(t1, t2)
+ end
end
assert_raise(Errno::ENOENT) { File.atime(nofile) }
end
@@ -730,6 +737,8 @@ class TestFileExhaustive < Test::Unit::TestCase
begin
open(file) {}
rescue
+ # High Sierra's APFS cannot use filenames with undefined character
+ next if Bug::File::Fs.fsname(Dir.tmpdir) == "apfs"
assert_equal(file, full_path, mesg)
else
assert_equal(regular_file, full_path, mesg)
diff --git a/version.h b/version.h
index 4722345553..4a788ca4a9 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
#define RUBY_VERSION "2.3.7"
#define RUBY_RELEASE_DATE "2018-03-18"
-#define RUBY_PATCHLEVEL 415
+#define RUBY_PATCHLEVEL 416
#define RUBY_RELEASE_YEAR 2018
#define RUBY_RELEASE_MONTH 3