From: Kazuhiro NISHIYAMA Date: 2008-10-24T14:26:04+09:00 Subject: [ruby-dev:36898] Re: * lib/csv.rb: Failure test_inspect_is_ascii_8bit_encoded(TestCSVRow) 西山和広です。 At Fri, 24 Oct 2008 13:42:54 +0900, TAKANO Mitsuhiro wrote: > > ---- > 1) Failure: > test_inspect_is_ascii_8bit_encoded(TestCSVRow) > [/home/takano/ruby/test/csv/test_ > row.rb:300]: > <"ASCII-8BIT"> expected but was > <"US-ASCII">. > ---- > > についてのパッチです。 > > # ほんとにこんなんでいいのかな・・・ > # 文字コード周りに詳しい方教えてくださいっ。m(_ _)m test/ruby/test_array.rbと一緒に実行すると再現すrようで、$,=""と >> ("".encode("US-ASCII")+"".encode("ASCII-8BIT")).encoding => # >> ("".encode("ASCII-8BIT")+"".encode("US-ASCII")).encoding => # が原因のように思いました。 > Index: lib/csv.rb > =================================================================== > --- lib/csv.rb (revision 19903) > +++ lib/csv.rb (working copy) > @@ -495,7 +495,7 @@ > ":" << field.inspect > end > str << ">" > - str.map { |s| s.encode("ASCII-8BIT") }.join > + str.map { |s| s.encode("ASCII-8BIT") }.join.encode("ASCII-8BIT") > end > end グローバルな環境を変更して戻してないテストが悪い部分と 無引数のjoinを使っているところの両方を直すならこんな 感じでしょうか。 Index: lib/csv.rb =================================================================== --- lib/csv.rb (revision 19903) +++ lib/csv.rb (working copy) @@ -495,7 +495,7 @@ ":" << field.inspect end str << ">" - str.map { |s| s.encode("ASCII-8BIT") }.join + str.map { |s| s.encode("ASCII-8BIT") }.join("".encode("ASCII-8BIT")) end end Index: test/ruby/test_array.rb =================================================================== --- test/ruby/test_array.rb (revision 19903) +++ test/ruby/test_array.rb (working copy) @@ -814,6 +814,8 @@ s = a.join assert_equal(true, s.tainted?) assert_equal(true, s.untrusted?) + ensure + $, = nil end def test_last Index: test/ruby/test_hash.rb =================================================================== --- test/ruby/test_hash.rb (revision 19903) +++ test/ruby/test_hash.rb (working copy) @@ -627,6 +627,7 @@ assert_equal(h.inspect, h.to_s) h = @cls[] assert_equal(h.inspect, h.to_s) + ensure $, = nil end -- |ZnZ(ゼット エヌ ゼット) |西山和広(Kazuhiro NISHIYAMA)