puppet 7.1.0-x64-mingw32 → 7.6.1-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile.lock +38 -30
- data/ext/build_defaults.yaml +0 -1
- data/lib/puppet/application.rb +10 -6
- data/lib/puppet/application/agent.rb +1 -0
- data/lib/puppet/application/apply.rb +3 -2
- data/lib/puppet/application/device.rb +1 -0
- data/lib/puppet/application/script.rb +1 -0
- data/lib/puppet/application/ssl.rb +11 -0
- data/lib/puppet/configurer.rb +16 -3
- data/lib/puppet/defaults.rb +14 -19
- data/lib/puppet/environments.rb +16 -1
- data/lib/puppet/face/facts.rb +26 -2
- data/lib/puppet/ffi/windows/api_types.rb +1 -1
- data/lib/puppet/ffi/windows/constants.rb +1 -1
- data/lib/puppet/file_serving/configuration/parser.rb +5 -2
- data/lib/puppet/file_system/memory_file.rb +8 -1
- data/lib/puppet/file_system/windows.rb +2 -0
- data/lib/puppet/functions.rb +1 -1
- data/lib/puppet/functions/partition.rb +8 -0
- data/lib/puppet/http/factory.rb +4 -0
- data/lib/puppet/indirector/facts/facter.rb +1 -0
- data/lib/puppet/loaders.rb +0 -4
- data/lib/puppet/module.rb +1 -0
- data/lib/puppet/module_tool/applications/installer.rb +48 -2
- data/lib/puppet/module_tool/errors/shared.rb +17 -2
- data/lib/puppet/network/formats.rb +67 -0
- data/lib/puppet/network/http.rb +5 -2
- data/lib/puppet/network/http/api.rb +10 -6
- data/lib/puppet/network/http/api/master.rb +3 -2
- data/lib/puppet/network/http/api/master/v3.rb +2 -25
- data/lib/puppet/network/http/api/master/v3/environments.rb +2 -33
- data/lib/puppet/network/http/api/server.rb +10 -0
- data/lib/puppet/network/http/api/server/v3.rb +39 -0
- data/lib/puppet/network/http/api/server/v3/environments.rb +48 -0
- data/lib/puppet/node/environment.rb +12 -5
- data/lib/puppet/parser/ast/leaf.rb +3 -2
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
- data/lib/puppet/pops/loader/base_loader.rb +42 -32
- data/lib/puppet/pops/loader/dependency_loader.rb +2 -2
- data/lib/puppet/pops/loader/loader.rb +15 -5
- data/lib/puppet/pops/loader/module_loaders.rb +8 -8
- data/lib/puppet/pops/loader/predefined_loader.rb +4 -0
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +1 -1
- data/lib/puppet/pops/loader/static_loader.rb +4 -0
- data/lib/puppet/pops/loaders.rb +4 -4
- data/lib/puppet/pops/model/ast_transformer.rb +1 -1
- data/lib/puppet/pops/parser/lexer2.rb +0 -4
- data/lib/puppet/pops/types/p_type_set_type.rb +1 -1
- data/lib/puppet/pops/validation/checker4_0.rb +0 -1
- data/lib/puppet/property/list.rb +1 -1
- data/lib/puppet/provider/group/groupadd.rb +13 -8
- data/lib/puppet/provider/package/apt.rb +34 -2
- data/lib/puppet/provider/package/aptitude.rb +6 -0
- data/lib/puppet/provider/package/dnfmodule.rb +1 -1
- data/lib/puppet/provider/package/puppet_gem.rb +12 -1
- data/lib/puppet/provider/service/debian.rb +2 -0
- data/lib/puppet/provider/service/systemd.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +62 -8
- data/lib/puppet/reference/configuration.rb +6 -5
- data/lib/puppet/settings.rb +36 -30
- data/lib/puppet/settings/alias_setting.rb +37 -0
- data/lib/puppet/settings/environment_conf.rb +1 -0
- data/lib/puppet/type/package.rb +3 -3
- data/lib/puppet/util/autoload.rb +1 -8
- data/lib/puppet/util/monkey_patches.rb +7 -0
- data/lib/puppet/util/posix.rb +1 -1
- data/lib/puppet/util/windows/adsi.rb +46 -0
- data/lib/puppet/util/windows/principal.rb +9 -2
- data/lib/puppet/util/windows/sid.rb +4 -2
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +166 -146
- data/man/man5/puppet.conf.5 +14 -6
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +2 -2
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +8 -2
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +2 -2
- data/man/man8/puppet-ssl.8 +5 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +9 -0
- data/spec/integration/application/agent_spec.rb +160 -3
- data/spec/integration/application/apply_spec.rb +19 -0
- data/spec/integration/application/plugin_spec.rb +1 -1
- data/spec/integration/defaults_spec.rb +0 -7
- data/spec/integration/http/client_spec.rb +12 -0
- data/spec/integration/indirector/direct_file_server_spec.rb +1 -3
- data/spec/integration/indirector/file_content/file_server_spec.rb +0 -2
- data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -2
- data/spec/integration/parser/collection_spec.rb +10 -0
- data/spec/integration/resource/type_collection_spec.rb +2 -6
- data/spec/integration/transaction_spec.rb +4 -9
- data/spec/integration/util/windows/adsi_spec.rb +21 -1
- data/spec/integration/util/windows/principal_spec.rb +21 -0
- data/spec/integration/util/windows/registry_spec.rb +6 -10
- data/spec/spec_helper.rb +12 -5
- data/spec/unit/agent_spec.rb +8 -6
- data/spec/unit/application/agent_spec.rb +0 -1
- data/spec/unit/application/facts_spec.rb +58 -7
- data/spec/unit/application/filebucket_spec.rb +0 -2
- data/spec/unit/application/ssl_spec.rb +23 -0
- data/spec/unit/application_spec.rb +17 -9
- data/spec/unit/confine/feature_spec.rb +1 -1
- data/spec/unit/confine_spec.rb +8 -2
- data/spec/unit/environments_spec.rb +164 -88
- data/spec/unit/face/node_spec.rb +0 -11
- data/spec/unit/file_serving/configuration/parser_spec.rb +8 -1
- data/spec/unit/file_serving/metadata_spec.rb +3 -3
- data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
- data/spec/unit/file_system_spec.rb +9 -0
- data/spec/unit/forge/module_release_spec.rb +2 -7
- data/spec/unit/http/factory_spec.rb +19 -0
- data/spec/unit/indirector/face_spec.rb +0 -1
- data/spec/unit/indirector/facts/facter_spec.rb +20 -5
- data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
- data/spec/unit/indirector/indirection_spec.rb +8 -12
- data/spec/unit/indirector_spec.rb +2 -2
- data/spec/unit/module_spec.rb +1 -1
- data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
- data/spec/unit/network/formats_spec.rb +41 -0
- data/spec/unit/network/http/api/indirected_routes_spec.rb +0 -4
- data/spec/unit/network/http/api/master_spec.rb +38 -0
- data/spec/unit/network/http/api/{master → server}/v3/environments_spec.rb +2 -2
- data/spec/unit/network/http/api/{master → server}/v3_spec.rb +19 -19
- data/spec/unit/network/http/api_spec.rb +11 -11
- data/spec/unit/parser/compiler_spec.rb +3 -19
- data/spec/unit/parser/resource_spec.rb +14 -8
- data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +1 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +0 -4
- data/spec/unit/pops/types/type_parser_spec.rb +2 -1
- data/spec/unit/pops/validator/validator_spec.rb +20 -43
- data/spec/unit/property_spec.rb +1 -0
- data/spec/unit/provider/group/groupadd_spec.rb +5 -2
- data/spec/unit/provider/nameservice_spec.rb +66 -65
- data/spec/unit/provider/package/apt_spec.rb +28 -23
- data/spec/unit/provider/package/aptitude_spec.rb +1 -1
- data/spec/unit/provider/package/base_spec.rb +6 -5
- data/spec/unit/provider/package/dnfmodule_spec.rb +10 -1
- data/spec/unit/provider/package/pacman_spec.rb +18 -12
- data/spec/unit/provider/package/pip_spec.rb +6 -11
- data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
- data/spec/unit/provider/package/puppet_gem_spec.rb +28 -0
- data/spec/unit/provider/service/systemd_spec.rb +11 -0
- data/spec/unit/provider/user/hpux_spec.rb +1 -1
- data/spec/unit/provider/user/useradd_spec.rb +70 -3
- data/spec/unit/provider_spec.rb +6 -8
- data/spec/unit/resource/type_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +11 -10
- data/spec/unit/settings_spec.rb +13 -6
- data/spec/unit/ssl/base_spec.rb +0 -1
- data/spec/unit/ssl/certificate_request_spec.rb +4 -10
- data/spec/unit/ssl/ssl_provider_spec.rb +5 -2
- data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
- data/spec/unit/transaction/event_manager_spec.rb +14 -11
- data/spec/unit/transaction_spec.rb +13 -4
- data/spec/unit/type/file/content_spec.rb +0 -1
- data/spec/unit/type/file/selinux_spec.rb +0 -2
- data/spec/unit/type/file_spec.rb +0 -6
- data/spec/unit/type/group_spec.rb +13 -6
- data/spec/unit/type/resources_spec.rb +7 -7
- data/spec/unit/type/service_spec.rb +1 -1
- data/spec/unit/type/tidy_spec.rb +0 -1
- data/spec/unit/type_spec.rb +2 -2
- data/spec/unit/util/at_fork_spec.rb +2 -2
- data/spec/unit/util/autoload_spec.rb +5 -1
- data/spec/unit/util/backups_spec.rb +1 -2
- data/spec/unit/util/execution_spec.rb +15 -11
- data/spec/unit/util/inifile_spec.rb +6 -14
- data/spec/unit/util/log_spec.rb +8 -7
- data/spec/unit/util/logging_spec.rb +3 -3
- data/spec/unit/util/posix_spec.rb +16 -10
- data/spec/unit/util/selinux_spec.rb +76 -52
- data/spec/unit/util/suidmanager_spec.rb +44 -41
- data/spec/unit/util/windows/sid_spec.rb +6 -0
- data/spec/unit/util_spec.rb +13 -6
- metadata +18 -16
- data/spec/lib/matchers/include.rb +0 -27
- data/spec/lib/matchers/include_spec.rb +0 -32
- data/spec/unit/pops/parser/parse_application_spec.rb +0 -13
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +0 -23
- data/spec/unit/pops/parser/parse_site_spec.rb +0 -43
data/spec/unit/ssl/base_spec.rb
CHANGED
@@ -46,7 +46,6 @@ describe Puppet::SSL::Certificate do
|
|
46
46
|
describe "when initializing wrapped class from a file with #read" do
|
47
47
|
it "should open the file with ASCII encoding" do
|
48
48
|
path = '/foo/bar/cert'
|
49
|
-
allow(Puppet::SSL::Base).to receive(:valid_certname).and_return(true)
|
50
49
|
expect(Puppet::FileSystem).to receive(:read).with(path, :encoding => Encoding::ASCII).and_return("bar")
|
51
50
|
@base.read(path)
|
52
51
|
end
|
@@ -320,11 +320,8 @@ describe Puppet::SSL::CertificateRequest do
|
|
320
320
|
expect(csr.verify(key)).to be_truthy
|
321
321
|
end
|
322
322
|
|
323
|
-
|
324
|
-
|
325
|
-
# The problem seems to be with the ability to sign a CSR when using either of
|
326
|
-
# these hash algorithms
|
327
|
-
pending "should use SHA512 to sign the csr when SHA256 and SHA1 aren't available" do
|
323
|
+
it "should use SHA512 to sign the csr when SHA256 and SHA1 aren't available" do
|
324
|
+
key = OpenSSL::PKey::RSA.new(2048)
|
328
325
|
csr = OpenSSL::X509::Request.new
|
329
326
|
expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA256").and_return(false)
|
330
327
|
expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA1").and_return(false)
|
@@ -334,11 +331,8 @@ describe Puppet::SSL::CertificateRequest do
|
|
334
331
|
expect(csr.verify(key)).to be_truthy
|
335
332
|
end
|
336
333
|
|
337
|
-
|
338
|
-
|
339
|
-
# The problem seems to be with the ability to sign a CSR when using either of
|
340
|
-
# these hash algorithms
|
341
|
-
pending "should use SHA384 to sign the csr when SHA256/SHA1/SHA512 aren't available" do
|
334
|
+
it "should use SHA384 to sign the csr when SHA256/SHA1/SHA512 aren't available" do
|
335
|
+
key = OpenSSL::PKey::RSA.new(2048)
|
342
336
|
csr = OpenSSL::X509::Request.new
|
343
337
|
expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA256").and_return(false)
|
344
338
|
expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA1").and_return(false)
|
@@ -271,8 +271,11 @@ describe Puppet::SSL::SSLProvider do
|
|
271
271
|
end
|
272
272
|
|
273
273
|
# This option is only available in openssl 1.1
|
274
|
-
#
|
275
|
-
|
274
|
+
# OpenSSL 1.1.1h no longer reports expired root CAs when using "verify".
|
275
|
+
# This regression was fixed in 1.1.1i, so only skip this test if we're on
|
276
|
+
# the affected version.
|
277
|
+
# See: https://github.com/openssl/openssl/pull/13585
|
278
|
+
if Puppet::Util::Package.versioncmp(OpenSSL::OPENSSL_LIBRARY_VERSION.split[1], '1.1.1h') != 0
|
276
279
|
it 'raises if root cert signature is invalid', if: defined?(OpenSSL::X509::V_FLAG_CHECK_SS_SIGNATURE) do
|
277
280
|
ca = global_cacerts.first
|
278
281
|
ca.sign(wrong_key, OpenSSL::Digest::SHA256.new)
|
@@ -33,10 +33,6 @@ describe Puppet::Transaction::AdditionalResourceGenerator do
|
|
33
33
|
|
34
34
|
newparam(:code)
|
35
35
|
|
36
|
-
def respond_to?(method_name)
|
37
|
-
method_name == self[:kind] || super
|
38
|
-
end
|
39
|
-
|
40
36
|
def eval_generate
|
41
37
|
eval_code
|
42
38
|
end
|
@@ -314,13 +310,13 @@ describe Puppet::Transaction::AdditionalResourceGenerator do
|
|
314
310
|
|
315
311
|
it "sets resources_failed_to_generate to true if resource#eval_generate raises an exception" do
|
316
312
|
catalog = compile_to_ral(<<-MANIFEST)
|
317
|
-
|
313
|
+
generator { thing: }
|
318
314
|
MANIFEST
|
319
315
|
|
320
|
-
allow(catalog.resource("
|
316
|
+
allow(catalog.resource("Generator[thing]")).to receive(:eval_generate).and_raise(RuntimeError)
|
321
317
|
relationship_graph = relationship_graph_for(catalog)
|
322
318
|
generator = Puppet::Transaction::AdditionalResourceGenerator.new(catalog, relationship_graph, prioritizer)
|
323
|
-
generator.eval_generate(catalog.resource("
|
319
|
+
generator.eval_generate(catalog.resource("Generator[thing]"))
|
324
320
|
|
325
321
|
expect(generator.resources_failed_to_generate).to be_truthy
|
326
322
|
end
|
@@ -152,6 +152,9 @@ describe Puppet::Transaction::EventManager do
|
|
152
152
|
|
153
153
|
@resource = Puppet::Type.type(:file).new :path => make_absolute("/my/file")
|
154
154
|
@event = Puppet::Transaction::Event.new(:name => :event, :resource => @resource)
|
155
|
+
|
156
|
+
@resource.class.send(:define_method, :callback1) {}
|
157
|
+
@resource.class.send(:define_method, :callback2) {}
|
155
158
|
end
|
156
159
|
|
157
160
|
it "should call the required callback once for each set of associated events" do
|
@@ -178,7 +181,7 @@ describe Puppet::Transaction::EventManager do
|
|
178
181
|
|
179
182
|
allow(@resource).to receive(:callback1)
|
180
183
|
|
181
|
-
@manager.process_events(@resource)
|
184
|
+
@manager.process_events(@resource)
|
182
185
|
|
183
186
|
expect(@transaction.resource_status(@resource).events.length).to eq(1)
|
184
187
|
end
|
@@ -211,9 +214,11 @@ describe Puppet::Transaction::EventManager do
|
|
211
214
|
@event2 = Puppet::Transaction::Event.new(:name => :event, :resource => @resource)
|
212
215
|
@event2.status = "success"
|
213
216
|
expect(@manager).to receive(:queued_events).with(@resource).and_yield(:callback1, [@event, @event2])
|
217
|
+
@resource.class.send(:define_method, :callback1) {}
|
214
218
|
end
|
215
219
|
|
216
220
|
it "should call the callback" do
|
221
|
+
|
217
222
|
expect(@resource).to receive(:callback1)
|
218
223
|
|
219
224
|
@manager.process_events(@resource)
|
@@ -225,6 +230,7 @@ describe Puppet::Transaction::EventManager do
|
|
225
230
|
allow(@event).to receive(:status).and_return("noop")
|
226
231
|
allow(@resource).to receive(:event).and_return(Puppet::Transaction::Event.new)
|
227
232
|
expect(@manager).to receive(:queued_events).with(@resource).and_yield(:callback1, [@event])
|
233
|
+
@resource.class.send(:define_method, :callback1) {}
|
228
234
|
end
|
229
235
|
|
230
236
|
it "should log" do
|
@@ -254,6 +260,7 @@ describe Puppet::Transaction::EventManager do
|
|
254
260
|
allow(@resource).to receive(:event).and_return(Puppet::Transaction::Event.new)
|
255
261
|
allow(@resource).to receive(:noop?).and_return(true)
|
256
262
|
expect(@manager).to receive(:queued_events).with(@resource).and_yield(:callback1, [@event])
|
263
|
+
@resource.class.send(:define_method, :callback1) {}
|
257
264
|
end
|
258
265
|
|
259
266
|
it "should log" do
|
@@ -279,7 +286,7 @@ describe Puppet::Transaction::EventManager do
|
|
279
286
|
|
280
287
|
describe "and the callback fails" do
|
281
288
|
before do
|
282
|
-
|
289
|
+
@resource.class.send(:define_method, :callback1) { raise "a failure" }
|
283
290
|
|
284
291
|
expect(@manager).to receive(:queued_events).and_yield(:callback1, [@event])
|
285
292
|
end
|
@@ -323,16 +330,12 @@ describe Puppet::Transaction::EventManager do
|
|
323
330
|
|
324
331
|
describe "when queueing then processing events for a given resource" do
|
325
332
|
before do
|
326
|
-
@
|
327
|
-
@
|
333
|
+
@catalog = Puppet::Resource::Catalog.new
|
334
|
+
@target = Puppet::Type.type(:exec).new(name: 'target', path: ENV['PATH'])
|
335
|
+
@resource = Puppet::Type.type(:exec).new(name: 'resource', path: ENV['PATH'], notify: @target)
|
336
|
+
@catalog.add_resource(@resource, @target)
|
328
337
|
|
329
|
-
@
|
330
|
-
@target = Puppet::Type.type(:file).new :path => make_absolute("/your/file")
|
331
|
-
|
332
|
-
@graph = allow('graph')
|
333
|
-
allow(@graph).to receive(:matching_edges).and_return([])
|
334
|
-
allow(@graph).to receive(:matching_edges).with(anything, @resource).and_return([double('edge', :target => @target, :callback => :refresh)])
|
335
|
-
allow(@manager).to receive(:relationship_graph).and_return(@graph)
|
338
|
+
@manager = Puppet::Transaction::EventManager.new(Puppet::Transaction.new(@catalog, nil, nil))
|
336
339
|
|
337
340
|
@event = Puppet::Transaction::Event.new(:name => :notify, :resource => @target)
|
338
341
|
@event2 = Puppet::Transaction::Event.new(:name => :service_start, :resource => @target, :invalidate_refreshes => true)
|
@@ -5,6 +5,13 @@ require 'puppet_spec/compiler'
|
|
5
5
|
require 'puppet/transaction'
|
6
6
|
require 'fileutils'
|
7
7
|
|
8
|
+
Puppet::Type.newtype(:generator) do
|
9
|
+
newparam(:name) { isnamevar }
|
10
|
+
|
11
|
+
def generate
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
8
15
|
describe Puppet::Transaction do
|
9
16
|
include PuppetSpec::Files
|
10
17
|
include PuppetSpec::Compiler
|
@@ -323,9 +330,9 @@ describe Puppet::Transaction do
|
|
323
330
|
describe "when generating resources before traversal" do
|
324
331
|
let(:catalog) { Puppet::Resource::Catalog.new }
|
325
332
|
let(:transaction) { Puppet::Transaction.new(catalog, nil, Puppet::Graph::SequentialPrioritizer.new) }
|
326
|
-
let(:generator) { Puppet::Type.type(:
|
333
|
+
let(:generator) { Puppet::Type.type(:generator).new :title => "generator" }
|
327
334
|
let(:generated) do
|
328
|
-
%w[a b c].map { |name| Puppet::Type.type(:
|
335
|
+
%w[a b c].map { |name| Puppet::Type.type(:generator).new(:name => name) }
|
329
336
|
end
|
330
337
|
|
331
338
|
before :each do
|
@@ -633,7 +640,7 @@ describe Puppet::Transaction do
|
|
633
640
|
end
|
634
641
|
|
635
642
|
describe "and new resources are generated" do
|
636
|
-
let(:generator) { Puppet::Type.type(:
|
643
|
+
let(:generator) { Puppet::Type.type(:generator).new :title => "generator" }
|
637
644
|
let(:generated) do
|
638
645
|
%w[a b c].map { |name| Puppet::Type.type(:package).new :title => "foo", :name => name, :provider => :apt }
|
639
646
|
end
|
@@ -751,6 +758,9 @@ describe Puppet::Transaction do
|
|
751
758
|
def self.is_selinux_enabled
|
752
759
|
true
|
753
760
|
end
|
761
|
+
|
762
|
+
def self.matchpathcon_fini
|
763
|
+
end
|
754
764
|
end
|
755
765
|
end
|
756
766
|
|
@@ -794,7 +804,6 @@ describe Puppet::Transaction do
|
|
794
804
|
before do
|
795
805
|
@resource = Puppet::Type.type(:notify).new :title => "foobar"
|
796
806
|
@catalog.add_resource @resource
|
797
|
-
allow(@transaction).to receive(:add_dynamically_generated_resources)
|
798
807
|
end
|
799
808
|
|
800
809
|
it 'should stop processing if :stop_processing? is true' do
|
@@ -11,7 +11,6 @@ describe Puppet::Type.type(:file).attrclass(:content), :uses_checksums => true d
|
|
11
11
|
|
12
12
|
before do
|
13
13
|
File.open(filename, 'w') {|f| f.write "initial file content"}
|
14
|
-
allow(described_class).to receive(:standalone?).and_return(false)
|
15
14
|
end
|
16
15
|
|
17
16
|
around do |example|
|
@@ -9,8 +9,6 @@ require 'spec_helper'
|
|
9
9
|
@path = make_absolute("/my/file")
|
10
10
|
@resource = Puppet::Type.type(:file).new :path => @path
|
11
11
|
@sel = property.new :resource => @resource
|
12
|
-
allow(@sel).to receive(:normalize_selinux_category).with("s0").and_return("s0")
|
13
|
-
allow(@sel).to receive(:normalize_selinux_category).with(nil).and_return(nil)
|
14
12
|
end
|
15
13
|
|
16
14
|
it "retrieve on #{param} should return :absent if the file isn't statable" do
|
data/spec/unit/type/file_spec.rb
CHANGED
@@ -349,12 +349,6 @@ describe Puppet::Type.type(:file) do
|
|
349
349
|
end
|
350
350
|
|
351
351
|
describe "#flush" do
|
352
|
-
it "should flush all properties that respond to :flush" do
|
353
|
-
file[:source] = File.expand_path(__FILE__)
|
354
|
-
expect(file.parameter(:source)).to receive(:flush)
|
355
|
-
file.flush
|
356
|
-
end
|
357
|
-
|
358
352
|
it "should reset its stat reference" do
|
359
353
|
FileUtils.touch(path)
|
360
354
|
stat1 = file.stat
|
@@ -60,9 +60,12 @@ describe Puppet::Type.type(:group) do
|
|
60
60
|
end
|
61
61
|
|
62
62
|
it "delegates the existence check to its provider" do
|
63
|
-
provider = @class.provide(:testing)
|
63
|
+
provider = @class.provide(:testing) do
|
64
|
+
def exists?
|
65
|
+
true
|
66
|
+
end
|
67
|
+
end
|
64
68
|
provider_instance = provider.new
|
65
|
-
expect(provider_instance).to receive(:exists?).and_return(true)
|
66
69
|
|
67
70
|
type = @class.new(:name => "group", :provider => provider_instance)
|
68
71
|
|
@@ -77,20 +80,24 @@ describe Puppet::Type.type(:group) do
|
|
77
80
|
def members
|
78
81
|
[]
|
79
82
|
end
|
83
|
+
|
84
|
+
def members_insync?(current, should)
|
85
|
+
current == should
|
86
|
+
end
|
87
|
+
|
88
|
+
def members_to_s(values)
|
89
|
+
values.map { |v| "#{v} ()" }.join(', ')
|
90
|
+
end
|
80
91
|
end
|
81
92
|
end
|
82
93
|
let (:provider_instance) { provider.new }
|
83
94
|
let (:type) { @class.new(:name => "group", :provider => provider_instance, :members => ['user1']) }
|
84
95
|
|
85
96
|
it "insync? calls members_insync?" do
|
86
|
-
expect(provider_instance).to receive(:members_insync?).with(['user1'], ['user1']).and_return(true)
|
87
97
|
expect(type.property(:members).insync?(['user1'])).to be_truthy
|
88
98
|
end
|
89
99
|
|
90
100
|
it "is_to_s and should_to_s call members_to_s" do
|
91
|
-
expect(provider_instance).to receive(:members_to_s).with(['user1', 'user2']).and_return("user1 (), user2 ()")
|
92
|
-
expect(provider_instance).to receive(:members_to_s).with(['user1']).and_return("user1 ()")
|
93
|
-
|
94
101
|
expect(type.property(:members).is_to_s('user1')).to eq('user1 ()')
|
95
102
|
expect(type.property(:members).should_to_s('user1,user2')).to eq('user1 (), user2 ()')
|
96
103
|
end
|
@@ -6,6 +6,9 @@ Puppet::Type.newtype(:purgeable_test) do
|
|
6
6
|
newparam(:name) {}
|
7
7
|
end
|
8
8
|
Puppet::Type.type(:purgeable_test).provide(:purgeable_test) do
|
9
|
+
def self.instances
|
10
|
+
[]
|
11
|
+
end
|
9
12
|
end
|
10
13
|
|
11
14
|
resources = Puppet::Type.type(:resources)
|
@@ -46,19 +49,16 @@ describe resources do
|
|
46
49
|
end
|
47
50
|
|
48
51
|
it "cannot be set to true for a resource type that does not accept ensure" do
|
49
|
-
allow(instance.resource_type).to receive(:
|
50
|
-
|
51
|
-
expect { instance[:purge] = 'yes' }.to raise_error Puppet::Error
|
52
|
+
allow(instance.resource_type).to receive(:validproperty?).with(:ensure).and_return(false)
|
53
|
+
expect { instance[:purge] = 'yes' }.to raise_error Puppet::Error, /Purging is only supported on types that accept 'ensure'/
|
52
54
|
end
|
53
55
|
|
54
56
|
it "cannot be set to true for a resource type that does not have instances" do
|
55
|
-
allow(instance.resource_type).to receive(:respond_to?).and_return(false)
|
56
|
-
|
57
|
-
expect { instance[:purge] = 'yes' }.to raise_error Puppet::Error
|
57
|
+
allow(instance.resource_type).to receive(:respond_to?).with(:instances).and_return(false)
|
58
|
+
expect { instance[:purge] = 'yes' }.to raise_error Puppet::Error, /Purging resources of type file is not supported/
|
58
59
|
end
|
59
60
|
|
60
61
|
it "can be set to true for a resource type that has instances and can accept ensure" do
|
61
|
-
allow(instance.resource_type).to receive(:respond_to?).and_return(true)
|
62
62
|
allow(instance.resource_type).to receive(:validproperty?).and_return(true)
|
63
63
|
expect { instance[:purge] = 'yes' }.to_not raise_error
|
64
64
|
end
|
@@ -488,7 +488,7 @@ describe test_title, "when changing the host" do
|
|
488
488
|
it "insyncness should be resolved by provider instead of superclass implementation when provider responds to the 'enabled_insync?' method" do
|
489
489
|
allow(@service.provider.class).to receive(:supports_parameter?).and_return(true)
|
490
490
|
@service[:enable] = true
|
491
|
-
allow(@service.provider).to receive(:respond_to?).with(:enabled_insync
|
491
|
+
allow(@service.provider).to receive(:respond_to?).with(:enabled_insync?, any_args).and_return(true)
|
492
492
|
allow(@service.provider).to receive(:enabled_insync?).and_return(false)
|
493
493
|
|
494
494
|
expect(@service.property(:enable).insync?(:true)).to eq(false)
|
data/spec/unit/type/tidy_spec.rb
CHANGED
@@ -191,7 +191,6 @@ describe tidy do
|
|
191
191
|
describe "and recursion is used" do
|
192
192
|
before do
|
193
193
|
@tidy[:recurse] = true
|
194
|
-
allow_any_instance_of(Puppet::FileServing::Fileset).to receive(:stat).and_return(double("stat"))
|
195
194
|
@fileset = Puppet::FileServing::Fileset.new(@basepath)
|
196
195
|
allow(Puppet::FileServing::Fileset).to receive(:new).and_return(@fileset)
|
197
196
|
end
|
data/spec/unit/type_spec.rb
CHANGED
@@ -932,8 +932,8 @@ describe Puppet::Type, :unless => Puppet::Util::Platform.windows? do
|
|
932
932
|
|
933
933
|
it "should always retrieve the ensure value by default" do
|
934
934
|
@ensurable_resource = Puppet::Type.type(:file).new(:name => "/not/existent", :mode => "0644")
|
935
|
-
|
936
|
-
|
935
|
+
# the ensure property is lazily metaprogrammed...
|
936
|
+
allow_any_instance_of(Puppet::Type::File::Ensure).to receive(:retrieve).and_return(:absent)
|
937
937
|
@ensurable_resource.retrieve_resource
|
938
938
|
end
|
939
939
|
|
@@ -50,8 +50,8 @@ describe 'Puppet::Util::AtFork' do
|
|
50
50
|
const_set(:TYPE_VOID, nil)
|
51
51
|
const_set(:TYPE_INT, nil)
|
52
52
|
const_set(:DLError, Class.new(StandardError))
|
53
|
-
const_set(:Handle, Class.new)
|
54
|
-
const_set(:Function, Class.new)
|
53
|
+
const_set(:Handle, Class.new { def initialize(library = nil, flags = 0); end })
|
54
|
+
const_set(:Function, Class.new { def initialize(ptr, args, ret_type, abi = 0); end })
|
55
55
|
end)
|
56
56
|
end
|
57
57
|
end
|
@@ -157,7 +157,7 @@ describe Puppet::Util::Autoload do
|
|
157
157
|
end
|
158
158
|
|
159
159
|
it "should load the first file in the searchpath" do
|
160
|
-
allow(@autoload).to receive(:search_directories).and_return([make_absolute("/a"), make_absolute("/b")])
|
160
|
+
allow(@autoload.class).to receive(:search_directories).and_return([make_absolute("/a"), make_absolute("/b")])
|
161
161
|
allow(FileTest).to receive(:directory?).and_return(true)
|
162
162
|
allow(Puppet::FileSystem).to receive(:exist?).and_return(true)
|
163
163
|
expect(Kernel).to receive(:load).with(make_absolute("/a/tmp/myfile.rb"), any_args)
|
@@ -298,6 +298,10 @@ describe Puppet::Util::Autoload do
|
|
298
298
|
it "should convert c:\ to c:/" do
|
299
299
|
expect(Puppet::Util::Autoload.cleanpath('c:\\')).to eq('c:/')
|
300
300
|
end
|
301
|
+
|
302
|
+
it "should convert all backslashes to forward slashes" do
|
303
|
+
expect(Puppet::Util::Autoload.cleanpath('c:\projects\ruby\bug\test.rb')).to eq('c:/projects/ruby/bug/test.rb')
|
304
|
+
end
|
301
305
|
end
|
302
306
|
end
|
303
307
|
|
@@ -117,8 +117,7 @@ describe Puppet::Util::Backups do
|
|
117
117
|
file = Puppet::Type.type(:file).new(:name => path, :backup => 'foo', :recurse => true)
|
118
118
|
|
119
119
|
expect(bucket).not_to receive(:backup)
|
120
|
-
|
121
|
-
allow(Puppet::FileSystem).to receive(:new).with(path).and_return(stub_file)
|
120
|
+
allow(Puppet::FileSystem).to receive(:stat).with(path).and_return(double('stat', :ftype => 'directory'))
|
122
121
|
expect(Find).not_to receive(:find)
|
123
122
|
|
124
123
|
file.perform_backup
|
@@ -639,6 +639,8 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
639
639
|
|
640
640
|
describe "#execute (debug logging)" do
|
641
641
|
before :each do
|
642
|
+
Puppet[:log_level] = 'debug'
|
643
|
+
|
642
644
|
stub_process_wait(0)
|
643
645
|
|
644
646
|
if Puppet::Util::Platform.windows?
|
@@ -649,47 +651,47 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
649
651
|
end
|
650
652
|
|
651
653
|
it "should log if no uid or gid specified" do
|
652
|
-
expect(Puppet
|
654
|
+
expect(Puppet).to receive(:send_log).with(:debug, "Executing: 'echo hello'")
|
653
655
|
Puppet::Util::Execution.execute('echo hello')
|
654
656
|
end
|
655
657
|
|
656
658
|
it "should log numeric uid if specified" do
|
657
|
-
expect(Puppet
|
659
|
+
expect(Puppet).to receive(:send_log).with(:debug, "Executing with uid=100: 'echo hello'")
|
658
660
|
Puppet::Util::Execution.execute('echo hello', {:uid => 100})
|
659
661
|
end
|
660
662
|
|
661
663
|
it "should log numeric gid if specified" do
|
662
|
-
expect(Puppet
|
664
|
+
expect(Puppet).to receive(:send_log).with(:debug, "Executing with gid=500: 'echo hello'")
|
663
665
|
Puppet::Util::Execution.execute('echo hello', {:gid => 500})
|
664
666
|
end
|
665
667
|
|
666
668
|
it "should log numeric uid and gid if specified" do
|
667
|
-
expect(Puppet
|
669
|
+
expect(Puppet).to receive(:send_log).with(:debug, "Executing with uid=100 gid=500: 'echo hello'")
|
668
670
|
Puppet::Util::Execution.execute('echo hello', {:uid => 100, :gid => 500})
|
669
671
|
end
|
670
672
|
|
671
673
|
it "should log string uid if specified" do
|
672
|
-
expect(Puppet
|
674
|
+
expect(Puppet).to receive(:send_log).with(:debug, "Executing with uid=myuser: 'echo hello'")
|
673
675
|
Puppet::Util::Execution.execute('echo hello', {:uid => 'myuser'})
|
674
676
|
end
|
675
677
|
|
676
678
|
it "should log string gid if specified" do
|
677
|
-
expect(Puppet
|
679
|
+
expect(Puppet).to receive(:send_log).with(:debug, "Executing with gid=mygroup: 'echo hello'")
|
678
680
|
Puppet::Util::Execution.execute('echo hello', {:gid => 'mygroup'})
|
679
681
|
end
|
680
682
|
|
681
683
|
it "should log string uid and gid if specified" do
|
682
|
-
expect(Puppet
|
684
|
+
expect(Puppet).to receive(:send_log).with(:debug, "Executing with uid=myuser gid=mygroup: 'echo hello'")
|
683
685
|
Puppet::Util::Execution.execute('echo hello', {:uid => 'myuser', :gid => 'mygroup'})
|
684
686
|
end
|
685
687
|
|
686
688
|
it "should log numeric uid and string gid if specified" do
|
687
|
-
expect(Puppet
|
689
|
+
expect(Puppet).to receive(:send_log).with(:debug, "Executing with uid=100 gid=mygroup: 'echo hello'")
|
688
690
|
Puppet::Util::Execution.execute('echo hello', {:uid => 100, :gid => 'mygroup'})
|
689
691
|
end
|
690
692
|
|
691
693
|
it 'should redact commands in debug output when passed sensitive option' do
|
692
|
-
expect(Puppet
|
694
|
+
expect(Puppet).to receive(:send_log).with(:debug, "Executing: '[redacted]'")
|
693
695
|
Puppet::Util::Execution.execute('echo hello', {:sensitive => true})
|
694
696
|
end
|
695
697
|
end
|
@@ -903,14 +905,16 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
903
905
|
end
|
904
906
|
|
905
907
|
it "should print meaningful debug message for string argument" do
|
906
|
-
|
908
|
+
Puppet[:log_level] = 'debug'
|
909
|
+
expect(Puppet).to receive(:send_log).with(:debug, "Executing 'echo hello'")
|
907
910
|
expect(Puppet::Util::Execution).to receive(:open).with('| echo hello 2>&1').and_return('hello')
|
908
911
|
expect(Puppet::Util::Execution).to receive(:exitstatus).and_return(0)
|
909
912
|
Puppet::Util::Execution.execpipe('echo hello')
|
910
913
|
end
|
911
914
|
|
912
915
|
it "should print meaningful debug message for array argument" do
|
913
|
-
|
916
|
+
Puppet[:log_level] = 'debug'
|
917
|
+
expect(Puppet).to receive(:send_log).with(:debug, "Executing 'echo hello'")
|
914
918
|
expect(Puppet::Util::Execution).to receive(:open).with('| echo hello 2>&1').and_return('hello')
|
915
919
|
expect(Puppet::Util::Execution).to receive(:exitstatus).and_return(0)
|
916
920
|
Puppet::Util::Execution.execpipe(['echo','hello'])
|