ruby-changes:15977
From: suke <ko1@a...>
Date: Thu, 20 May 2010 20:55:42 +0900 (JST)
Subject: [ruby-changes:15977] Ruby:r27922 (trunk): * ext/win32ole/win32ole.c (ole_invoke): raise NoMethodError
suke 2010-05-20 20:55:10 +0900 (Thu, 20 May 2010) New Revision: 27922 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=27922 Log: * ext/win32ole/win32ole.c (ole_invoke): raise NoMethodError when COM method is not found. [ruby-core:30160] [Bug #3277] * test/win32ole/test_win32ole.rb (test_no_method_error): ditto. Modified files: trunk/ChangeLog trunk/ext/win32ole/win32ole.c trunk/test/win32ole/test_win32ole.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 27921) +++ ChangeLog (revision 27922) @@ -1,3 +1,10 @@ +Thu May 20 20:47:46 2010 Masaki Suketa <masaki.suketa@n...> + + * ext/win32ole/win32ole.c (ole_invoke): raise NoMethodError + when COM method is not found. [ruby-core:30160] [Bug #3277] + + * test/win32ole/test_win32ole.rb (test_no_method_error): ditto. + Thu May 20 16:17:14 2010 NAKAMURA Usaku <usa@r...> * ext/psych/emitter: C99(gcc)-ism. Index: ext/win32ole/win32ole.c =================================================================== --- ext/win32ole/win32ole.c (revision 27921) +++ ext/win32ole/win32ole.c (revision 27922) @@ -130,7 +130,7 @@ #define WC2VSTR(x) ole_wc2vstr((x), TRUE) -#define WIN32OLE_VERSION "1.4.7" +#define WIN32OLE_VERSION "1.4.8" typedef HRESULT (STDAPICALLTYPE FNCOCREATEINSTANCEEX) (REFCLSID, IUnknown*, DWORD, COSERVERINFO*, DWORD, MULTI_QI*); @@ -3347,7 +3347,7 @@ &wcmdname, 1, lcid, &DispID); SysFreeString(wcmdname); if(FAILED(hr)) { - ole_raise(hr, eWIN32OLERuntimeError, + ole_raise(hr, rb_eNoMethodError, "unknown property or method: `%s'", StringValuePtr(cmd)); } Index: test/win32ole/test_win32ole.rb =================================================================== --- test/win32ole/test_win32ole.rb (revision 27921) +++ test/win32ole/test_win32ole.rb (revision 27922) @@ -55,6 +55,13 @@ assert_match(/^\(in setting property `compareMode': \)/, exc.message) #` end + def test_no_method_error + exc = assert_raise(NoMethodError) { + @dict1.non_exist_method + } + assert_match(/non_exist_method/, exc.message) + end + def test_ole_methods methods = @dict1.ole_methods mnames = methods.collect {|m| -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/