chef 17.0.242 → 17.1.35

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +0 -12
  3. data/Rakefile +2 -2
  4. data/chef.gemspec +9 -20
  5. data/lib/chef/chef_fs/file_pattern.rb +2 -2
  6. data/lib/chef/compliance/default_attributes.rb +1 -1
  7. data/lib/chef/compliance/reporter/automate.rb +1 -1
  8. data/lib/chef/compliance/runner.rb +2 -2
  9. data/lib/chef/cookbook/cookbook_version_loader.rb +3 -3
  10. data/lib/chef/cookbook/gem_installer.rb +5 -1
  11. data/lib/chef/dsl/declare_resource.rb +5 -10
  12. data/lib/chef/formatters/doc.rb +2 -1
  13. data/lib/chef/node.rb +1 -1
  14. data/lib/chef/provider/directory.rb +6 -6
  15. data/lib/chef/provider/link.rb +1 -1
  16. data/lib/chef/provider/package/dnf/dnf_helper.py +11 -10
  17. data/lib/chef/provider/package/dnf/python_helper.rb +9 -8
  18. data/lib/chef/provider/package/yum.rb +1 -4
  19. data/lib/chef/provider/package/yum/python_helper.rb +15 -10
  20. data/lib/chef/provider/package/yum/yum_helper.py +46 -62
  21. data/lib/chef/provider/registry_key.rb +1 -1
  22. data/lib/chef/provider/service/systemd.rb +1 -1
  23. data/lib/chef/provider/systemd_unit.rb +1 -1
  24. data/lib/chef/provider/template/content.rb +1 -1
  25. data/lib/chef/provider/windows_script.rb +1 -1
  26. data/lib/chef/resource.rb +6 -7
  27. data/lib/chef/resource/execute.rb +2 -2
  28. data/lib/chef/resource/inspec_waiver_file_entry.rb +155 -0
  29. data/lib/chef/resource/lwrp_base.rb +17 -2
  30. data/lib/chef/resource/remote_file.rb +2 -2
  31. data/lib/chef/resource/windows_env.rb +1 -1
  32. data/lib/chef/resource/windows_font.rb +1 -1
  33. data/lib/chef/resource/windows_pagefile.rb +2 -2
  34. data/lib/chef/resource/windows_path.rb +2 -2
  35. data/lib/chef/resource/windows_security_policy.rb +5 -2
  36. data/lib/chef/resource/windows_task.rb +1 -1
  37. data/lib/chef/resource_builder.rb +8 -2
  38. data/lib/chef/resources.rb +1 -0
  39. data/lib/chef/run_lock.rb +1 -1
  40. data/lib/chef/runner.rb +1 -1
  41. data/lib/chef/shell/ext.rb +3 -3
  42. data/lib/chef/version.rb +1 -1
  43. data/lib/chef/win32/api.rb +9 -2
  44. data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
  45. data/spec/data/knife-site-subcommands/plugins/knife/example_subcommand.rb +0 -0
  46. data/spec/data/knife_subcommand/test_explicit_category.rb +7 -0
  47. data/spec/data/knife_subcommand/test_name_mapping.rb +4 -0
  48. data/spec/data/knife_subcommand/test_yourself.rb +21 -0
  49. data/spec/functional/resource/dnf_package_spec.rb +857 -537
  50. data/spec/functional/resource/group_spec.rb +1 -1
  51. data/spec/functional/resource/link_spec.rb +1 -1
  52. data/spec/functional/resource/remote_file_spec.rb +1 -1
  53. data/spec/functional/resource/windows_env_spec.rb +2 -2
  54. data/spec/functional/resource/yum_package_spec.rb +495 -428
  55. data/spec/integration/client/client_spec.rb +0 -20
  56. data/spec/integration/recipes/unified_mode_spec.rb +70 -0
  57. data/spec/spec_helper.rb +3 -0
  58. data/spec/support/chef_helpers.rb +1 -1
  59. data/spec/support/shared/functional/execute_resource.rb +1 -1
  60. data/spec/support/shared/functional/knife.rb +37 -0
  61. data/spec/support/shared/integration/knife_support.rb +192 -0
  62. data/spec/support/shared/unit/knife_shared.rb +39 -0
  63. data/spec/support/shared/unit/provider/file.rb +1 -1
  64. data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +1 -1
  65. data/spec/unit/compliance/runner_spec.rb +1 -1
  66. data/spec/unit/provider/link_spec.rb +1 -1
  67. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -0
  68. data/spec/unit/provider/package/yum/python_helper_spec.rb +1 -0
  69. data/spec/unit/provider/service/systemd_service_spec.rb +2 -2
  70. data/spec/unit/provider/systemd_unit_spec.rb +2 -2
  71. data/spec/unit/resource/inspec_waiver_file_entry_spec.rb +80 -0
  72. data/tasks/rspec.rb +4 -9
  73. metadata +16 -160
  74. data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +0 -79
  75. data/lib/chef/provider/package/yum/simplejson/__init__.py +0 -318
  76. data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
  77. data/lib/chef/provider/package/yum/simplejson/decoder.py +0 -354
  78. data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
  79. data/lib/chef/provider/package/yum/simplejson/encoder.py +0 -440
  80. data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
  81. data/lib/chef/provider/package/yum/simplejson/scanner.py +0 -65
  82. data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
  83. data/lib/chef/provider/package/yum/simplejson/tool.py +0 -37
@@ -72,7 +72,7 @@ describe Chef::Resource::Group, :requires_root_or_running_windows do
72
72
  end
73
73
 
74
74
  def windows_domain_user?(user_name)
75
- domain, user = user_name.split('\\')
75
+ domain, user = user_name.split("\\")
76
76
 
77
77
  if user && domain != "."
78
78
  computer_name = ENV["computername"]
@@ -84,7 +84,7 @@ describe Chef::Resource::Link do
84
84
  end
85
85
 
86
86
  def canonicalize(path)
87
- windows? ? path.tr("/", '\\') : path
87
+ windows? ? path.tr("/", "\\") : path
88
88
  end
89
89
 
90
90
  def symlink(a, b)
@@ -155,7 +155,7 @@ describe Chef::Resource::RemoteFile do
155
155
  before do
156
156
  shell_out("net.exe share #{smb_share_name} /delete")
157
157
  File.write(smb_file_local_path, smb_file_content )
158
- shell_out!("net.exe share #{smb_share_name}=\"#{smb_share_root_directory.tr("/", '\\')}\" /grant:\"authenticated users\",read")
158
+ shell_out!("net.exe share #{smb_share_name}=\"#{smb_share_root_directory.tr("/", "\\")}\" /grant:\"authenticated users\",read")
159
159
  end
160
160
 
161
161
  after do
@@ -38,7 +38,7 @@ describe Chef::Resource::WindowsEnv, :windows_only do
38
38
  if environment_variables && environment_variables.length > 0
39
39
  environment_variables.each do |env|
40
40
  env_obj = env.wmi_ole_object
41
- return env_obj if env_obj.username.split('\\').last.casecmp(test_resource.user) == 0
41
+ return env_obj if env_obj.username.split("\\").last.casecmp(test_resource.user) == 0
42
42
  end
43
43
  end
44
44
  nil
@@ -93,7 +93,7 @@ describe Chef::Resource::WindowsEnv, :windows_only do
93
93
  test_resource.value(env_value1)
94
94
  test_resource.user(env_user)
95
95
  test_resource.run_action(:create)
96
- expect(env_obj.username.split('\\').last.upcase).to eq(env_user)
96
+ expect(env_obj.username.split("\\").last.upcase).to eq(env_user)
97
97
  end
