ブラウザでもNodejs環境でも動作するJavaScriptライブラリをGithubにのっけてある。
https://github.com/hMatoba/piexifjs
必要になったら使ってくださいというスタンスにしてある。信頼性確保のためにテストを書いてTravisCIで実行されるようにしていたが、テストはPhantomjsを使ってクライアントサイドのみを行っていた。クライアントサイド、サーバサイドの両対応がウリのライブラリなので両方のテストをTravisCIでやっておいて、ライブラリを見つけた人が信頼できるようにしたいので、サーバサイドのテストを行うようにちょっとファイルを追加したり。
クライアントサイドのテストはヘッドレスでブラウザが使えるPhantomjsに自作のテストフレームワークphestum.jsを使用し、
>phantomjs phestum.js mylib.js
上記コマンドで動くようになっていた。クライアントサイドはこのままで問題ないのでサーバサイドテストを追加する。
とりあえず簡単なテストを書き、nodetest.jsという名前で保存した。テストとして問題なく終了すればエラーコードなしで終了、問題があればエラーコード1で終了するようにしてある。これはNodejsで動かすのでコマンドとしては下記。
>node nodetest.js
上記のnodeコマンドは環境によってはnodejsでないと動かない。後で出てくるがDockerにてubuntu内ではnodejs、TravisCI環境ではnodeでコマンドが通る。
テストは用意した。あとはテストするだけ。TravisCIですぐに行ってもいいが、自分でDockerを使ってテスト環境を用意し、それにパスしたらTravisCIで行うようにしたほうが問題があったときに手っ取り早い。よってまずDockerを使ったテストの準備。下記が実際に使ったDockerfile。NodejsとPhantomjsのインストール、テストするライブラリやテストコードのコピーを行う。
準備ができたらイメージのビルドから実行までを行い、テストを通ることを確認する。テストに通らなかったら修正を加え、またビルドから実行まで。
docker build mylib_test .
docker run mylib_test


Dockerで用意した環境でテストが通ったのでTravisCIでも行う。.travis.ymlが下記。
これでTravisCIでもテストが行われる。テストはコマンドにあるとおり、Phantomjsを使ったクライアントサイド、Nodejsを使ったサーバサイドのテストが行われる。二つのコマンドが&&でつながれているので、問題なければ二つが順番に実行される。これでクライアントサイド、サーバサイド両対応のJavaScriptライブラリとして堂々と公開しておけるだろう。

https://travis-ci.org/hMatoba/piexifjs
https://github.com/hMatoba/piexifjs
必要になったら使ってくださいというスタンスにしてある。信頼性確保のためにテストを書いてTravisCIで実行されるようにしていたが、テストはPhantomjsを使ってクライアントサイドのみを行っていた。クライアントサイド、サーバサイドの両対応がウリのライブラリなので両方のテストをTravisCIでやっておいて、ライブラリを見つけた人が信頼できるようにしたいので、サーバサイドのテストを行うようにちょっとファイルを追加したり。
クライアントサイドのテストはヘッドレスでブラウザが使えるPhantomjsに自作のテストフレームワークphestum.jsを使用し、
>phantomjs phestum.js mylib.js
上記コマンドで動くようになっていた。クライアントサイドはこのままで問題ないのでサーバサイドテストを追加する。
とりあえず簡単なテストを書き、nodetest.jsという名前で保存した。テストとして問題なく終了すればエラーコードなしで終了、問題があればエラーコード1で終了するようにしてある。これはNodejsで動かすのでコマンドとしては下記。
>node nodetest.js
上記のnodeコマンドは環境によってはnodejsでないと動かない。後で出てくるがDockerにてubuntu内ではnodejs、TravisCI環境ではnodeでコマンドが通る。
テストは用意した。あとはテストするだけ。TravisCIですぐに行ってもいいが、自分でDockerを使ってテスト環境を用意し、それにパスしたらTravisCIで行うようにしたほうが問題があったときに手っ取り早い。よってまずDockerを使ったテストの準備。下記が実際に使ったDockerfile。NodejsとPhantomjsのインストール、テストするライブラリやテストコードのコピーを行う。
FROM ubuntu
RUN apt-get update && \
apt-get install -y nodejs && \
apt-get install -y phantomjs
RUN mkdir /test/
ADD . /test/
WORKDIR /test/
ENTRYPOINT phantomjs phestum.js piexif.js && nodejs nodetest.js
準備ができたらイメージのビルドから実行までを行い、テストを通ることを確認する。テストに通らなかったら修正を加え、またビルドから実行まで。
docker build mylib_test .
docker run mylib_test


Dockerで用意した環境でテストが通ったのでTravisCIでも行う。.travis.ymlが下記。
sudo: false
language: node_js
node_js:
- "0.12"
script: phantomjs phestum.js piexif.js && node nodetest.js
これでTravisCIでもテストが行われる。テストはコマンドにあるとおり、Phantomjsを使ったクライアントサイド、Nodejsを使ったサーバサイドのテストが行われる。二つのコマンドが&&でつながれているので、問題なければ二つが順番に実行される。これでクライアントサイド、サーバサイド両対応のJavaScriptライブラリとして堂々と公開しておけるだろう。

https://travis-ci.org/hMatoba/piexifjs
スポンサーサイト