summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Dürst <[email protected]>2021-07-27 18:12:24 +0900
committerMartin Dürst <[email protected]>2021-07-27 18:14:20 +0900
commit26b1e6fca8f2c9e02e7b5d26fb35a16f3e7a66a3 (patch)
treef09314903b6f91447e7232b7c6ac6940b311bbe1
parentc3d31377b36b905779683ef22e4c27d25ddaa037 (diff)
Deal with Unicode ranges in the file emoji-sequences.txt
Detect Unicode ranges and loop over them. This fixes issue #18028.
l---------bin/goruby1
l---------bin/ruby1
l---------lib/libruby.so.3.1.01
-rw-r--r--test/ruby/enc/test_emoji_breaks.rb11
4 files changed, 13 insertions, 1 deletions
diff --git a/bin/goruby b/bin/goruby
new file mode 120000
index 0000000000..ac297319a0
--- /dev/null
+++ b/bin/goruby
@@ -0,0 +1 @@
+../goruby \ No newline at end of file
diff --git a/bin/ruby b/bin/ruby
new file mode 120000
index 0000000000..69cf0817c5
--- /dev/null
+++ b/bin/ruby
@@ -0,0 +1 @@
+../ruby \ No newline at end of file
diff --git a/lib/libruby.so.3.1.0 b/lib/libruby.so.3.1.0
new file mode 120000
index 0000000000..db22f09057
--- /dev/null
+++ b/lib/libruby.so.3.1.0
@@ -0,0 +1 @@
+../libruby.so.3.1.0 \ No newline at end of file
diff --git a/test/ruby/enc/test_emoji_breaks.rb b/test/ruby/enc/test_emoji_breaks.rb
index e765b10233..1d58e43ffa 100644
--- a/test/ruby/enc/test_emoji_breaks.rb
+++ b/test/ruby/enc/test_emoji_breaks.rb
@@ -84,7 +84,16 @@ TestEmojiBreaks.data_files_available? and class TestEmojiBreaks
raise "File Name Mismatch: line: #{line}, expected filename: #{file.basename}.txt" if $.==1 and not line=="# #{file.basename}.txt"
version_mismatch = false if line =~ /^# Version: #{file.version}/
next if /\A(#|\z)/.match? line
- file_tests << BreakTest.new(file.basename, $., *line.split('#')) rescue 'whatever'
+ if line =~ /^(\h{4,6})\.\.(\h{4,6}) *(;.+)/ # deal with Unicode ranges in emoji-sequences.txt (Bug #18028)
+ range_start = $1.to_i(16)
+ range_end = $2.to_i(16)
+ rest = $3
+ (range_start..range_end).each do |code_point|
+ file_tests << BreakTest.new(file.basename, $., *(code_point.to_s(16)+rest).split('#')) rescue 'whatever'
+ end
+ else
+ file_tests << BreakTest.new(file.basename, $., *line.split('#')) rescue 'whatever'
+ end
end
raise "File Version Mismatch: file: #{file.fullname}, version: #{file.version}" if version_mismatch
tests += file_tests