成果物
雰囲気こんな感じです。
github.com/gongo/tpdiff/.travis.yml
経緯
gongo.hatenablog.com
- 先日書いた sed を、せっかくなので GitHub に置いておこう
- せっかく GitHub に置くのだからテストでも書こう
というところから始まりました。
https://github.com/gongo/tpdiff
さてテストを書くぞ!といったところで、何を重点的に見れば良いか:
- 使用する shell も人それぞれ違うはず
- sed には GNU 版 と BSD 版がある
この2点が特に注意すべきところと考えました。
1番に関しては「POSIX 準拠かどうか」みたいなのを ShellCheck を用いて確認はしているのですが、
やっぱり実際に動作した結果を見たいという気持ちがあります。
2番については、ユーザの使用マシンが Linux だったり OS X (macOS) だったりで sed にも違いが出てくるはずなので、ここも気をつけないといけません。
TraviCI ではこうしました
上記の注意点を踏まえ、TravisCI でテストを実行してもらうために
- 実行環境を Linux(Ubuntu) と OS X の2つを指定する
- テストしたい Shell をテスト前にインストールする
こんな感じにしました。
os:
- linux
- osx
env:
- SH=mksh
- SH=dash
- SH=bash
- SH=zsh
BSD sed が (TravisCI が用意する) Ubuntu 環境に簡単に用意できれば話は早かったのですが、なかなか難しそうだったので
BSD sed を標準で持つ OSX 環境を用意してもらうことで、そこを補うことにしました。
refs: The Build Environment - Travis CI
env
に定義したテスト対象のシェル選定理由なんですが、まあ特にこれといった理由はないんですけど、これぐらいカバーしてればいいかなーと。
ちょっとした問題点
TracisCI で OS X を使用すると、さすがに起動が遅くて全体的なテスト実行時間はそこそこ掛かってしまいます。
例えば https://travis-ci.org/gongo/tpdiff/builds/156956287 を見ると
> Elapsed time 21 min 12 sec
> Total time 3 min 51 sec
テストそのものの実行時間は短いのですが、環境を用意するのも併せると 20分ぐらい掛かっているのがわかります。
まあいいかってことで今は気にしてないです。
まとめ
どなたか Ubuntu で GNU/BSD sed を用意できる方法知りませんか
参考