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>