From: TAKANO Mitsuhiro Date: 2009-01-25T00:43:15+09:00 Subject: [ruby-dev:37832] Failure: test_str_crypt on Darwin x64 こんにちは 高野です。 Darwinでx86_64のバイナリを作成し、テストをしていたらおかしな挙動がありま した。 test_m17n_comb.rb で文字列のcryptをしているところです。 $ file ./ruby ./ruby: Mach-O 64-bit executable x86_64 $ ./ruby -v ruby 1.9.1p5000 (2009-01-24 trunk 21752) [i386-darwin9.6.0] $ ./ruby test/ruby/test_m17n_comb.rb Loaded suite test/ruby/test_m17n_comb Started ..........................F................................................. Finished in 31.632222 seconds. 1) Failure: test_str_crypt(TestM17NComb) [test/ruby/test_m17n_comb.rb:799]: "".force_encoding("ASCII-8BIT").crypt("\u{80}".force_encoding("UTF-8")). <"\xC2\x80sGOfrtmSfNA"> expected but was <"\xC2\x804HfcgwtVA4.">. 76 tests, 257977 assertions, 1 failures, 0 errors, 0 skips irbでいじるとa(salt)をした状態、つまりString#dupを使うと値が変化している ようです。 irb(main):009:0> "".force_encoding("ASCII-8BIT").crypt("\u{80}".force_encoding("ASCII-8BIT")) => "\xC2\x804HfcgwtVA4." irb(main):010:0> "".force_encoding("ASCII-8BIT").crypt("\u{80}".dup.force_encoding("ASCII-8BIT")) => "\xC2\x80sGOfrtmSfNA" 同ファイルのmodule AESUの中でString#dupしているので、それがなにか影響し ているように思えました。 テストの入力と出力が把握できませんでしたので、こちらに投稿させていただき ました。