summaryrefslogtreecommitdiff
path: root/test/ruby/test_encoding.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/ruby/test_encoding.rb')
-rw-r--r--test/ruby/test_encoding.rb40
1 files changed, 35 insertions, 5 deletions
diff --git a/test/ruby/test_encoding.rb b/test/ruby/test_encoding.rb
index 46b86ccabf..8f73a8fce1 100644
--- a/test/ruby/test_encoding.rb
+++ b/test/ruby/test_encoding.rb
@@ -1,5 +1,5 @@
+# frozen_string_literal: false
require 'test/unit'
-require_relative 'envutil'
class TestEncoding < Test::Unit::TestCase
@@ -13,6 +13,7 @@ class TestEncoding < Test::Unit::TestCase
assert_equal(e, Encoding.find(e.name.upcase))
assert_equal(e, Encoding.find(e.name.capitalize))
assert_equal(e, Encoding.find(e.name.downcase))
+ assert_equal(e, Encoding.find(e))
end
end
@@ -21,7 +22,7 @@ class TestEncoding < Test::Unit::TestCase
aliases.each do |a, en|
e = Encoding.find(a)
assert_equal(e.name, en)
- assert(e.names.include?(a))
+ assert_include(e.names, a)
end
end
@@ -33,6 +34,9 @@ class TestEncoding < Test::Unit::TestCase
assert_raise(TypeError) { e.dup }
assert_raise(TypeError) { e.clone }
assert_equal(e.object_id, Marshal.load(Marshal.dump(e)).object_id)
+ assert_not_predicate(e, :tainted?)
+ Marshal.load(Marshal.dump(e).taint)
+ assert_not_predicate(e, :tainted?, '[ruby-core:71793] [Bug #11760]')
end
end
@@ -41,7 +45,7 @@ class TestEncoding < Test::Unit::TestCase
assert_nothing_raised{Encoding.find("locale")}
assert_nothing_raised{Encoding.find("filesystem")}
- if /(?:ms|dar)win/ !~ RUBY_PLATFORM
+ if /(?:ms|dar)win|mingw/ !~ RUBY_PLATFORM
# Unix's filesystem encoding is default_external
assert_ruby_status(%w[-EUTF-8:EUC-JP], <<-'EOS')
exit Encoding.find("filesystem") == Encoding::UTF_8
@@ -49,6 +53,9 @@ class TestEncoding < Test::Unit::TestCase
exit Encoding.find("filesystem") == Encoding::EUC_JP
EOS
end
+
+ bug5150 = '[ruby-dev:44327]'
+ assert_raise(TypeError, bug5150) {Encoding.find(1)}
end
def test_replicate
@@ -81,8 +88,8 @@ class TestEncoding < Test::Unit::TestCase
def test_aliases
assert_instance_of(Hash, Encoding.aliases)
Encoding.aliases.each do |k, v|
- assert(Encoding.name_list.include?(k))
- assert(Encoding.name_list.include?(v))
+ assert_include(Encoding.name_list, k)
+ assert_include(Encoding.name_list, v)
assert_instance_of(String, k)
assert_instance_of(String, v)
end
@@ -95,4 +102,27 @@ class TestEncoding < Test::Unit::TestCase
str2 = Marshal.load(Marshal.dump(str2))
assert_equal(str, str2, '[ruby-dev:38596]')
end
+
+ def test_compatible_p
+ ua = "abc".force_encoding(Encoding::UTF_8)
+ assert_equal(Encoding::UTF_8, Encoding.compatible?(ua, :abc))
+ assert_equal(nil, Encoding.compatible?(ua, 1))
+ bin = "a".force_encoding(Encoding::ASCII_8BIT)
+ asc = "b".force_encoding(Encoding::US_ASCII)
+ assert_equal(Encoding::ASCII_8BIT, Encoding.compatible?(bin, asc))
+ bin = "\xff".force_encoding(Encoding::ASCII_8BIT).to_sym
+ asc = "b".force_encoding(Encoding::ASCII_8BIT)
+ assert_equal(Encoding::ASCII_8BIT, Encoding.compatible?(bin, asc))
+ assert_equal(Encoding::UTF_8, Encoding.compatible?("\u{3042}".to_sym, ua.to_sym))
+ end
+
+ def test_errinfo_after_autoload
+ assert_separately(%w[--disable=gems], "#{<<~"begin;"}\n#{<<~'end;'}")
+ bug9038 = '[ruby-core:57949] [Bug #9038]'
+ begin;
+ assert_raise_with_message(SyntaxError, /unknown regexp option - Q/, bug9038) {
+ eval("/regexp/sQ")
+ }
+ end;
+ end
end