Serverspecで`should be_installed.by 'homebrew_cask'`出来るようにする

2015/05/16 18:40 追記

Add `should be_installed.by 'homebrew_cask'` by gin0606 · Pull Request #385 · serverspec/specinfra · GitHub

プルリクエスト出したらMergeされたのでserverspecのv2.33.0から何もしないでも使えるようになるっぽいです。


Specinfra::Command::Darwin::Base::Packageに対応するmethodを追加する。 雑にspec_helperに書いた。

class Specinfra::Command::Darwin::Base::Package
  class << self
    def check_is_installed_homebrew_cask(package, version=nil)
      escaped_package = escape(package)
      if version
        "/usr/local/bin/brew cask info #{escaped_package} | grep -E '^#{package}: #{escape(version)}'"
      else
        "/usr/local/bin/brew cask list -1 | grep -E '^#{escaped_package}$'"
      end
    end
 
    alias :check_is_installed_by_homebrew_cask :check_is_installed_homebrew_cask
  end
end

require 'spec_helper'すると

describe package('vagrant') do
  it { should be_installed.by 'homebrew_cask' }
end

って書けるようになる。やったー。

rubyもserverspecも初学者で雑すぎるから最初Qiitaに書いてたけどマジで雑すぎるのでブログにした。

2015/05/08 14:49 追記

checkメソッドの返り値をcmd変数使わないようにした