[DRE-commits] [ruby-tzinfo] 02/03: Add patch to load iso3166.tab and zone.tab as UTF-8 (Closes: #798348)
Hleb Valoshka
tsfgnu-guest at moszumanska.debian.org
Tue Sep 8 12:29:10 UTC 2015
This is an automated email from the git hooks/post-receive script.
tsfgnu-guest pushed a commit to branch jessie
in repository ruby-tzinfo.
commit 685449af947215485db27a1dca9bfa89d489265c
Author: Hleb Valoshka <Hleb_Valoshka at epam.com>
Date: Tue Sep 8 14:58:14 2015 +0300
Add patch to load iso3166.tab and zone.tab as UTF-8 (Closes: #798348)
---
...d-iso3166.tab-and-zone.tab-files-as-UTF-8.patch | 204 +++++++++++++++++++++
debian/patches/series | 1 +
2 files changed, 205 insertions(+)
diff --git a/debian/patches/0001-Load-iso3166.tab-and-zone.tab-files-as-UTF-8.patch b/debian/patches/0001-Load-iso3166.tab-and-zone.tab-files-as-UTF-8.patch
new file mode 100644
index 0000000..da5c83b
--- /dev/null
+++ b/debian/patches/0001-Load-iso3166.tab-and-zone.tab-files-as-UTF-8.patch
@@ -0,0 +1,204 @@
+From: Hleb Valoshka <Hleb_Valoshka at epam.com>
+Date: Tue, 8 Sep 2015 14:56:01 +0300
+Subject: Load iso3166.tab and zone.tab files as UTF-8
+
+Backported from upstream commit 61fdd4359117e9a406c546bdc044a3e41faaa5d7
+Author: Phil Ross <phil.ross at gmail.com>
+---
+ lib/tzinfo/ruby_core_support.rb | 13 ++++++++
+ lib/tzinfo/zoneinfo_data_source.rb | 16 ++++++++--
+ test/tc_ruby_core_support.rb | 62 ++++++++++++++++++++++++++++++++++++++
+ test/tc_zoneinfo_data_source.rb | 30 ++++++++++++++++--
+ 4 files changed, 115 insertions(+), 6 deletions(-)
+
+diff --git a/lib/tzinfo/ruby_core_support.rb b/lib/tzinfo/ruby_core_support.rb
+index eb81e2c..b76c0ed 100644
+--- a/lib/tzinfo/ruby_core_support.rb
++++ b/lib/tzinfo/ruby_core_support.rb
+@@ -150,5 +150,18 @@ module TZInfo
+ str
+ end
+ end
++
++ # Wrapper for File.open that supports passing hash options for specifying
++ # encodings on Ruby 1.9+. The options are ignored on earlier versions of
++ # Ruby.
++ if RUBY_VERSION =~ /\A1\.[0-8]\./
++ def self.open_file(file_name, mode, opts, &block)
++ File.open(file_name, mode, &block)
++ end
++ else
++ def self.open_file(file_name, mode, opts, &block)
++ File.open(file_name, mode, opts, &block)
++ end
++ end
+ end
+ end
+diff --git a/lib/tzinfo/zoneinfo_data_source.rb b/lib/tzinfo/zoneinfo_data_source.rb
+index 9d1aaf5..88c8a7b 100644
+--- a/lib/tzinfo/zoneinfo_data_source.rb
++++ b/lib/tzinfo/zoneinfo_data_source.rb
+@@ -290,8 +290,13 @@ module TZInfo
+ # available countries and their timezones.
+ def load_country_index
+ zones = {}
+-
+- File.open(File.join(@zoneinfo_dir, 'zone.tab')) do |file|
++
++ RubyCoreSupport.open_file(
++ File.join(@zoneinfo_dir, 'zone.tab'),
++ 'r',
++ :external_encoding => 'UTF-8',
++ :internal_encoding => 'UTF-8'
++ ) do |file|
+ file.each_line do |line|
+ line.chomp!
+
+@@ -318,7 +323,12 @@ module TZInfo
+
+ countries = {}
+
+- File.open(File.join(@zoneinfo_dir, 'iso3166.tab')) do |file|
++ RubyCoreSupport.open_file(
++ File.join(@zoneinfo_dir, 'iso3166.tab'),
++ 'r',
++ :external_encoding => 'UTF-8',
++ :internal_encoding => 'UTF-8'
++ ) do |file|
+ file.each_line do |line|
+ line.chomp!
+
+diff --git a/test/tc_ruby_core_support.rb b/test/tc_ruby_core_support.rb
+index e59608f..cde46f5 100644
+--- a/test/tc_ruby_core_support.rb
++++ b/test/tc_ruby_core_support.rb
+@@ -114,4 +114,66 @@ class TCRubyCoreSupport < Test::Unit::TestCase
+ assert_equal('©', s)
+ end
+ end
++
++ begin
++ SUPPORTS_ENCODING = !!Encoding
++ rescue NameError
++ SUPPORTS_ENCODING = false
++ end
++
++ def test_open_file
++ Dir.mktmpdir('tzinfo_test') do |dir|
++ test_file = File.join(dir, 'test.txt')
++
++ file = RubyCoreSupport.open_file(test_file, 'w', :external_encoding => 'UTF-8')
++ begin
++ file.puts(SUPPORTS_ENCODING ? '©' : 'x')
++ ensure
++ file.close
++ end
++
++ file = RubyCoreSupport.open_file(test_file, 'r', :external_encoding => 'UTF-8', :internal_encoding => 'UTF-8')
++ begin
++ data = file.gets
++ refute_nil(data)
++ data.chomp!
++
++ if SUPPORTS_ENCODING
++ assert_equal('UTF-8', data.encoding.name)
++ assert_equal(1, data.length)
++ assert_equal(2, data.bytesize)
++ assert_equal('©', data)
++ else
++ assert_equal('x', data)
++ end
++ ensure
++ file.close
++ end
++ end
++ end
++
++ def test_open_file_block
++ Dir.mktmpdir('tzinfo_test') do |dir|
++ test_file = File.join(dir, 'test.txt')
++
++ RubyCoreSupport.open_file(test_file, 'w', :external_encoding => 'UTF-8') do |file|
++ file.puts(SUPPORTS_ENCODING ? '©' : 'x')
++ end
++
++ RubyCoreSupport.open_file(test_file, 'r', :external_encoding => 'UTF-8', :internal_encoding => 'UTF-8') do |file|
++ data = file.gets
++ refute_nil(data)
++ data.chomp!
++
++ if SUPPORTS_ENCODING
++ assert_equal('UTF-8', data.encoding.name)
++ assert_equal(1, data.length)
++ assert_equal(2, data.bytesize)
++ assert_equal('©', data)
++ else
++ assert_equal('x', data)
++ end
++ end
++ end
++ end
+ end
+diff --git a/test/tc_zoneinfo_data_source.rb b/test/tc_zoneinfo_data_source.rb
+index e74bd9c..6764cd2 100644
+--- a/test/tc_zoneinfo_data_source.rb
++++ b/test/tc_zoneinfo_data_source.rb
+@@ -19,6 +19,7 @@
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ # THE SOFTWARE.
+ #++
++# encoding: UTF-8
+
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'test_utils')
+ require 'fileutils'
+@@ -611,12 +612,12 @@ class TCZoneinfoDataSource < Test::Unit::TestCase
+
+ def test_load_country_info_check_zones
+ Dir.mktmpdir('tzinfo_test') do |dir|
+- File.open(File.join(dir, 'iso3166.tab'), 'w') do |iso3166|
++ RubyCoreSupport.open_file(File.join(dir, 'iso3166.tab'), 'w', :external_encoding => 'UTF-8') do |iso3166|
+ iso3166.puts("FC\tFake Country")
+ iso3166.puts("OC\tOther Country")
+ end
+
+- File.open(File.join(dir, 'zone.tab'), 'w') do |zone|
++ RubyCoreSupport.open_file(File.join(dir, 'zone.tab'), 'w', :external_encoding => 'UTF-8') do |zone|
+ zone.puts("FC\t+513030-0000731\tFake/One\tDescription of one")
+ zone.puts("FC\t+353916+1394441\tFake/Two\tAnother description")
+ zone.puts("FC\t-2332-04637\tFake/Three\tThis is Three")
+@@ -643,11 +644,34 @@ class TCZoneinfoDataSource < Test::Unit::TestCase
+ assert_equal(true, info.zones.frozen?)
+ end
+ end
++
++ def test_load_country_info_utf8
++ # Files are in ASCII, but may change to UTF-8 (a superset of ASCII) in
++ # the future.
++
++ Dir.mktmpdir('tzinfo_test') do |dir|
++ RubyCoreSupport.open_file(File.join(dir, 'iso3166.tab'), 'w', :external_encoding => 'UTF-8') do |iso3166|
++ iso3166.puts("UT\tUnicode Test ✓")
++ end
++
++ RubyCoreSupport.open_file(File.join(dir, 'zone.tab'), 'w', :external_encoding => 'UTF-8') do |zone|
++ zone.puts("UT\t+513030-0000731\tUnicode✓/One\tUnicode Description ✓")
++ end
++
++ data_source = ZoneinfoDataSource.new(dir)
++
++ info = data_source.load_country_info('UT')
++ assert_equal('UT', info.code)
++ assert_equal('Unicode Test ✓', info.name)
++ assert_equal(['Unicode✓/One'], info.zone_identifiers)
++ assert_equal([CountryTimezone.new('Unicode✓/One', 6181, 120, -451, 3600, 'Unicode Description ✓')], info.zones)
++ end
++ end
+
+ def test_country_codes
+ file_codes = []
+
+- File.open(File.join(@data_source.zoneinfo_dir, 'iso3166.tab')) do |file|
++ RubyCoreSupport.open_file(File.join(@data_source.zoneinfo_dir, 'iso3166.tab'), 'r', :external_encoding => 'UTF-8', :internal_encoding => 'UTF-8') do |file|
+ file.each_line do |line|
+ line.chomp!
+ file_codes << $1 if line =~ /\A([A-Z]{2})\t/
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..12c45c2
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1 @@
+0001-Load-iso3166.tab-and-zone.tab-files-as-UTF-8.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/ruby-tzinfo.git
More information about the Pkg-ruby-extras-commits
mailing list