Skip to content

Commit

Permalink
Improved default_release option handling in apt_package provider.
Browse files Browse the repository at this point in the history
  • Loading branch information
cabeca authored and btm committed Jul 26, 2012
1 parent 3c74789 commit b743b36
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 4 deletions.
11 changes: 7 additions & 4 deletions chef/lib/chef/provider/package/apt.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,16 @@ def load_current_resource
@current_resource
end

def default_release_options
# Use apt::Default-Release option only if provider was explicitly defined
"-o APT::Default-Release=#{@new_resource.default_release}" if @new_resource.provider && @new_resource.default_release
end

def check_package_state(package)
Chef::Log.debug("#{@new_resource} checking package status for #{package}")
installed = false
# Use apt cache release option only if provider was explicitly defined
aptcache_options = "-o APT::Default-Release=#{@new_resource.default_release}" if @new_resource.provider && @new_resource.default_release

shell_out!("apt-cache#{expand_options(aptcache_options)} policy #{package}").stdout.each_line do |line|
shell_out!("apt-cache#{expand_options(default_release_options)} policy #{package}").stdout.each_line do |line|
case line
when /^\s{2}Installed: (.+)$/
installed_version = $1
Expand Down Expand Up @@ -88,7 +91,7 @@ def install_package(name, version)
package_name = "#{name}=#{version}"
package_name = name if @is_virtual_package
run_command_with_systems_locale(
:command => "apt-get -q -y#{expand_options(@new_resource.options)} install #{package_name}",
:command => "apt-get -q -y#{expand_options(default_release_options)}#{expand_options(@new_resource.options)} install #{package_name}",
:environment => {
"DEBIAN_FRONTEND" => "noninteractive"
}
Expand Down
13 changes: 13 additions & 0 deletions chef/spec/unit/provider/package/apt_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,19 @@

@provider.install_package("irssi", "0.8.12-7")
end

it "should run apt-get install with the package name and version and default_release if there is one and provider is explicitly defined" do
@provider.should_receive(:run_command_with_systems_locale).with({
:command => "apt-get -q -y -o APT::Default-Release=lenny-backports install irssi=0.8.12-7",
:environment => {
"DEBIAN_FRONTEND" => "noninteractive"
}
})
@new_resource.stub!(:default_release).and_return("lenny-backports")
@new_resource.stub!(:provider).and_return("Chef::Provider::Package::Apt")

@provider.install_package("irssi", "0.8.12-7")
end
end

describe Chef::Provider::Package::Apt, "upgrade_package" do
Expand Down

0 comments on commit b743b36

Please sign in to comment.