From: "akira yamada / やまだあきら" Date: 2004-05-13T18:48:35+09:00 Subject: [ruby-dev:23496] Re: ruby 1.8.1 (2004-05-13) has 7 failures and 3 errors >>>>> In [ruby-dev : No.23492] >>>>> akira yamada wrote: > 1) Failure: > test_freeze(TestDBM) > [./test/dbm/test_dbm.rb:27:in `test_freeze' > ./test/dbm/test_dbm.rb:25:in `open' > ./test/dbm/test_dbm.rb:25:in `test_freeze']: > exception expected but none was thrown. > 2) Failure: > test_freeze(TestGDBM) > [./test/gdbm/test_gdbm.rb:36:in `test_freeze' > ./test/gdbm/test_gdbm.rb:34:in `open' > ./test/gdbm/test_gdbm.rb:34:in `test_freeze']: > exception expected but none was thrown. これらとtempfile.rbのエラーについては delegate.rb、dbm.c、gdbm.cを1.9系からコピーすることで パスできるようです。 > 10) Error: > test_perl_regexp(YAML_Unit_Tests): > TypeError: cannot convert nil into String > /usr/lib/ruby/1.8/yaml/rubytypes.rb:493:in `initialize' > /usr/lib/ruby/1.8/yaml/rubytypes.rb:493:in `call' > /usr/lib/ruby/1.8/yaml/rubytypes.rb:493 > /usr/lib/ruby/1.8/yaml/rubytypes.rb:478:in `call' > /usr/lib/ruby/1.8/xsd/datatypes.rb:1055:in `transfer' > /usr/lib/ruby/1.8/yaml.rb:39:in `load' > /usr/lib/ruby/1.8/yaml.rb:39:in `load' > ./test/yaml/test_yaml.rb:32:in `assert_parse_only' > ./test/yaml/test_yaml.rb:1040:in `test_perl_regexp' これについては、どうも大文字小文字の違いでコケているようだったので rubytypes.rbをテストに合わせて変更してみました。 Index: lib/yaml/rubytypes.rb =================================================================== RCS file: /src/ruby/lib/yaml/rubytypes.rb,v retrieving revision 1.16.2.3 diff -u -r1.16.2.3 rubytypes.rb --- lib/yaml/rubytypes.rb 6 May 2004 06:39:45 -0000 1.16.2.3 +++ lib/yaml/rubytypes.rb 13 May 2004 09:40:20 -0000 @@ -478,22 +478,23 @@ regexp_proc = Proc.new { |type, val| type, obj_class = YAML.read_type_class( type, ::Regexp ) if String === val and val =~ /^\/(.*)\/([mix]*)$/ - val = { 'regexp' => $1, 'mods' => $2 } + val = { 'regexp' => $1, 'modifiers' => $2 } end if Hash === val + val.keys.each { |k| val[k.downcase] = val.delete(k) } mods = nil - unless val['mods'].to_s.empty? + unless val['modifiers'].to_s.empty? mods = 0x00 - mods |= Regexp::EXTENDED if val['mods'].include?( 'x' ) - mods |= Regexp::IGNORECASE if val['mods'].include?( 'i' ) - mods |= Regexp::MULTILINE if val['mods'].include?( 'm' ) + mods |= Regexp::EXTENDED if val['modifiers'].include?( 'x' ) + mods |= Regexp::IGNORECASE if val['modifiers'].include?( 'i' ) + mods |= Regexp::MULTILINE if val['modifiers'].include?( 'm' ) end - val.delete( 'mods' ) + val.delete( 'modifiers' ) r = YAML::object_maker( obj_class, {} ) Regexp.instance_method(:initialize). bind(r). call( val.delete( 'regexp' ), mods ) - val.each { |k,v| r.instance_variable_set( k, v ) } + val.each { |k,v| r.instance_variable_set( '@' + k, v ) } r else raise YAML::Error, "Invalid Regular expression: " + val.inspect -- やまだあきら Vine Caves, Ltd.