[#30872] segv when reentering into Fiber with callcc — sheepman <sheepman@...>

こんばんは、sheepman です。

15 messages 2007/06/01
[#30899] Re: segv when reentering into Fiber with callcc — SASADA Koichi <ko1@...> 2007/06/06

 ささだです。

[#30905] Re: segv when reentering into Fiber with callcc — "Yusuke ENDOH" <mame@...> 2007/06/06

遠藤と申します。

[#30906] Re: segv when reentering into Fiber with callcc — SASADA Koichi <ko1@...> 2007/06/06

 ささだです。

[#30929] secrand.rb — "NAKAMURA, Hiroshi" <nakahiro@...>

-----BEGIN PGP SIGNED MESSAGE-----

51 messages 2007/06/08
[#30930] Re: secrand.rb — Tanaka Akira <akr@...> 2007/06/08

In article <4669066C.2080307@sarion.co.jp>,

[#30934] Re: secrand.rb — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/06/08

-----BEGIN PGP SIGNED MESSAGE-----

[#30935] Re: secrand.rb — Tanaka Akira <akr@...> 2007/06/08

In article <46694461.4060706@sarion.co.jp>,

[#30936] Re: secrand.rb — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/06/08

-----BEGIN PGP SIGNED MESSAGE-----

[#30938] Re: secrand.rb — Tanaka Akira <akr@...> 2007/06/08

In article <46697C0B.8060402@sarion.co.jp>,

[#30939] Re: secrand.rb — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/06/08

-----BEGIN PGP SIGNED MESSAGE-----

[#30940] Re: secrand.rb — Tanaka Akira <akr@...> 2007/06/08

In article <4669DAB0.4050705@sarion.co.jp>,

[#30944] Re: secrand.rb — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/06/09

-----BEGIN PGP SIGNED MESSAGE-----

[#30945] Re: secrand.rb — Tanaka Akira <akr@...> 2007/06/09

In article <466AA73C.9030407@sarion.co.jp>,

[#30946] Re: secrand.rb — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/06/09

-----BEGIN PGP SIGNED MESSAGE-----

[#30950] Re: secrand.rb — Nobuyoshi Nakada <nobu@...> 2007/06/11

なかだです。

[#31173] Re: Random — Tanaka Akira <akr@...> 2007/07/10

In article <469253E9.9010203@sarion.co.jp>,

[#31174] Re: Random — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/07/10

-----BEGIN PGP SIGNED MESSAGE-----

[#31178] Re: Random — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/07/11

-----BEGIN PGP SIGNED MESSAGE-----

[#31179] Re: Random — Tanaka Akira <akr@...> 2007/07/11

In article <4694338C.7090303@sarion.co.jp>,

[#31183] Re: Random — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/07/11

-----BEGIN PGP SIGNED MESSAGE-----

[#30971] Linux/ia64で'ucontext_t' undeclared — akira yamada / やまだあきら <akira@...>

最近のRuby 1.9をLinux/ia64上でmakeしようとすると

16 messages 2007/06/13
[#30973] Re: Linux/ia64で'ucontext_t' undeclared — Yukihiro Matsumoto <matz@...> 2007/06/13

まつもと ゆきひろです

[#30974] Re: Linux/ia64で'ucontext_t' undeclared — akira@... 2007/06/13

Yukihiro Matsumoto さんは書きました:

[#30975] Re: Linux/ia64で'ucontext_t' undeclared — Yukihiro Matsumoto <matz@...> 2007/06/13

まつもと ゆきひろです

[ruby-dev:31076] Re: $&;[] dumps core

From: SASADA Koichi <ko1@...>
Date: 2007-06-27 18:45:09 UTC
List: ruby-dev #31076
 ささだです。

Yusuke ENDOH wrote:
>> ついでに、出来たら testcase な書き方で例を出していただける
>> と、テストにさくっと追加できて幸せです。
> 
> よくわかりませんが、a = ($&;[]); assert_equal([], a) とか書けば
> いいんでしょうか。

 いい機会なのでまとめておきます。

 現在、テストを書くところが Ruby にはいくつかあります。以下に
私が知っていることを書きますので参考にしてください。私の調べた
範囲だけなので、何か不備・不足があればご指摘ください。


(1) bootstraptest/

目的・特徴:
・メソッド呼び出しや多重代入など、「動かないと話ならない」
 機能をテスト
・たとえば、コアの中身を変えた時などに利用。あと、別の Ruby イ
ンタプリタの開発初期などに利用可能だと思う
・後述の sample/test.rb の欠点を補うために用意
・テストごとに別プロセスで実行するので、大きなプログラムでしか
再現しないバグ(GCのバグなど)は発見できないことが多い
・テストごとに別プロセスで実行するので、状態を変にするプログラ
ムのテストには適している(Kernelのメソッド再定義実験とか)
・テスト管理プログラムが 1 file (bootstraptest/runner.rb)な
ので、簡単にいじったりできる。

記述方法:
・bootstraptest/test*.rb に記入
・make btest で bootstraptest/test_*.rb 全部を実行
・assert_equal(expected, program) と記述
・program は単体で実行可能なこと

実行方法:
・make btest OPTS='--set foo' で、foo というファイル名を実行
・BASERUBY(ruby 1.8 など、外部プログラム)でテストを実行
(driver)。つまり、テストする側は信頼できる(たぶん)
・driver は、ビルドした miniruby (target)に、program を実行
させ、その結果を expected と比較する。
・target を変更するには OPTS に --ruby=[target] を追加する。た
とえば、jruby を指定すれば、jruby の 1.9 仕様チェックになる
(やるのかしらん)


(2) sample/test.rb

目的・特徴:
・従来からあった処理系のテスト。bootstraptest/ 相当だった。
・一か所で例外が起きると、その後実行されないので、網羅的なテス
トには向かない
・たくさん機能をテストするので、ある程度完成度の高い処理系じゃ
ないとテストを通らない。というか、テストが最後まで実行できない
・なので、failure はあるが、yarv は結構凄い。
・昔からあるテストなので、インストール前にとりあえず試す人が多い。

記述方法:
・sample/test.rb に記入
・test_ok() メソッドの第一引数に false が来ると失敗
・test_ok(expected == result) がイディオム

実行方法:
・make test で実行
・ビルドした miniruby で全部実行
・miniruby なので拡張ライブラリ(.so)が使えない。
・ビルドした miniruby が腐ってると、テスト結果も信用ならないか
もしれない


(3) test/

目的:
・test/unit を利用したテスト
・主に、拡張ライブラリやライブラリのテストなどに利用
・ruby のコアの機能についてのテストも存在
・test/unit は optparse.rb を利用しているが、optparse.rb は変
態的な Ruby の機能をたくさん使っているので、かなり完成度の高い
Ruby処理系じゃないと、このテストは実行できない
・もちろんビルドした ruby が腐っていると結果は信用できないが、
test/unit が実行できている時点で大分信用できるかもしれない(で
きないかもしれない。実体験として。)

記述方法:
・test/unit の記法により記述
・test/test_foo.rb、もしくは test/foo/test_*.rb に記述
・ruby のコア機能は test/ruby/test_*.rb に記述

実行方法:
・make test-all と実行すると、test/ 以下の全テストが実行される
・make test-all TESTS=xxx とすると、xxx のテストが実行される
 たとえば、TESTS=ruby だと、test/ruby/ 以下が実行される
・TESTS に '-x yyy' とすると、yyy という名前の含んだテストが実
行されない。
・TESTS に '-v' を含ませておくと、テスト項目が表示される
・その他、オプションは test/unit に準ずる(多分)
・ビルドした ruby プログラムで全部実行する
・ruby なので拡張ライブラリ(.so)を使える



 で、今回のケースを (1), (2), (3) のどれに分類するか、なんで
すが、あんまり統一した基準がありません。上記特徴を見て、書きや
すいところがいいのかもしれません。

 たとえば、bootstraptest/test_mine.rb というファイルを作っ
て、そこに assert_equal() として記述しておいてやり、make btest
 OPTS=--set=mine として実行するようにすれば、自分用テストがや
りやすいかもしれません。


 そういえば、今のバージョンって田中所有の網羅的なテストって
通ってます?

-- 
// SASADA Koichi at atdot dot net

In This Thread