Open usp TukubaiのテストをTravis CIでやってみた
Tue Sep 30 00:26:09 JST 2014 (modified: Fri Sep 29 21:38:45 JST 2017)
views: 1798, keywords:テスト,コマンド,シェルスクリプト,Travis,寝る この記事は最終更新日が7年以上前のものです。
bash騒ぎが収まってない中ではありますが、とある役得でTravis CIの使い方を覚えたのでOpen usp Tukubaiを自分のGitHubにフォークして使ってみました。
シェルスクリプトでテストスクリプトを書いている人って少ないかもしれませんが、シェルスクリプトでテストスクリプトを書いている人には簡単に使えます。というわけでテストはシェルスクリプトで書きましょう。bashを使うかどうかは・・・ご自身でご判断をorz。
前提
こんな状況です。
- Pythonで作ったOpen usp Tukubaiコマンドのテストをしたい。(なぜPythonなのかは聞かないでほしい)
- テストはシェルスクリプトで書いてある(テストスクリプトのディレクトリ)。各コマンドに対してテストのスクリプトがあり、このテストスクリプトの終了ステータスが0であることを以てテストにパスしたとする。(例: self.test)
- いつもは開発マシン(FreeBSD)で、regress.allを叩いてテストしている。(Haskell版は今回はテストしない。)
- Travis CIのアカウントを持っている。
サインインからリポジトリの連携までの設定
私が書くよりこちらがご参考なるかと・・・。http://sue445.hatenablog.com/entry/2013/06/01/170607
テスト方法の設定
リポジトリの下に.travis.ymlを作って、何をどうテストするか書きます。こんな感じです。使いたいPythonのバージョンを指定して、テストスクリプトをshで呼び出すだけです。
language: python
python:"2.7"
- "2.6"
- script:
/TEST/test.at.travis - sh -e .
Travis CIのために書いたテストはこちら。regress.allでは各Pythonのバージョンでの調査手続きが入っていましたが、それが不要なので新たに書き直しました。ただただ、各コマンドのテストスクリプトを順に並べただけです。for文使えとか言われるかもしれませんが、for使うくらいならベタに並べた方がよいというUSP流に従います。今の今だと、for文使ってないことよりもbashが並んでいることの方が刺激的かもしれませんが。
uedambp:Open-usp-Tukubai ueda$ head TEST/test.at.travis
PATH=$PATH:./COMMANDS
bash ./TEST/calclock.test COMMANDS ""
bash ./TEST/cjoin0.test COMMANDS ""
bash ./TEST/cjoin1.test COMMANDS ""
bash ./TEST/cjoin2.test COMMANDS ""
bash ./TEST/ctail.test COMMANDS ""
bash ./TEST/count.test COMMANDS ""
bash ./TEST/getlast.test COMMANDS ""
bash ./TEST/getfirst.test COMMANDS ""
###以後ひたすらベタにコマンドが並ぶ###
.travis.ymlでshに-eを指定しているので、並べたスクリプトのどれかがコケたら終了してテスト失敗と相成ります。1行目はテスト内でOpen usp Tukubaiを使うので、それのパス通しです。ディレクトリは、とりあえずリポジトリのディレクトリがカレントディレクトリとなるようです。
んでまあ最後に、READMEに
ボタンを貼り付けるために、READMEに拡張子.mdを加えて、Travisの画面の右上にある上のボタンをクリックしてコードをコピーし、貼付けました。
テスト結果は、https://travis-ci.org/ryuichiueda/Open-usp-Tukubaiの通りです。ログにエラーと出ていますが、これはエラーが出る事を確認するためのテストを行った結果のログなので問題ありません。各コマンドのテストスクリプトは(1個バグがあって直したものの)修正なしで使えました。しかも最初からsh(bash?)とbashが使えるので、.travis.ymlでshでシェルスクリプトを起動する設定を書いておけば他の設定は不要です。
これでMacでもLinux上でもバージョン違いのPythonでテストできるようになったので、私としては便利だなと。このままデプロイまでやればおもしろんですが、これはコマンドなのでデプロイはありません。これで地味に終了です。
まとめ
私のようにテストをシェルスクリプトで書く人間には有り難いサービスです。各コマンドのテストスクリプトは手直し無しで使えました。
もうちょっと調べなければいかんのはシバンの使い方で、/usr/local/bin/bashが通らなかったので、今回は使いませんでした。たぶん/bin/bashですかね。
bashのテストもこれ使えばいいのになんて考えましたが、アレのテストを気づくのに人類は20年かかってますので、便利なサービスを使えばよいというものではないでしょう。
寝る。