scalazのテストでscalacheckやめたい

0
Noel @noelmarkham

Awesome, Scalacheck now has Cogen. Thanks @d6. twitter.com/scalacheck/sta…

2016-02-04 20:10:26
ScalaCheck @scalacheck

ScalaCheck 1.13.0 has (finally) been released! scalacheck.org

2016-02-04 07:49:03
Kenji Yoshida @xuwei_k

Cogenが入ったscalacheck 1.13.0リリースされたので、scalazはscala.js対応よりも、これやらなければ、となってるけど、これ github.com/rickynils/scal… 放置したままだった。猫の人達もこの問題に気がつくはずだし、そっちに任せるか(ぇ

2016-02-05 01:24:49
Kenji Yoshida @xuwei_k

なるほど、scalacheckのoneOfとかのいくつかの基本的なメソッドにはsuchThatが使われてて、suchThatにはfilterが使われてて、するとdiscardedが増えて残念なコトになる、みたいな酷い実装になってる気がするぞ・・・???つらい・・・

2016-02-06 03:13:13
Kenji Yoshida @xuwei_k

それらが原因で、さらにここ github.com/rickynils/scal… でOption.get使われてるので最終的にjava.util.NoSuchElementException: None.getが発生する、みたいな酷いことになる???

2016-02-06 03:16:31
@japgolly @japgolly

@xuwei_k Yep, ScalaCheck made me so frustrated before that I just gave up and created Nyaya. I'll need to learn your Cogen stuff though.

2016-02-06 05:45:04
Kenji Yoshida @xuwei_k

scalazのテスト書き換えるぞー、というissue投げたら、今のところあっさり賛成意見が2つだけで、とくに反対意見ないので、おやっ、いいんですか本当にやりますよ?、みたいな変な気分になっている

2016-02-06 17:10:06
Kenji Yoshida @xuwei_k

scalazのテスト全部書き換える(?)件、色々細かいところの設計判断などで誰かに相談したいけどキリがないし、反対意見なければ結局は自分が決めて入れてしまうかと思ってるけど、しかし自分の考え整理するためにも、せめて一旦blogか何かに書き出すか?みたいなことを考えているここ数日

2016-02-13 21:24:55
Kenji Yoshida @xuwei_k

大きなところだと、モジュールの分け方と、どの程度まで既存のテストに似せて書くか(or オリジナルのscalaprops維持して頑張って書き換えるか?)あたりかなぁ・・・。 書き換え、だいぶ手間で差分も出てしまうけど、既存のに無理に似せるために微妙な仕組み入ってしまうのも避けたいし

2016-02-13 21:27:30
Kenji Yoshida @xuwei_k

そしてあまり細かいこと考え過ぎると、やる気減ってきて結局書き換えなくてscalacheck使い続けるでもいいか、となってしまいそうなので、多少アレでもやる気が残っているうちに一気に数千行の差分の巨大pull reqを送ってしまいたい・・・難しい・・・

2016-02-13 21:30:11
ニャーニャーとなくぞんび @AoiroAoino

@xuwei_k お、ついに置き換えですか!?楽しみです💪💪💪

2016-02-14 00:55:18
Kenji Yoshida @xuwei_k

@AoiroAoino いやー、どうしますかねー。たぶん反対はされなそうだけど、こんなに大きい変更してしまっていいのか多少微妙な心境なのと、前述のtweetのとおり細かいところ色々悩みつつ超単純作業な書き換え進行中です(本当に全部のテスト書き換えなのでだいぶ時間かかってる・・・)

2016-02-14 01:00:40
Kenji Yoshida @xuwei_k

@AoiroAoino ちなみに、何かこのissueに書き込んでくれてもいいですよ(?) github.com/scalaz/scalaz/…

2016-02-14 01:14:58
Kenji Yoshida @xuwei_k

数千行のpull req送るとして、さすがにいつものような1行2行のメッセージじゃ申し訳ないから、日本語で下書きするなりして、誰かに相談しつつ多少まともなメッセージ作るべきかな・・・

2016-02-14 01:18:34
ニャーニャーとなくぞんび @AoiroAoino

@xuwei_k アァ...まだこれで全部ではないんですね...。たしかにこの規模の変更は怖さが...w とりあえず他のコミッタの方々がどんな反応するかはわからないですが、個人的なユーザー視点からは置き換えPR見てみたいです!楽しみです!って無責任な感想が(ぇ

2016-02-14 01:26:04
Kenji Yoshida @xuwei_k

@AoiroAoino まだ書き換えるべきファイル80くらい(?)残ってます・・・おそらく、まだ書き換えたのは3割程度・・・(死んだ目 なので、既存のscalazのテストのスタイルをあまり変更しなくて済むようにするべきか、が、悩みどころ・・・

2016-02-14 01:32:43
ニャーニャーとなくぞんび @AoiroAoino

@xuwei_k おっ、現状賛成👍だけなんですね!👍自分も 👍なので、代わりにtwitterの方で 👍しておきますね!👍👍👍

2016-02-14 01:32:51
ニャーニャーとなくぞんび @AoiroAoino

@xuwei_k oh...3割で...あれですか...。変更内容多すぎなので、今回の書き換えPRでは極力既存のスタイルを踏襲する方向ってのは全然ありな気がしますね...とても大変そうですけど...

2016-02-14 01:40:48
Kenji Yoshida @xuwei_k

@AoiroAoino scalapropsを作成するときも悩んだんですけど val foo = forAll みたいな形でテスト定義する仕組みにしたの、それにより「リフレクションのみで」簡単にテスト一覧取れる→クラス内の特定のテストのみ指定して実行可能、みたいな理由があり、

2016-02-14 01:45:06
Kenji Yoshida @xuwei_k

@AoiroAoino 既存の "foo" ! forAll { や "foo" in { みたいな形にしても "リフレクションのみで簡単に一覧取得" を多少諦めつつ考え直せば同じこと不可能ではないけど、それはそれで細かいところ悩みだすとキリがなくて難しいんですよね

2016-02-14 01:47:45
ニャーニャーとなくぞんび @AoiroAoino

@xuwei_k 個人的にはDSLっぽいの好きですが、提供する側からすれば例えば今回の"リフレクションのみで簡単に一覧取得"ってメリットを多少なり捨ててでも提供する価値あるかな?って考え始めると、うぅむやっぱりキリないですしその辺トレードオフなのかなって思います(´・ω・`)

2016-02-14 02:10:47
ニャーニャーとなくぞんび @AoiroAoino

よしださんのscalazのtest書き換え作業、深夜のテンションで楽しみです!!とか<s>煽って</s>応援してみたけど、実際大変そうっぽくて(´・ω・`)

2016-02-14 02:17:58
Kenji Yoshida @xuwei_k

@AoiroAoino あとは、DSLっぽいのはなんとなくカッコイイ(?)けど、たぶんそれもこだわりだすとキリがなくて、似たような複数の書き方できてよくわからない、みたいになりそうで、そのアンチテーゼとして、そういうのは他のテストライブラリに頑張ってもらい、

2016-02-14 02:27:58
Kenji Yoshida @xuwei_k

@AoiroAoino property based testingの本質に集中するためにわざとDSL入れなかった面あるけど、そのあたり賛同してくれる人いるのかというのと、そもそも英語はおろか日本語でもそれを説明したことないので、まずは最低限そのあたりを説明するというタスク・・・

2016-02-14 02:28:23