test/test_utils.rb in tzinfo-0.3.62 vs test/test_utils.rb in tzinfo-1.0.0
- old
+ new
@@ -1,21 +1,116 @@
-module Kernel
- # Suppresses any warnings raised in a specified block.
- def without_warnings
- old_verbose = $VERBOSE
- begin
- $VERBOSE = nil
- yield
- ensure
- $-v = old_verbose
- end
- end
-
- def safe_test(level = 1)
- thread = Thread.new do
- $SAFE = level
- yield
- end
-
- thread.join
- end
-end
\ No newline at end of file
+#--
+# Copyright (c) 2008-2013 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 the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#++
+
+TESTS_DIR = File.expand_path(File.dirname(__FILE__)).untaint
+TZINFO_LIB_DIR = File.expand_path(File.join(TESTS_DIR, '..', 'lib'))
+TZINFO_TEST_DATA_DIR = File.join(TESTS_DIR, 'tzinfo-data')
+TZINFO_TEST_ZONEINFO_DIR = File.join(TESTS_DIR, 'zoneinfo')
+
+$:.unshift(TZINFO_LIB_DIR) unless $:.include?(TZINFO_LIB_DIR)
+
+# tzinfo-data contains a cut down copy of tzinfo-data for use in the tests.
+# Add it to the load path.
+$:.unshift(TZINFO_TEST_DATA_DIR) unless $:.include?(TZINFO_TEST_DATA_DIR)
+
+require 'test/unit'
+require 'tzinfo'
+require 'fileutils'
+require 'rbconfig'
+
+module TestUtils
+ ZONEINFO_SYMLINKS = [
+ ['localtime', 'America/New_York'],
+ ['UTC', 'Etc/UTC']]
+
+
+ def self.prepare_test_zoneinfo_dir
+ ZONEINFO_SYMLINKS.each do |file, target|
+ path = File.join(TZINFO_TEST_ZONEINFO_DIR, file)
+
+ File.delete(path) if File.exists?(path)
+
+ begin
+ FileUtils.ln_s(target, path)
+ rescue NotImplementedError
+ target_path = File.join(TZINFO_TEST_ZONEINFO_DIR, target)
+ FileUtils.cp(target_path, path)
+ end
+ end
+ end
+end
+
+TestUtils.prepare_test_zoneinfo_dir
+
+
+
+module Kernel
+ # Suppresses any warnings raised in a specified block.
+ def without_warnings
+ old_verbose = $VERBOSE
+ begin
+ $VERBOSE = nil
+ yield
+ ensure
+ $-v = old_verbose
+ end
+ end
+
+ def safe_test(level = 1)
+ # Don't run on JRuby. It doesn't support SAFE levels.
+ if RUBY_PLATFORM != 'java'
+ thread = Thread.new do
+ $SAFE = level
+ yield
+ end
+
+ thread.join
+ end
+ end
+
+ def assert_array_same_items(expected, actual, message = nil)
+ full_message = build_message(message, "<?> expected but was <?>.", expected, actual)
+
+ assert_block(full_message) do
+ (expected.size == actual.size) && (expected - actual == [])
+ end
+ end
+
+ def assert_sub_process_returns(expected_lines, code, extra_load_path = [], required = ['tzinfo'])
+ ruby = File.join(RbConfig::CONFIG['bindir'],
+ RbConfig::CONFIG['ruby_install_name'] + RbConfig::CONFIG['EXEEXT'])
+
+ load_path = [TZINFO_LIB_DIR] + extra_load_path
+ load_path = load_path.collect {|p| "-I \"#{p}\""}.join(' ')
+
+ required = required.collect {|r| "-r \"#{r}\""}.join(' ')
+
+ IO.popen("\"#{ruby}\" #{load_path} #{required}", 'r+') do |process|
+ process.puts(code)
+ process.flush
+ process.close_write
+
+ actual_lines = process.readlines
+ actual_lines = actual_lines.collect {|l| l.chomp}
+ assert_equal(expected_lines, actual_lines)
+ end
+ end
+end