ruby-changes:3031
From: ko1@a...
Date: 23 Dec 2007 20:16:44 +0900
Subject: [ruby-changes:3031] akr - Ruby:r14523 (trunk): add tests for warning of none encoding regexps.
akr 2007-12-23 20:16:34 +0900 (Sun, 23 Dec 2007) New Revision: 14523 Modified files: trunk/test/ruby/test_m17n.rb Log: add tests for warning of none encoding regexps. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/test_m17n.rb?r1=14523&r2=14522 Index: test/ruby/test_m17n.rb =================================================================== --- test/ruby/test_m17n.rb (revision 14522) +++ test/ruby/test_m17n.rb (revision 14523) @@ -1,4 +1,5 @@ require 'test/unit' +require 'stringio' class TestM17N < Test::Unit::TestCase def assert_encoding(encname, actual, message=nil) @@ -160,6 +161,17 @@ assert_raise(SyntaxError) { eval('/\xc2\x20/u') } end + def assert_warning(pat, mesg=nil) + begin + org_stderr = $stderr + $stderr = StringIO.new(warn = '') + yield + ensure + $stderr = org_stderr + end + assert_match(pat, warn, mesg) + end + def assert_regexp_generic_encoding(r) assert(!r.fixed_encoding?) %w[ASCII-8BIT EUC-JP Shift_JIS UTF-8].each {|ename| @@ -225,25 +237,26 @@ end def test_regexp_ascii_none - begin - old_verbose = $VERBOSE - $VERBOSE = nil + r = /a/n - assert_regexp_generic_ascii(/a/n) + assert_warning(%r{regexp match /.../n against to}) { + assert_regexp_generic_ascii(r) + } - [/a/n].each {|r| - assert_equal(0, r =~ a("a")) - assert_equal(0, r =~ e("a")) - assert_equal(0, r =~ s("a")) - assert_equal(0, r =~ u("a")) - assert_equal(nil, r =~ a("\xc2\xa1")) - assert_equal(nil, r =~ e("\xc2\xa1")) - assert_equal(nil, r =~ s("\xc2\xa1")) - assert_equal(nil, r =~ u("\xc2\xa1")) - } - ensure - $VERBOSE = old_verbose - end + assert_equal(0, r =~ a("a")) + assert_equal(0, r =~ e("a")) + assert_equal(0, r =~ s("a")) + assert_equal(0, r =~ u("a")) + assert_equal(nil, r =~ a("\xc2\xa1")) + assert_warning(%r{regexp match /.../n against to EUC-JP string}) { + assert_equal(nil, r =~ e("\xc2\xa1")) + } + assert_warning(%r{regexp match /.../n against to Shift_JIS string}) { + assert_equal(nil, r =~ s("\xc2\xa1")) + } + assert_warning(%r{regexp match /.../n against to UTF-8 string}) { + assert_equal(nil, r =~ u("\xc2\xa1")) + } end def test_regexp_ascii @@ -390,7 +403,9 @@ def test_union_1_regexp assert_regexp_generic_ascii(Regexp.union(//)) - assert_regexp_generic_ascii(Regexp.union(//n)) + assert_warning(%r{regexp match /.../n against to}) { + assert_regexp_generic_ascii(Regexp.union(//n)) + } assert_regexp_fixed_eucjp(Regexp.union(//e)) assert_regexp_fixed_sjis(Regexp.union(//s)) assert_regexp_fixed_utf8(Regexp.union(//u)) @@ -431,7 +446,9 @@ end def test_dynamic_ascii_regexp - assert_regexp_generic_ascii(/#{}/n) + assert_warning(%r{regexp match /.../n against to}) { + assert_regexp_generic_ascii(/#{}/n) + } assert_regexp_fixed_ascii8bit(/#{}\xc2\xa1/n) assert_regexp_fixed_ascii8bit(/\xc2\xa1#{}/n) #assert_raise(SyntaxError) { s1, s2 = s('\xc2'), s('\xa1'); /#{s1}#{s2}/ } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml