diff options
-rw-r--r-- | ext/win32ole/lib/win32ole.rb | 10 | ||||
-rw-r--r-- | test/win32ole/test_win32ole.rb | 13 |
2 files changed, 18 insertions, 5 deletions
diff --git a/ext/win32ole/lib/win32ole.rb b/ext/win32ole/lib/win32ole.rb index be9d0d4e9b..635510b277 100644 --- a/ext/win32ole/lib/win32ole.rb +++ b/ext/win32ole/lib/win32ole.rb @@ -19,7 +19,15 @@ if defined?(WIN32OLE) # #=> Did you mean? Add # def methods(*args) - super + ole_methods.map(&:name) + super + ole_methods_safely.map(&:name) + end + + private + + def ole_methods_safely + ole_methods + rescue WIN32OLEQueryInterfaceError + [] end end end diff --git a/test/win32ole/test_win32ole.rb b/test/win32ole/test_win32ole.rb index 5dc4c6cfaa..9bf196a362 100644 --- a/test/win32ole/test_win32ole.rb +++ b/test/win32ole/test_win32ole.rb @@ -69,7 +69,12 @@ if defined?(WIN32OLE) mnames = methods.collect {|m| m.name } - assert(mnames.include?("Add")) + assert_include(mnames, 'Add') + end + + def test_methods + methods = @dict1.methods + assert_include(methods, 'Add') end def test_ole_func_methods @@ -77,7 +82,7 @@ if defined?(WIN32OLE) mnames = methods.collect {|m| m.name } - assert(mnames.include?("Add")) + assert_include(mnames, 'Add') end def test_ole_put_methods @@ -85,7 +90,7 @@ if defined?(WIN32OLE) mnames = methods.collect {|m| m.name } - assert(mnames.include?("CompareMode")) + assert_include(mnames, 'CompareMode') end def test_ole_get_methods @@ -93,7 +98,7 @@ if defined?(WIN32OLE) mnames = methods.collect {|m| m.name } - assert(mnames.include?("Count")) + assert_include(mnames, 'Count') end def test_ole_mehtod_help |