98
98
 
99
99
  context "when env variable exist with same name" do
@@ -19,8 +19,9 @@ require "spec_helper"
19
19
  require "chef/mixin/shell_out"
20
20
 
21
21
  # run this test only for following platforms.
22
- exclude_test = !(%w{rhel fedora amazon}.include?(ohai[:platform_family]) && !File.exist?("/usr/bin/dnf"))
22
+ exclude_test = !(%w{rhel fedora amazon}.include?(OHAI_SYSTEM[:platform_family]) && !File.exist?("/usr/bin/dnf"))
23
23
  describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
24
+ include RecipeDSLHelper
24
25
  include Chef::Mixin::ShellOut
25
26
 
26
27
  # NOTE: every single test here either needs to explicitly call flush_cache or needs to explicitly
@@ -38,11 +39,17 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
38
39
  flush_cache
39
40
  end
40
41
 
42
+ def expect_matching_installed_version(version)
43
+ expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(version)
44
+ end
45
+
41
46
  before(:all) do
42
47
  shell_out!("yum -y install yum-utils")
43
48
  end
44
49
 
45
50
  before(:each) do
51
+ # force errors to fail and not retry
52
+ ENV["YUM_HELPER_NO_RETRIES"] = "true"
46
53
  File.open("/etc/yum.repos.d/chef-yum-localtesting.repo", "w+") do |f|
47
54
  f.write <<~EOF
48
55
  [chef-yum-localtesting]
@@ -52,6 +59,7 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
52
59
  gpgcheck=0
53
60
  EOF
54
61
  end
62
+ # ensure we don't have any stray chef_rpms installed
55
63
  shell_out!("rpm -qa --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' | grep chef_rpm | xargs -r rpm -e")
56
64
  # next line is useful cleanup if you happen to have been testing both yum + dnf func tests on the same box and
57
65
  # have some dnf garbage left around
@@ -63,137 +71,133 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
63
71
  FileUtils.rm_f "/etc/yum.repos.d/chef-yum-localtesting.repo"
64
72
  end
65
73
 
66
- let(:run_context) do
67
- Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
68
- end
69
-
70
- let(:package_name) { "chef_rpm" }
71
- let(:yum_package) do
72
- r = Chef::Resource::YumPackage.new(package_name, run_context)
73
- r.options("--nogpgcheck")
74
- r
75
- end
74
+ let(:default_options) { "--nogpgcheck --disablerepo=* --enablerepo=chef-yum-localtesting" }
76
75
 
77
76
  def pkg_arch
78
- ohai[:kernel][:machine]
77
+ OHAI_SYSTEM[:kernel][:machine]
79
78
  end
80
79
 
81
80
  describe ":install" do
82
81
  context "vanilla use case" do
83
- let(:package_name) { "chef_rpm" }
84
-
85
82
  it "installs if the package is not installed" do
86
83
  flush_cache
87
- yum_package.run_action(:install)
88
- expect(yum_package.updated_by_last_action?).to be true
89
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
84
+ yum_package("chef_rpm") do
85
+ options default_options
86
+ end.should_be_updated
87
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
90
88
  end
91
89
 
92
90
  it "does not install if the package is installed" do
93
91
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
94
- yum_package.run_action(:install)
95
- expect(yum_package.updated_by_last_action?).to be false
96
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
92
+ yum_package("chef_rpm") do
93
+ options default_options
94
+ end.should_not_be_updated
95
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
97
96
  end
98
97
 
99
98
  it "does not install twice" do
100
99
  flush_cache
101
- yum_package.run_action(:install)
102
- expect(yum_package.updated_by_last_action?).to be true
103
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
104
- yum_package.run_action(:install)
105
- expect(yum_package.updated_by_last_action?).to be false
106
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
100
+ yum_package("chef_rpm") do
101
+ options default_options
102
+ end.should_be_updated
103
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
104
+ yum_package("chef_rpm") do
105
+ options default_options
106
+ end.should_not_be_updated
107
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
107
108
  end
108
109
 
109
110
  it "does not install if the prior version package is installed" do
110
111
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
111
- yum_package.run_action(:install)
112
- expect(yum_package.updated_by_last_action?).to be false
113
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
112
+ yum_package("chef_rpm") do
113
+ options default_options
114
+ end.should_not_be_updated
115
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
114
116
  end
115
117
 
116
118
  it "does not install if the i686 package is installed", :intel_64bit do
117
119
  skip "FIXME: do nothing, or install the #{pkg_arch} version?"
118
120
  preinstall("chef_rpm-1.10-1.i686.rpm")
119
- yum_package.run_action(:install)
120
- expect(yum_package.updated_by_last_action?).to be false
121
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.i686$")
121
+ yum_package("chef_rpm") do
122
+ options default_options
123
+ end.should_not_be_updated
124
+ expect_matching_installed_version("^chef_rpm-1.10-1.i686$")
122
125
  end
123
126
 
124
127
  it "does not install if the prior version i686 package is installed", :intel_64bit do
125
128
  skip "FIXME: do nothing, or install the #{pkg_arch} version?"
126
129
  preinstall("chef_rpm-1.2-1.i686.rpm")
127
- yum_package.run_action(:install)
128
- expect(yum_package.updated_by_last_action?).to be false
129
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.i686$")
130
+ yum_package("chef_rpm") do
131
+ options default_options
132
+ end.should_not_be_updated
133
+ expect_matching_installed_version("^chef_rpm-1.2-1.i686$")
130
134
  end
131
135
  end
132
136
 
133
137
  context "with versions or globs in the name" do
134
138
  it "works with a version" do
135
139
  flush_cache
136
- yum_package.package_name("chef_rpm-1.10")
137
- yum_package.run_action(:install)
138
- expect(yum_package.updated_by_last_action?).to be true
139
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
140
+ yum_package("chef_rpm-1.10") do
141
+ options default_options
142
+ end.should_be_updated
143
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
140
144
  end
141
145
 
142
146
  it "works with an older version" do
143
147
  flush_cache
144
- yum_package.package_name("chef_rpm-1.2")
145
- yum_package.run_action(:install)
146
- expect(yum_package.updated_by_last_action?).to be true
147
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
148
+ yum_package("chef_rpm-1.2") do
149
+ options default_options
150
+ end.should_be_updated
151
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
148
152
  end
149
153
 
150
154
  it "works with an evra" do
151
155
  flush_cache
152
- yum_package.package_name("chef_rpm-0:1.2-1.#{pkg_arch}")
153
- yum_package.run_action(:install)
154
- expect(yum_package.updated_by_last_action?).to be true
155
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
156
+ yum_package("chef_rpm-0:1.2-1.#{pkg_arch}") do
157
+ options default_options
158
+ end.should_be_updated
159
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
156
160
  end
157
161
 
158
162
  it "works with version and release" do
159
163
  flush_cache
160
- yum_package.package_name("chef_rpm-1.2-1")
161
- yum_package.run_action(:install)
162
- expect(yum_package.updated_by_last_action?).to be true
163
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
164
+ yum_package("chef_rpm-1.2-1") do
165
+ options default_options
166
+ end.should_be_updated
167
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
164
168
  end
165
169
 
166
170
  it "works with a version glob" do
167
171
  flush_cache
168
- yum_package.package_name("chef_rpm-1*")
169
- yum_package.run_action(:install)
170
- expect(yum_package.updated_by_last_action?).to be true
171
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
172
+ yum_package("chef_rpm-1*") do
173
+ options default_options
174
+ end.should_be_updated
175
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
172
176
  end
173
177
 
174
178
  it "works with a name glob + version glob" do
