Skip to content

Commit

Permalink
Test fixes. Enable installation of mixlib-install from rubygems.
Browse files Browse the repository at this point in the history
  • Loading branch information
Serdar Sutay committed Dec 1, 2015
1 parent a53ebb8 commit e2850d9
Show file tree
Hide file tree
Showing 9 changed files with 37 additions and 59 deletions.
22 changes: 2 additions & 20 deletions .kitchen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,10 @@ driver:
customize:
memory: 2048
cpus: 2
# Temporary workaround to be able to test with the latest version of mixlib install locally.
# Will be removed before merge.
synced_folders:
- ['/Users/serdar/chef/mixlib-install', '/home/vagrant/mixlib-install']

provisioner:
# TODO: (engineering-services) Switch this back to policyfile_zero
# when kitchen supports named run lists for suites.
name: chef_zero
data_bags_path: test/fixtures/data_bags

Expand All @@ -29,22 +27,6 @@ suites:
- recipe[test]
- recipe[test::repo]

- name: override_package_versions
excludes: [ 'macosx-10.10' ]
run_list:
- recipe[test]
- recipe[test::repo]
attributes:
apt-chef:
repo-name: 'chef-current'
uri: 'https://packagecloud.io/chef/current/ubuntu/'
yum-chef:
repositoryid: 'chef-current'
baseurl: 'https://packagecloud.io/chef/current/el/6/$basearch'
test:
chef-server-core:
version: 12.1.0-rc.3

- name: local_package_install
excludes: [ 'macosx-10.10' ]
run_list:
Expand Down
2 changes: 1 addition & 1 deletion Berksfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
source 'https://api.berkshelf.com'
metadata

cookbook 'chef-ingredient', path: '.'
cookbook 'test', path: './test/fixtures/cookbooks/test'
8 changes: 4 additions & 4 deletions libraries/chef_ingredient_provider.rb
Original file line number Diff line number Diff line change
Expand Up @@ -48,29 +48,29 @@ def initialize(name, run_context = nil)
end

action :install do
install_mixlib_versioning
ensure_mixlib_versioning_gem_installed!
add_config(new_resource.product_name, new_resource.config)
declare_chef_run_stop_resource

handle_install
end

action :upgrade do
install_mixlib_versioning
ensure_mixlib_versioning_gem_installed!
add_config(new_resource.product_name, new_resource.config)
declare_chef_run_stop_resource

handle_upgrade
end

action :uninstall do
install_mixlib_versioning
ensure_mixlib_versioning_gem_installed!

handle_uninstall
end

action :reconfigure do
install_mixlib_versioning
ensure_mixlib_versioning_gem_installed!
add_config(new_resource.product_name, new_resource.config)

if ctl_command.nil?
Expand Down
33 changes: 18 additions & 15 deletions libraries/helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,26 +34,29 @@ def ingredient_package_name
product_lookup(new_resource.product_name, version_string(new_resource.version))['package-name']
end

def install_mixlib_versioning
# We need Mixlib::Versioning in the library helpers for
# parsing the version string.
chef_gem "#{new_resource.product_name}-mixlib-versioning" do # ~FC009 foodcritic needs an update
package_name 'mixlib-versioning'
compile_time true
end
def ensure_mixlib_versioning_gem_installed!
node.run_state[:mixlib_versioning_gem_installed] ||= begin # ~FC001
install_gem_from_rubygems('mixlib-versioning', '1.1.0')

require 'mixlib/versioning'
require 'mixlib/versioning'
true
end
end

def install_mixlib_install
# TODO: Change this code to install mixlib-install from rubygems before merge.
chef_gem "#{new_resource.product_name}-mixlib-install" do # ~FC009 foodcritic needs an update
package_name 'mixlib-install'
compile_time true
source '/home/vagrant/mixlib-install/pkg/mixlib-install-0.8.0.gem'
def ensure_mixlib_install_gem_installed!
node.run_state[:mixlib_install_gem_installed] ||= begin # ~FC001
install_gem_from_rubygems('mixlib-install', '0.8.0.alpha.0')

