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

More details

Full run details