175
179
  flush_cache
176
- yum_package.package_name("chef_rp*-1*")
177
- yum_package.run_action(:install)
178
- expect(yum_package.updated_by_last_action?).to be true
179
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
180
+ yum_package("chef_rp*-1*") do
181
+ options default_options
182
+ end.should_be_updated
183
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
180
184
  end
181
185
 
182
186
  it "upgrades when the installed version does not match the version string" do
183
187
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
184
- yum_package.package_name("chef_rpm-1.10")
185
- yum_package.run_action(:install)
186
- expect(yum_package.updated_by_last_action?).to be true
187
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}")
188
+ yum_package("chef_rpm-1.10") do
189
+ options default_options
190
+ end.should_be_updated
191
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}")
188
192
  end
189
193
 
190
194
  it "downgrades when the installed version is higher than the package_name version" do
191
195
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
192
- yum_package.allow_downgrade true
193
- yum_package.package_name("chef_rpm-1.2")
194
- yum_package.run_action(:install)
195
- expect(yum_package.updated_by_last_action?).to be true
196
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
196
+ yum_package("chef_rpm-1.2") do
197
+ allow_downgrade true
198
+ options default_options
199
+ end.should_be_updated
200
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
197
201
  end
198
202
  end
199
203
 
@@ -201,11 +205,11 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
201
205
  context "with version property" do
202
206
  it "matches the full version" do
203
207
  flush_cache
204
- yum_package.package_name("chef_rpm")
205
- yum_package.version("1.10")
206
- yum_package.run_action(:install)
207
- expect(yum_package.updated_by_last_action?).to be true
208
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
208
+ yum_package("chef_rpm") do
209
+ options default_options
210
+ version("1.10")
211
+ end.should_be_updated
212
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
209
213
  end
210
214
 
211
215
  it "matches with a glob" do
@@ -213,49 +217,49 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
213
217
  # the name field rather than trying to use a name of "tcpdump" and a version of "4*".
214
218
  pending "this does not work, is not easily supported by the underlying yum libraries, but does work in the new dnf_package provider"
215
219
  flush_cache
216
- yum_package.package_name("chef_rpm")
217
- yum_package.version("1*")
218
- yum_package.run_action(:install)
219
- expect(yum_package.updated_by_last_action?).to be true
220
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
220
+ yum_package("chef_rpm") do
221
+ options default_options
222
+ version("1*")
223
+ end.should_be_updated
224
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
221
225
  end
222
226
 
223
227
  it "matches the vr" do
224
228
  flush_cache
225
- yum_package.package_name("chef_rpm")
226
- yum_package.version("1.10-1")
227
- yum_package.run_action(:install)
228
- expect(yum_package.updated_by_last_action?).to be true
229
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
229
+ yum_package("chef_rpm") do
230
+ options default_options
231
+ version("1.10-1")
232
+ end.should_be_updated
233
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
230
234
  end
231
235
 
232
236
  it "matches the evr" do
233
237
  flush_cache
234
- yum_package.package_name("chef_rpm")
235
- yum_package.version("0:1.10-1")
236
- yum_package.run_action(:install)
237
- expect(yum_package.updated_by_last_action?).to be true
238
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
238
+ yum_package("chef_rpm") do
239
+ options default_options
240
+ version("0:1.10-1")
241
+ end.should_be_updated
242
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
239
243
  end
240
244
 
241
245
  it "matches with a vr glob" do
242
246
  pending "doesn't work on command line either"
243
247
  flush_cache
244
- yum_package.package_name("chef_rpm")
245
- yum_package.version("1.10-1*")
246
- yum_package.run_action(:install)
247
- expect(yum_package.updated_by_last_action?).to be true
248
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
248
+ yum_package("chef_rpm") do
249
+ options default_options
250
+ version("1.10-1*")
251
+ end.should_be_updated
252
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
249
253
  end
250
254
 
251
255
  it "matches with an evr glob" do
252
256
  pending "doesn't work on command line either"
253
257
  flush_cache
254
- yum_package.package_name("chef_rpm")
255
- yum_package.version("0:1.10-1*")
256
- yum_package.run_action(:install)
257
- expect(yum_package.updated_by_last_action?).to be true
258
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
258
+ yum_package("chef_rpm") do
259
+ options default_options
260
+ version("0:1.10-1*")
261
+ end.should_be_updated
262
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
259
263
  end
260
264
  end
261
265
 
@@ -263,249 +267,257 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
263
267
  it "downgrades the package when allow_downgrade" do
264
268
  flush_cache
265
269
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
266
- yum_package.package_name("chef_rpm")
267
- yum_package.allow_downgrade true
268
- yum_package.version("1.2-1")
269
- yum_package.run_action(:install)
270
- expect(yum_package.updated_by_last_action?).to be true
271
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
270
+ yum_package("chef_rpm") do
271
+ options default_options
272
+ allow_downgrade true
273
+ version("1.2-1")
274
+ end.should_be_updated
275
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
272
276
  end
273
277
  end
274
278
 
275
279
  context "with arches", :intel_64bit do
276
280
  it "installs with 64-bit arch in the name" do
277
281
  flush_cache
278
- yum_package.package_name("chef_rpm.#{pkg_arch}")
279
- yum_package.run_action(:install)
280
- expect(yum_package.updated_by_last_action?).to be true
281
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
282
+ yum_package("chef_rpm.#{pkg_arch}") do
283
+ options default_options
284
+ end.should_be_updated
285
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
282
286
  end
283
287
 
284
288
  it "installs with 32-bit arch in the name" do
285
289
  flush_cache
286
- yum_package.package_name("chef_rpm.i686")
287
- yum_package.run_action(:install)
288
- expect(yum_package.updated_by_last_action?).to be true
289
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.i686$")
290
+ yum_package("chef_rpm.i686") do
291
+ options default_options
292
+ end.should_be_updated
293
+ expect_matching_installed_version("^chef_rpm-1.10-1.i686$")
290
294
  end
291
295
 
292
296
  it "installs with 64-bit arch in the property" do
293
297
  flush_cache
294
- yum_package.package_name("chef_rpm")
295
- yum_package.arch((pkg_arch).to_s)
296
- yum_package.run_action(:install)
297
- expect(yum_package.updated_by_last_action?).to be true
298
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
298
+ yum_package("chef_rpm") do
299
+ options default_options
300
+ arch((pkg_arch).to_s)
301
+ end.should_be_updated
302
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
299
303
  end
300
304
 
301
305
  it "installs with 32-bit arch in the property" do
302
306
  flush_cache
303
- yum_package.package_name("chef_rpm")
304
- yum_package.arch("i686")
305
- yum_package.run_action(:install)
306
- expect(yum_package.updated_by_last_action?).to be true
307
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.i686$")
307
+ yum_package("chef_rpm") do
308
+ options default_options
309
+ arch("i686")
310
+ end.should_be_updated
311
+ expect_matching_installed_version("^chef_rpm-1.10-1.i686$")
308
312
  end
309
313
  end
310
314
 
311
315
  context "with constraints" do
312
316
  it "with nothing installed, it installs the latest version" do
313
317
  flush_cache
314
- yum_package.package_name("chef_rpm >= 1.2")
315
- yum_package.run_action(:install)
316
- expect(yum_package.updated_by_last_action?).to be true
317
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
318
+ yum_package("chef_rpm >= 1.2") do
319
+ options default_options
320
+ end.should_be_updated
321
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
318
322
  end
319
323
 
320
324
  it "when it is met, it does nothing" do
