New Upstream Release - ruby-tzinfo
Ready changes
Summary
Merged new upstream version: 2.0.6 (was: 2.0.5).
Resulting package
Built on 2023-05-21T10:15 (took 5m1s)
The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:
apt install -t fresh-releases ruby-tzinfo
Lintian Result
Diff
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 9db0d03..3d0db1c 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -8,7 +8,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-20.04, windows-2019]
- ruby: ['1.9.3', '2.0', '2.1', '2.2', '2.3', '2.4', '2.5', '2.6', '2.7', '3.0', '3.1', jruby-1.7, jruby-9.0, jruby-9.1, jruby-9.2, jruby-9.3]
+ ruby: ['1.9.3', '2.0', '2.1', '2.2', '2.3', '2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2', jruby-1.7, jruby-9.0, jruby-9.1, jruby-9.2, jruby-9.3, jruby-9.4]
architecture: [default]
name_suffix: ['']
experimental: [false]
@@ -49,10 +49,8 @@ jobs:
fail-fast: false
runs-on: ${{ matrix.os }}
continue-on-error: ${{ matrix.experimental }}
- env:
- JAVA_OPTS: -Djdk.io.File.enableADS=true
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- if: (startsWith(matrix.ruby, '1.') && startsWith(matrix.os, 'windows')) || (startsWith(matrix.ruby, '2.0') && startsWith(matrix.os, 'windows') && matrix.architecture == 'x86') || startsWith(matrix.ruby, 'jruby-1.7') || startsWith(matrix.ruby, 'jruby-9.0')
uses: philr/setup-ruby@legacy-v1
with:
diff --git a/CHANGES.md b/CHANGES.md
index ab4db33..8ed356e 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,5 +1,10 @@
# Changes
+## Version 2.0.6 - 28-Jan-2023
+
+* Eliminate `Object#untaint` deprecation warnings on JRuby 9.4.0.0. #145.
+
+
## Version 2.0.5 - 19-Jul-2022
* Changed `DateTime` results to always use the proleptic Gregorian calendar.
@@ -194,6 +199,11 @@
`TZInfo::Country.get('US').zone_identifiers` should be used instead.
+## Version 1.2.11 - 28-Jan-2023
+
+* Eliminate `Object#untaint` deprecation warnings on JRuby 9.4.0.0. #145.
+
+
## Version 1.2.10 - 19-Jul-2022
* Fixed a relative path traversal bug that could cause arbitrary files to be
diff --git a/LICENSE b/LICENSE
index d89d158..9b3125a 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2005-2022 Philip Ross
+Copyright (c) 2005-2023 Philip Ross
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
diff --git a/debian/changelog b/debian/changelog
index 58c1b31..a26bf7a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+ruby-tzinfo (2.0.6-1) UNRELEASED; urgency=low
+
+ * New upstream release.
+
+ -- Debian Janitor <janitor@jelmer.uk> Sun, 21 May 2023 10:11:12 -0000
+
ruby-tzinfo (2.0.5-1) unstable; urgency=medium
* Team upload
diff --git a/debian/patches/0001-test-test_utils.rb-don-t-require-bundler-to-run-test.patch b/debian/patches/0001-test-test_utils.rb-don-t-require-bundler-to-run-test.patch
index dcc297a..b38ca7a 100644
--- a/debian/patches/0001-test-test_utils.rb-don-t-require-bundler-to-run-test.patch
+++ b/debian/patches/0001-test-test_utils.rb-don-t-require-bundler-to-run-test.patch
@@ -7,10 +7,10 @@ Forwarded: not-needed
test/test_utils.rb | 1 -
1 file changed, 1 deletion(-)
-diff --git a/test/test_utils.rb b/test/test_utils.rb
-index 4dca87b..a1ad8b2 100644
---- a/test/test_utils.rb
-+++ b/test/test_utils.rb
+Index: ruby-tzinfo.git/test/test_utils.rb
+===================================================================
+--- ruby-tzinfo.git.orig/test/test_utils.rb
++++ ruby-tzinfo.git/test/test_utils.rb
@@ -1,7 +1,6 @@
# encoding: UTF-8
# frozen_string_literal: true
diff --git a/lib/tzinfo.rb b/lib/tzinfo.rb
index b1b5344..dc8e085 100644
--- a/lib/tzinfo.rb
+++ b/lib/tzinfo.rb
@@ -17,12 +17,8 @@ module TZInfo
end
end
-# Object#untaint is a deprecated no-op in Ruby >= 2.7 and will be removed in
-# 3.2. Add a refinement to either silence the warning, or supply the method if
-# needed.
-if !Object.new.respond_to?(:untaint) || RUBY_VERSION =~ /\A(\d+)\.(\d+)(?:\.|\z)/ && ($1 == '2' && $2.to_i >= 7 || $1.to_i >= 3)
- require_relative 'tzinfo/untaint_ext'
-end
+
+require_relative 'tzinfo/ruby_core_support'
require_relative 'tzinfo/version'
diff --git a/lib/tzinfo/data_sources/posix_time_zone_parser.rb b/lib/tzinfo/data_sources/posix_time_zone_parser.rb
index b3d2b2e..5583b43 100644
--- a/lib/tzinfo/data_sources/posix_time_zone_parser.rb
+++ b/lib/tzinfo/data_sources/posix_time_zone_parser.rb
@@ -4,10 +4,6 @@
require 'strscan'
module TZInfo
- # Use send as a workaround for erroneous 'wrong number of arguments' errors
- # with JRuby 9.0.5.0 when calling methods with Java implementations. See #114.
- send(:using, UntaintExt) if TZInfo.const_defined?(:UntaintExt)
-
module DataSources
# An {InvalidPosixTimeZone} exception is raised if an invalid POSIX-style
# time zone string is encountered.
@@ -43,12 +39,12 @@ module TZInfo
s = StringScanner.new(tz_string)
check_scan(s, /([^-+,\d<][^-+,\d]*) | <([^>]+)>/x)
- std_abbrev = @string_deduper.dedupe((s[1] || s[2]).untaint)
+ std_abbrev = @string_deduper.dedupe(RubyCoreSupport.untaint(s[1] || s[2]))
check_scan(s, /([-+]?\d+)(?::(\d+)(?::(\d+))?)?/)
std_offset = get_offset_from_hms(s[1], s[2], s[3])
if s.scan(/([^-+,\d<][^-+,\d]*) | <([^>]+)>/x)
- dst_abbrev = @string_deduper.dedupe((s[1] || s[2]).untaint)
+ dst_abbrev = @string_deduper.dedupe(RubyCoreSupport.untaint(s[1] || s[2]))
if s.scan(/([-+]?\d+)(?::(\d+)(?::(\d+))?)?/)
dst_offset = get_offset_from_hms(s[1], s[2], s[3])
diff --git a/lib/tzinfo/data_sources/ruby_data_source.rb b/lib/tzinfo/data_sources/ruby_data_source.rb
index 9c12322..41c384a 100644
--- a/lib/tzinfo/data_sources/ruby_data_source.rb
+++ b/lib/tzinfo/data_sources/ruby_data_source.rb
@@ -2,10 +2,6 @@
# frozen_string_literal: true
module TZInfo
- # Use send as a workaround for erroneous 'wrong number of arguments' errors
- # with JRuby 9.0.5.0 when calling methods with Java implementations. See #114.
- send(:using, UntaintExt) if TZInfo.const_defined?(:UntaintExt)
-
module DataSources
# A {TZInfoDataNotFound} exception is raised if the tzinfo-data gem could
# not be found (i.e. `require 'tzinfo/data'` failed) when selecting the Ruby
@@ -52,7 +48,7 @@ module TZInfo
data_file = File.join('', 'tzinfo', 'data.rb')
path = $".reverse_each.detect {|p| p.end_with?(data_file) }
if path
- @base_path = File.join(File.dirname(path), 'data').untaint
+ @base_path = RubyCoreSupport.untaint(File.join(File.dirname(path), 'data'))
else
@base_path = 'tzinfo/data'
end
diff --git a/lib/tzinfo/data_sources/zoneinfo_data_source.rb b/lib/tzinfo/data_sources/zoneinfo_data_source.rb
index cf77576..4b7de32 100644
--- a/lib/tzinfo/data_sources/zoneinfo_data_source.rb
+++ b/lib/tzinfo/data_sources/zoneinfo_data_source.rb
@@ -2,10 +2,6 @@
# frozen_string_literal: true
module TZInfo
- # Use send as a workaround for erroneous 'wrong number of arguments' errors
- # with JRuby 9.0.5.0 when calling methods with Java implementations. See #114.
- send(:using, UntaintExt) if TZInfo.const_defined?(:UntaintExt)
-
module DataSources
# An {InvalidZoneinfoDirectory} exception is raised if {ZoneinfoDataSource}
# is initialized with a specific zoneinfo path that is not a valid zoneinfo
@@ -444,7 +440,7 @@ module TZInfo
end
unless entry =~ /\./ || exclude.include?(entry)
- entry.untaint
+ RubyCoreSupport.untaint(entry)
path = dir + [entry]
full_path = File.join(@zoneinfo_dir, *path)
diff --git a/lib/tzinfo/data_sources/zoneinfo_reader.rb b/lib/tzinfo/data_sources/zoneinfo_reader.rb
index ac82585..7f59887 100644
--- a/lib/tzinfo/data_sources/zoneinfo_reader.rb
+++ b/lib/tzinfo/data_sources/zoneinfo_reader.rb
@@ -2,10 +2,6 @@
# frozen_string_literal: true
module TZInfo
- # Use send as a workaround for erroneous 'wrong number of arguments' errors
- # with JRuby 9.0.5.0 when calling methods with Java implementations. See #114.
- send(:using, UntaintExt) if TZInfo.const_defined?(:UntaintExt)
-
module DataSources
# An {InvalidZoneinfoFile} exception is raised if an attempt is made to load
# an invalid zoneinfo file.
@@ -448,7 +444,7 @@ module TZInfo
abbrev_end = abbrev.index("\0", abbrev_start)
raise InvalidZoneinfoFile, "Missing abbreviation null terminator in file '#{file.path}'." unless abbrev_end
- abbr = @string_deduper.dedupe(abbrev[abbrev_start...abbrev_end].force_encoding(Encoding::UTF_8).untaint)
+ abbr = @string_deduper.dedupe(RubyCoreSupport.untaint(abbrev[abbrev_start...abbrev_end].force_encoding(Encoding::UTF_8)))
TimezoneOffset.new(base_utc_offset, std_offset, abbr)
end
diff --git a/lib/tzinfo/ruby_core_support.rb b/lib/tzinfo/ruby_core_support.rb
new file mode 100644
index 0000000..9e43e3c
--- /dev/null
+++ b/lib/tzinfo/ruby_core_support.rb
@@ -0,0 +1,38 @@
+module TZInfo
+
+ # Methods to support different versions of Ruby.
+ #
+ # @private
+ module RubyCoreSupport #:nodoc:
+ class << self
+ # Object#untaint is deprecated and becomes a no-op in Ruby >= 2.7. It has
+ # been removed from Ruby 3.2.
+ if !Object.new.respond_to?(:untaint) || RUBY_VERSION =~ /\A(\d+)\.(\d+)(?:\.|\z)/ && ($1 == '2' && $2.to_i >= 7 || $1.to_i >= 3)
+ # :nocov_functional_untaint:
+
+ # Returns the supplied `Object`
+ #
+ # @param o [Object] the `Object` to untaint.
+ # @return [Object] `o`.
+ def untaint(o)
+ o
+ end
+
+ # :nocov_functional_untaint:
+ else
+ # :nocov_no_functional_untaint:
+
+ # Untaints and returns the supplied `Object`.
+ #
+ # @param o [Object] the `Object` to untaint.
+ # @return [Object] `o`.
+ def untaint(o)
+ o.untaint
+ end
+
+ # :nocov_no_functional_untaint:
+ end
+ end
+ end
+ private_constant :RubyCoreSupport
+end
diff --git a/lib/tzinfo/untaint_ext.rb b/lib/tzinfo/untaint_ext.rb
deleted file mode 100644
index 4e8d0c0..0000000
--- a/lib/tzinfo/untaint_ext.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-# encoding: UTF-8
-# frozen_string_literal: true
-
-module TZInfo
- # Object#untaint is deprecated in Ruby >= 2.7 and will be removed in 3.2.
- # UntaintExt adds a refinement to make Object#untaint a no-op and avoid the
- # warning.
- #
- # @private
- module UntaintExt # :nodoc:
- refine Object do
- def untaint
- self
- end
- end
- end
- private_constant :UntaintExt
-end
diff --git a/lib/tzinfo/version.rb b/lib/tzinfo/version.rb
index 1b15994..35eba04 100644
--- a/lib/tzinfo/version.rb
+++ b/lib/tzinfo/version.rb
@@ -3,5 +3,5 @@
module TZInfo
# The TZInfo version number.
- VERSION = '2.0.5'
+ VERSION = '2.0.6'
end
diff --git a/test/data_sources/tc_constant_offset_data_timezone_info.rb b/test/data_sources/tc_constant_offset_data_timezone_info.rb
index 1401559..0320490 100644
--- a/test/data_sources/tc_constant_offset_data_timezone_info.rb
+++ b/test/data_sources/tc_constant_offset_data_timezone_info.rb
@@ -3,10 +3,11 @@
require_relative '../test_utils'
-include TZInfo
-
module DataSources
class TCConstantOffsetDataTimezoneInfo < Minitest::Test
+ include TZInfo
+ include TZInfo::DataSources
+
def test_initialize
offset = TimezoneOffset.new(-17900, 0, 'TESTLMT')
identifier = 'Test/Zone'.dup
diff --git a/test/data_sources/tc_country_info.rb b/test/data_sources/tc_country_info.rb
index aab8f90..bd4da08 100644
--- a/test/data_sources/tc_country_info.rb
+++ b/test/data_sources/tc_country_info.rb
@@ -3,10 +3,11 @@
require_relative '../test_utils'
-include TZInfo
-
module DataSources
class TCCountryInfo < Minitest::Test
+ include TZInfo
+ include TZInfo::DataSources
+
def test_initialize_nil_code
error = assert_raises(ArgumentError) { CountryInfo.new(nil, 'Zzz', []) }
assert_match(/\bcode\b/, error.message)
diff --git a/test/data_sources/tc_data_timezone_info.rb b/test/data_sources/tc_data_timezone_info.rb
index b5822db..72f0fbe 100644
--- a/test/data_sources/tc_data_timezone_info.rb
+++ b/test/data_sources/tc_data_timezone_info.rb
@@ -3,10 +3,11 @@
require_relative '../test_utils'
-include TZInfo
-
module DataSources
class TCDataTimezoneInfo < Minitest::Test
+ include TZInfo
+ include TZInfo::DataSources
+
def test_initialize_nil_identifier
error = assert_raises(ArgumentError) { DataTimezoneInfo.new(nil) }
assert_match(/\bidentifier\b/, error.message)
diff --git a/test/data_sources/tc_linked_timezone_info.rb b/test/data_sources/tc_linked_timezone_info.rb
index 36b8fec..5a7e8c7 100644
--- a/test/data_sources/tc_linked_timezone_info.rb
+++ b/test/data_sources/tc_linked_timezone_info.rb
@@ -3,10 +3,11 @@
require_relative '../test_utils'
-include TZInfo
-
module DataSources
class TCLinkedTimezoneInfo < Minitest::Test
+ include TZInfo
+ include TZInfo::DataSources
+
def test_initialize_nil_identifier
error = assert_raises(ArgumentError) { LinkedTimezoneInfo.new(nil, 'Test/Linked') }
assert_match(/\bidentifier\b/, error.message)
diff --git a/test/data_sources/tc_posix_time_zone_parser.rb b/test/data_sources/tc_posix_time_zone_parser.rb
index d6c8c35..57bf5d9 100644
--- a/test/data_sources/tc_posix_time_zone_parser.rb
+++ b/test/data_sources/tc_posix_time_zone_parser.rb
@@ -3,18 +3,17 @@
require_relative '../test_utils'
-include TZInfo
-
-# Use send as a workaround for erroneous 'wrong number of arguments' errors with
-# JRuby 9.0.5.0 when calling methods with Java implementations. See #114.
-send(:using, TestUtils::TaintExt) if TestUtils.const_defined?(:TaintExt)
-
module DataSources
class TCPosixTimeZoneParser < Minitest::Test
+ include TZInfo
+ include TZInfo::DataSources
+
HOUR = 3600
MINUTE = 60
class << self
+ include TZInfo::DataSources
+
private
def append_time_to_rule(day_rule, time)
@@ -256,6 +255,8 @@ module DataSources
end
def test_parses_tainted_string_in_safe_mode_and_returns_untainted_abbreviations
+ skip_if_taint_is_undefined_or_no_op
+
safe_test(unavailable: :skip) do
result = @parser.parse('STD1DST,60,300'.dup.taint)
diff --git a/test/data_sources/tc_ruby_data_source.rb b/test/data_sources/tc_ruby_data_source.rb
index 8baab05..88eb55d 100644
--- a/test/data_sources/tc_ruby_data_source.rb
+++ b/test/data_sources/tc_ruby_data_source.rb
@@ -3,14 +3,11 @@
require_relative '../test_utils'
-# Use send as a workaround for erroneous 'wrong number of arguments' errors with
-# JRuby 9.0.5.0 when calling methods with Java implementations. See #114.
-send(:using, TestUtils::TaintExt) if TestUtils.const_defined?(:TaintExt)
-
-include TZInfo
-
module DataSources
class TCRubyDataSource < Minitest::Test
+ include TZInfo
+ include TZInfo::DataSources
+
def setup
@data_source = RubyDataSource.new
end
@@ -122,6 +119,8 @@ module DataSources
end
def test_load_timezone_info_tainted
+ skip_if_taint_is_undefined_or_no_op
+
safe_test(unavailable: :skip) do
identifier = 'Europe/Amsterdam'.dup.taint
assert(identifier.tainted?)
@@ -132,6 +131,8 @@ module DataSources
end
def test_load_timezone_info_tainted_and_frozen
+ skip_if_taint_is_undefined_or_no_op
+
safe_test do
info = @data_source.send(:load_timezone_info, 'Europe/Amsterdam'.dup.taint.freeze)
assert_equal('Europe/Amsterdam', info.identifier)
@@ -231,6 +232,8 @@ module DataSources
end
def test_load_country_info_tainted
+ skip_if_taint_is_undefined_or_no_op
+
safe_test(unavailable: :skip) do
code = 'NL'.dup.taint
assert(code.tainted?)
@@ -241,6 +244,8 @@ module DataSources
end
def test_load_country_info_tainted_and_frozen
+ skip_if_taint_is_undefined_or_no_op
+
safe_test do
info = @data_source.send(:load_country_info, 'NL'.dup.taint.freeze)
assert_equal('NL', info.code)
diff --git a/test/data_sources/tc_timezone_info.rb b/test/data_sources/tc_timezone_info.rb
index 00cda36..e643e9e 100644
--- a/test/data_sources/tc_timezone_info.rb
+++ b/test/data_sources/tc_timezone_info.rb
@@ -3,10 +3,11 @@
require_relative '../test_utils'
-include TZInfo
-
module DataSources
class TCTimezoneInfo < Minitest::Test
+ include TZInfo
+ include TZInfo::DataSources
+
def test_initialize_nil_identifier
error = assert_raises(ArgumentError) { TimezoneInfo.new(nil) }
assert_match(/\bidentifier\b/, error.message)
diff --git a/test/data_sources/tc_transitions_data_timezone_info.rb b/test/data_sources/tc_transitions_data_timezone_info.rb
index 830c122..35e67a9 100644
--- a/test/data_sources/tc_transitions_data_timezone_info.rb
+++ b/test/data_sources/tc_transitions_data_timezone_info.rb
@@ -3,10 +3,11 @@
require_relative '../test_utils'
-include TZInfo
-
module DataSources
class TCTransitionsDataTimezoneInfo < Minitest::Test
+ include TZInfo
+ include TZInfo::DataSources
+
def test_initialize_transitions
o1 = TimezoneOffset.new(-17900, 0, 'TESTLMT')
o2 = TimezoneOffset.new(-18000, 3600, 'TESTD')
diff --git a/test/data_sources/tc_zoneinfo_data_source.rb b/test/data_sources/tc_zoneinfo_data_source.rb
index 064eed8..d812a17 100644
--- a/test/data_sources/tc_zoneinfo_data_source.rb
+++ b/test/data_sources/tc_zoneinfo_data_source.rb
@@ -6,16 +6,13 @@ require 'fileutils'
require 'pathname'
require 'tmpdir'
-include TZInfo
-
-# Use send as a workaround for erroneous 'wrong number of arguments' errors with
-# JRuby 9.0.5.0 when calling methods with Java implementations. See #114.
-send(:using, TestUtils::TaintExt) if TestUtils.const_defined?(:TaintExt)
-send(:using, UntaintExt) if TZInfo.const_defined?(:UntaintExt)
-
module DataSources
class TCZoneinfoDataSource < Minitest::Test
- ZONEINFO_DIR = File.expand_path(File.join(File.dirname(__FILE__), '..', 'zoneinfo')).untaint
+ include TZInfo
+ include TZInfo::DataSources
+
+ ZONEINFO_DIR = File.expand_path(File.join(File.dirname(__FILE__), '..', 'zoneinfo'))
+ RubyCoreSupport.untaint(ZONEINFO_DIR)
def setup
@orig_search_path = ZoneinfoDataSource.search_path.clone
@@ -787,6 +784,8 @@ module DataSources
end
def test_load_timezone_info_tainted
+ skip_if_taint_is_undefined_or_no_op
+
safe_test(unavailable: :skip) do
identifier = 'Europe/Amsterdam'.dup.taint
assert(identifier.tainted?)
@@ -797,6 +796,8 @@ module DataSources
end
def test_load_timezone_info_tainted_and_frozen
+ skip_if_taint_is_undefined_or_no_op
+
safe_test do
info = @data_source.send(:load_timezone_info, 'Europe/Amsterdam'.dup.taint.freeze)
assert_equal('Europe/Amsterdam', info.identifier)
@@ -804,6 +805,8 @@ module DataSources
end
def test_load_timezone_info_tainted_zoneinfo_dir_safe_mode
+ skip_if_taint_is_undefined_or_no_op
+
safe_test(unavailable: :skip) do
assert_raises(SecurityError) do
ZoneinfoDataSource.new(@data_source.zoneinfo_dir.dup.taint)
@@ -812,6 +815,7 @@ module DataSources
end
def test_load_timezone_info_tainted_zoneinfo_dir
+ skip_if_taint_is_undefined_or_no_op
data_source = ZoneinfoDataSource.new(@data_source.zoneinfo_dir.dup.taint)
info = data_source.send(:load_timezone_info, 'Europe/London')
assert_kind_of(TransitionsDataTimezoneInfo, info)
@@ -848,7 +852,7 @@ module DataSources
entries = Dir.glob(File.join(directory, '**', '*'))
entries = entries.select do |file|
- file.untaint
+ RubyCoreSupport.untaint(file)
File.file?(file)
end
@@ -1148,6 +1152,8 @@ module DataSources
end
def test_load_country_info_tainted
+ skip_if_taint_is_undefined_or_no_op
+
safe_test(unavailable: :skip) do
code = 'NL'.dup.taint
assert(code.tainted?)
diff --git a/test/data_sources/tc_zoneinfo_reader.rb b/test/data_sources/tc_zoneinfo_reader.rb
index 3de8897..0d46cf5 100644
--- a/test/data_sources/tc_zoneinfo_reader.rb
+++ b/test/data_sources/tc_zoneinfo_reader.rb
@@ -4,14 +4,11 @@
require_relative '../test_utils'
require 'tempfile'
-include TZInfo
-
-# Use send as a workaround for erroneous 'wrong number of arguments' errors with
-# JRuby 9.0.5.0 when calling methods with Java implementations. See #114.
-send(:using, UntaintExt) if TZInfo.const_defined?(:UntaintExt)
-
module DataSources
class TCZoneinfoReader < Minitest::Test
+ include TZInfo
+ include TZInfo::DataSources
+
class FakePosixTimeZoneParser
def initialize(&block)
@on_parse = block
@@ -1256,7 +1253,7 @@ module DataSources
tzif_test(offsets, []) do |path, format|
safe_test do
# Temp file path is tainted with Ruby >= 2.3 & < 2.7. Untaint for this test.
- path.untaint
+ RubyCoreSupport.untaint(path)
assert_equal(o0, @reader.read(path))
end
@@ -1264,6 +1261,8 @@ module DataSources
end
def test_read_tainted_in_safe_mode
+ skip_if_taint_is_undefined_or_no_op
+
offsets = [{gmtoff: -12094, isdst: false, abbrev: 'LT'}]
tzif_test(offsets, []) do |path, format|
@@ -1277,6 +1276,8 @@ module DataSources
end
def test_read_abbreviations_not_tainted
+ skip_if_taint_is_undefined_or_no_op
+
offsets = [{gmtoff: -12094, isdst: false, abbrev: 'LT'}]
tzif_test(offsets, []) do |path, format|
diff --git a/test/format1/tc_country_definer.rb b/test/format1/tc_country_definer.rb
index 64a5ce8..02b09f9 100644
--- a/test/format1/tc_country_definer.rb
+++ b/test/format1/tc_country_definer.rb
@@ -3,10 +3,11 @@
require_relative '../test_utils'
-include TZInfo
-
module Format1
class TCCountryDefiner < Minitest::Test
+ include TZInfo
+ include TZInfo.const_get(:Format1)
+
def setup
@identifier_deduper = StringDeduper.new
@description_deduper = StringDeduper.new
diff --git a/test/format1/tc_country_index_definition.rb b/test/format1/tc_country_index_definition.rb
index c86044a..4406ff3 100644
--- a/test/format1/tc_country_index_definition.rb
+++ b/test/format1/tc_country_index_definition.rb
@@ -3,10 +3,10 @@
require_relative '../test_utils'
-include TZInfo
-
module Format1
class TCCountryIndexDefinition < Minitest::Test
+ include TZInfo
+ include TZInfo.const_get(:Format1)
def test_none
m = Module.new
diff --git a/test/format1/tc_timezone_definer.rb b/test/format1/tc_timezone_definer.rb
index 575f1b2..80fa5df 100644
--- a/test/format1/tc_timezone_definer.rb
+++ b/test/format1/tc_timezone_definer.rb
@@ -3,10 +3,11 @@
require_relative '../test_utils'
-include TZInfo
-
module Format1
class TCTimezoneDefiner < Minitest::Test
+ include TZInfo
+ include TZInfo.const_get(:Format1)
+
def setup
@string_deduper = StringDeduper.new
@definer = TimezoneDefiner.new(@string_deduper)
diff --git a/test/format1/tc_timezone_definition.rb b/test/format1/tc_timezone_definition.rb
index 1c279a4..1e42d45 100644
--- a/test/format1/tc_timezone_definition.rb
+++ b/test/format1/tc_timezone_definition.rb
@@ -3,10 +3,11 @@
require_relative '../test_utils'
-include TZInfo
-
module Format1
class TCTimezoneDefinition < Minitest::Test
+ include TZInfo
+ include TZInfo.const_get(:Format1)
+
def test_timezone_definer_class
m = Module.new
m.send(:include, TimezoneDefinition)
diff --git a/test/format1/tc_timezone_index_definition.rb b/test/format1/tc_timezone_index_definition.rb
index 9ac59b6..fc39a16 100644
--- a/test/format1/tc_timezone_index_definition.rb
+++ b/test/format1/tc_timezone_index_definition.rb
@@ -3,10 +3,11 @@
require_relative '../test_utils'
-include TZInfo
-
module Format1
class TCTimezoneIndexDefinition < Minitest::Test
+ include TZInfo
+ include TZInfo.const_get(:Format1)
+
def test_mixed
m = Module.new
m.send(:include, TimezoneIndexDefinition)
diff --git a/test/format2/tc_country_definer.rb b/test/format2/tc_country_definer.rb
index d0f1a7a..29d24ab 100644
--- a/test/format2/tc_country_definer.rb
+++ b/test/format2/tc_country_definer.rb
@@ -3,10 +3,11 @@
require_relative '../test_utils'
-include TZInfo
-
module Format2
class TCCountryDefiner < Minitest::Test
+ include TZInfo
+ include TZInfo.const_get(:Format2)
+
def setup
@identifier_deduper = StringDeduper.new
@description_deduper = StringDeduper.new
diff --git a/test/format2/tc_country_index_definer.rb b/test/format2/tc_country_index_definer.rb
index c8a799f..d88cb94 100644
--- a/test/format2/tc_country_index_definer.rb
+++ b/test/format2/tc_country_index_definer.rb
@@ -3,10 +3,11 @@
require_relative '../test_utils'
-include TZInfo
-
module Format2
class TCCountryIndexDefiner < Minitest::Test
+ include TZInfo
+ include TZInfo.const_get(:Format2)
+
def setup
@identifier_deduper = StringDeduper.new
@description_deduper = StringDeduper.new
diff --git a/test/format2/tc_country_index_definition.rb b/test/format2/tc_country_index_definition.rb
index 5fa3042..1f4dba5 100644
--- a/test/format2/tc_country_index_definition.rb
+++ b/test/format2/tc_country_index_definition.rb
@@ -3,10 +3,10 @@
require_relative '../test_utils'
-include TZInfo
-
module Format2
class TCCountryIndexDefinition < Minitest::Test
+ include TZInfo
+ include TZInfo.const_get(:Format2)
def test_not_defined
m = Module.new
diff --git a/test/format2/tc_timezone_definer.rb b/test/format2/tc_timezone_definer.rb
index 5bdbf76..f2e6029 100644
--- a/test/format2/tc_timezone_definer.rb
+++ b/test/format2/tc_timezone_definer.rb
@@ -3,10 +3,11 @@
require_relative '../test_utils'
-include TZInfo
-
module Format2
class TCTimezoneDefiner < Minitest::Test
+ include TZInfo
+ include TZInfo.const_get(:Format2)
+
def setup
@string_deduper = StringDeduper.new
@definer = TimezoneDefiner.new(@string_deduper)
diff --git a/test/format2/tc_timezone_definition.rb b/test/format2/tc_timezone_definition.rb
index 4ce8fdd..4c212fb 100644
--- a/test/format2/tc_timezone_definition.rb
+++ b/test/format2/tc_timezone_definition.rb
@@ -3,10 +3,11 @@
require_relative '../test_utils'
-include TZInfo
-
module Format2
class TCTimezoneDefinition < Minitest::Test
+ include TZInfo
+ include TZInfo.const_get(:Format2)
+
def test_timezone_definer_class
m = Module.new
m.send(:include, TimezoneDefinition)
diff --git a/test/format2/tc_timezone_index_definer.rb b/test/format2/tc_timezone_index_definer.rb
index dec121c..42542c7 100644
--- a/test/format2/tc_timezone_index_definer.rb
+++ b/test/format2/tc_timezone_index_definer.rb
@@ -3,10 +3,11 @@
require_relative '../test_utils'
-include TZInfo
-
module Format2
class TCTimezoneIndexDefiner < Minitest::Test
+ include TZInfo
+ include TZInfo.const_get(:Format2)
+
def setup
@string_deduper = StringDeduper.new
@definer = TimezoneIndexDefiner.new(@string_deduper)
diff --git a/test/format2/tc_timezone_index_definition.rb b/test/format2/tc_timezone_index_definition.rb
index 62f4dd4..e61b798 100644
--- a/test/format2/tc_timezone_index_definition.rb
+++ b/test/format2/tc_timezone_index_definition.rb
@@ -3,10 +3,11 @@
require_relative '../test_utils'
-include TZInfo
-
module Format2
class TCTimezoneIndexDefinition < Minitest::Test
+ include TZInfo
+ include TZInfo.const_get(:Format2)
+
def test_mixed
m = Module.new
m.send(:include, TimezoneIndexDefinition)
diff --git a/test/tc_annual_rules.rb b/test/tc_annual_rules.rb
index 25af4bc..8905b6a 100644
--- a/test/tc_annual_rules.rb
+++ b/test/tc_annual_rules.rb
@@ -3,9 +3,8 @@
require_relative 'test_utils'
-include TZInfo
-
class TCAnnualRules < Minitest::Test
+ include TZInfo
def test_initialize
std_offset = TimezoneOffset.new(0, 0, 'GMT')
@@ -92,7 +91,7 @@ class TCAnnualRules < Minitest::Test
end
def at(offset, year)
- TimestampWithOffset.for(Time.new(year, @month, @day, 0, 0, 0, offset.observed_utc_offset)).set_timezone_offset(offset)
+ TZInfo::TimestampWithOffset.for(Time.new(year, @month, @day, 0, 0, 0, offset.observed_utc_offset)).set_timezone_offset(offset)
end
end
end
diff --git a/test/tc_country.rb b/test/tc_country.rb
index b032620..3807b2a 100644
--- a/test/tc_country.rb
+++ b/test/tc_country.rb
@@ -3,13 +3,9 @@
require_relative 'test_utils'
-include TZInfo
-
-# Use send as a workaround for erroneous 'wrong number of arguments' errors with
-# JRuby 9.0.5.0 when calling methods with Java implementations. See #114.
-send(:using, TestUtils::TaintExt) if TestUtils.const_defined?(:TaintExt)
-
class TCCountry < Minitest::Test
+ include TZInfo
+
def setup
@orig_data_source = DataSource.get
end
@@ -48,6 +44,7 @@ class TCCountry < Minitest::Test
end
def test_get_tainted_loaded
+ skip_if_taint_is_undefined_or_no_op
Country.get('GB')
safe_test(unavailable: :skip) do
@@ -60,6 +57,7 @@ class TCCountry < Minitest::Test
end
def test_get_tainted_and_frozen_loaded
+ skip_if_taint_is_undefined_or_no_op
Country.get('GB')
safe_test do
@@ -69,6 +67,8 @@ class TCCountry < Minitest::Test
end
def test_get_tainted_not_previously_loaded
+ skip_if_taint_is_undefined_or_no_op
+
safe_test(unavailable: :skip) do
code = 'GB'.dup.taint
assert(code.tainted?)
@@ -79,6 +79,8 @@ class TCCountry < Minitest::Test
end
def test_get_tainted_and_frozen_not_previously_loaded
+ skip_if_taint_is_undefined_or_no_op
+
safe_test do
country = Country.get('GB'.dup.taint.freeze)
assert_equal('GB', country.code)
diff --git a/test/tc_country_timezone.rb b/test/tc_country_timezone.rb
index e175f2e..343abbf 100644
--- a/test/tc_country_timezone.rb
+++ b/test/tc_country_timezone.rb
@@ -3,9 +3,9 @@
require_relative 'test_utils'
-include TZInfo
-
class TCCountryTimezone < Minitest::Test
+ include TZInfo
+
def test_identifier
ct = CountryTimezone.new('Europe/London', Rational(2059, 40), Rational(-5, 16))
assert_equal('Europe/London', ct.identifier)
diff --git a/test/tc_data_source.rb b/test/tc_data_source.rb
index 1bdbe8a..af977b1 100644
--- a/test/tc_data_source.rb
+++ b/test/tc_data_source.rb
@@ -4,9 +4,9 @@
require_relative 'test_utils'
require 'tmpdir'
-include TZInfo
-
class TCDataSource < Minitest::Test
+ include TZInfo
+
class InitDataSource < DataSource
end
@@ -23,6 +23,8 @@ class TCDataSource < Minitest::Test
end
class GetTimezoneInfoTestDataSource < TestDataSource
+ include TZInfo
+
protected
def load_timezone_info(identifier)
@@ -33,6 +35,8 @@ class TCDataSource < Minitest::Test
end
class GetCountryInfoTestDataSource < TestDataSource
+ include TZInfo
+
protected
def load_country_info(code)
@@ -88,6 +92,8 @@ class TCDataSource < Minitest::Test
end
class EagerLoadTestDataSource < GetTimezoneIdentifiersTestDataSource
+ include TZInfo
+
attr_reader :country_codes_called
attr_reader :loaded_timezones
attr_reader :loaded_countries
diff --git a/test/tc_data_timezone.rb b/test/tc_data_timezone.rb
index 2dffa27..4cdb52a 100644
--- a/test/tc_data_timezone.rb
+++ b/test/tc_data_timezone.rb
@@ -3,9 +3,8 @@
require_relative 'test_utils'
-include TZInfo
-
class TCDataTimezone < Minitest::Test
+ include TZInfo
class TestTimezoneInfo < DataSources::TimezoneInfo
attr_reader :timestamp
diff --git a/test/tc_datetime_with_offset.rb b/test/tc_datetime_with_offset.rb
index 6b0e8f5..2164b82 100644
--- a/test/tc_datetime_with_offset.rb
+++ b/test/tc_datetime_with_offset.rb
@@ -3,9 +3,9 @@
require_relative 'test_utils'
-include TZInfo
-
class TCDateTimeWithOffset < Minitest::Test
+ include TZInfo
+
def datetime_with_offset(year, month, day, hour, minute, second, tz_offset)
DateTimeWithOffset.new(year, month, day, hour, minute, second, tz_offset.observed_utc_offset.to_r / 86400).set_timezone_offset(tz_offset)
end
diff --git a/test/tc_info_timezone.rb b/test/tc_info_timezone.rb
index 8673fee..1a988a1 100644
--- a/test/tc_info_timezone.rb
+++ b/test/tc_info_timezone.rb
@@ -3,9 +3,9 @@
require_relative 'test_utils'
-include TZInfo
-
class TCInfoTimezone < Minitest::Test
+ include TZInfo
+
def test_identifier
tz = InfoTimezone.new(DataSources::TimezoneInfo.new('Test/Identifier'))
assert_equal('Test/Identifier', tz.identifier)
diff --git a/test/tc_linked_timezone.rb b/test/tc_linked_timezone.rb
index 1b590cf..72e2c1f 100644
--- a/test/tc_linked_timezone.rb
+++ b/test/tc_linked_timezone.rb
@@ -3,9 +3,8 @@
require_relative 'test_utils'
-include TZInfo
-
class TCLinkedTimezone < Minitest::Test
+ include TZInfo
class TestTimezone < Timezone
attr_reader :period_for_result
diff --git a/test/tc_offset_timezone_period.rb b/test/tc_offset_timezone_period.rb
index 776d9a3..cd9a193 100644
--- a/test/tc_offset_timezone_period.rb
+++ b/test/tc_offset_timezone_period.rb
@@ -3,9 +3,8 @@
require_relative 'test_utils'
-include TZInfo
-
class TCOffsetTimezonePeriod < Minitest::Test
+ include TZInfo
def test_initialize
o = TimezoneOffset.new(-7200, 3600, 'SPECIAL')
diff --git a/test/tc_ruby_core_support.rb b/test/tc_ruby_core_support.rb
new file mode 100644
index 0000000..7253c0e
--- /dev/null
+++ b/test/tc_ruby_core_support.rb
@@ -0,0 +1,19 @@
+# encoding: UTF-8
+# frozen_string_literal: true
+
+require_relative 'test_utils'
+
+class TCRubyCoreSupport < Minitest::Test
+ def test_untaint_returns_object
+ o = Object.new
+ assert_same(o, TZInfo.const_get(:RubyCoreSupport).untaint(o))
+ end
+
+ def test_untaint_untaints_object
+ skip_if_taint_is_undefined_or_no_op
+ o = Object.new.taint
+ assert(o.tainted?)
+ TZInfo.const_get(:RubyCoreSupport).untaint(o)
+ refute(o.tainted?)
+ end
+end
diff --git a/test/tc_ruby_time_timezone.rb b/test/tc_ruby_time_timezone.rb
index e38911e..cfc8012 100644
--- a/test/tc_ruby_time_timezone.rb
+++ b/test/tc_ruby_time_timezone.rb
@@ -3,9 +3,9 @@
require_relative 'test_utils'
-include TZInfo
-
class TCRubyTimeTimezone < Minitest::Test
+ include TZInfo
+
def test_new_time_with_time_zone_paris
check_can_create_time_with_time_zone
diff --git a/test/tc_string_deduper.rb b/test/tc_string_deduper.rb
index 4217569..74cbdf1 100644
--- a/test/tc_string_deduper.rb
+++ b/test/tc_string_deduper.rb
@@ -4,9 +4,9 @@
require_relative 'test_utils'
require 'concurrent'
-include TZInfo
-
class TCStringDeduper < Minitest::Test
+ include TZInfo
+
def test_string_deduper_dedupe
dedupe_tests(StringDeduper.new)
end
diff --git a/test/tc_time_with_offset.rb b/test/tc_time_with_offset.rb
index 2d4be53..3f13352 100644
--- a/test/tc_time_with_offset.rb
+++ b/test/tc_time_with_offset.rb
@@ -3,9 +3,9 @@
require_relative 'test_utils'
-include TZInfo
-
class TCTimeWithOffset < Minitest::Test
+ include TZInfo
+
def time_with_offset(year, month, day, hour, minute, second, tz_offset)
TimeWithOffset.new(year, month, day, hour, minute, second, tz_offset.observed_utc_offset).set_timezone_offset(tz_offset)
end
diff --git a/test/tc_timestamp.rb b/test/tc_timestamp.rb
index 6132f5b..26d19cf 100644
--- a/test/tc_timestamp.rb
+++ b/test/tc_timestamp.rb
@@ -4,9 +4,9 @@
require_relative 'test_utils'
require 'date'
-include TZInfo
-
class TCTimestamp < Minitest::Test
+ include TZInfo
+
class TestTimestampSubclass < Timestamp
end
diff --git a/test/tc_timestamp_with_offset.rb b/test/tc_timestamp_with_offset.rb
index 1029fdd..0b7a41f 100644
--- a/test/tc_timestamp_with_offset.rb
+++ b/test/tc_timestamp_with_offset.rb
@@ -3,9 +3,9 @@
require_relative 'test_utils'
-include TZInfo
-
class TCTimestampWithOffset < Minitest::Test
+ include TZInfo
+
def new_timestamp(year, month, day, hour, minute, second, offset, klass = Timestamp)
time = Time.new(year, month, day, hour, minute, second, offset == :utc ? 0 : offset)
klass.new(time.to_i, time.subsec, offset)
diff --git a/test/tc_timezone.rb b/test/tc_timezone.rb
index 5f198f0..bd82af8 100644
--- a/test/tc_timezone.rb
+++ b/test/tc_timezone.rb
@@ -3,14 +3,12 @@
require_relative 'test_utils'
-include TZInfo
-
-# Use send as a workaround for erroneous 'wrong number of arguments' errors with
-# JRuby 9.0.5.0 when calling methods with Java implementations. See #114.
-send(:using, TestUtils::TaintExt) if TestUtils.const_defined?(:TaintExt)
-
class TCTimezone < Minitest::Test
+ include TZInfo
+
class << self
+ include TZInfo
+
private
def time_with_unspecified_offset_test(method)
@@ -260,6 +258,7 @@ class TCTimezone < Minitest::Test
end
def test_get_tainted_loaded
+ skip_if_taint_is_undefined_or_no_op
Timezone.get('Europe/Andorra')
safe_test(unavailable: :skip) do
@@ -272,6 +271,7 @@ class TCTimezone < Minitest::Test
end
def test_get_tainted_and_frozen_loaded
+ skip_if_taint_is_undefined_or_no_op
Timezone.get('Europe/Andorra')
safe_test do
@@ -281,6 +281,8 @@ class TCTimezone < Minitest::Test
end
def test_get_tainted_not_previously_loaded
+ skip_if_taint_is_undefined_or_no_op
+
safe_test(unavailable: :skip) do
identifier = 'Europe/Andorra'.dup.taint
assert(identifier.tainted?)
@@ -291,6 +293,8 @@ class TCTimezone < Minitest::Test
end
def test_get_tainted_and_frozen_not_previously_loaded
+ skip_if_taint_is_undefined_or_no_op
+
safe_test do
tz = Timezone.get('Europe/Amsterdam'.dup.taint.freeze)
assert_equal('Europe/Amsterdam', tz.identifier)
diff --git a/test/tc_timezone_london.rb b/test/tc_timezone_london.rb
index fdbe2c4..b57c7e0 100644
--- a/test/tc_timezone_london.rb
+++ b/test/tc_timezone_london.rb
@@ -3,9 +3,9 @@
require_relative 'test_utils'
-include TZInfo
-
class TCTimezoneLondon < Minitest::Test
+ include TZInfo
+
def test_2004
#Europe/London Sun Mar 28 00:59:59 2004 UTC = Sun Mar 28 00:59:59 2004 GMT isdst=0 gmtoff=0
#Europe/London Sun Mar 28 01:00:00 2004 UTC = Sun Mar 28 02:00:00 2004 BST isdst=1 gmtoff=3600
diff --git a/test/tc_timezone_melbourne.rb b/test/tc_timezone_melbourne.rb
index 6912c2c..0fd7bf8 100644
--- a/test/tc_timezone_melbourne.rb
+++ b/test/tc_timezone_melbourne.rb
@@ -3,9 +3,9 @@
require_relative 'test_utils'
-include TZInfo
-
class TCTimezoneMelbourne < Minitest::Test
+ include TZInfo
+
def test_2004
#Australia/Melbourne Sat Mar 27 15:59:59 2004 UTC = Sun Mar 28 02:59:59 2004 AEDT isdst=1 gmtoff=39600
#Australia/Melbourne Sat Mar 27 16:00:00 2004 UTC = Sun Mar 28 02:00:00 2004 AEST isdst=0 gmtoff=36000
diff --git a/test/tc_timezone_new_york.rb b/test/tc_timezone_new_york.rb
index 27b4d63..b067b16 100644
--- a/test/tc_timezone_new_york.rb
+++ b/test/tc_timezone_new_york.rb
@@ -3,9 +3,9 @@
require_relative 'test_utils'
-include TZInfo
-
class TCTimezoneNewYork < Minitest::Test
+ include TZInfo
+
def test_2004
#America/New_York Sun Apr 4 06:59:59 2004 UTC = Sun Apr 4 01:59:59 2004 EST isdst=0 gmtoff=-18000
#America/New_York Sun Apr 4 07:00:00 2004 UTC = Sun Apr 4 03:00:00 2004 EDT isdst=1 gmtoff=-14400
diff --git a/test/tc_timezone_offset.rb b/test/tc_timezone_offset.rb
index 3c0740d..0cc1119 100644
--- a/test/tc_timezone_offset.rb
+++ b/test/tc_timezone_offset.rb
@@ -3,9 +3,8 @@
require_relative 'test_utils'
-include TZInfo
-
class TCTimezoneOffset < Minitest::Test
+ include TZInfo
[:base_utc_offset, :utc_offset].each do |method|
define_method("test_#{method}") do
diff --git a/test/tc_timezone_period.rb b/test/tc_timezone_period.rb
index 80e29dd..ec94971 100644
--- a/test/tc_timezone_period.rb
+++ b/test/tc_timezone_period.rb
@@ -3,9 +3,9 @@
require_relative 'test_utils'
-include TZInfo
-
class TCTimezonePeriod < Minitest::Test
+ include TZInfo
+
class TestTimezonePeriod < TimezonePeriod
attr_reader :start_transition
attr_reader :end_transition
diff --git a/test/tc_timezone_proxy.rb b/test/tc_timezone_proxy.rb
index 8b2788a..5852601 100644
--- a/test/tc_timezone_proxy.rb
+++ b/test/tc_timezone_proxy.rb
@@ -3,9 +3,9 @@
require_relative 'test_utils'
-include TZInfo
-
class TCTimezoneProxy < Minitest::Test
+ include TZInfo
+
def assert_raises_invalid_timezone_identifier(identifier)
error = assert_raises(InvalidTimezoneIdentifier) { yield }
assert_match(Regexp.new('\b' + Regexp.escape(identifier) + '\b'), error.message)
diff --git a/test/tc_timezone_transition.rb b/test/tc_timezone_transition.rb
index 518c3b5..7a99133 100644
--- a/test/tc_timezone_transition.rb
+++ b/test/tc_timezone_transition.rb
@@ -4,9 +4,8 @@
require_relative 'test_utils'
require 'date'
-include TZInfo
-
class TCTimezoneTransition < Minitest::Test
+ include TZInfo
def test_offset
t = TimezoneTransition.new(TimezoneOffset.new(3600, 3600, 'TDT'),
diff --git a/test/tc_timezone_utc.rb b/test/tc_timezone_utc.rb
index 11500bb..bf1a5ab 100644
--- a/test/tc_timezone_utc.rb
+++ b/test/tc_timezone_utc.rb
@@ -3,9 +3,9 @@
require_relative 'test_utils'
-include TZInfo
-
class TCTimezoneUTC < Minitest::Test
+ include TZInfo
+
def test_2004
tz = Timezone.get('UTC')
diff --git a/test/tc_transition_rule.rb b/test/tc_transition_rule.rb
index 838455f..79f8738 100644
--- a/test/tc_transition_rule.rb
+++ b/test/tc_transition_rule.rb
@@ -3,9 +3,9 @@
require_relative 'test_utils'
-include TZInfo
-
class TCTransitionRule < Minitest::Test
+ include TZInfo
+
[-1, 0, 1].each do |transition_at|
define_method "test_transition_at_#{transition_at}" do
rule = TestTransitionRule.new(transition_at)
@@ -110,6 +110,7 @@ module BaseTransitionRuleTestHelper
end
class TCAbsoluteDayOfYearTransitionRule < Minitest::Test
+ include TZInfo
include BaseTransitionRuleTestHelper
[-1, 366, '0'].each do |value|
@@ -214,6 +215,7 @@ class TCAbsoluteDayOfYearTransitionRule < Minitest::Test
end
class TCJulianDayOfYearTransitionRule < Minitest::Test
+ include TZInfo
include BaseTransitionRuleTestHelper
[0, 366, '1'].each do |value|
@@ -357,6 +359,7 @@ module DayOfWeekTransitionRuleTestHelper
end
class TCDayOfMonthTransitionRule < Minitest::Test
+ include TZInfo
include BaseTransitionRuleTestHelper
include DayOfWeekTransitionRuleTestHelper
@@ -463,6 +466,7 @@ class TCDayOfMonthTransitionRule < Minitest::Test
end
class TCLastDayOfMonthTransitionRule < Minitest::Test
+ include TZInfo
include BaseTransitionRuleTestHelper
include DayOfWeekTransitionRuleTestHelper
diff --git a/test/tc_transitions_timezone_period.rb b/test/tc_transitions_timezone_period.rb
index 8bb0ca0..55a2702 100644
--- a/test/tc_transitions_timezone_period.rb
+++ b/test/tc_transitions_timezone_period.rb
@@ -3,9 +3,8 @@
require_relative 'test_utils'
-include TZInfo
-
class TCTransitionsTimezonePeriod < Minitest::Test
+ include TZInfo
def test_initialize_start_end
std = TimezoneOffset.new(-7200, 0, 'TEST')
diff --git a/test/tc_tzinfo.rb b/test/tc_tzinfo.rb
index c24e226..67e336c 100644
--- a/test/tc_tzinfo.rb
+++ b/test/tc_tzinfo.rb
@@ -4,6 +4,8 @@
require_relative 'test_utils'
class TCTZInfo < Minitest::Test
+ include TZInfo
+
def test_eager_load
test_data_source = Minitest::Mock.new
test_data_source.expect(:kind_of?, true, [DataSource])
diff --git a/test/tc_with_offset.rb b/test/tc_with_offset.rb
index ed52f83..b5dfc72 100644
--- a/test/tc_with_offset.rb
+++ b/test/tc_with_offset.rb
@@ -3,9 +3,9 @@
require_relative 'test_utils'
-include TZInfo
-
class TCWithOffset < Minitest::Test
+ include TZInfo
+
class TestBaseClass
attr_reader :format
attr_accessor :strftime_result
@@ -17,7 +17,7 @@ class TCWithOffset < Minitest::Test
end
class TestClass < TestBaseClass
- include WithOffset
+ include TZInfo::WithOffset
attr_accessor :timezone_offset
diff --git a/test/test_utils.rb b/test/test_utils.rb
index 4dca87b..e23d7d2 100644
--- a/test/test_utils.rb
+++ b/test/test_utils.rb
@@ -28,7 +28,12 @@ if COVERAGE_ENABLED && defined?(COVERAGE_TYPE)
false
end
- feature_support = [['deduping_string_unary_minus', string_unary_minus_does_dedupe]].map do |feature, available|
+ untaint_is_functional = Object.new.respond_to?(:untaint) && RUBY_VERSION < '2.7'
+
+ feature_support = [
+ ['deduping_string_unary_minus', string_unary_minus_does_dedupe],
+ ['functional_untaint', untaint_is_functional]
+ ].map do |feature, available|
"#{available ? '' : 'no_'}#{feature}"
end
@@ -210,11 +215,11 @@ module TestUtils
end
def time(year, month, day, hour, minute, second, sub_second = 0, utc_offset = nil)
- Timestamp.create(year, month, day, hour, minute, second, sub_second, utc_offset)
+ TZInfo::Timestamp.create(year, month, day, hour, minute, second, sub_second, utc_offset)
end
def time_with_offset(offset, year, month, day, hour, minute, second, sub_second = 0)
- TimestampWithOffset.create(year, month, day, hour, minute, second, sub_second, offset.observed_utc_offset).set_timezone_offset(offset)
+ TZInfo::TimestampWithOffset.create(year, month, day, hour, minute, second, sub_second, offset.observed_utc_offset).set_timezone_offset(offset)
end
end
@@ -499,7 +504,7 @@ module TestUtils
# equal.
def assert_equal_with_offset_and_timezone_offset(expected, actual)
assert_equal_with_offset(expected, actual)
- assert_kind_of(TimezoneOffset, actual.timezone_offset)
+ assert_kind_of(TZInfo::TimezoneOffset, actual.timezone_offset)
assert_equal(expected.timezone_offset, actual.timezone_offset)
end
@@ -509,16 +514,23 @@ module TestUtils
assert_equal_with_offset(expected, actual)
assert_equal(expected.class, actual.class)
end
- end
- # Object#taint is a deprecated no-op in Ruby 2.7 and outputs a warning. It
- # will be removed in 3.2. Silence the warning or supply a replacement.
- if TZInfo.const_defined?(:UntaintExt)
- module TaintExt
- refine Object do
- def taint
- self
+ # Object#taint is deprecated in Ruby >= 2.7 and will be removed in 3.2.
+ # 2.7 makes it a no-op with a warning.
+ # Define a method that will skip for use in tests that deal with tainted
+ # objects.
+ if Object.respond_to?(:taint)
+ if RUBY_VERSION >= '2.7'
+ def skip_if_taint_is_undefined_or_no_op
+ skip('Object#taint is a no-op')
end
+ else
+ def skip_if_taint_is_undefined_or_no_op
+ end
+ end
+ else
+ def skip_if_taint_is_undefined_or_no_op
+ skip('Object#taint is not defined')
end
end
end
diff --git a/test/ts_all.rb b/test/ts_all.rb
index 93fab59..0dfb334 100644
--- a/test/ts_all.rb
+++ b/test/ts_all.rb
@@ -7,4 +7,4 @@ ENV['TZ'] = 'America/Los_Angeles'
Dir[File.join(File.expand_path(File.dirname(__FILE__)), '**', 'tc_*.rb')].each {|t| require t}
-puts "Using #{DataSource.get}"
+puts "Using #{TZInfo::DataSource.get}"
diff --git a/test/ts_all_zoneinfo.rb b/test/ts_all_zoneinfo.rb
index 870a061..d55bb28 100644
--- a/test/ts_all_zoneinfo.rb
+++ b/test/ts_all_zoneinfo.rb
@@ -8,7 +8,7 @@ require_relative 'test_utils'
# Use a zoneinfo directory containing files needed by the tests.
# The symlinks in this directory are set up in test_utils.rb.
zoneinfo_path = File.join(File.expand_path(File.dirname(__FILE__)), 'zoneinfo')
-zoneinfo_path.untaint if RUBY_VERSION < '2.7'
+TZInfo::const_get(:RubyCoreSupport).untaint(zoneinfo_path)
TZInfo::DataSource.set(:zoneinfo, zoneinfo_path)
require_relative 'ts_all'
Debdiff
[The following lists of changes regard files as different if they have different names, permissions or owners.]
Files in second set of .debs but not in first
-rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/annual_rules.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/country.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/country_timezone.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/data_source.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/data_sources.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/constant_offset_data_timezone_info.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/country_info.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/data_timezone_info.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/linked_timezone_info.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/posix_time_zone_parser.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/ruby_data_source.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/timezone_info.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/transitions_data_timezone_info.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/zoneinfo_data_source.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/zoneinfo_reader.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/data_timezone.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/datetime_with_offset.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/format1.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/format1/country_definer.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/format1/country_index_definition.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/format1/timezone_definer.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/format1/timezone_definition.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/format1/timezone_index_definition.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/format2.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/format2/country_definer.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/format2/country_index_definer.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/format2/country_index_definition.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/format2/timezone_definer.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/format2/timezone_definition.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/format2/timezone_index_definer.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/format2/timezone_index_definition.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/info_timezone.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/linked_timezone.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/offset_timezone_period.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/ruby_core_support.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/string_deduper.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/time_with_offset.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/timestamp.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/timestamp_with_offset.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/timezone.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/timezone_offset.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/timezone_period.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/timezone_proxy.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/timezone_transition.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/transition_rule.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/transitions_timezone_period.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/version.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.6/lib/tzinfo/with_offset.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/specifications/tzinfo-2.0.6.gemspec
Files in first set of .debs but not in second
-rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/annual_rules.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/country.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/country_timezone.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/data_source.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/data_sources.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/data_sources/constant_offset_data_timezone_info.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/data_sources/country_info.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/data_sources/data_timezone_info.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/data_sources/linked_timezone_info.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/data_sources/posix_time_zone_parser.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/data_sources/ruby_data_source.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/data_sources/timezone_info.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/data_sources/transitions_data_timezone_info.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/data_sources/zoneinfo_data_source.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/data_sources/zoneinfo_reader.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/data_timezone.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/datetime_with_offset.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/format1.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/format1/country_definer.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/format1/country_index_definition.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/format1/timezone_definer.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/format1/timezone_definition.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/format1/timezone_index_definition.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/format2.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/format2/country_definer.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/format2/country_index_definer.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/format2/country_index_definition.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/format2/timezone_definer.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/format2/timezone_definition.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/format2/timezone_index_definer.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/format2/timezone_index_definition.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/info_timezone.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/linked_timezone.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/offset_timezone_period.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/string_deduper.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/time_with_offset.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/timestamp.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/timestamp_with_offset.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/timezone.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/timezone_offset.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/timezone_period.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/timezone_proxy.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/timezone_transition.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/transition_rule.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/transitions_timezone_period.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/untaint_ext.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/version.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/gems/tzinfo-2.0.5/lib/tzinfo/with_offset.rb -rw-r--r-- root/root /usr/share/rubygems-integration/all/specifications/tzinfo-2.0.5.gemspec
No differences were encountered in the control files