chef 11.6.0 → 11.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +6 -14
  2. data/Rakefile +12 -4
  3. data/distro/common/html/chef-client.8.html +4 -4
  4. data/distro/common/html/chef-expander.8.html +4 -4
  5. data/distro/common/html/chef-expanderctl.8.html +4 -4
  6. data/distro/common/html/chef-server-webui.8.html +4 -4
  7. data/distro/common/html/chef-server.8.html +4 -4
  8. data/distro/common/html/chef-shell.1.html +4 -4
  9. data/distro/common/html/chef-solo.8.html +4 -4
  10. data/distro/common/html/chef-solr.8.html +5 -5
  11. data/distro/common/html/knife-bootstrap.1.html +4 -4
  12. data/distro/common/html/knife-client.1.html +4 -4
  13. data/distro/common/html/knife-configure.1.html +4 -4
  14. data/distro/common/html/knife-cookbook-site.1.html +4 -4
  15. data/distro/common/html/knife-cookbook.1.html +4 -4
  16. data/distro/common/html/knife-data-bag.1.html +4 -4
  17. data/distro/common/html/knife-environment.1.html +4 -4
  18. data/distro/common/html/knife-exec.1.html +4 -4
  19. data/distro/common/html/knife-index.1.html +4 -4
  20. data/distro/common/html/knife-node.1.html +4 -4
  21. data/distro/common/html/knife-role.1.html +4 -4
  22. data/distro/common/html/knife-search.1.html +4 -4
  23. data/distro/common/html/knife-ssh.1.html +4 -4
  24. data/distro/common/html/knife-status.1.html +4 -4
  25. data/distro/common/html/knife-tag.1.html +4 -4
  26. data/distro/common/html/knife.1.html +4 -4
  27. data/distro/common/man/man1/chef-shell.1 +1 -1
  28. data/distro/common/man/man1/knife-bootstrap.1 +1 -1
  29. data/distro/common/man/man1/knife-client.1 +0 -99
  30. data/distro/common/man/man1/knife-configure.1 +1 -1
  31. data/distro/common/man/man1/knife-cookbook-site.1 +1 -1
  32. data/distro/common/man/man1/knife-cookbook.1 +1 -1
  33. data/distro/common/man/man1/knife-data-bag.1 +1 -1
  34. data/distro/common/man/man1/knife-environment.1 +0 -168
  35. data/distro/common/man/man1/knife-exec.1 +1 -1
  36. data/distro/common/man/man1/knife-index.1 +1 -1
  37. data/distro/common/man/man1/knife-node.1 +1 -1
  38. data/distro/common/man/man1/knife-role.1 +1 -1
  39. data/distro/common/man/man1/knife-search.1 +1 -1
  40. data/distro/common/man/man1/knife-ssh.1 +1 -1
  41. data/distro/common/man/man1/knife-status.1 +1 -1
  42. data/distro/common/man/man1/knife-tag.1 +1 -1
  43. data/distro/common/man/man1/knife.1 +1 -1
  44. data/distro/common/man/man8/chef-client.8 +1 -1
  45. data/distro/common/man/man8/chef-expander.8 +1 -1
  46. data/distro/common/man/man8/chef-expanderctl.8 +1 -1
  47. data/distro/common/man/man8/chef-server-webui.8 +1 -1
  48. data/distro/common/man/man8/chef-server.8 +1 -1
  49. data/distro/common/man/man8/chef-solo.8 +1 -1
  50. data/distro/common/man/man8/chef-solr.8 +1 -1
  51. data/lib/chef/deprecation/provider/template.rb +1 -1
  52. data/lib/chef/provider/remote_file/cache_control_data.rb +4 -1
  53. data/lib/chef/version.rb +3 -3
  54. data/lib/chef/win32/api/file.rb +7 -0
  55. data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -0
  56. data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -0
  57. data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -0
  58. data/spec/data/apt/chef-integration-test-1.0/debian/copyright +34 -0
  59. data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -0
  60. data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -0
  61. data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -0
  62. data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -0
  63. data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -0
  64. data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -0
  65. data/spec/data/apt/chef-integration-test-1.1/debian/copyright +34 -0
  66. data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -0
  67. data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -0
  68. data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -0
  69. data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -0
  70. data/spec/data/apt/chef-integration-test_1.0-1_amd64.deb +0 -0
  71. data/spec/data/apt/chef-integration-test_1.0.orig.tar.gz +0 -0
  72. data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -0
  73. data/spec/data/apt/chef-integration-test_1.1-1_amd64.deb +0 -0
  74. data/spec/data/apt/chef-integration-test_1.1.orig.tar.gz +0 -0
  75. data/spec/data/apt/var/www/apt/conf/distributions +7 -0
  76. data/spec/data/apt/var/www/apt/conf/incoming +4 -0
  77. data/spec/data/apt/var/www/apt/conf/pulls +3 -0
  78. data/spec/data/apt/var/www/apt/db/checksums.db +0 -0
  79. data/spec/data/apt/var/www/apt/db/contents.cache.db +0 -0
  80. data/spec/data/apt/var/www/apt/db/packages.db +0 -0
  81. data/spec/data/apt/var/www/apt/db/references.db +0 -0
  82. data/spec/data/apt/var/www/apt/db/release.caches.db +0 -0
  83. data/spec/data/apt/var/www/apt/db/version +4 -0
  84. data/spec/data/apt/var/www/apt/dists/sid/Release +19 -0
  85. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -0
  86. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages.gz +0 -0
  87. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -0
  88. data/spec/data/apt/var/www/apt/dists/sid/main/binary-i386/Packages +0 -0
  89. data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.0-1_amd64.deb +0 -0
  90. data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.1-1_amd64.deb +0 -0
  91. data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -0
  92. data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -0
  93. data/spec/functional/provider/remote_file/cache_control_data_spec.rb +101 -0
  94. data/spec/functional/resource/package_spec.rb +297 -0
  95. data/spec/functional/resource/user_spec.rb +6 -14
  96. data/spec/spec_helper.rb +29 -0
  97. data/spec/support/shared/functional/file_resource.rb +37 -0
  98. data/spec/unit/provider/package/rubygems_spec.rb +1 -1
  99. data/spec/unit/provider/remote_file/cache_control_data_spec.rb +41 -0
  100. metadata +101 -43
