最近のawspec活動 その2

v0.27.1になりました


Evolution of awspec (Gource Visualization)

リソースタイプを増やした

現在23個になっています。もう少し増やしたい。けどユースケースを考えながら追加するので、なかなか増えない。。。

AWS Advent Calendar 2015に参加した

qiita.com

awspec generate という便利コマンドの実践的紹介です。

Fukuoka.rbの成果をリリースした

具体的な成果

実際に何を追加したかというと、aws-sdk-rubyAws::Resources::Resource を継承している Aws::EC2::Instance などを its() {} などで呼び出せるようにしました。

これが追加されたことで、aws-sdk-ruby を知っていれば、awspecでマッチャーが作られていないような細かい箇所についてのテストが書けるようになります。

例えばこんな感じで、

describe s3_bucket('my-bucket') do
  its('acl.owner.display_name') { should eq 'my-bucket-owner' }
end

describe vpc('my-vpc') do
  its('instances.count') { should eq 3 }
end

ただ、そのままだと

describe vpc('my-vpc') do
  its('instances.batch_terminate!') { should eq '' }
end

とかで、「テスティングフレームワークなのに、なぜか対象リソースを潰してしまう」という狂気が実行できてしまうので、 Awspec::ResourceReaderAws::Resources::Resource なオブジェクトをラップして雑なブラックリストで判定しています。(まだ抜けはありそう)

最初はホワイトリストを検討したのですが、あまりに列挙すべきメソッドが多く、また規則性がなかったので、 @udzura さんと話して、「(まあ)ブラックリストで」という感じで実装しています。

このアドバンスドな機能は、こちら の "Advanced use" の項目があるリソースタイプで利用可能です。

ロゴを作った

f:id:k1LoW:20151217231631p:plain

自分で描いたらこんな感じになりました。

今後

実務でもどんどん投入されているので、地道に開発継続していきます。