require 'mixlib/install'
true
end
end

require 'mixlib/install'
def install_gem_from_rubygems(gem_name, gem_version)
Chef::Log.debug("Installing #{gem_name} v#{gem_version} from Rubygems.org")
chefgem = Chef::Resource::ChefGem.new(gem_name, run_context)
chefgem.version(gem_version)
chefgem.run_action(:install)
end

def rhel_major_version
Expand Down
4 changes: 2 additions & 2 deletions libraries/omnitruck_handler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
module ChefIngredient
module OmnitruckHandler
def handle_install
install_mixlib_install
ensure_mixlib_install_gem_installed!

installer = Mixlib::Install.new(
product_name: new_resource.product_name,
Expand All @@ -41,7 +41,7 @@ def handle_install
end

def handle_upgrade
install_mixlib_install
ensure_mixlib_install_gem_installed!

installer = Mixlib::Install.new(
product_name: new_resource.product_name,
Expand Down
4 changes: 0 additions & 4 deletions spec/unit/recipes/test_repo_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,6 @@
expect(chef_run).to install_chef_ingredient('chef-server')
end

it 'installs the mixlib-versioning gem' do
expect(chef_run).to install_chef_gem('mixlib-versioning')
end

it 'creates file[/tmp/chef-server-core.firstrun]' do
expect(chef_run).to create_file('/tmp/chef-server-core.firstrun')
end
Expand Down
12 changes: 6 additions & 6 deletions test/fixtures/cookbooks/test/attributes/default.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@
default['test']['source_url'] = case node['platform_family']
when 'debian'
if node['platform_version'].to_f == 14.04
'https://web-dl.packagecloud.io/chef/stable/packages/ubuntu/trusty/chef-server-core_12.0.5-1_amd64.deb'
'https://web-dl.packagecloud.io/chef/stable/packages/ubuntu/trusty/chef-server-core_12.3.1-1_amd64.deb'
elsif node['platform_version'].to_f == 12.04
'https://web-dl.packagecloud.io/chef/stable/packages/ubuntu/precise/chef-server-core_12.0.5-1_amd64.deb'
'https://web-dl.packagecloud.io/chef/stable/packages/ubuntu/precise/chef-server-core_12.3.1-1_amd64.deb'
elsif node['platform_version'].to_f == 10.04
'https://web-dl.packagecloud.io/chef/stable/packages/ubuntu/lucid/chef-server-core_12.0.5-1_amd64.deb'
'https://web-dl.packagecloud.io/chef/stable/packages/ubuntu/lucid/chef-server-core_12.3.1-1_amd64.deb'
end
when 'rhel'
if node['platform_version'].to_i == 6
'https://web-dl.packagecloud.io/chef/stable/packages/el/6/chef-server-core-12.0.5-1.el6.x86_64.rpm'
elsif node['platform_version'].to_i == 5
'https://web-dl.packagecloud.io/chef/stable/packages/el/5/chef-server-core-12.0.5-1.el5.x86_64.rpm'
'https://web-dl.packagecloud.io/chef/stable/packages/el/6/chef-server-core-12.3.1-1.el6.x86_64.rpm'
elsif node['platform_version'].to_i == 7
'https://web-dl.packagecloud.io/chef/stable/packages/el/7/chef-server-core-12.3.1-1.el7.x86_64.rpm'
end
end
9 changes: 3 additions & 6 deletions test/integration/chefdk/serverspec/test_chefdk_spec.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
require 'spec_helper'

describe 'test::chefdk' do
describe package('chefdk') do
it { should be_installed }
end

it 'chefdk should be upgraded' do
expect(package('chefdk').version).to eq('0.7.0-1')
it 'chefdk should be version 0.7.0' do
command = `/opt/chefdk/bin/chef --version`
expect(command).to include('Chef Development Kit Version: 0.7.0')
end
end
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
require 'spec_helper'

describe 'chef-ingredient::default' do
describe package('chef-server') do
describe package('chef-server-core') do
it { should be_installed }
end

Expand Down

0 comments on commit e2850d9

Please sign in to comment.