目次 |
---|
Foodcritic
http://acrmp.github.io/foodcritic/
Chef 専用の静的テストツールで、ChefDK に含まれています。
...
検出結果にはどのルールに違反しているかがわかるように、ルールの番号が付加されています。
Foorcritic の公式サイトには各ルールの詳細な情報と、修正例が記載されていますので、参考にしてください。
Reek
https://github.com/troessner/reek
複雑な Ruby コードを検出する静的テストツールです。
...
コード ブロック |
---|
chef exec reek ./ |
情報 |
---|
開発環境にはインストール済みです。 |
Flay
http://ruby.sadi.st/Flay.html
Ruby の重複コードを検出する静的テストツールです。
...
このツールも Ruby のものなので、利用するには chef gem install コマンド でインストールします。
情報 |
---|
開発環境にはインストール済みです。 |
ChefSpec
https://github.com/sethvargo/chefspec
Chef 専用の動的テストツールで、ChefDK に含まれています。
主に Recipe の DSL が期待通りにコンパイルされているかを確認します。
...
現状では ChefSpec は利用していませんし、よほど規模の大きい Cookbook を作らない限りは今後も利用しないと思います。
Serverspec
http://serverspec.org/
サーバーの状態をテストする動的テストツールです。
Chef 専用のものではありませんが、Kitchen が対応していて、標準で利用可能です。
今回は Kitchen から利用することを前提にすすめます。
テストコードの配置
Kitchen で Serverspec を実行する場合、テストコードを決まったパスに配置する必要があります。
...
※ _spec.rb の前の部分はなんでもいいようです。 Cookbook のテストの場合は Recipe の名前と同じにするのが多い気がします。
テストコードの記述
Serverspec のテストコードはものすごく簡単で、ドキュメント を見れば一目瞭然です。
...
コード ブロック |
---|
require 'serverspec' include Serverspec::Helper::Exec include Serverspec::Helper::DetectOS describe file('/etc/passwd') do it { should be_file } end |
Kitchen で Serverspec を実行
Kitchen インスタンスで Serverspec を実行するには、次のコマンドを使用します。
...
情報 |
---|
kitchen verify のほかに、kitchen test コマンドも存在します。 通常 kitchen test ではインスタンスの起動からテストの実行、インスタンスの破棄までを一気に実行します。 |
テストができたら
ここまでで第2回のハンズオンは終了です。
次のページ では開発環境を作るときに使用した Vagrant の基礎的な部分を紹介しています。
興味のある方は参考にしてください。
...