summaryrefslogtreecommitdiff
path: root/test/ruby/enc
diff options
context:
space:
mode:
authorMartin Dürst <duerst@it.aoyama.ac.jp>2021-07-27 18:12:24 +0900
committerMartin Dürst <duerst@it.aoyama.ac.jp>2021-07-27 18:14:20 +0900
commit26b1e6fca8f2c9e02e7b5d26fb35a16f3e7a66a3 (patch)
treef09314903b6f91447e7232b7c6ac6940b311bbe1 /test/ruby/enc
parentc3d31377b36b905779683ef22e4c27d25ddaa037 (diff)
Deal with Unicode ranges in the file emoji-sequences.txt
Detect Unicode ranges and loop over them. This fixes issue #18028.
Diffstat (limited to 'test/ruby/enc')
-rw-r--r--test/ruby/enc/test_emoji_breaks.rb11
1 files changed, 10 insertions, 1 deletions
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