From: ngotogenome@... Date: 2015-12-07T09:15:36+00:00 Subject: [ruby-dev:49412] [Ruby trunk - Bug #11780] [Open] TestIO_Console#test_getpass failed on Solaris Issue #11780 has been reported by Naohisa Goto. ---------------------------------------- Bug #11780: TestIO_Console#test_getpass failed on Solaris https://bugs.ruby-lang.org/issues/11780 * Author: Naohisa Goto * Status: Open * Priority: Normal * Assignee: * ruby -v: - * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- Solaris 10 にて、TestIO_Console#test_getpass が以下のエラーで失敗します。 ~~~ 1) Error: TestIO_Console#test_getpass: Errno::EINVAL: Invalid argument /XXXXX/test/io/console/test_io_console.rb:190:in `getpass' /XXXXX/test/io/console/test_io_console.rb:190:in `block in test_getpass' /XXXXX/test/io/console/test_io_console.rb:277:in `helper' /XXXXX/test/io/console/test_io_console.rb:185:in `test_getpass' ~~~ (r52912 にて確認) getpass自体は特に問題なく、テストコードのバグだと思います。 まず、m と s の役割が逆の気がします。 たとえば、同ファイル内の test_noecho や test_noecho2 では s.noecho のテストをしていますが、m に対してはecho関係の操作は行なっていません。 getpass は端的に言えば内部で noecho してから gets 相当を行なっているだけと思うので、テストも同様に(test_noecho は簡潔すぎるので)test_noecho2 を元にして書けばよさそうに思いました。 それに加えて、現在のコードでは、Threadとassertのタイミング問題が発生しそうな予感がします。 -- https://bugs.ruby-lang.org/