chef 17.0.242-universal-mingw32 → 17.1.35-universal-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +0 -12
- data/Rakefile +2 -2
- data/chef.gemspec +9 -20
- data/lib/chef/chef_fs/file_pattern.rb +2 -2
- data/lib/chef/compliance/default_attributes.rb +1 -1
- data/lib/chef/compliance/reporter/automate.rb +1 -1
- data/lib/chef/compliance/runner.rb +2 -2
- data/lib/chef/cookbook/cookbook_version_loader.rb +3 -3
- data/lib/chef/cookbook/gem_installer.rb +5 -1
- data/lib/chef/dsl/declare_resource.rb +5 -10
- data/lib/chef/formatters/doc.rb +2 -1
- data/lib/chef/node.rb +1 -1
- data/lib/chef/provider/directory.rb +6 -6
- data/lib/chef/provider/link.rb +1 -1
- data/lib/chef/provider/package/dnf/dnf_helper.py +11 -10
- data/lib/chef/provider/package/dnf/python_helper.rb +9 -8
- data/lib/chef/provider/package/yum.rb +1 -4
- data/lib/chef/provider/package/yum/python_helper.rb +15 -10
- data/lib/chef/provider/package/yum/yum_helper.py +46 -62
- data/lib/chef/provider/registry_key.rb +1 -1
- data/lib/chef/provider/service/systemd.rb +1 -1
- data/lib/chef/provider/systemd_unit.rb +1 -1
- data/lib/chef/provider/template/content.rb +1 -1
- data/lib/chef/provider/windows_script.rb +1 -1
- data/lib/chef/resource.rb +6 -7
- data/lib/chef/resource/execute.rb +2 -2
- data/lib/chef/resource/inspec_waiver_file_entry.rb +155 -0
- data/lib/chef/resource/lwrp_base.rb +17 -2
- data/lib/chef/resource/remote_file.rb +2 -2
- data/lib/chef/resource/windows_env.rb +1 -1
- data/lib/chef/resource/windows_font.rb +1 -1
- data/lib/chef/resource/windows_pagefile.rb +2 -2
- data/lib/chef/resource/windows_path.rb +2 -2
- data/lib/chef/resource/windows_security_policy.rb +5 -2
- data/lib/chef/resource/windows_task.rb +1 -1
- data/lib/chef/resource_builder.rb +8 -2
- data/lib/chef/resources.rb +1 -0
- data/lib/chef/run_lock.rb +1 -1
- data/lib/chef/runner.rb +1 -1
- data/lib/chef/shell/ext.rb +3 -3
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +9 -2
- data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
- data/spec/data/knife-site-subcommands/plugins/knife/example_subcommand.rb +0 -0
- data/spec/data/knife_subcommand/test_explicit_category.rb +7 -0
- data/spec/data/knife_subcommand/test_name_mapping.rb +4 -0
- data/spec/data/knife_subcommand/test_yourself.rb +21 -0
- data/spec/functional/resource/dnf_package_spec.rb +857 -537
- data/spec/functional/resource/group_spec.rb +1 -1
- data/spec/functional/resource/link_spec.rb +1 -1
- data/spec/functional/resource/remote_file_spec.rb +1 -1
- data/spec/functional/resource/windows_env_spec.rb +2 -2
- data/spec/functional/resource/yum_package_spec.rb +495 -428
- data/spec/integration/client/client_spec.rb +0 -20
- data/spec/integration/recipes/unified_mode_spec.rb +70 -0
- data/spec/spec_helper.rb +3 -0
- data/spec/support/chef_helpers.rb +1 -1
- data/spec/support/shared/functional/execute_resource.rb +1 -1
- data/spec/support/shared/functional/knife.rb +37 -0
- data/spec/support/shared/integration/knife_support.rb +192 -0
- data/spec/support/shared/unit/knife_shared.rb +39 -0
- data/spec/support/shared/unit/provider/file.rb +1 -1
- data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +1 -1
- data/spec/unit/compliance/runner_spec.rb +1 -1
- data/spec/unit/provider/link_spec.rb +1 -1
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -0
- data/spec/unit/provider/package/yum/python_helper_spec.rb +1 -0
- data/spec/unit/provider/service/systemd_service_spec.rb +2 -2
- data/spec/unit/provider/systemd_unit_spec.rb +2 -2
- data/spec/unit/resource/inspec_waiver_file_entry_spec.rb +80 -0
- data/tasks/rspec.rb +4 -9
- metadata +16 -160
- data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +0 -79
- data/lib/chef/provider/package/yum/simplejson/__init__.py +0 -318
- data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/decoder.py +0 -354
- data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/encoder.py +0 -440
- data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/scanner.py +0 -65
- data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
- 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"]
|
@@ -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("/",
|
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(
|
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(
|
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?(
|
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(:
|
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
|
-
|
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
|
88
|
-
|
89
|
-
|
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
|
95
|
-
|
96
|
-
|
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
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
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
|
112
|
-
|
113
|
-
|
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
|
120
|
-
|
121
|
-
|
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
|
128
|
-
|
129
|
-
|
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
|
137
|
-
|
138
|
-
|
139
|
-
|
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
|
145
|
-
|
146
|
-
|
147
|
-
|
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
|
153
|
-
|
154
|
-
|
155
|
-
|
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
|
161
|
-
|
162
|
-
|
163
|
-
|
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
|
169
|
-
|
170
|
-
|
171
|
-
|
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
|
177
|
-
|
178
|
-
|
179
|
-
|
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
|
185
|
-
|
186
|
-
|
187
|
-
|
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.
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
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
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
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
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
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
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
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
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
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
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
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
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
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
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
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
|
279
|
-
|
280
|
-
|
281
|
-
|
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
|
287
|
-
|
288
|
-
|
289
|
-
|
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
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
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
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
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
|
315
|
-
|
316
|
-
|
317
|
-
|
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
|
323
|
-
|
324
|
-
|
325
|
-
|
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
|
331
|
-
|
332
|
-
|
333
|
-
|
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
|
339
|
-
|
340
|
-
|
341
|
-
|
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
|
347
|
-
|
348
|
-
|
349
|
-
|
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
|
355
|
-
|
356
|
-
|
357
|
-
|
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
|
363
|
-
|
364
|
-
|
365
|
-
|
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
|
371
|
-
|
372
|
-
|
373
|
-
|
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
|
380
|
+
it "when there is no solution to the constraint" do
|
377
381
|
flush_cache
|
378
|
-
|
379
|
-
|
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
|
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
|
-
|
385
|
-
|
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.
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
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.
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
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.
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
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
|
-
|
420
|
-
|
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
|
427
|
-
|
428
|
-
|
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
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
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
|
444
|
-
|
445
|
-
|
446
|
-
|
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.
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
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
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
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
|
472
|
-
|
473
|
-
|
474
|
-
|
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
|
480
|
-
|
481
|
-
|
482
|
-
|
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
|
488
|
-
|
489
|
-
|
490
|
-
|
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
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
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
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
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
|
517
|
-
|
518
|
-
|
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
|
525
|
-
|
526
|
-
|
527
|
-
|
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
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
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
|
545
|
-
|
546
|
-
|
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
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
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
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
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
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
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
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
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
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
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
|
604
|
-
|
605
|
-
|
606
|
-
|
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
|
-
|
614
|
-
|
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
|
620
|
-
|
621
|
-
|
622
|
-
|
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 {
|
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
|
631
|
-
|
632
|
-
|
633
|
-
|
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
|
644
|
-
|
645
|
-
|
646
|
-
|
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
|
650
|
-
|
651
|
-
|
652
|
-
|
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
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
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
|
674
|
-
|
675
|
-
|
676
|
-
|
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.
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
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
|
691
|
-
|
692
|
-
|
693
|
-
|
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
|
699
|
-
|
700
|
-
|
701
|
-
|
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
|
710
|
-
|
711
|
-
|
712
|
-
|
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
|
719
|
-
|
720
|
-
|
721
|
-
|
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
|
729
|
-
|
730
|
-
|
731
|
-
|
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
|
737
|
-
|
738
|
-
|
739
|
-
|
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.
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
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.
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
|
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
|
763
|
-
|
764
|
-
|
765
|
-
|
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
|
771
|
-
|
772
|
-
|
773
|
-
|
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
|
779
|
-
|
780
|
-
|
781
|
-
|
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
|
787
|
-
|
788
|
-
|
789
|
-
|
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
|
795
|
-
|
796
|
-
|
797
|
-
|
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.
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
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
|
817
|
-
|
818
|
-
|
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
|
824
|
-
|
825
|
-
|
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
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
|
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
|
841
|
-
|
842
|
-
|
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
|
849
|
-
|
850
|
-
|
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
|
857
|
-
|
858
|
-
|
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
|
867
|
-
|
868
|
-
|
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
|
874
|
-
|
875
|
-
|
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
|
881
|
-
|
882
|
-
|
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
|
888
|
-
|
889
|
-
|
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
|
895
|
-
|
896
|
-
|
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.
|
905
|
-
|
906
|
-
|
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
|
915
|
-
|
916
|
-
|
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
|
933
|
-
|
934
|
-
|
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
|
942
|
-
|
943
|
-
|
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
|
951
|
-
|
952
|
-
|
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
|
959
|
-
|
960
|
-
|
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
|
967
|
-
|
968
|
-
|
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
|
976
|
-
|
977
|
-
|
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
|