[#21809] lib/test/unit/ui/tk/testrunner.rb — Kazuhiro NISHIYAMA <zn@...>

西山和広です。

23 messages 2003/11/01
[#21815] Re: lib/test/unit/ui/tk/testrunner.rb — Hidetoshi NAGAI <nagai@...> 2003/11/01

永井@知能.九工大です.

[#21858] Re: lib/test/unit/ui/tk/testrunner.rb — nobu.nakada@... 2003/11/06

なかだです。

[#21859] Re: lib/test/unit/ui/tk/testrunner.rb — Hidetoshi NAGAI <nagai@...> 2003/11/06

永井@知能.九工大です.

[#21860] Re: lib/test/unit/ui/tk/testrunner.rb — nobu.nakada@... 2003/11/06

なかだです。

[#21861] Re: lib/test/unit/ui/tk/testrunner.rb — Hidetoshi NAGAI <nagai@...> 2003/11/07

永井@知能.九工大です.

[#21862] Re: lib/test/unit/ui/tk/testrunner.rb — nobu.nakada@... 2003/11/07

なかだです。

[#21946] Re: [ruby-cvs] ruby, ruby/lib, ruby/test/fileutils: * lib/fileutils.rb (fu_same?): check by inode instead of path name, to detect two hard links pointing to the same content. — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

14 messages 2003/11/18
[#21972] Re: [ruby-cvs] ruby, ruby/lib, ruby/test/fileutils: * lib/fileutils.rb (fu_same?): check by inode instead of path name, to detect two hard links pointing to the same content. — siena@... (Siena. / SHINAGAWA, Norihide) 2003/11/19

Siena. です。

[#22013] HTTP_PROXY — Tanaka Akira <akr@...17n.org>

ふと

19 messages 2003/11/24

[#22042] ENV["path"].tainted? — Tanaka Akira <akr@...17n.org>

ENV["path"] の値が

14 messages 2003/11/25
[#22043] Re: ENV["path"].tainted? — matz@... (Yukihiro Matsumoto) 2003/11/25

まつもと ゆきひろです

[#22071] Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

はじめまして。山本といいます。

119 messages 2003/11/28
[#22075] Re: Dir.glob と Shjift_JIS について — siena@... (Siena. / SHINAGAWA, Norihide) 2003/11/29

Siena. です。

[#22076] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/11/29

> 山本さんのパッチがうまく当たらず手パッチしたので、念のため何度か

[#22078] Re: Dir.glob と Shjift_JIS について — siena@... (Siena. / SHINAGAWA, Norihide) 2003/11/29

Siena. です。

[#22089] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/11/30

こんにちは、山本です。

[#22100] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/01

山本です。

[#22147] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/05

山本です。

[#22258] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/13

山本です。glob_helperをリファクタリングしてみました。

[#22263] Re: Dir.glob と Shjift_JIS について — nobu.nakada@... 2003/12/13

なかだです。

[#22267] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/13

山本です。

[#22441] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/27

山本です。

[#22442] Re: Dir.glob と Shjift_JIS について — matz@... (Yukihiro Matsumoto) 2003/12/27

まつもと ゆきひろです

[#22443] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/28

山本です。

[#22444] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/28

山本です。パッチを送ります。

[#22445] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/28

山本です。

[#22446] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/28

山本です。

[#22447] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/28

山本です。

[#22449] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/29

山本です。

[#22451] Re: Dir.glob とShjift_JIS について — matz@... (Yukihiro Matsumoto) 2003/12/29

まつもと ゆきひろです

[#22452] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/30

>すいません。パッチを出す時にはいつもどの時点のソースに対する

[#22453] Re: Dir.glob とShjift_JIS について — matz@... (Yukihiro Matsumoto) 2003/12/30

まつもと ゆきひろです

[#22454] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/30

>|すみません、1.8.1に対してです。

[#22455] Re: Dir.glob とShjift_JIS について — matz@... (Yukihiro Matsumoto) 2003/12/30

まつもと ゆきひろです

[#22456] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/30

こんにちは、山本です。

[#22457] Re: Dir.glob とShjift_JIS について — matz@... (Yukihiro Matsumoto) 2003/12/30

まつもと ゆきひろです

[#22470] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/31

山本です。

[#22471] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/01

山本です。

[#22476] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/02

山本です。[ruby-dev:22470]にバグがあったので修正しました。

[#22477] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/02

>山本です。[ruby-dev:22470]にバグがあったので修正しました。

[#22478] Re: Dir.glob とShjift_JIS について — matz@... (Yukihiro Matsumoto) 2004/01/02

まつもと ゆきひろです

[#22151] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/05

山本です。

[ruby-dev:21917] Re: lib/test/unit/ui/{tk,gtk}/testrunner.rb

From: nobu.nakada@...
Date: 2003-11-12 13:50:05 UTC
List: ruby-dev #21917
なかだです。

At Sat, 1 Nov 2003 22:56:29 +0900,
Kazuhiro NISHIYAMA wrote:
> == 既知の問題点:
> : test/runner.rb --runner=tkを実行するとfailureが4つある。
>   --runner=foxと共通のfailure(test_add_failed_assertionと
>   test_add_failure_nested)とtest_assert_nothing_thrownと
>   test_assert_throws。

throw関係は、uncaught throwがメインスレッドではNameErrorそれ以
外ではThreadErrorになるのが原因なのでassertions.rbのほうで対応
させました。

もう一方のtest_add_failed_assertionとtest_add_failure_nestedは、
backtracefilterがtest/unit以外のライブラリが間に入ることを想定
していないのが原因のようです。testrunnerで取り除くべきprefixを
追加するという手段も考えられますが、テストスレッドとGUIスレッド
を逆転させてみました。foxはインストールしてないので、tkとgtkの
みですが。

分かっている問題点としては以下の二つ。

* テスト実行中にウィンドウを閉じると、エラーが出ることがある
  (tk,gtkともに)。今はrescueでごまかし。

* gtkのプログレスバーの最大値かなにかがおかしいのか、40くらいで
  右端までいってしまう。


Index: lib/test/unit/ui/gtk/testrunner.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/lib/test/unit/ui/gtk/testrunner.rb,v
retrieving revision 1.3
diff -u -2 -p -r1.3 testrunner.rb
--- lib/test/unit/ui/gtk/testrunner.rb	11 Nov 2003 14:57:15 -0000	1.3
+++ lib/test/unit/ui/gtk/testrunner.rb	12 Nov 2003 10:52:06 -0000
@@ -5,5 +5,10 @@
 # License:: Ruby license.
 
-require 'gtk'
+begin
+  verbose, $VERBOSE = $VERBOSE
+  require 'gtk'
+ensure
+  $VERBOSE = verbose
+end
 require 'test/unit/ui/testrunnermediator'
 require 'test/unit/ui/testrunnerutilities'
@@ -35,4 +40,12 @@ module Test
               @suite = suite
             end
+
+            @main_thread = Thread.current
+            @restart_signal = Class.new(Exception)
+            @gtk_thread = Thread.start do
+              Thread.stop
+              Gtk.main
+              @main_thread.raise(SystemExit)
+            end
           end
 
@@ -56,5 +69,5 @@ module Test
           
           def attach_to_mediator # :nodoc:
-            run_button.signal_connect("clicked", nil) { @mediator.run_suite }
+            run_button.signal_connect("clicked", nil) {restart}
             @mediator.add_listener(TestRunnerMediator::RESET, &method(:reset_ui))
             @mediator.add_listener(TestResult::FAULT, &method(:add_fault))
@@ -66,9 +79,14 @@ module Test
           
           def start_ui # :nodoc:
-            timer = Gtk::timeout_add(0) {
-              Gtk::timeout_remove(timer)
+            @gtk_thread.run
+            begin
               @mediator.run_suite
-            }
-            Gtk.main
+              @gtk_thread.join
+            rescue @restart_signal
+              retry
+            rescue
+            end
+            abort if @red
+            exit
           end
           
@@ -76,6 +94,11 @@ module Test
             Gtk.main_quit
           end
+
+          def restart
+            @main_thread.raise(@restart_signal)
+          end
           
           def reset_ui(count) # :nodoc:
+            @test_total_count = count.to_f
             test_progress_bar.set_style(green_style)
             test_progress_bar.configure(0, 0, count)
@@ -120,4 +143,6 @@ module Test
             failure_count_label.set_text(result.failure_count.to_s)
             error_count_label.set_text(result.error_count.to_s)
+            @failed ||= result.failure_count.nonzero?
+            @failed ||= result.error_count.nonzero?
           end
           
Index: lib/test/unit/ui/tk/testrunner.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/lib/test/unit/ui/tk/testrunner.rb,v
retrieving revision 1.2
diff -u -2 -p -r1.2 testrunner.rb
--- lib/test/unit/ui/tk/testrunner.rb	12 Nov 2003 08:32:54 -0000	1.2
+++ lib/test/unit/ui/tk/testrunner.rb	12 Nov 2003 12:32:12 -0000
@@ -25,5 +25,4 @@ module Test
           def self.run(suite)
             new(suite).start
-
           end
 
@@ -39,5 +38,11 @@ module Test
             @red = false
             @fault_detail_list = []
-            @run_suite_thread = nil
+            @run_suite_thread = Thread.current
+            @restart_signal = Class.new(Exception)
+
+            @tk_thread = Thread.start do
+              Thread.stop
+              ::Tk.mainloop
+            end
           end
 
@@ -61,5 +66,5 @@ module Test
 
           def attach_to_mediator # :nodoc:
-            @run_button.command(method(:run_suite))
+            @run_button.command(method(:restart))
             @fault_list.bind('ButtonPress-1', proc{|y|
               fault = @fault_detail_list[@fault_list.nearest(y)]
@@ -77,15 +82,14 @@ module Test
 
           def start_ui # :nodoc:
-            run_suite
+            @tk_thread.run
             begin
-              ::Tk.mainloop
-            rescue Exception
-              if @run_suite_thread and @run_suite_thread.alive?
-                @run_suite_thread.raise $!
-                retry
-              else
-                raise
-              end
+              run_suite
+              @tk_thread.join
+            rescue @restart_signal
+              retry
+            rescue
             end
+            abort if @red
+            exit
           end
 
@@ -94,4 +98,8 @@ module Test
           end
 
+          def restart
+            @run_suite_thread.raise(@restart_signal)
+          end
+
           def reset_ui(count) # :nodoc:
             @test_total_count = count.to_f
@@ -137,4 +145,6 @@ module Test
             @failure_count_label.value = result.failure_count
             @error_count_label.value = result.error_count
+            @failed ||= result.failure_count.nonzero?
+            @failed ||= result.error_count.nonzero?
           end
 
@@ -208,10 +218,5 @@ module Test
 
           def run_suite # :nodoc:
-            run_proc = proc {
-              @run_suite_thread = Thread.start {
-                @mediator.run_suite
-              }
-            }
-            TkAfter.new(1000, 1, run_proc).start
+            @mediator.run_suite
           end
         end


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread