1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

serverspecのpackageリソースはrpmコマンドでテストをする

Last updated at Posted at 2015-01-30

Vagrant上の仮想マシンにserverspecでテスト環境を整えようと思った時に詰まったメモ。

前提

VagrantfileのあるChefリポジトリのトップディレクトリで$serverspec-initにより初期ファイルを出力。結果は以下のとおり。

$ tree spec/
spec/
├── default
│   └── sample_spec.rb
└── spec_helper.rb

そしてrake specが実行可能な状態。

詰まったところ

spec/default/sample_spec.rb
require 'spec_helper'

describe package('vim') do
    it { should be_installed }
end

仮想マシン上でyum install vimして、ホストマシン上でrake spec。これでテストが通るはず、と思ったら・・・

Failures:

  1) Package "vim" should be installed
     On host `default'
     Failure/Error: it { should be_installed }
       expected Package "vim" to be installed
       sudo -p 'Password: ' /bin/sh -c rpm\ -q\ vim
       package vim is not installed

     # ./spec/default/sample_spec.rb:4:in `block (2 levels) in <top (required)>'

あれ、通らない・・・。

ご丁寧にも情報が情報が充実していて、テストに使用したコマンドが出力される。

sudo -p 'Password: ' /bin/sh -c rpm\ -q\ vimと表示されているように、テストにrpmコマンドを利用している。どうやらyumでインストールしたpackageはこのままではテストされないようだ。

解決策

しょうがないので、yum install vimで呼び出されてrpmからインストールされるものを確認して、直接testすることにする。

$ rpm -qa | grep vim
vim-common-7.2.411-1.8.el6.x86_64
vim-enhanced-7.2.411-1.8.el6.x86_64
vim-minimal-7.2.411-1.8.el6.x86_64

grepでしか調べてないけど、vim-commonvim-enhancedvim-minimalの3つが入っていればいいということにする。個々のpackageの違いや役割は詳しく知らないがとりあえず放っておく。

以下のようにテストスクリプトを書き直す。

spec/default/sample_spec.rb
require 'spec_helper'

%w{vim-common vim-enhanced vim-minimal}.each do |vim|
    describe package(vim) do
        it { should be_installed }
    end
end

これできちんとテストができました。

Package "vim-common"
  should be installed

Package "vim-enhanced"
  should be installed

Package "vim-minimal"
  should be installed

Finished in 0.69752 seconds (files took 6.01 seconds to load)
3 examples, 0 failures

このように毎回rpmを調べて複数packageのテストを行うのはちょいと面倒だけれども、今までyumの下のレイヤーのrpmに気を配ったことがなかったので、よい勉強の機会ということにしてこれからテストを書くことにする。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?