facebook/jestに初めてのOSSプルリク投げた話とか

WEB+DB PRESS Vol.102のReact Native記事を写経していた時の話。

 

kdnakt.hatenablog.com

 

  

[初OSSプルリクがマージされた件]

jestを使っていたところ問題があったのでプルリクを送ったらマージしてもらえた。

github.com

 

テストコードをほとんど書いてこなかった自分の人生初のOSSプルリクがテストライブラリというのは、成長の証だろうか。しかし、修正した箇所のテストコードは(まだ)ない。

 

仕事でBitBucketやGitLabを使っているので、プルリクエストやマージリクエスト自体は初めてではなかったが、OSSにプルリクを投げるという行為は初めてだったので色々と緊張する場面もあったが、ガイドラインに従って作業したので特に困ることはなかった。

github.com

 

唯一困ったことといえば、フォークしたmasterブランチで修正前のyarn testコマンドがこけた時くらいか。

 

ともあれ、This is an awesome tiny fix.というプルリクへのレビュアーコメントは励みになる。

ブログには書いていなかったかもしれないが、今年の目標の1つはOSSにプルリクを3件投げる、なので33%達成したと言える。否。ブログでネタにするまでがプルリクだ。

 

 

[jestのスナップショットファイル更新できない問題] 

OSSプルリクに至ったきっかけは、天気予報アプリ(GitHub - kdnakt/Webdb102Weather)を写経していた時に、 戯れにスナップショットテストを追加したことだ。

 

テストを実行するたびに、生成されるスナップショットのあるkeyのデータが実行日

 

時に依存しているらしく、何度やってもテスト後のスナップショットが以前保存していたものと異なることが原因でテストがfailしていた。その問題は該当項目をスナップショットとして保存しないように修正することで対応した。

 

しかし、ここからが長かった。

前の記事ではさらっとスナップショット更新できたふうに書いたが、、あそこで実は30分くらいハマってしまった。

 

f:id:kidani_a:20180125021212p:plain

画像にあるように、テストに失敗した際にjestが提示するコマンドはnpm test -uとなっていたが、WEB+DB PRESSの本文にも書いてあった通り、スナップショットを更新する場合には、npm test -- -uというコマンドが正しい。

docs.npmjs.com

 

jestのソースコードを読むと、どうやらyarnを使う場合とnpmを使ってテストを実行する場合に問題のメッセージが表示されるようだった。

試しにyarnをインストールして、同様のコマンドを実行してみると、yarnの場合にはyarn test -uでスナップショットを更新することができた。どうやらnpmの場合のメッセージのみを修正すればいいらしい、ということが分かった。

 

というわけで、今年の目標を思い出した自分はGitHubリポジトリを開き、ガイドラインに従ってプルリクをだし、何とかマージしてもらった、というわけ。

 

ちなみに修正後のメッセージがこちら。

f:id:kidani_a:20180125022705p:plain

 

[まとめ]

テストコードを書かずにプルリクを送ってしまい、カバレッジをわずかだが下げてしまったことが、やはり悔やまれる。次にプルリクを出す際は可能な限り、テストコードもまとめて1つのプルリクで送るようにしたい。 

とまあ反省はあるものの、気軽にガンガンプルリク送っていく所存。

 

というわけで早速テストコードを送ってみた。

github.com