Siena. です。

test/ruby/test_env.rb が失敗するので調べてみたところ、
素の OS/2 (の cmd.exe) では環境変数名の大文字小文字を
同一視しますが、EMX 環境下では同一視しないようです。
今まで気付かなかったのですが、現実装では不整合が起きていました。

$ ruby -e 'ENV["FOO"]="x"; print ENV["FOO"], " ", ENV["foo"], "\n";
           ENV["foo"]="z"; print ENV["FOO"], " ", ENV["foo"], "\n"'
x nil
nil z

修正の選択肢としては次の二通りですが、(2) とするパッチです。
(1) hash.c で環境変数名は常に toupper() する
(2) 大文字小文字を同一視しない仕様とする


Index: ruby/defines.h =================================================================== RCS file: /src/ruby/defines.h,v retrieving revision 1.35 diff -u -p -2 -r1.35 defines.h --- ruby/defines.h 25 Nov 2003 12:44:26 -0000 1.35 +++ ruby/defines.h 2 Dec 2003 16:21:51 -0000 @@ -181,5 +181,5 @@ flush_register_windows(void) #endif -#if defined(DOSISH) && !defined(__human68k__) +#if defined(DOSISH) && !defined(__human68k__) && !defined(__EMX__) #define ENV_IGNORECASE #endif Index: ruby/test/ruby/test_env.rb =================================================================== RCS file: /src/ruby/test/ruby/test_env.rb,v retrieving revision 1.2 diff -u -p -2 -r1.2 test_env.rb --- ruby/test/ruby/test_env.rb 28 Nov 2003 10:38:00 -0000 1.2 +++ ruby/test/ruby/test_env.rb 2 Dec 2003 16:22:13 -0000 @@ -4,5 +4,5 @@ $KCODE = 'none' class TestEnv < Test::Unit::TestCase - IGNORE_CASE = /djgpp|bccwin|mswin|mingw|emx/ =~ RUBY_PLATFORM + IGNORE_CASE = /djgpp|bccwin|mswin|mingw/ =~ RUBY_PLATFORM def setup
--- Siena. <mailto:siena / faculty.chiba-u.jp>