ohaiをserverspecから使う
久々のエントリです。
serverspecを使って、テストを書く事が増えてきたのですが、
serverspecからohaiを呼び出して使いたいなーと思って調べていました。
…と、そのものずばりのやり方があったため、参考にさせていただいて試してみました。
spec_helper.rbに以下のように記述し、ohaiを呼び出せるようにしました。
※serverspecのversion1に対応した書き方になっています。
require 'serverspec'
$LOAD_PATH.concat Dir.glob('/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/*/lib')
require 'ohai'
ohai = Ohai::System.new
ohai.all_plugins
$ohaidata = ohai.data
include SpecInfra::Helper::Exec
include SpecInfra::Helper::DetectOS
RSpec.configure do |c|
if ENV['ASK_SUDO_PASSWORD']
require 'highline/import'
c.sudo_password = ask("Enter sudo password: ") { |q| q.echo = false }
else
c.sudo_password = ENV['SUDO_PASSWORD']
end
end
次にテストケースです。ローカルにインストールしたperlモジュールの存在チェックをしていたのですが、32bit/64bitでパスが変わるため、ohaiの情報を使ってみたところです。
require 'spec_helper'
arch = $ohaidata['kernel']['machine']
describe file("/usr/local/perl/lib/#{arch}-linux/List/MoreUtils.pm") do
it { should be_file }
it { should be_mode 444 }
it { should be_owned_by 'user' }
it { should be_grouped_into 'user' }
end
ohaiとserverspecを組み合わせると、より柔軟なテストケースがかけそうなので、
色々と試してみようと思います。
今日はこんなところで。