Created
February 9, 2013 18:22
-
-
Save shibukawa/4746430 to your computer and use it in GitHub Desktop.
JSX new test-case.jsx feedback
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
今回はsetUpでエラーを起こしてみたのですが、ok扱いになってしまっていますね。これはngにしたほうがいいと思います。 | |
同じ例外のメッセージが3回でていますが、最後のだけでいいかな、と思います。 | |
スタックトレースも、多くの人はテスティングフレームワーク自身の部分には興味が無いと思うので、at TestCase.run$SF$V$以下の5行は抹消してもいいかも。 | |
---- | |
$ ./bin/jsx --add-search-path ./oktavia/lib --test ./oktavia/test/test_fm_index.jsx | |
1..22 | |
not ok 1 - test_sizefailed with exception: [oktavia/lib/wavelet_matrix.jsx:70:45] null access | |
this._bv[depth].set(range_tmp[key as string], bit); | |
^ | |
# Error: [oktavia/lib/wavelet_matrix.jsx:70:45] null access | |
# this._bv[depth].set(range_tmp[key as string], bit); | |
# ^ | |
# | |
# Error: [oktavia/lib/wavelet_matrix.jsx:70:45] null access | |
# this._bv[depth].set(range_tmp[key as string], bit); | |
# ^ | |
# | |
# at /private/var/folders/bw/7q92pn9s1m344dqf0tqnjq9r000_4n/T/test_fm_index.jsx.69252.13cc01adf60.js:2150:12 | |
# at WaveletMatrix.build$S (/private/var/folders/bw/7q92pn9s1m344dqf0tqnjq9r000_4n/T/test_fm_index.jsx.69252.13cc01adf60.js:2153:5) | |
# at FMIndex.build$SIB (/private/var/folders/bw/7q92pn9s1m344dqf0tqnjq9r000_4n/T/test_fm_index.jsx.69252.13cc01adf60.js:1544:11) | |
# at FMIndex.build$SI (/private/var/folders/bw/7q92pn9s1m344dqf0tqnjq9r000_4n/T/test_fm_index.jsx.69252.13cc01adf60.js:1508:7) | |
# at TestCase._Test.setUp$ (/private/var/folders/bw/7q92pn9s1m344dqf0tqnjq9r000_4n/T/test_fm_index.jsx.69252.13cc01adf60.js:660:10) | |
# at TestCase.run$SF$V$ (/private/var/folders/bw/7q92pn9s1m344dqf0tqnjq9r000_4n/T/test_fm_index.jsx.69252.13cc01adf60.js:179:8) | |
# at JSX.runTests (/private/var/folders/bw/7q92pn9s1m344dqf0tqnjq9r000_4n/T/test_fm_index.jsx.69252.13cc01adf60.js:3393:14) | |
# at Object.JSX.runTests (/private/var/folders/bw/7q92pn9s1m344dqf0tqnjq9r000_4n/T/test_fm_index.jsx.69252.13cc01adf60.js:3398:4) | |
# at /private/var/folders/bw/7q92pn9s1m344dqf0tqnjq9r000_4n/T/test_fm_index.jsx.69252.13cc01adf60.js:3404:5 | |
# at Object.<anonymous> (/private/var/folders/bw/7q92pn9s1m344dqf0tqnjq9r000_4n/T/test_fm_index.jsx.69252.13cc01adf60.js:3405:3) | |
1..0 | |
ok 1 - test_size |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Failureは、ユーザが指定したテストケースとの差分なので、詳細なスタックトレース(Error以降)はなくてもいいかと思います。スタックトレース中にユーザコードは最後のところしかないので、ここはjavascriptではなくて、JSXの行番号がわかると良いと思います。こんな感じはどうでしょうか。 | |
# position: test_bit_vector.jsx:test_rank:55 | |
# comparing with == | |
# got: 2 | |
# expected: 1 | |
not ok 4 - test_rankfailed with exception | |
---- | |
[09:57:32 yshibukawa@unknowne4ce8f157a58 (git:master) ~/develop/JSX_pull_request] | |
$ ./bin/jsx --add-search-path ./oktavia/lib --test ./oktavia/test/test_bit_vector.jsx | |
1..8 | |
ok 1 | |
ok 2 | |
ok 3 | |
ok 4 | |
1..4 | |
ok 1 - test_size | |
ok 1 | |
ok 2 | |
ok 3 | |
ok 4 | |
ok 5 | |
ok 6 | |
ok 7 | |
ok 8 | |
ok 9 | |
ok 10 | |
ok 11 | |
ok 12 | |
1..12 | |
ok 2 - test_get | |
ok 1 | |
ok 2 | |
not ok 3 | |
# comparing with == | |
# got: 2 | |
# expected: 1 | |
not ok 4 - test_rankfailed with exception | |
# Error | |
# Error | |
# at /private/var/folders/bw/7q92pn9s1m344dqf0tqnjq9r000_4n/T/test_bit_vector.jsx.69304.13cc01c0a8f.js:838:25 | |
# at Object.<anonymous> (/private/var/folders/bw/7q92pn9s1m344dqf0tqnjq9r000_4n/T/test_bit_vector.jsx.69304.13cc01c0a8f.js:2049:3) | |
# at Module._compile (module.js:449:26) | |
# at Object.Module._extensions..js (module.js:467:10) | |
# at Module.load (module.js:356:32) | |
# at Function.Module._load (module.js:312:12) | |
# at Module.require (module.js:362:17) | |
# at require (module.js:378:17) | |
# at eval (eval at <anonymous> (/Users/yshibukawa/develop/JSX_pull_request/bin/jsx:294:14)) | |
# at node.require$S (/Users/yshibukawa/develop/JSX_pull_request/bin/jsx:294:9) | |
1..3 | |
not ok 3 - test_rank |
僕は1ファイルずつしかテストを実行したこと無いですが、JSXって複数のファイルのテストを実行する機能ってないんでしたっけ?test.jsxからすべてのテストをimportするとかしてみましたが、実行されませんでしたが・・・
もし複数テストができる/将来的にやる可能性があるなら、setUp()/tearDown()の例外はキャッチすべきかと思います。今回のテスト用に意図的に混入させたバグも、部品(bit_vector)のテストでは「テスト失敗」になるけど、それを使っているモジュール(fm_index)はsetUpでそれを使っていて、それが原因でsetUpが失敗、というシチュエーションです。完全に失敗させてしまう&bit_vectorの方が後で実行されるとなると、エラーの原因を隠してわかりにくくしてしまう可能性があるかな、と思います。
もし複数テストに対応しないのであれば、今のままでも十分かと思います。
スタックトレースの行番号が変換後のJSであっても、関数名とエラーメッセージでだいたいは分かると思うので、かなり使いやすくなったと思います。
複数ファイルのテストはprove(1)で行なっているのですが、JSXコアでサポートするつもりはありません。
proveはPerl用のテストランナーなのですが、こんな感じの .proverc を定義したらあとは prove を起動するだけでJSXのテストができます。並列実行(-j4など; ただし新しめのバージョンが必要)やok行のtrimも行なってくれるので便利ですよ。
了解です!それなら問題ないと思います。
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
jsx/JSX@5ab6f5b...530cef2 で対応してみました。