久々のエントリです。
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を組み合わせると、より柔軟なテストケースがかけそうなので、
色々と試してみようと思います。
今日はこんなところで。