+++ /dev/null
-# == Define apt::hold
-#
-# This defined type allows you to hold a package based on the version you
-# require. It's implemented by dropping an apt preferences file pinning the
-# package to the version you require.
-#
-# === Parameters
-#
-# [*version*]
-# The version at which you wish to pin a package.
-#
-# This can either be the full version, such as 4:2.11.8.1-5, or
-# a partial version, such as 4:2.11.*
-#
-# [*package*]
-# _default_: +$title+, the title/name of the resource.
-#
-# Name of the package that apt is to hold.
-#
-# [*priority*]
-# _default_: +1001+
-#
-# The default priority of 1001 causes this preference to always win. By
-# setting the priority to a number greater than 1000 apt will always install
-# this version even if it means downgrading the currently installed version.
-define apt::hold(
- $version,
- $ensure = 'present',
- $package = $title,
- $priority = 1001,
-){
-
- validate_string($title)
- validate_re($ensure, ['^present|absent',])
- validate_string($package)
- validate_string($version)
-
- if ! is_integer($priority) {
- fail('$priority must be an integer')
- }
-
- if $ensure == 'present' {
- ::apt::pin { "hold_${package}":
- packages => $package,
- version => $version,
- priority => $priority,
- }
- } else {
- ::apt::pin { "hold_${package}":
- ensure => 'absent',
- }
- }
-
-}
+++ /dev/null
-require 'spec_helper'
-describe 'apt::hold' do
- let :facts do {
- :osfamily => 'Debian',
- :lsbdistid => 'Debian',
- :lsbrelease => 'wheezy',
- } end
-
- let :title do
- 'vim'
- end
-
- let :default_params do {
- :version => '1.1.1',
- } end
-
- describe 'default params' do
- let :params do default_params end
-
- it 'creates an apt preferences file' do
- should contain_apt__pin("hold_#{title}").with({
- :ensure => 'present',
- :packages => title,
- :version => params[:version],
- :priority => 1001,
- })
- end
- end
-
- describe 'ensure => absent' do
- let :params do default_params.merge({:ensure => 'absent',}) end
-
- it 'creates an apt preferences file' do
-
- should contain_apt__pin("hold_#{title}").with({
- :ensure => params[:ensure],
- })
- end
- end
-
- describe 'priority => 990' do
- let :params do default_params.merge({:priority => 990,}) end
-
- it 'creates an apt preferences file' do
- should contain_apt__pin("hold_#{title}").with({
- :ensure => 'present',
- :packages => title,
- :version => params[:version],
- :priority => params[:priority],
- })
- end
- end
-
- describe 'package => foo' do
- let :params do default_params.merge({:package => 'foo'}) end
-
- it 'creates an apt preferences file' do
- should contain_apt__pin("hold_foo").with({
- :ensure => 'present',
- :packages => 'foo',
- :version => params[:version],
- :priority => 1001,
- })
- end
- end
-
-
- describe 'validation' do
- context 'version => {}' do
- let :params do { :version => {}, } end
- it 'should fail' do
- expect { subject }.to raise_error(/is not a string/)
- end
- end
-
- context 'ensure => bananana' do
- let :params do default_params.merge({:ensure => 'bananana',}) end
- it 'should fail' do
- expect { subject }.to raise_error(/does not match/)
- end
- end
-
- context 'package => []' do
- let :params do default_params.merge({:package => [],}) end
- it 'should fail' do
- expect { subject }.to raise_error(/is not a string/)
- end
- end
-
- context 'priority => bananana' do
- let :params do default_params.merge({:priority => 'bananana',}) end
- it 'should fail' do
- expect { subject }.to raise_error(/must be an integer/)
- end
- end
- end
-end