summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authornagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-07-03 18:55:25 +0000
committernagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-07-03 18:55:25 +0000
commitaa4dc2b0dff042bd1d42994d3f55cdcf884a252f (patch)
tree63c61b9540b9fb23f7b4e02b22e9bcc4e38bb6ac /test
parentb94b3260747470c2577c513974270d200a30564b (diff)
merge revision(s) 50366: [Backport #11045]
* test/ruby/test_m17n_comb.rb: test_str_crypt split into strict and non-strict versions to allow masking out non-strict when glibc version cannot be determined (#11045). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@51130 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_m17n_comb.rb49
1 files changed, 32 insertions, 17 deletions
diff --git a/test/ruby/test_m17n_comb.rb b/test/ruby/test_m17n_comb.rb
index c35be701c6..3a37ed4a23 100644
--- a/test/ruby/test_m17n_comb.rb
+++ b/test/ruby/test_m17n_comb.rb
@@ -743,28 +743,43 @@ class TestM17NComb < Test::Unit::TestCase
}
end
- def test_str_crypt
- strict_crypt = nil
- # glibc 2.16 or later denies salt contained other than [0-9A-Za-z./] #7312
- if defined? Etc::CS_GNU_LIBC_VERSION
- glibcver = Etc.confstr(Etc::CS_GNU_LIBC_VERSION).scan(/\d+/).map(&:to_i)
- strict_crypt = (glibcver <=> [2, 16]) >= 0
- end
+ # glibc 2.16 or later denies salt contained other than [0-9A-Za-z./] #7312
+ # we use this check to test strict and non-strict behavior separately #11045
+ strict_crypt = if defined? Etc::CS_GNU_LIBC_VERSION
+ glibcver = Etc.confstr(Etc::CS_GNU_LIBC_VERSION).scan(/\d+/).map(&:to_i)
+ (glibcver <=> [2, 16]) >= 0
+ end
+ def test_str_crypt
combination(STRINGS, STRINGS) {|str, salt|
- if strict_crypt
- next unless salt.ascii_only? && /\A[0-9a-zA-Z.\/]+\z/ =~ salt
- end
- if b(salt).length < 2
- assert_raise(ArgumentError) { str.crypt(salt) }
- next
- end
- t = str.crypt(salt)
- assert_equal(b(str).crypt(b(salt)), t, "#{encdump(str)}.crypt(#{encdump(salt)})")
- assert_encoding('ASCII-8BIT', t.encoding)
+ # skip input other than [0-9A-Za-z./] to confirm strict behavior
+ next unless salt.ascii_only? && /\A[0-9a-zA-Z.\/]+\z/ =~ salt
+
+ confirm_crypt_result(str, salt)
}
end
+ if !strict_crypt
+ def test_str_crypt_nonstrict
+ combination(STRINGS, STRINGS) {|str, salt|
+ # only test input other than [0-9A-Za-z./] to confirm non-strict behavior
+ next if salt.ascii_only? && /\A[0-9a-zA-Z.\/]+\z/ =~ salt
+
+ confirm_crypt_result(str, salt)
+ }
+ end
+ end
+
+ private def confirm_crypt_result(str, salt)
+ if b(salt).length < 2
+ assert_raise(ArgumentError) { str.crypt(salt) }
+ return
+ end
+ t = str.crypt(salt)
+ assert_equal(b(str).crypt(b(salt)), t, "#{encdump(str)}.crypt(#{encdump(salt)})")
+ assert_encoding('ASCII-8BIT', t.encoding)
+ end
+
def test_str_delete
combination(STRINGS, STRINGS) {|s1, s2|
if s1.empty?