[#21809] lib/test/unit/ui/tk/testrunner.rb — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
なかだです。
こんにちは、なかむら(う)です。
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
[#21830] pty on FreeBSD — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#21846] StringIO#path — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#21876] get_last_error or getLastError by DL::Importable — Take_tk <ggb03124@...>
たけ(tk)です。
[#21883] right hand Regexp — Koji Arai <JCA02266@...>
新井です。
[#21899] core dump in rb_hash_aset — Tanaka Akira <akr@...17n.org>
% ruby -e 'h = {}
まつもと ゆきひろです
In article <1068753744.644627.6908.nullmailer@picachu.netlab.jp>,
[#21932] rough / tabs.rb — Minero Aoki <aamine@...>
青木です。
[#21939] StringIO.new("").read — Tanaka Akira <akr@...17n.org>
ふと気がついたのですが、
[#21942] Zlib::GzipReader#read — Tanaka Akira <akr@...17n.org>
ふと気がついたのですが、
[#21943] IO#read — Tanaka Akira <akr@...17n.org>
ふと。
In article <87u1523sjj.fsf@serein.a02.aist.go.jp>,
なかだです。
In article <200311250059.hAP0xSYw004490@sharui.nakada.kanuma.tochigi.jp>,
[#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@...>
こんにちは、なかむら(う)です。
Siena. です。
青木です。それにしても凄い Subject だ。
[#22000] purge pthread at configure — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#22013] HTTP_PROXY — Tanaka Akira <akr@...17n.org>
ふと
[#22025] --enable-pthread on FreeBSD — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#22042] ENV["path"].tainted? — Tanaka Akira <akr@...17n.org>
ENV["path"] の値が
まつもと ゆきひろです
In article <1069748137.095435.3356.nullmailer@picachu.netlab.jp>,
斜め読みですが、
まつもと ゆきひろです
In message <1070234162.951847.24883.nullmailer@picachu.netlab.jp>
[#22057] drb/drb.rb document — Minero Aoki <aamine@...>
青木です。
[#22071] Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
はじめまして。山本といいます。
Siena. です。
> 山本さんのパッチがうまく当たらず手パッチしたので、念のため何度か
Siena. です。
こんにちは、山本です。
山本です。
山本です。
山本です。
山本です。glob_helperをリファクタリングしてみました。
なかだです。
山本です。
なかだです。
山本です。
Siena. です。
山本です。
山本です。
まつもと ゆきひろです
山本です。
山本です。パッチを送ります。
山本です。
山本です。
山本です。
山本です。
まつもと ゆきひろです
>すいません。パッチを出す時にはいつもどの時点のソースに対する
まつもと ゆきひろです
>|すみません、1.8.1に対してです。
まつもと ゆきひろです
こんにちは、山本です。
まつもと ゆきひろです
山本です。
山本です。
山本です。[ruby-dev:22470]にバグがあったので修正しました。
>山本です。[ruby-dev:22470]にバグがあったので修正しました。
まつもと ゆきひろです
山本です。
山本です。
In message <20040102230135.027CDAF8.ocean@m2.ccsnet.ne.jp>
山本です。
まつもと ゆきひろです
山本です。
山本です。
山本です。
なかだです。
山本です。
なかだです。
山本です。
[ruby-dev:21917] Re: lib/test/unit/ui/{tk,gtk}/testrunner.rb
なかだです。
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はできる。
中田 伸悦