321
325
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
322
- yum_package.package_name("chef_rpm >= 1.2")
323
- yum_package.run_action(:install)
324
- expect(yum_package.updated_by_last_action?).to be false
325
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
326
+ yum_package("chef_rpm >= 1.2") do
327
+ options default_options
328
+ end.should_not_be_updated
329
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
326
330
  end
327
331
 
328
332
  it "when it is met, it does nothing" do
329
333
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
330
- yum_package.package_name("chef_rpm >= 1.2")
331
- yum_package.run_action(:install)
332
- expect(yum_package.updated_by_last_action?).to be false
333
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
334
+ yum_package("chef_rpm >= 1.2") do
335
+ options default_options
336
+ end.should_not_be_updated
337
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
334
338
  end
335
339
 
336
340
  it "with nothing intalled, it installs the latest version" do
337
341
  flush_cache
338
- yum_package.package_name("chef_rpm > 1.2")
339
- yum_package.run_action(:install)
340
- expect(yum_package.updated_by_last_action?).to be true
341
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
342
+ yum_package("chef_rpm > 1.2") do
343
+ options default_options
344
+ end.should_be_updated
345
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
342
346
  end
343
347
 
344
348
  it "when it is not met by an installed rpm, it upgrades" do
345
349
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
346
- yum_package.package_name("chef_rpm > 1.2")
347
- yum_package.run_action(:install)
348
- expect(yum_package.updated_by_last_action?).to be true
349
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
350
+ yum_package("chef_rpm > 1.2") do
351
+ options default_options
352
+ end.should_be_updated
353
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
350
354
  end
351
355
 
352
356
  it "with an equality constraint, when it is not met by an installed rpm, it upgrades" do
353
357
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
354
- yum_package.package_name("chef_rpm = 1.10")
355
- yum_package.run_action(:install)
356
- expect(yum_package.updated_by_last_action?).to be true
357
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
358
+ yum_package("chef_rpm = 1.10") do
359
+ options default_options
360
+ end.should_be_updated
361
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
358
362
  end
359
363
 
360
364
  it "with an equality constraint, when it is met by an installed rpm, it does nothing" do
361
365
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
362
- yum_package.package_name("chef_rpm = 1.2")
363
- yum_package.run_action(:install)
364
- expect(yum_package.updated_by_last_action?).to be false
365
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
366
+ yum_package("chef_rpm = 1.2") do
367
+ options default_options
368
+ end.should_not_be_updated
369
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
366
370
  end
367
371
 
368
372
  it "when it is met by an installed rpm, it does nothing" do
369
373
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
370
- yum_package.package_name("chef_rpm > 1.2")
371
- yum_package.run_action(:install)
372
- expect(yum_package.updated_by_last_action?).to be false
373
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
374
+ yum_package("chef_rpm > 1.2") do
375
+ options default_options
376
+ end.should_not_be_updated
377
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
374
378
  end
375
379
 
376
- it "when there is no solution to the contraint" do
380
+ it "when there is no solution to the constraint" do
377
381
  flush_cache
378
- yum_package.package_name("chef_rpm > 2.0")
379
- expect { yum_package.run_action(:install) }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
382
+ expect {
383
+ yum_package("chef_rpm > 2.0") do
384
+ options default_options
385
+ end
386
+ }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
380
387
  end
381
388
 
382
- it "when there is no solution to the contraint but an rpm is preinstalled" do
389
+ it "when there is no solution to the constraint but an rpm is preinstalled" do
383
390
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
384
- yum_package.package_name("chef_rpm > 2.0")
385
- expect { yum_package.run_action(:install) }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
391
+ expect {
392
+ yum_package("chef_rpm > 2.0") do
393
+ options default_options
394
+ end
395
+ }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
386
396
  end
387
397
 
388
398
  it "with a less than constraint, when nothing is installed, it installs" do
389
399
  flush_cache
390
- yum_package.allow_downgrade true
391
- yum_package.package_name("chef_rpm < 1.10")
392
- yum_package.run_action(:install)
393
- expect(yum_package.updated_by_last_action?).to be true
394
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
400
+ yum_package("chef_rpm < 1.10") do
401
+ allow_downgrade true
402
+ options default_options
403
+ end.should_be_updated
404
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
395
405
  end
396
406
 
397
407
  it "with a less than constraint, when the install version matches, it does nothing" do
398
408
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
399
- yum_package.allow_downgrade true
400
- yum_package.package_name("chef_rpm < 1.10")
401
- yum_package.run_action(:install)
402
- expect(yum_package.updated_by_last_action?).to be false
403
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
409
+ yum_package("chef_rpm < 1.10") do
410
+ allow_downgrade true
411
+ options default_options
412
+ end.should_not_be_updated
413
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
404
414
  end
405
415
 
406
416
  it "with a less than constraint, when the install version fails, it should downgrade" do
407
417
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
408
- yum_package.allow_downgrade true
409
- yum_package.package_name("chef_rpm < 1.10")
410
- yum_package.run_action(:install)
411
- expect(yum_package.updated_by_last_action?).to be true
412
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
418
+ yum_package("chef_rpm < 1.10") do
419
+ allow_downgrade true
420
+ options default_options
421
+ end.should_be_updated
422
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
413
423
  end
414
424
  end
415
425
 
416
426
  context "with source arguments" do
417
427
  it "raises an exception when the package does not exist" do
418
428
  flush_cache
419
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/this-file-better-not-exist.rpm")
420
- expect { yum_package.run_action(:install) }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
429
+ expect {
430
+ yum_package("#{CHEF_SPEC_ASSETS}/yumrepo/this-file-better-not-exist.rpm") do
431
+ options default_options
432
+ end
433
+ }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
421
434
  end
422
435
 
423
436
  it "does not raise a hard exception in why-run mode when the package does not exist" do
424
437
  Chef::Config[:why_run] = true
425
438
  flush_cache
426
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/this-file-better-not-exist.rpm")
427
- yum_package.run_action(:install)
428
- expect { yum_package.run_action(:install) }.not_to raise_error
439
+ yum_package("#{CHEF_SPEC_ASSETS}/yumrepo/this-file-better-not-exist.rpm") do
440
+ options default_options
441
+ end
429
442
  end
430
443
 
431
444
  it "installs the package when using the source argument" do
432
445
  flush_cache
