tengine_resourceコマンドのサーバーの登録・削除・一覧の機能ができました。
テストを作るに当たって、テスト対象となるtengine_resourceコマンドの実装をlib以下に移動して、クラスとしてテストできるようにしました。
デーモンとして動かしている場合にtengine/resource/cliを実行してしまうことがないように、autoloadでrequireするのではなく、明示的にrequireをするように変更しました
出力先を$stdoutを明示するようにしました。
Tengine::Resource::CLI::Server#listのテストを作って実装しました。ソートの条件を指定できるようにしました
gemfiles以下のバージョンに細かいバージョンを含めないようにしました。
gemfiles以下のバージョンに細かいバージョンを含めないようにしました。
railties-3.1.xがthor ~> 0.14.6に依存しているので、tengine_resourceも互換性のために ~> 0.17.0 ではなく >= 0.14.6 に依存するように変更しました
Tenigne::Resource::CLI::Server#add のテストを書きました。
テストが実行順によっては失敗することがあったので原因を調べ対応しました。
テストで使うgemのバージョンを見直し、pry関係のgemを追加しました。
tengine_resource server removeのテストを追加しました
travis上で実行するテストとして、tengine_resource_ec2とtengine_resource_wakameを追加しました。
spec_helperでpry-debuggerをrequireしていましたが、rspecの--requireオプションを指定するべきなのでspec_helperからは削除しました。
使用するpryのgemをもう一度見直しました
Travis-CI上でのみtengine_resource_ec2のテストが以下の様なエラーになっているので、Mongoidの継承に伴う接続の問題かと推測して修正を入れてみました

  1) Tengine::Resource::Server nameはユニーク PhysicalServerかVirutalServerかは名前の一意性に関係ない 同名のPhysicalServerが先にある場合
     Failure/Error: expect{
       expected Mongoid::Errors::Validations with message matching /Name is already taken/ but nothing was raised
     # ./spec/tengine/resource/server_spec.rb:79:in `block (4 levels) in <top (required)>'

  2) Tengine::Resource::Server nameはユニーク PhysicalServerかVirutalServerかは名前の一意性に関係ない 同名のVirtualServerが先にある場合
     Failure/Error: expect{
       expected Mongoid::Errors::Validations with message matching /Name is already taken/ but nothing was raised
     # ./spec/tengine/resource/server_spec.rb:88:in `block (4 levels) in <top (required)>'
uniquenessのvalidationでの例外を期待しているテストがTravis-CI上で失敗するので、調査のためのコードを追加します。
uniquenessのvalidationによるテストの失敗はmongoid-3.0.20移行のバグだったのでひとまず3.0.19を使用するようにしました。
原因がMongoidのバグであることが判明したので調査用のコードを削除しました。
原因のバグはこれです。 https://github.com/mongoid/mongoid/issues/2783
bin/tengine_resource credentialを実装しました。これに伴いthor-0.14.6でも正しく動作するようにoptionsの扱いを修正しました。