Edited at

SublimeTextのpluginをテストする

More than 3 years have passed since last update.

みなさん、テスト書いてますか?

当然書いてますよね〜。

だがしかし…

まったく恥ずかしいことに、

KARAPPOにはまだテストの文化がありません orz…

弊社の場合、見た目的な部分はテストしにくかったり、業務の大半はシステム的にそれほど複雑でなかったりするのが主な理由です。作るもののプラットフォームが様々で個別にテストの方法が違うため、ノウハウが蓄積しにくいのもあります。また、テストが必要な場合でも、その習慣がないためにどうしても後回しになってしまうのですが、やらなきゃという不安感をいつも抱えています。なので、ここ2年くらい、特に長期に渡ってメンテナンスをするプロジェクトでは、テストカバレッジを上げようと地道に努力しているところです。

2年前にリリースしたjuery.kerning.jsも、TravisでCIを回して、READMEにstatus badgeを表示しています(これあるだけでも意志表示の意味で安心感ありますね)。最低限の内容ですが、一度仕組みづくりをしてしまえば、範囲を広げていくのはゼロからよりも簡単にできるようになります。

(前置きが長くなりました…)

今回、記事を書こうと思ったのは、3年前に個人的に作ったMarkdownTOCというSublimeText用プラグインのテストおよびCI環境を、ようやく整えることができたからです1

最初はクライアント納品用のシステムの取扱説明ページなどを、Markdownで手軽に作れるようにしたくて、その目次作りを楽にするために作りました。最近では自分の本業ではほとんど出番がなく、むしろユーザーから集まる要望などに応えるのがメインになっています。そのためメンテナンスをするときは、大抵久しぶりに触る状態なので、不用意にデグレードしてしまうのも怖かった、できるだけ早くテスト導入したかったのです。ただ、ちゃんと動くテスティングフレームワークにたどり着くのに、かなり時間がかかってしまいました。

上に例で書いたjQueryプラグインの場合は、QUnitとTravisCIという組み合わせがデファクトなので、それに乗っかっていればよかったのですが、SublimeTextの場合は何がよいのか、オフィシャルサイトにも特に言及が見当たらず。検索してたどりついたのがsublime-plugin-testsだったんですが、これが手元の環境だと動かない・・・2

暇をみつけては、何度もトライしたのですが、どうしてもうまく使えなかったので、他の選択肢を探し始めました。以前は探し方が悪かったのか、すぐにUnitTestingというのを見つけました。READMEのIntroductionのところに他のフレームワークについての言及があって『フムフム』と思ったり、ST2,ST3両方のバージョンを、しかもTravisAppVeyorを使ってMacとWindows両方のプラットフォームでCI回せるなんて『カッチョいい!』と思ったり、そして何よりサンプルがちゃんと動いたので(泣)、こいつに決めました。

まだ、カバーできていないところはありますが、ざっくり一通りの機能のテストを書いてCI回して、ST2でエラーが起こってるのに気づいたりしたので、改めてテスト書いてよかったと思いました。今後もカバレッジ上げていきたいと思います!Sublime Plugin作ってる人の記事とか日本語であまり見かけないので、またはまる人がいるかもなと思って、(あと社内のテスト文化活性化のために)長文のエントリーしました。


あと最近、機械学習の勉強を始めたいなと思って、Pythonの勉強をはじめました。Python Tutorialの日本語訳を順にやってます。あとはUdemyのこのコース。きっかけは、完全にRebuild #132です。ものになるのは来年以降になりそうですが、こちらも地道に頑張ります。


この記事は2015.3.27にこちらのURLで公開していた内容を移行しました。





  1. このプラグイン、いつの間にか10Kダウンロードまであと少しという感じにジワジワなってます。論文書くのにMarkdown使ってる人が多いらしく、学生さんや研究者っぽい人たちが使ってくれているようです。ただ、こいつのclone?と思われるAtom用の同名のプラグインがもっとダウンロードされているのが悔しいです。いや、Atom重くて使いたくないし、普段あまり触れないPythonの勉強にもなるからいんですけど… 



  2. サンプルのテストのままでも、実行するとSublimeが立ち上がってそこで止まってしまう症状でエラー出力もなく謎