433
- yum_package.name "something"
434
- yum_package.package_name "somethingelse"
435
- yum_package.source("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
436
- yum_package.run_action(:install)
437
- expect(yum_package.updated_by_last_action?).to be true
438
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
446
+ yum_package "something" do
447
+ package_name "somethingelse"
448
+ source("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
449
+ end.should_be_updated
450
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
439
451
  end
440
452
 
441
453
  it "installs the package when the name is a path to a file" do
442
454
  flush_cache
443
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
444
- yum_package.run_action(:install)
445
- expect(yum_package.updated_by_last_action?).to be true
446
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
455
+ yum_package("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm") do
456
+ options default_options
457
+ end.should_be_updated
458
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
447
459
  end
448
460
 
449
461
  it "downgrade on a local file is ignored when allow_downgrade is false" do
450
462
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
451
- yum_package.allow_downgrade false
452
- yum_package.version "1.2-1"
453
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
454
- yum_package.run_action(:install)
455
- expect(yum_package.updated_by_last_action?).to be false
456
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
463
+ yum_package("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm") do
464
+ allow_downgrade false
465
+ version "1.2-1"
466
+ options default_options
467
+ end.should_not_be_updated
468
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
457
469
  end
458
470
 
459
471
  it "downgrade on a local file with allow_downgrade true works" do
460
472
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
461
- yum_package.version "1.2-1"
462
- yum_package.allow_downgrade true
463
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
464
- yum_package.run_action(:install)
465
- expect(yum_package.updated_by_last_action?).to be true
466
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
473
+ yum_package("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm") do
474
+ version "1.2-1"
475
+ allow_downgrade true
476
+ options default_options
477
+ end.should_be_updated
478
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
467
479
  end
468
480
 
469
481
  it "does not downgrade the package with :install" do
470
482
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
471
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
472
- yum_package.run_action(:install)
473
- expect(yum_package.updated_by_last_action?).to be false
474
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
483
+ yum_package("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm") do
484
+ options default_options
485
+ end.should_not_be_updated
486
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
475
487
  end
476
488
 
477
489
  it "does not upgrade the package with :install" do
478
490
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
479
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.10-1.#{pkg_arch}.rpm")
480
- yum_package.run_action(:install)
481
- expect(yum_package.updated_by_last_action?).to be false
482
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
491
+ yum_package("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.10-1.#{pkg_arch}.rpm") do
492
+ options default_options
493
+ end.should_not_be_updated
494
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
483
495
  end
484
496
 
485
497
  it "is idempotent when the package is already installed" do
486
498
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
487
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
488
- yum_package.run_action(:install)
489
- expect(yum_package.updated_by_last_action?).to be false
490
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
499
+ yum_package("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm") do
500
+ options default_options
501
+ end.should_not_be_updated
502
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
491
503
  end
492
504
 
493
505
  it "is idempotent when the package is already installed and there is a version string" do
494
506
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
495
- yum_package.version "1.2-1"
496
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
497
- yum_package.run_action(:install)
498
- expect(yum_package.updated_by_last_action?).to be false
499
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
507
+ yum_package("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm") do
508
+ version "1.2-1"
509
+ options default_options
510
+ end.should_not_be_updated
511
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
500
512
  end
501
513
 
502
514
  it "is idempotent when the package is already installed and there is a version string with arch" do
503
515
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
504
- yum_package.version "1.2-1.#{pkg_arch}"
505
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
506
- yum_package.run_action(:install)
507
- expect(yum_package.updated_by_last_action?).to be false
508
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
516
+ yum_package("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm") do
517
+ version "1.2-1.#{pkg_arch}"
518
+ options default_options
519
+ end.should_not_be_updated
520
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
509
521
  end
510
522
  end
511
523
 
@@ -513,124 +525,132 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
513
525
  it "works when a package is installed" do
514
526
  FileUtils.rm_f "/etc/yum.repos.d/chef-yum-localtesting.repo"
515
527
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
516
- yum_package.run_action(:install)
517
- expect(yum_package.updated_by_last_action?).to be false
518
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
528
+ yum_package "chef_rpm" do
529
+ options "--nogpgcheck"
530
+ end.should_not_be_updated
531
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
519
532
  end
520
533
 
521
534
  it "works with a local source" do
522
535
  FileUtils.rm_f "/etc/yum.repos.d/chef-yum-localtesting.repo"
523
536
  flush_cache
524
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
525
- yum_package.run_action(:install)
526
- expect(yum_package.updated_by_last_action?).to be true
527
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
537
+ yum_package("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm") do
538
+ options "--nogpgcheck"
539
+ end.should_be_updated
540
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
528
541
  end
529
542
  end
530
543
 
531
544
  context "multipackage with arches", :intel_64bit do
532
545
  it "installs two rpms" do
533
546
  flush_cache
534
- yum_package.package_name([ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] )
535
- yum_package.run_action(:install)
536
- expect(yum_package.updated_by_last_action?).to be true
537
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.#{pkg_arch}$/)
538
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.i686$/)
547
+ yum_package([ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] ) do
548
+ options default_options
549
+ end.should_be_updated
550
+ expect_matching_installed_version(/^chef_rpm-1.10-1.#{pkg_arch}$/)
551
+ expect_matching_installed_version(/^chef_rpm-1.10-1.i686$/)
539
552
  end
540
553
 
541
554
  it "does nothing if both are installed" do
542
555
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm", "chef_rpm-1.10-1.i686.rpm")
543
556
  flush_cache
544
- yum_package.package_name([ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] )
545
- yum_package.run_action(:install)
546
- expect(yum_package.updated_by_last_action?).to be false
557
+ yum_package([ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] ) do
558
+ options default_options
559
+ end.should_not_be_updated
547
560
  end
548
561
 
549
562
  it "installs the second rpm if the first is installed" do
550
563
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
551
- yum_package.package_name([ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] )
552
- yum_package.run_action(:install)
553
- expect(yum_package.updated_by_last_action?).to be true
554
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.#{pkg_arch}$/)
555
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.i686$/)
564
+ yum_package [ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] do
565
+ options default_options
566
+ end.should_be_updated
567
+ expect_matching_installed_version(/^chef_rpm-1.10-1.#{pkg_arch}$/)
568
+ expect_matching_installed_version(/^chef_rpm-1.10-1.i686$/)
556
569
  end
557
570
 
558
571
  it "installs the first rpm if the second is installed" do
559
572
  preinstall("chef_rpm-1.10-1.i686.rpm")
560
- yum_package.package_name([ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] )
561
- yum_package.run_action(:install)
562
- expect(yum_package.updated_by_last_action?).to be true
563
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.#{pkg_arch}$/)
564
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.i686$/)
573
+ yum_package [ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] do
574
+ options default_options
575
+ end.should_be_updated
576
+ expect_matching_installed_version(/^chef_rpm-1.10-1.#{pkg_arch}$/)
577
+ expect_matching_installed_version(/^chef_rpm-1.10-1.i686$/)
565
578
  end
566
579
 
567
580
  # unlikely to work consistently correct, okay to deprecate the arch-array in favor of the arch in the name
568
581
  it "installs two rpms with multi-arch" do
569
582
  flush_cache
570
- yum_package.package_name(%w{chef_rpm chef_rpm} )
571
- yum_package.arch([pkg_arch, "i686"])
572
- yum_package.run_action(:install)
573
- expect(yum_package.updated_by_last_action?).to be true
574
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.#{pkg_arch}$/)
575
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.i686$/)
583
+ yum_package %w{chef_rpm chef_rpm} do
584
+ options default_options
585
+ arch [pkg_arch, "i686"]
586
+ end.should_be_updated
587
+ expect_matching_installed_version(/^chef_rpm-1.10-1.#{pkg_arch}$/)
588
+ expect_matching_installed_version(/^chef_rpm-1.10-1.i686$/)
576
589
  end
577
590
 
578
591
  # unlikely to work consistently correct, okay to deprecate the arch-array in favor of the arch in the name
579
592
  it "installs the second rpm if the first is installed (muti-arch)" do
580
593
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
581
- yum_package.package_name(%w{chef_rpm chef_rpm} )
582
- yum_package.arch([pkg_arch, "i686"])
583
- yum_package.run_action(:install)
584
- expect(yum_package.updated_by_last_action?).to be true
585
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.#{pkg_arch}$/)
586
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.i686$/)
594
+ yum_package %w{chef_rpm chef_rpm} do
595
+ options default_options
596
+ arch [pkg_arch, "i686"]
597
+ end.should_be_updated
598
+ expect_matching_installed_version(/^chef_rpm-1.10-1.#{pkg_arch}$/)
599
+ expect_matching_installed_version(/^chef_rpm-1.10-1.i686$/)
587
600
  end
588
601
 
589
602
  # unlikely to work consistently correct, okay to deprecate the arch-array in favor of the arch in the name
590
603
  it "installs the first rpm if the second is installed (muti-arch)" do
591
604
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
592
- yum_package.package_name(%w{chef_rpm chef_rpm} )
593
- yum_package.arch([pkg_arch, "i686"])
594
- yum_package.run_action(:install)
595
- expect(yum_package.updated_by_last_action?).to be true
596
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.#{pkg_arch}$/)
597
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.i686$/)
605
+ yum_package %w{chef_rpm chef_rpm} do
606
+ options default_options
607
+ arch [pkg_arch, "i686"]
608
+ end.should_be_updated
609
+ expect_matching_installed_version(/^chef_rpm-1.10-1.#{pkg_arch}$/)
610
+ expect_matching_installed_version(/^chef_rpm-1.10-1.i686$/)
598
611
  end
599
612
 
600
613
  # unlikely to work consistently correct, okay to deprecate the arch-array in favor of the arch in the name
601
614
  it "does nothing if both are installed (muti-arch)" do
602
615
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm", "chef_rpm-1.10-1.i686.rpm")
603
- yum_package.package_name(%w{chef_rpm chef_rpm} )
604
- yum_package.arch([pkg_arch, "i686"])
605
- yum_package.run_action(:install)
606
- expect(yum_package.updated_by_last_action?).to be false
616
+ yum_package %w{chef_rpm chef_rpm} do
617
+ options default_options
618
+ arch [pkg_arch, "i686"]
619
+ end.should_not_be_updated
607
620
  end
608
621
  end
609
622
 
610
623
  context "repo controls" do
611
624
  it "should fail with the repo disabled" do
612
625
  flush_cache
613
- yum_package.options("--disablerepo=chef-yum-localtesting")
614
- expect { yum_package.run_action(:install) }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
626
+ expect {
627
+ yum_package "chef_rpm" do
628
+ options "--nogpgcheck --disablerepo=chef-yum-localtesting"
629
+ end
630
+ }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
615
631
  end
616
632
 
617
633
  it "should work with disablerepo first" do
618
634
  flush_cache
619
- yum_package.options(["--disablerepo=*", "--enablerepo=chef-yum-localtesting"])
620
- yum_package.run_action(:install)
621
- expect(yum_package.updated_by_last_action?).to be true
622
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
635
+ yum_package "chef_rpm" do
636
+ options "--nogpgcheck --disablerepo=* --enablerepo=chef-yum-localtesting"
637
+ end.should_be_updated
638
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
623
639
  end
624
640
 
625
641
  it "should work to enable a disabled repo" do
626
642
  shell_out!("yum-config-manager --disable chef-yum-localtesting")
627
643
  flush_cache
628
- expect { yum_package.run_action(:install) }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
644
+ expect {
645
+ yum_package "chef_rpm" do
646
+ options "--nogpgcheck"
647
+ end
648
+ }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
629
649
  flush_cache
630
- yum_package.options("--enablerepo=chef-yum-localtesting")
631
- yum_package.run_action(:install)
632
- expect(yum_package.updated_by_last_action?).to be true
633
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
650
+ yum_package "chef_rpm" do
651
+ options "--nogpgcheck --enablerepo=chef-yum-localtesting"
652
+ end.should_be_updated
653
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
634
654
  end
635
655
 
636
656
  it "when an idempotent install action is run, does not leave repos disabled" do
@@ -640,17 +660,17 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
640
660
  # accomplishes both those goals (it would be easier if we had other rpms in this repo, but with
641
661
  # one rpm we need to do this).
642
662
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
643
- yum_package.options("--disablerepo=chef-yum-localtesting")
644
- yum_package.run_action(:upgrade)
645
- expect(yum_package.updated_by_last_action?).to be false
646
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
663
+ yum_package "chef_rpm" do
664
+ options "--nogpgcheck --disablerepo=chef-yum-localtesting"
665
+ action :upgrade
666
+ end.should_not_be_updated
667
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
647
668
  # now we're still using the same cache in the yum_helper.py cache and we test to see if the
648
669
  # repo that we temporarily disabled is enabled on this pass.
649
- yum_package.package_name("chef_rpm-1.10-1.#{pkg_arch}")
650
- yum_package.options(nil)
651
- yum_package.run_action(:install)
652
- expect(yum_package.updated_by_last_action?).to be true
653
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
670
+ yum_package("chef_rpm-1.10-1.#{pkg_arch}") do
671
+ options "--nogpgcheck"
672
+ end.should_be_updated
673
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
654
674
  end
655
675
  end
656
676
  end
@@ -660,45 +680,49 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
660
680
  context "with source arguments" do
661
681
  it "installs the package when using the source argument" do
662
682
  flush_cache
663
- yum_package.name "something"
664
- yum_package.package_name "somethingelse"
665
- yum_package.source("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
666
- yum_package.run_action(:upgrade)
667
- expect(yum_package.updated_by_last_action?).to be true
668
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
683
+ yum_package "something" do
684
+ package_name "somethingelse"
685
+ source("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
686
+ action :upgrade
687
+ end.should_be_updated
688
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
669
689
  end
670
690
 
671
691
  it "installs the package when the name is a path to a file" do
672
692
  flush_cache
673
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
674
- yum_package.run_action(:upgrade)
675
- expect(yum_package.updated_by_last_action?).to be true
676
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
693
+ yum_package("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm") do
694
+ options default_options
695
+ action :upgrade
696
+ end.should_be_updated
697
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
677
698
  end
678
699
 
679
700
  it "downgrades the package when allow_downgrade is true" do
680
701
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
681
- yum_package.allow_downgrade true
682
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
683
- yum_package.run_action(:upgrade)
684
- expect(yum_package.updated_by_last_action?).to be true
685
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
702
+ yum_package("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm") do
703
+ allow_downgrade true
704
+ options default_options
705
+ action :upgrade
706
+ end.should_be_updated
707
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
686
708
  end
687
709
 
688
710
  it "upgrades the package" do
689
711
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
690
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.10-1.#{pkg_arch}.rpm")
691
- yum_package.run_action(:upgrade)
692
- expect(yum_package.updated_by_last_action?).to be true
693
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
712
+ yum_package("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.10-1.#{pkg_arch}.rpm") do
713
+ options default_options
714
+ action :upgrade
715
+ end.should_be_updated
716
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
694
717
  end
695
718
 
696
719
  it "is idempotent when the package is already installed" do
697
720
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
698
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
699
- yum_package.run_action(:upgrade)
700
- expect(yum_package.updated_by_last_action?).to be false
701
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
721
+ yum_package("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm") do
722
+ options default_options
723
+ action :upgrade
724
+ end.should_not_be_updated
725
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
702
726
  end
703
727
  end
704
728
 
@@ -706,204 +730,239 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
706
730
  it "works when a package is installed" do
707
731
  FileUtils.rm_f "/etc/yum.repos.d/chef-yum-localtesting.repo"
708
732
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
709
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
710
- yum_package.run_action(:upgrade)
711
- expect(yum_package.updated_by_last_action?).to be false
712
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
733
+ yum_package("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm") do
734
+ options "--nogpgcheck"
735
+ action :upgrade
736
+ end.should_not_be_updated
737
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
713
738
  end
714
739
 
715
740
  it "works with a local source" do
716
741
  FileUtils.rm_f "/etc/yum.repos.d/chef-yum-localtesting.repo"
717
742
  flush_cache
718
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
719
- yum_package.run_action(:upgrade)
720
- expect(yum_package.updated_by_last_action?).to be true
721
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
743
+ yum_package("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm") do
744
+ options "--nogpgcheck"
745
+ action :upgrade
746
+ end.should_be_updated
747
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
722
748
  end
723
749
  end
724
750
 
725
751
  context "version pinning" do
726
752
  it "with an equality pin in the name it upgrades a prior package" do
727
753
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
728
- yum_package.package_name("chef_rpm-1.10")
729
- yum_package.run_action(:upgrade)
730
- expect(yum_package.updated_by_last_action?).to be true
731
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
754
+ yum_package("chef_rpm-1.10") do
755
+ options default_options
756
+ action :upgrade
757
+ end.should_be_updated
758
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
732
759
  end
733
760
 
734
761
  it "with a prco equality pin in the name it upgrades a prior package" do
735
762
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
736
- yum_package.package_name("chef_rpm == 1.10")
737
- yum_package.run_action(:upgrade)
738
- expect(yum_package.updated_by_last_action?).to be true
739
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
763
+ yum_package("chef_rpm == 1.10") do
764
+ options default_options
765
+ action :upgrade
766
+ end.should_be_updated
767
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
740
768
  end
741
769
 
742
770
  it "with an equality pin in the name it downgrades a later package" do
743
771
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
744
- yum_package.allow_downgrade true
745
- yum_package.package_name("chef_rpm-1.2")
746
- yum_package.run_action(:upgrade)
747
- expect(yum_package.updated_by_last_action?).to be true
748
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
772
+ yum_package("chef_rpm-1.2") do
773
+ allow_downgrade true
774
+ options default_options
775
+ action :upgrade
776
+ end.should_be_updated
777
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
749
778
  end
750
779
 
751
780
  it "with a prco equality pin in the name it downgrades a later package" do
752
781
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
753
- yum_package.allow_downgrade true
754
- yum_package.package_name("chef_rpm == 1.2")
755
- yum_package.run_action(:upgrade)
756
- expect(yum_package.updated_by_last_action?).to be true
757
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
782
+ yum_package("chef_rpm == 1.2") do
783
+ allow_downgrade true
784
+ options default_options
785
+ action :upgrade
786
+ end.should_be_updated
787
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
758
788
  end
759
789
 
760
790
  it "with a > pin in the name and no rpm installed it installs" do
761
791
  flush_cache
762
- yum_package.package_name("chef_rpm > 1.2")
763
- yum_package.run_action(:upgrade)
764
- expect(yum_package.updated_by_last_action?).to be true
765
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
792
+ yum_package("chef_rpm > 1.2") do
793
+ options default_options
794
+ action :upgrade
795
+ end.should_be_updated
796
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
766
797
  end
767
798
 
768
799
  it "with a < pin in the name and no rpm installed it installs" do
769
800
  flush_cache
770
- yum_package.package_name("chef_rpm < 1.10")
771
- yum_package.run_action(:upgrade)
772
- expect(yum_package.updated_by_last_action?).to be true
773
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
801
+ yum_package("chef_rpm < 1.10") do
802
+ options default_options
803
+ action :upgrade
804
+ end.should_be_updated
805
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
774
806
  end
775
807
 
776
808
  it "with a > pin in the name and matching rpm installed it does nothing" do
777
809
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
778
- yum_package.package_name("chef_rpm > 1.2")
779
- yum_package.run_action(:upgrade)
780
- expect(yum_package.updated_by_last_action?).to be false
781
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
810
+ yum_package("chef_rpm > 1.2") do
811
+ options default_options
812
+ action :upgrade
813
+ end.should_not_be_updated
814
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
782
815
  end
783
816
 
784
817
  it "with a < pin in the name and no rpm installed it installs" do
785
818
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
786
- yum_package.package_name("chef_rpm < 1.10")
787
- yum_package.run_action(:upgrade)
788
- expect(yum_package.updated_by_last_action?).to be false
789
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
819
+ yum_package("chef_rpm < 1.10") do
820
+ options default_options
821
+ action :upgrade
822
+ end.should_not_be_updated
823
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
790
824
  end
791
825
 
792
826
  it "with a > pin in the name and non-matching rpm installed it upgrades" do
793
827
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
794
- yum_package.package_name("chef_rpm > 1.2")
795
- yum_package.run_action(:upgrade)
796
- expect(yum_package.updated_by_last_action?).to be true
797
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
828
+ yum_package("chef_rpm > 1.2") do
829
+ options default_options
830
+ action :upgrade
831
+ end.should_be_updated
832
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
798
833
  end
799
834
 
800
835
  it "with a < pin in the name and non-matching rpm installed it downgrades" do
801
836
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
802
- yum_package.allow_downgrade true
803
- yum_package.package_name("chef_rpm < 1.10")
804
- yum_package.run_action(:upgrade)
805
- expect(yum_package.updated_by_last_action?).to be true
806
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
837
+ yum_package("chef_rpm < 1.10") do
838
+ allow_downgrade true
839
+ options default_options
840
+ action :upgrade
841
+ end.should_be_updated
842
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
807
843
  end
808
844
  end
809
845
  end
810
846
 
811
847
  describe ":remove" do
812
848
  context "vanilla use case" do
813
- let(:package_name) { "chef_rpm" }
814
849
  it "does nothing if the package is not installed" do
815
850
  flush_cache
816
- yum_package.run_action(:remove)
817
- expect(yum_package.updated_by_last_action?).to be false
818
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
851
+ yum_package "chef_rpm" do
852
+ options default_options
853
+ action :remove
854
+ end.should_not_be_updated
855
+ expect_matching_installed_version("^package chef_rpm is not installed$")
819
856
  end
820
857
 
821
858
  it "removes the package if the package is installed" do
822
859
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
823
- yum_package.run_action(:remove)
824
- expect(yum_package.updated_by_last_action?).to be true
825
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
860
+ yum_package "chef_rpm" do
861
+ options default_options
862
+ action :remove
863
+ end.should_be_updated
864
+ expect_matching_installed_version("^package chef_rpm is not installed$")
826
865
  end
827
866
 
828
867
  it "does not remove the package twice" do
829
868
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
830
- yum_package.run_action(:remove)
831
- expect(yum_package.updated_by_last_action?).to be true
832
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
833
- yum_package.run_action(:remove)
834
- expect(yum_package.updated_by_last_action?).to be false
835
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
869
+ yum_package "chef_rpm" do
870
+ options default_options
871
+ action :remove
872
+ end.should_be_updated
873
+ expect_matching_installed_version("^package chef_rpm is not installed$")
874
+ yum_package "chef_rpm" do
875
+ options default_options
876
+ action :remove
877
+ end.should_not_be_updated
878
+ expect_matching_installed_version("^package chef_rpm is not installed$")
836
879
  end
837
880
 
838
881
  it "removes the package if the prior version package is installed" do
839
882
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
840
- yum_package.run_action(:remove)
841
- expect(yum_package.updated_by_last_action?).to be true
842
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
883
+ yum_package "chef_rpm" do
884
+ options default_options
885
+ action :remove
886
+ end.should_be_updated
887
+ expect_matching_installed_version("^package chef_rpm is not installed$")
843
888
  end
844
889
 
845
890
  it "removes the package if the i686 package is installed", :intel_64bit do
846
891
  skip "FIXME: should this be fixed or is the current behavior correct?"
847
892
  preinstall("chef_rpm-1.10-1.i686.rpm")
848
- yum_package.run_action(:remove)
849
- expect(yum_package.updated_by_last_action?).to be true
850
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
893
+ yum_package "chef_rpm" do
894
+ options default_options
895
+ action :remove
896
+ end.should_be_updated
897
+ expect_matching_installed_version("^package chef_rpm is not installed$")
851
898
  end
852
899
 
853
900
  it "removes the package if the prior version i686 package is installed", :intel_64bit do
854
901
  skip "FIXME: should this be fixed or is the current behavior correct?"
855
902
  preinstall("chef_rpm-1.2-1.i686.rpm")
856
- yum_package.run_action(:remove)
857
- expect(yum_package.updated_by_last_action?).to be true
858
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
903
+ yum_package "chef_rpm" do
904
+ options default_options
905
+ action :remove
906
+ end.should_be_updated
907
+ expect_matching_installed_version("^package chef_rpm is not installed$")
859
908
  end
860
909
  end
861
910
 
862
911
  context "with 64-bit arch", :intel_64bit do
863
- let(:package_name) { "chef_rpm.#{pkg_arch}" }
864
912
  it "does nothing if the package is not installed" do
865
913
  flush_cache
866
- yum_package.run_action(:remove)
867
- expect(yum_package.updated_by_last_action?).to be false
868
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
914
+ yum_package "chef_rpm.#{pkg_arch}" do
915
+ options default_options
916
+ action :remove
917
+ end.should_not_be_updated
918
+ expect_matching_installed_version("^package chef_rpm is not installed$")
869
919
  end
870
920
 
871
921
  it "removes the package if the package is installed" do
872
922
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
873
- yum_package.run_action(:remove)
874
- expect(yum_package.updated_by_last_action?).to be true
875
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
923
+ yum_package "chef_rpm.#{pkg_arch}" do
924
+ options default_options
925
+ action :remove
926
+ end.should_be_updated
927
+ expect_matching_installed_version("^package chef_rpm is not installed$")
876
928
  end
877
929
 
878
930
  it "removes the package if the prior version package is installed" do
879
931
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
880
- yum_package.run_action(:remove)
881
- expect(yum_package.updated_by_last_action?).to be true
882
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
932
+ yum_package "chef_rpm.#{pkg_arch}" do
933
+ options default_options
934
+ action :remove
935
+ end.should_be_updated
936
+ expect_matching_installed_version("^package chef_rpm is not installed$")
883
937
  end
884
938
 
885
939
  it "does nothing if the i686 package is installed" do
886
940
  preinstall("chef_rpm-1.10-1.i686.rpm")
887
- yum_package.run_action(:remove)
888
- expect(yum_package.updated_by_last_action?).to be false
889
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.i686$")
941
+ yum_package "chef_rpm.#{pkg_arch}" do
942
+ options default_options
943
+ action :remove
944
+ end.should_not_be_updated
945
+ expect_matching_installed_version("^chef_rpm-1.10-1.i686$")
890
946
  end
891
947
 
892
948
  it "does nothing if the prior version i686 package is installed" do
893
949
  preinstall("chef_rpm-1.2-1.i686.rpm")
894
- yum_package.run_action(:remove)
895
- expect(yum_package.updated_by_last_action?).to be false
896
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.i686$")
950
+ yum_package "chef_rpm.#{pkg_arch}" do
951
+ options default_options
952
+ action :remove
953
+ end.should_not_be_updated
954
+ expect_matching_installed_version("^chef_rpm-1.2-1.i686$")
897
955
  end
898
956
  end
899
957
 
900
958
  context "with 32-bit arch", :intel_64bit do
901
- let(:package_name) { "chef_rpm.i686" }
902
959
  it "removes only the 32-bit arch if both are installed" do
903
960
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm", "chef_rpm-1.10-1.i686.rpm")
904
- yum_package.run_action(:remove)
905
- expect(yum_package.updated_by_last_action?).to be true
906
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
961
+ yum_package "chef_rpm.i686" do
962
+ options default_options
963
+ action :remove
964
+ end.should_be_updated
965
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
907
966
  end
908
967
  end
909
968
 
@@ -911,9 +970,11 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
911
970
  it "works when a package is installed" do
912
971
  FileUtils.rm_f "/etc/yum.repos.d/chef-yum-localtesting.repo"
913
972
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
914
- yum_package.run_action(:remove)
915
- expect(yum_package.updated_by_last_action?).to be true
916
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
973
+ yum_package "chef_rpm" do
974
+ options "--nogpgcheck"
975
+ action :remove
976
+ end.should_be_updated
977
+ expect_matching_installed_version("^package chef_rpm is not installed$")
917
978
  end
918
979
  end
919
980
  end
@@ -929,52 +990,58 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
929
990
 
930
991
  it "locks an rpm" do
931
992
  flush_cache
932
- yum_package.package_name("chef_rpm")
933
- yum_package.run_action(:lock)
934
- expect(yum_package.updated_by_last_action?).to be true
993
+ yum_package("chef_rpm") do
994
+ options default_options
995
+ action :lock
996
+ end.should_be_updated
935
997
  expect(shell_out("yum versionlock list").stdout.chomp).to match("^0:chef_rpm-")
936
998
  end
937
999
 
938
1000
  it "does not lock if its already locked" do
939
1001
  flush_cache
940
1002
  shell_out!("yum versionlock add chef_rpm")
941
- yum_package.package_name("chef_rpm")
942
- yum_package.run_action(:lock)
943
- expect(yum_package.updated_by_last_action?).to be false
1003
+ yum_package("chef_rpm") do
1004
+ options default_options
1005
+ action :lock
1006
+ end.should_not_be_updated
944
1007
  expect(shell_out("yum versionlock list").stdout.chomp).to match("^0:chef_rpm-")
945
1008
  end
946
1009
 
947
1010
  it "unlocks an rpm" do
948
1011
  flush_cache
949
1012
  shell_out!("yum versionlock add chef_rpm")
950
- yum_package.package_name("chef_rpm")
951
- yum_package.run_action(:unlock)
952
- expect(yum_package.updated_by_last_action?).to be true
1013
+ yum_package("chef_rpm") do
1014
+ options default_options
1015
+ action :unlock
1016
+ end.should_be_updated
953
1017
  expect(shell_out("yum versionlock list").stdout.chomp).not_to match("^0:chef_rpm-")
954
1018
  end
955
1019
 
956
1020
  it "does not unlock an already locked rpm" do
957
1021
  flush_cache
958
- yum_package.package_name("chef_rpm")
959
- yum_package.run_action(:unlock)
960
- expect(yum_package.updated_by_last_action?).to be false
1022
+ yum_package("chef_rpm") do
1023
+ options default_options
1024
+ action :unlock
1025
+ end.should_not_be_updated
961
1026
  expect(shell_out("yum versionlock list").stdout.chomp).not_to match("^0:chef_rpm-")
962
1027
  end
963
1028
 
964
1029
  it "check that we can lock based on provides" do
965
1030
  flush_cache
966
- yum_package.package_name("chef_rpm_provides")
967
- yum_package.run_action(:lock)
968
- expect(yum_package.updated_by_last_action?).to be true
1031
+ yum_package("chef_rpm_provides") do
1032
+ options default_options
1033
+ action :lock
1034
+ end.should_be_updated
969
1035
  expect(shell_out("yum versionlock list").stdout.chomp).to match("^0:chef_rpm-")
970
1036
  end
971
1037
 
972
1038
  it "check that we can unlock based on provides" do
973
1039
  flush_cache
974
1040
  shell_out!("yum versionlock add chef_rpm")
975
- yum_package.package_name("chef_rpm_provides")
976
- yum_package.run_action(:unlock)
977
- expect(yum_package.updated_by_last_action?).to be true
1041
+ yum_package("chef_rpm_provides") do
1042
+ options default_options
1043
+ action :unlock
1044
+ end.should_be_updated
978
1045
  expect(shell_out("yum versionlock list").stdout.chomp).not_to match("^0:chef_rpm-")
979
1046
  end
980
1047
  end