@@ -0,0 +1,4 @@
1
+ Name: default
2
+ IncomingDir: /tmp/incoming
3
+ TempDir: /tmp
4
+ Allow: sid unstable>sid
@@ -0,0 +1,3 @@
1
+ Name: sid
2
+ From: sid
3
+ Components: main
@@ -0,0 +1,4 @@
1
+ 4.2.0
2
+ 3.3.0
3
+ bdb4.8.30
4
+ bdb4.8.0
@@ -0,0 +1,19 @@
1
+ Origin: localhost
2
+ Label: apt repository
3
+ Codename: sid
4
+ Date: Thu, 30 Sep 2010 16:33:01 UTC
5
+ Architectures: amd64
6
+ Components: main
7
+ Description: Apt repository
8
+ MD5Sum:
9
+ 92ed2cc14e37e9ab23466b27857d29ac 596 main/binary-amd64/Packages
10
+ c7726773341137b71cc971d44ddec4f5 394 main/binary-amd64/Packages.gz
11
+ 46cd71c965ce0813c94ef78c836cc7d3 104 main/binary-amd64/Release
12
+ SHA1:
13
+ cde25071c5fcee59cee8dcd773ca419dcb40d946 596 main/binary-amd64/Packages
14
+ ce04daff75d4b27371d691d645282b198045544a 394 main/binary-amd64/Packages.gz
15
+ 91ca9531e3afa7a540cabdc6030c6f75d315fec7 104 main/binary-amd64/Release
16
+ SHA256:
17
+ af601ce143f33405425746462973adc0fda3aceb381d1c739851b95ee0814ca3 596 main/binary-amd64/Packages
18
+ 15e98119705a08018d4583caabc91d36ba12e6f1c8af0f799a3ec8ca5bfaa80d 394 main/binary-amd64/Packages.gz
19
+ 098c599ac5b0a98785336afb2bc9c47002570ffa07dd62321c6f70b9fdb74325 104 main/binary-amd64/Release
@@ -0,0 +1,16 @@
1
+ Package: chef-integration-test
2
+ Version: 1.1-1
3
+ Architecture: amd64
4
+ Maintainer: Joshua Timberman <Joshua Timberman <joshua@opscode.com>>
5
+ Installed-Size: 32
6
+ Homepage: http://tickets.opscode.com
7
+ Priority: extra
8
+ Section: ruby
9
+ Filename: pool/main/c/chef-integration-test/chef-integration-test_1.1-1_amd64.deb
10
+ Size: 1722
11
+ SHA256: 84e2f087f7e11d1b73743007ecfc6b8b34e03f6917c0993b35c0758ee59702c1
12
+ SHA1: 43c5653a9a5b9419849173a4ec3a9855cf0327a3
13
+ MD5sum: 4b05bace483dbca54efc21f97ee47e1d
14
+ Description: Chef integration tests for APT in Cucumber
15
+ This package is used for cucumber integration testing in Chef.
16
+
@@ -0,0 +1,5 @@
1
+ Component: main
2
+ Origin: localhost
3
+ Label: apt repository
4
+ Architecture: amd64
5
+ Description: Apt repository
@@ -0,0 +1 @@
1
+ chef-integration-test chef-integration-test/sample-var string "hello world"
@@ -0,0 +1 @@
1
+ chef-integration-test chef-integration-test/sample-var string "<%= node[:preseed_value] -%>"
@@ -0,0 +1,101 @@
1
+ #
2
+ # Author:: Adam Edwards (<adamed@opscode.com>)
3
+ # Copyright:: Copyright (c) 2013 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'spec_helper'
20
+ require 'uri'
21
+
22
+ describe Chef::Provider::RemoteFile::CacheControlData do
23
+
24
+ before do
25
+ @original_config = Chef::Config.hash_dup
26
+ end
27
+
28
+ after do
29
+ Chef::Config.configuration = @original_config if @original_config
30
+ end
31
+
32
+ before(:each) do
33
+ Chef::Config[:file_cache_path] = Dir.mktmpdir
34
+ end
35
+
36
+ after(:each) do
37
+ FileUtils.rm_rf(Chef::Config[:file_cache_path])
38
+ end
39
+
40
+ let(:uri) { URI.parse("http://www.bing.com/robots.txt") }
41
+
42
+ describe "when the cache control data save method is invoked" do
43
+
44
+ subject(:cache_control_data) do
45
+ Chef::Provider::RemoteFile::CacheControlData.load_and_validate(uri, file_checksum)
46
+ end
47
+
48
+ # the checksum of the file last we fetched it.
49
+ let(:file_checksum) { "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" }
50
+
51
+ let(:etag) { "\"a-strong-identifier\"" }
52
+ let(:mtime) { "Thu, 01 Aug 2013 08:16:32 GMT" }
53
+
54
+ before do
55
+ cache_control_data.etag = etag
56
+ cache_control_data.mtime = mtime
57
+ cache_control_data.checksum = file_checksum
58
+ end
59
+
60
+ it "writes data to the cache" do
61
+ cache_control_data.save
62
+ end
63
+
64
+ it "writes the data to the cache and the same data can be read back" do
65
+ cache_control_data.save
66
+ saved_cache_control_data = Chef::Provider::RemoteFile::CacheControlData.load_and_validate(uri, file_checksum)
67
+ saved_cache_control_data.etag.should == cache_control_data.etag
68
+ saved_cache_control_data.mtime.should == cache_control_data.mtime
69
+ saved_cache_control_data.checksum.should == cache_control_data.checksum
70
+ end
71
+
72
+ # Cover the very long remote file path case -- see CHEF-4422 where
73
+ # local cache file names generated from the long uri exceeded
74
+ # local file system path limits resulting in exceptions from
75
+ # file system API's on both Windows and Unix systems.
76
+ context "when the length of the uri exceeds the path length limits for the local file system" do
77
+ let(:uri_exceeds_file_system_limit) do
78
+ URI.parse("http://www.bing.com/" + ('0' * 1024))
79
+ end
80
+
81
+ let(:uri) { uri_exceeds_file_system_limit }
82
+
83
+ it "writes data to the cache" do
84
+ lambda do
85
+ cache_control_data.save
86
+ end.should_not raise_error
87
+ end
88
+
89
+ it "writes the data to the cache and the same data can be read back" do
90
+ cache_control_data.save
91
+ saved_cache_control_data = Chef::Provider::RemoteFile::CacheControlData.load_and_validate(uri, file_checksum)
92
+ saved_cache_control_data.etag.should == cache_control_data.etag
93
+ saved_cache_control_data.mtime.should == cache_control_data.mtime
94
+ saved_cache_control_data.checksum.should == cache_control_data.checksum
95
+ end
96
+
97
+ end
98
+ end
99
+
100
+ end
101
+
@@ -0,0 +1,297 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Author:: Daniel DeLeo (<dan@opscode.com>)
4
+ # Copyright:: Copyright (c) 2013 Opscode, Inc.
5
+ # License:: Apache License, Version 2.0
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ require 'spec_helper'
21
+ require 'webrick'
22
+
23
+ module AptServer
24
+ def enable_testing_apt_source
25
+ File.open("/etc/apt/sources.list.d/chef-integration-test.list", "w+") do |f|
26
+ f.puts "deb http://localhost:9000/ sid main"
27
+ end
28
+ # Magic to update apt cache for only our repo
29
+ shell_out!("apt-get update " +
30
+ '-o Dir::Etc::sourcelist="sources.list.d/chef-integration-test.list" ' +
31
+ '-o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"')
32
+ end
33
+
34
+ def disable_testing_apt_source
35
+ FileUtils.rm("/etc/apt/sources.list.d/chef-integration-test.list")
36
+ rescue Errno::ENOENT
37
+ puts("Attempted to remove integration test from /etc/apt/sources.list.d but it didn't exist")
38
+ end
39
+
40
+ def tcp_test_port(hostname, port)
41
+ tcp_socket = TCPSocket.new(hostname, port)
42
+ true
43
+ rescue Errno::ETIMEDOUT
44
+ false
45
+ rescue Errno::ECONNREFUSED
46
+ false
47
+ ensure
48
+ tcp_socket && tcp_socket.close
49
+ end
50
+
51
+ def apt_server
52
+ @apt_server ||= WEBrick::HTTPServer.new(
53
+ :Port => 9000,
54
+ :DocumentRoot => apt_data_dir + "/var/www/apt",
55
+ # Make WEBrick quiet, comment out for debug.
56
+ :Logger => Logger.new(StringIO.new),
57
+ :AccessLog => [ StringIO.new, WEBrick::AccessLog::COMMON_LOG_FORMAT ]
58
+ )
59
+ end
60
+
61
+ def run_apt_server
62
+ apt_server.start
63
+ end
64
+
65
+ def start_apt_server
66
+ @apt_server_thread = Thread.new do
67
+ run_apt_server
68
+ end
69
+ until tcp_test_port("localhost", 9000) do
70
+ if @apt_server_thread.alive?
71
+ sleep 1
72
+ else
73
+ @apt_server_thread.join
74
+ raise "apt server failed to start"
75
+ end
76
+ end
77
+ end
78
+
79
+ def stop_apt_server
80
+ apt_server.shutdown
81
+ @apt_server_thread.join
82
+ end
83
+
84
+ def apt_data_dir
85
+ File.join(CHEF_SPEC_DATA, "apt")
86
+ end
87
+ end
88
+
89
+ metadata = { :unix_only => true,
90
+ :requires_root => true,
91
+ :provider => {:package => Chef::Provider::Package::Apt},
92
+ :arch => "x86_64" # test packages are 64bit
93
+ }
94
+
95
+ describe Chef::Resource::Package, metadata do
96
+ include Chef::Mixin::ShellOut
97
+
98
+ def chef_test_dpkg_installed?
99
+ shell_out("dpkg -l chef-integration-test").status.success?
100
+ end
101
+
102
+ def dpkg_should_be_installed(pkg_name)
103
+ shell_out!("dpkg -l #{pkg_name}")
104
+ end
105
+
106
+
107
+ context "with a remote package source" do
108
+
109
+ include AptServer
110
+
111
+ before(:all) do
112
+ # Disable mixlib-shellout live streams
113
+ Chef::Log.level = :warn
114
+ start_apt_server
115
+ enable_testing_apt_source
116
+ end
117
+
118
+ after(:all) do
119
+ stop_apt_server
120
+ disable_testing_apt_source
121
+ shell_out!("apt-get clean")
122
+ end
123
+
124
+
125
+ after do
126
+ shell_out!("dpkg -r chef-integration-test")
127
+ shell_out("dpkg --clear-avail")
128
+ shell_out!("apt-get clean")
129
+ end
130
+
131
+ let(:node) do
132
+ n = Chef::Node.new
133
+ n.consume_external_attrs(OHAI_SYSTEM.data.dup, {})
134
+ n
135
+ end
136
+
137
+ let(:events) do
138
+ Chef::EventDispatch::Dispatcher.new
139
+ end
140
+
141
+ # TODO: lots of duplication from client.rb;
142
+ # All of this must be setup for preseed files to get found
143
+ let(:cookbook_collection) do
144
+ cookbook_path = File.join(CHEF_SPEC_DATA, "cookbooks")
145
+ cl = Chef::CookbookLoader.new(cookbook_path)
146
+ cl.load_cookbooks
147
+ Chef::Cookbook::FileVendor.on_create do |manifest|
148
+ Chef::Cookbook::FileSystemFileVendor.new(manifest, cookbook_path)
149
+ end
150
+ Chef::CookbookCollection.new(cl)
151
+ end
152
+
153
+ let(:run_context) do
154
+ Chef::RunContext.new(node, cookbook_collection, events)
155
+ end
156
+
157
+ def base_resource
158
+ r = Chef::Resource::Package.new("chef-integration-test", run_context)
159
+ # The apt repository in the spec data is not gpg signed, so we need to
160
+ # force apt to accept the package:
161
+ r.options("--force-yes")
162
+ r
163
+ end
164
+
165
+ let(:package_resource) do
166
+ base_resource
167
+ end
168
+
169
+ # it "results in a usable apt server" do
170
+ # shell_out!("apt-get install -q -y --force-yes chef-integration-test ", :env => { "DEBIAN_FRONTEND" => "noninteractive" })
171
+ # shell_out!("dpkg -l chef-integration-test")
172
+ # end
173
+
174
+ context "when the package is not yet installed" do
175
+ it "installs the package with action :install" do
176
+ package_resource.run_action(:install)
177
+ shell_out!("dpkg -l chef-integration-test")
178
+ package_resource.should be_updated_by_last_action
179
+ end
180
+
181
+ it "installs the package for action :upgrade" do
182
+ package_resource.run_action(:upgrade)
183
+ shell_out!("dpkg -l chef-integration-test")
184
+ package_resource.should be_updated_by_last_action
185
+ end
186
+
187
+ it "does nothing for action :remove" do
188
+ package_resource.run_action(:remove)
189
+ shell_out!("dpkg -l chef-integration-test", :returns => [1])
190
+ package_resource.should_not be_updated_by_last_action
191
+ end
192
+
193
+ it "does nothing for action :purge" do
194
+ package_resource.run_action(:purge)
195
+ shell_out!("dpkg -l chef-integration-test", :returns => [1])
196
+ package_resource.should_not be_updated_by_last_action
197
+ end
198
+
199
+ context "and a not-available package version is specified" do
200
+ let(:package_resource) do
201
+ r = base_resource
202
+ r.version("2.0")
203
+ r
204
+ end
205
+
206
+ it "raises a reasonable error for action :install" do
207
+ expect do
208
+ package_resource.run_action(:install)
209
+ end.to raise_error(Chef::Exceptions::Exec)
210
+ end
211
+
212
+ end
213
+
214
+ describe "when preseeding the install" do
215
+
216
+ let(:file_cache_path) { Dir.mktmpdir }
217
+
218
+ before do
219
+ @old_config = Chef::Config.configuration.dup
220
+ Chef::Config[:file_cache_path] = file_cache_path
221
+ debconf_reset = 'chef-integration-test chef-integration-test/sample-var string "INVALID"'
222
+ shell_out!("echo #{debconf_reset} |debconf-set-selections")
223
+ end
224
+
225
+ after do
226
+ FileUtils.rm_rf(file_cache_path)
227
+ Chef::Config.configuration = @old_config
228
+ end
229
+
230
+ context "with a preseed file" do
231
+
232
+ let(:package_resource) do
233
+ r = base_resource
234
+ r.cookbook_name = "preseed"
235
+ r.response_file("preseed-file.seed")
236
+ r
237
+ end
238
+
239
+ it "preseeds the package, then installs it" do
240
+ package_resource.run_action(:install)
241
+ cmd = shell_out!("debconf-show chef-integration-test")
242
+ cmd.stdout.should include('chef-integration-test/sample-var: "hello world"')
243
+ package_resource.should be_updated_by_last_action
244
+ end
245
+
246
+ context "and the preseed file exists and is up-to-date" do
247
+
248
+ before do
249
+ # Code here is duplicated from the implementation. Not great, but
250
+ # it should at least fail if the code gets out of sync.
251
+ source = File.join(CHEF_SPEC_DATA, "cookbooks/preseed/files/default/preseed-file.seed")
252
+ file_cache_dir = Chef::FileCache.create_cache_path("preseed/preseed")
253
+ dest = "#{file_cache_dir}/chef-integration-test-1.1-1.seed"
254
+ FileUtils.cp(source, dest)
255
+ end
256
+
257
+ it "does not update the package configuration" do
258
+ package_resource.run_action(:install)
259
+ cmd = shell_out!("debconf-show chef-integration-test")
260
+ cmd.stdout.should include('chef-integration-test/sample-var: INVALID')
261
+ package_resource.should be_updated_by_last_action
262
+ end
263
+
264
+ end
265
+
266
+ end
267
+
268
+ context "with a preseed template" do
269
+
270
+ let(:package_resource) do
271
+ r = base_resource
272
+ r.cookbook_name = "preseed"
273
+ r.response_file("preseed-template.seed")
274
+ r
275
+ end
276
+
277
+ before do
278
+ node.set[:preseed_value] = "FROM TEMPLATE"
279
+ end
280
+
281
+ it "preseeds the package, then installs it" do
282
+ package_resource.run_action(:install)
283
+ cmd = shell_out!("debconf-show chef-integration-test")
284
+ cmd.stdout.should include('chef-integration-test/sample-var: "FROM TEMPLATE"')
285
+ package_resource.should be_updated_by_last_action
286
+ end
287
+
288
+ end
289
+
290
+ end
291
+ end
292
+
293
+ end
294
+
295
+ end
296
+
297
+