[Anthy-dev 777] Re: testing framework

アーカイブの一覧に戻る

Kouhei Sutou kou****@cozmi*****
2004年 4月 23日 (金) 01:38:16 JST


須藤です.

In <20040****@mbox0*****>
  "[Anthy-dev 776] Re: testing framework" on Thu, 22 Apr 2004 13:58:12 +0900,
  YamaKen <yamak****@bp*****> wrote:
> が、10回に1回程度の割合でnanosleepのループにはまってしまう事があ
> るようです。

  % uname -sr
  FreeBSD 5.2-RELEASE
  % gosh -V
  Gauche scheme interpreter, version 0.7.4.2 [utf-8]

な環境で確認しました.

添付のパッチでどうでしょうか.


>             さらに、私の方のLinux環境では修正前と全く同じ動作(=
> 動かない)でした。他の方のところではどうでしょうか?

手元の,下のような環境のDebian (sid)では,パッチを適用しても
しなくても問題なく動いています.

  % uname -sr
  Linux 2.6.5-1-k7
  % ls -l /lib/libc.so.6
lrwxrwxrwx    1 root     root           13 2004-01-22 23:35 /lib/libc.so.6 -> libc-2.3.2.so
  % gosh -V
  Gauche scheme interpreter, version 0.7.4.2 [utf-8,pthreads]

-------------- next part --------------
Index: test/uim-test-utils.scm
===================================================================
--- test/uim-test-utils.scm	(revision 740)
+++ test/uim-test-utils.scm	(working copy)
@@ -1,5 +1,5 @@
 (use gauche.process)
-(use gauche.charconv)
+(use gauche.selector)
 (use test.unit)
 
 (sys-putenv "LIBUIM_SCM_FILES" "./scm")
@@ -14,15 +14,19 @@
   (with-module test.unit add-test-case!))
 
 (define *uim-process* #f)
+(define *uim-selector* (make <selector>))
 (define (uim sexp)
   (write sexp (process-input *uim-process*))
   (flush-all-ports)
   (let ((output (process-output *uim-process*))
-        (err (wrap-with-input-conversion (process-error *uim-process*)
-                                         #f
-                                         :buffer-size 0)))
-    (while (char-ready? err)
-      (sys-nanosleep 100))
+        (err (process-error *uim-process*)))
+    (set! (port-buffering err) :none)
+    (selector-add! *uim-selector*
+                   err
+                   (lambda (sock flag)
+                     (selector-delete! *uim-selector* sock #f #f))
+                   '(r))
+    (selector-select *uim-selector*)
     (read err)))
 
 (define (uim-bool sexp)


Anthy-dev メーリングリストの案内
アーカイブの一覧に戻る