[前][次][番号順一覧][スレッド一覧]

ruby-changes:6699

From: suke <ko1@a...>
Date: Fri, 25 Jul 2008 21:00:14 +0900 (JST)
Subject: [ruby-changes:6699] Ruby:r18215 (trunk): * test/win32ole/err_in_callback.rb : add test of raising

suke	2008-07-25 20:59:53 +0900 (Fri, 25 Jul 2008)

  New Revision: 18215

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=18215

  Log:
    * test/win32ole/err_in_callback.rb : add test of raising
      exception in WIN32OLE_EVENT callback.
    
    * test/win32ole/test_err_in_callback.rb : ditto.

  Added files:
    trunk/test/win32ole/err_in_callback.rb
    trunk/test/win32ole/test_err_in_callback.rb
  Modified files:
    trunk/ChangeLog

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 18214)
+++ ChangeLog	(revision 18215)
@@ -1,3 +1,10 @@
+Fri Jul 25 20:52:44 2008  Masaki Suketa  <masaki.suketa@n...>
+
+	* test/win32ole/err_in_callback.rb : add test of raising
+	  exception in WIN32OLE_EVENT callback.
+
+	* test/win32ole/test_err_in_callback.rb : ditto.
+
 Fri Jul 25 20:43:57 2008  Masaki Suketa  <masaki.suketa@n...>
 
 	* ext/win32ole/win32ole.c (Init_win32ole): add
@@ -4,7 +11,7 @@
 	  WIN32OLE_EVENT#off_event.
 
 	* test/win32ole/test_win32ole_event.rb: ditto.
-	
+
 	* test/win32ole/test_win32ole_event.rb: some refactoring.
 
 Fri Jul 25 19:50:49 2008  Nobuyoshi Nakada  <nobu@r...>
Index: test/win32ole/test_err_in_callback.rb
===================================================================
--- test/win32ole/test_err_in_callback.rb	(revision 0)
+++ test/win32ole/test_err_in_callback.rb	(revision 18215)
@@ -0,0 +1,73 @@
+#
+# test Win32OLE avoids cfp consistency error when the exception raised
+# in WIN32OLE_EVENT handler block. [ruby-dev:35450]
+#
+
+begin
+  require 'win32ole'
+rescue LoadError
+end
+require 'rbconfig'
+require 'mkmf'
+require 'test/unit'
+if defined?(WIN32OLE)
+  class TestErrInCallBack < Test::Unit::TestCase
+    def setup
+      @ruby = nil
+      if File.exist?("./" + CONFIG["RUBY_INSTALL_NAME"] + CONFIG["EXEEXT"])
+        @ruby = "./" + CONFIG["RUBY_INSTALL_NAME"]
+        @iopt = $:.map {|e|
+          " -I " + e
+        }.join("")
+        @script = File.dirname(__FILE__) + "/err_in_callback.rb"
+        @param = create_temp_html
+        @param = "file:///" + @param.gsub(/\\/, '/')
+      end
+    end
+
+    def create_temp_html
+      fso = WIN32OLE.new('Scripting.FileSystemObject')
+      dummy_file = fso.GetTempName + ".html"
+      cfolder = fso.getFolder(".")
+      @str = "This is test HTML file for Win32OLE (#{Time.now})"
+      f = cfolder.CreateTextFile(dummy_file)
+      f.writeLine("<html><body><div id='str'>#{@str}</div></body></html>")
+      f.close
+      dummy_path = cfolder.path + "\\" + dummy_file
+      dummy_path
+    end
+
+    def test_err_in_callback
+      if @ruby
+        r = `#{@ruby} #{@iopt} #{@script} #{@param}`
+        assert_match(/NameError/, r)
+      end
+    end
+
+    def ie_quit
+      sh = WIN32OLE.new('Shell.Application')
+      sh.windows.each do |w|
+        if w.ole_type.name == 'IWebBrowser2'
+          20.times do |i|
+            if w.locationURL != "" && w.document
+              break
+            end
+            WIN32OLE_EVENT.message_loop
+            sleep 1
+          end
+          e = w.document.getElementById("str")
+          if e && e.innerHTML == @str
+            w.quit
+            WIN32OLE_EVENT.message_loop
+            sleep 0.2
+          end
+        end
+      end
+    end
+
+    def teardown
+      WIN32OLE_EVENT.message_loop
+      ie_quit
+    end
+  end
+end
Index: test/win32ole/err_in_callback.rb
===================================================================
--- test/win32ole/err_in_callback.rb	(revision 0)
+++ test/win32ole/err_in_callback.rb	(revision 18215)
@@ -0,0 +1,11 @@
+require 'win32ole'
+ie = WIN32OLE.new('InternetExplorer.Application')
+ie.visible = true
+WIN32OLE_EVENT.message_loop
+sleep 0.2
+ev = WIN32OLE_EVENT.new(ie)
+
+ev.on_event('BeforeNavigate2') {|*args|
+  foo
+}
+ie.navigate(ARGV.shift)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]