puppet 7.1.0 → 7.3.0
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 +15 -13
- 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/configurer.rb +16 -3
- data/lib/puppet/defaults.rb +5 -14
- data/lib/puppet/face/facts.rb +15 -1
- data/lib/puppet/file_serving/configuration/parser.rb +5 -2
- 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/parser/ast/leaf.rb +3 -2
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
- data/lib/puppet/pops/model/ast_transformer.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +4 -0
- data/lib/puppet/reference/configuration.rb +6 -5
- data/lib/puppet/settings.rb +33 -28
- data/lib/puppet/settings/alias_setting.rb +37 -0
- data/lib/puppet/util/autoload.rb +1 -8
- data/lib/puppet/util/posix.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +157 -141
- data/man/man5/puppet.conf.5 +6 -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 +5 -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 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
- data/spec/integration/application/agent_spec.rb +127 -3
- data/spec/integration/application/apply_spec.rb +19 -0
- data/spec/integration/defaults_spec.rb +0 -7
- 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/resource/type_collection_spec.rb +2 -6
- data/spec/integration/transaction_spec.rb +4 -9
- data/spec/integration/util/windows/adsi_spec.rb +3 -1
- data/spec/integration/util/windows/registry_spec.rb +0 -10
- data/spec/spec_helper.rb +1 -4
- data/spec/unit/agent_spec.rb +8 -6
- data/spec/unit/application/agent_spec.rb +0 -1
- data/spec/unit/application/filebucket_spec.rb +0 -2
- 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/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/forge/module_release_spec.rb +2 -7
- data/spec/unit/indirector/face_spec.rb +0 -1
- data/spec/unit/indirector/facts/facter_spec.rb +11 -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_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/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/property_spec.rb +1 -0
- data/spec/unit/provider/nameservice_spec.rb +66 -65
- data/spec/unit/provider/package/apt_spec.rb +4 -8
- data/spec/unit/provider/package/base_spec.rb +6 -5
- 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/user/hpux_spec.rb +1 -1
- 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/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_spec.rb +13 -6
- metadata +7 -2
@@ -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'])
|
@@ -443,13 +443,9 @@ describe Puppet::Util::IniConfig::FileCollection do
|
|
443
443
|
end
|
444
444
|
|
445
445
|
it "yields every section from every file" do
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
subject.each_section do |sect|
|
451
|
-
sect.touch
|
452
|
-
end
|
446
|
+
expect { |b|
|
447
|
+
subject.each_section(&b)
|
448
|
+
}.to yield_successive_args(sect_a1, sect_a2, sect_b1, sect_b2)
|
453
449
|
end
|
454
450
|
end
|
455
451
|
|
@@ -460,13 +456,9 @@ describe Puppet::Util::IniConfig::FileCollection do
|
|
460
456
|
end
|
461
457
|
|
462
458
|
it "yields the path to every file in the collection" do
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
end
|
467
|
-
|
468
|
-
expect(seen).to include(path_a)
|
469
|
-
expect(seen).to include(path_b)
|
459
|
+
expect { |b|
|
460
|
+
subject.each_file(&b)
|
461
|
+
}.to yield_successive_args(path_a, path_b)
|
470
462
|
end
|
471
463
|
end
|
472
464
|
|
data/spec/unit/util/log_spec.rb
CHANGED
@@ -111,16 +111,20 @@ describe Puppet::Util::Log do
|
|
111
111
|
end
|
112
112
|
|
113
113
|
it "should fall back to :eventlog" do
|
114
|
-
|
115
|
-
|
114
|
+
without_partial_double_verification do
|
115
|
+
allow(Puppet.features).to receive(:syslog?).and_return(false)
|
116
|
+
allow(Puppet.features).to receive(:eventlog?).and_return(true)
|
117
|
+
end
|
116
118
|
expect(Puppet::Util::Log).to receive(:newdestination).with(:eventlog)
|
117
119
|
|
118
120
|
Puppet::Util::Log.setup_default
|
119
121
|
end
|
120
122
|
|
121
123
|
it "should fall back to :file" do
|
122
|
-
|
123
|
-
|
124
|
+
without_partial_double_verification do
|
125
|
+
allow(Puppet.features).to receive(:syslog?).and_return(false)
|
126
|
+
allow(Puppet.features).to receive(:eventlog?).and_return(false)
|
127
|
+
end
|
124
128
|
expect(Puppet::Util::Log).to receive(:newdestination).with(Puppet[:puppetdlog])
|
125
129
|
|
126
130
|
Puppet::Util::Log.setup_default
|
@@ -224,9 +228,6 @@ describe Puppet::Util::Log do
|
|
224
228
|
describe Puppet::Util::Log::DestEventlog, :if => Puppet.features.eventlog? do
|
225
229
|
before :each do
|
226
230
|
allow(Puppet::Util::Windows::EventLog).to receive(:open).and_return(double('mylog', :close => nil))
|
227
|
-
allow(Puppet::Util::Windows::EventLog).to receive(:report_event)
|
228
|
-
allow(Puppet::Util::Windows::EventLog).to receive(:close)
|
229
|
-
allow(Puppet.features).to receive(:eventlog?).and_return(true)
|
230
231
|
end
|
231
232
|
|
232
233
|
it "should restrict its suitability to Windows" do
|
@@ -552,7 +552,7 @@ original
|
|
552
552
|
|
553
553
|
describe 'does support debugging' do
|
554
554
|
before :each do
|
555
|
-
allow(Facter).to receive(:respond_to?).with(:debugging).and_return(true)
|
555
|
+
allow(Facter).to receive(:respond_to?).with(:debugging, any_args).and_return(true)
|
556
556
|
end
|
557
557
|
|
558
558
|
it 'enables Facter debugging when debug level' do
|
@@ -568,7 +568,7 @@ original
|
|
568
568
|
|
569
569
|
describe 'does support trace' do
|
570
570
|
before :each do
|
571
|
-
allow(Facter).to receive(:respond_to?).with(:trace).and_return(true)
|
571
|
+
allow(Facter).to receive(:respond_to?).with(:trace, any_args).and_return(true)
|
572
572
|
end
|
573
573
|
|
574
574
|
it 'enables Facter trace when enabled' do
|
@@ -584,7 +584,7 @@ original
|
|
584
584
|
|
585
585
|
describe 'does support on_message' do
|
586
586
|
before :each do
|
587
|
-
allow(Facter).to receive(:respond_to?).with(:on_message).and_return(true)
|
587
|
+
allow(Facter).to receive(:respond_to?).with(:on_message, any_args).and_return(true)
|
588
588
|
end
|
589
589
|
|
590
590
|
def setup(level, message)
|
@@ -63,7 +63,7 @@ describe Puppet::Util::POSIX do
|
|
63
63
|
end
|
64
64
|
|
65
65
|
before(:each) do
|
66
|
-
allow(Puppet::FFI::POSIX::Functions).to receive(:respond_to?).with(:getgrouplist).and_return(true)
|
66
|
+
allow(Puppet::FFI::POSIX::Functions).to receive(:respond_to?).with(:getgrouplist, any_args).and_return(true)
|
67
67
|
end
|
68
68
|
|
69
69
|
describe 'when it uses FFI function getgrouplist' do
|
@@ -77,7 +77,7 @@ describe Puppet::Util::POSIX do
|
|
77
77
|
context 'for user1' do
|
78
78
|
let(:user) { 'user1' }
|
79
79
|
let(:expected_groups) { ['group1', 'group3'] }
|
80
|
-
|
80
|
+
|
81
81
|
before(:each) do
|
82
82
|
prepare_user_and_groups_env(user, expected_groups)
|
83
83
|
allow(Puppet::FFI::POSIX::Functions).to receive(:getgrouplist).and_return(1)
|
@@ -96,9 +96,10 @@ describe Puppet::Util::POSIX do
|
|
96
96
|
context 'for user2' do
|
97
97
|
let(:user) { 'user2' }
|
98
98
|
let(:expected_groups) { ['group1', 'group2', 'group4'] }
|
99
|
-
|
99
|
+
|
100
100
|
before(:each) do
|
101
101
|
prepare_user_and_groups_env(user, expected_groups)
|
102
|
+
allow(Puppet::FFI::POSIX::Functions).to receive(:respond_to?).with(:getgrouplist, any_args).and_return(true)
|
102
103
|
allow(Puppet::FFI::POSIX::Functions).to receive(:getgrouplist).and_return(1)
|
103
104
|
end
|
104
105
|
|
@@ -116,9 +117,10 @@ describe Puppet::Util::POSIX do
|
|
116
117
|
describe 'when there are no groups' do
|
117
118
|
let(:user) { 'nomembers' }
|
118
119
|
let(:expected_groups) { [] }
|
119
|
-
|
120
|
+
|
120
121
|
before(:each) do
|
121
122
|
prepare_user_and_groups_env(user, expected_groups)
|
123
|
+
allow(Puppet::FFI::POSIX::Functions).to receive(:respond_to?).with(:getgrouplist, any_args).and_return(true)
|
122
124
|
allow(Puppet::FFI::POSIX::Functions).to receive(:getgrouplist).and_return(1)
|
123
125
|
end
|
124
126
|
|
@@ -138,6 +140,7 @@ describe Puppet::Util::POSIX do
|
|
138
140
|
|
139
141
|
before(:each) do
|
140
142
|
prepare_user_and_groups_env(user, expected_groups)
|
143
|
+
allow(Puppet::FFI::POSIX::Functions).to receive(:respond_to?).with(:getgrouplist, any_args).and_return(true)
|
141
144
|
allow(Puppet::FFI::POSIX::Functions).to receive(:getgrouplist).and_return(1)
|
142
145
|
end
|
143
146
|
|
@@ -157,6 +160,7 @@ describe Puppet::Util::POSIX do
|
|
157
160
|
|
158
161
|
before(:each) do
|
159
162
|
prepare_user_and_groups_env(user, expected_groups)
|
163
|
+
allow(Puppet::FFI::POSIX::Functions).to receive(:respond_to?).with(:getgrouplist, any_args).and_return(true)
|
160
164
|
allow(Puppet::FFI::POSIX::Functions).to receive(:getgrouplist).and_return(1)
|
161
165
|
end
|
162
166
|
|
@@ -184,6 +188,7 @@ describe Puppet::Util::POSIX do
|
|
184
188
|
let(:expected_groups) { ['root'] }
|
185
189
|
|
186
190
|
before(:each) do
|
191
|
+
allow(Puppet::FFI::POSIX::Functions).to receive(:respond_to?).with(:getgrouplist, any_args).and_return(true)
|
187
192
|
allow(Puppet::FFI::POSIX::Functions).to receive(:getgrouplist).and_return(1)
|
188
193
|
end
|
189
194
|
|
@@ -206,6 +211,7 @@ describe Puppet::Util::POSIX do
|
|
206
211
|
allow(FFI::MemoryPointer).to receive(:new).with(:uint, Puppet::FFI::POSIX::Constants::MAXIMUM_NUMBER_OF_GROUPS * 2).and_yield(groups_ptr)
|
207
212
|
allow(ngroups_ptr).to receive(:write_int).with(Puppet::FFI::POSIX::Constants::MAXIMUM_NUMBER_OF_GROUPS * 2).and_return(ngroups_ptr)
|
208
213
|
|
214
|
+
allow(Puppet::FFI::POSIX::Functions).to receive(:respond_to?).with(:getgrouplist, any_args).and_return(true)
|
209
215
|
allow(Puppet::FFI::POSIX::Functions).to receive(:getgrouplist).and_return(-1, 1)
|
210
216
|
end
|
211
217
|
|
@@ -233,7 +239,7 @@ describe Puppet::Util::POSIX do
|
|
233
239
|
allow(Puppet::Etc).to receive(:getpwnam).with(user).and_raise(ArgumentError, "can't find user for #{user}")
|
234
240
|
allow(Puppet).to receive(:debug)
|
235
241
|
|
236
|
-
|
242
|
+
allow(Puppet::FFI::POSIX::Functions).to receive(:respond_to?).with(:getgrouplist, any_args).and_return(false)
|
237
243
|
end
|
238
244
|
|
239
245
|
describe 'when there are groups' do
|
@@ -246,7 +252,7 @@ describe Puppet::Util::POSIX do
|
|
246
252
|
end
|
247
253
|
|
248
254
|
it 'logs a debug message' do
|
249
|
-
expect(Puppet).to receive(:debug).with("Falling back to Puppet::Etc.group:
|
255
|
+
expect(Puppet).to receive(:debug).with("Falling back to Puppet::Etc.group: The 'getgrouplist' method is not available")
|
250
256
|
Puppet::Util::POSIX.groups_of(user)
|
251
257
|
end
|
252
258
|
end
|
@@ -260,7 +266,7 @@ describe Puppet::Util::POSIX do
|
|
260
266
|
end
|
261
267
|
|
262
268
|
it 'logs a debug message' do
|
263
|
-
expect(Puppet).to receive(:debug).with("Falling back to Puppet::Etc.group:
|
269
|
+
expect(Puppet).to receive(:debug).with("Falling back to Puppet::Etc.group: The 'getgrouplist' method is not available")
|
264
270
|
Puppet::Util::POSIX.groups_of(user)
|
265
271
|
end
|
266
272
|
end
|
@@ -275,7 +281,7 @@ describe Puppet::Util::POSIX do
|
|
275
281
|
end
|
276
282
|
|
277
283
|
it 'logs a debug message' do
|
278
|
-
expect(Puppet).to receive(:debug).with("Falling back to Puppet::Etc.group:
|
284
|
+
expect(Puppet).to receive(:debug).with("Falling back to Puppet::Etc.group: The 'getgrouplist' method is not available")
|
279
285
|
Puppet::Util::POSIX.groups_of(user)
|
280
286
|
end
|
281
287
|
end
|
@@ -289,7 +295,7 @@ describe Puppet::Util::POSIX do
|
|
289
295
|
end
|
290
296
|
|
291
297
|
it 'logs a debug message' do
|
292
|
-
expect(Puppet).to receive(:debug).with("Falling back to Puppet::Etc.group:
|
298
|
+
expect(Puppet).to receive(:debug).with("Falling back to Puppet::Etc.group: The 'getgrouplist' method is not available")
|
293
299
|
Puppet::Util::POSIX.groups_of(user)
|
294
300
|
end
|
295
301
|
end
|
@@ -303,7 +309,7 @@ describe Puppet::Util::POSIX do
|
|
303
309
|
end
|
304
310
|
|
305
311
|
it 'logs a debug message' do
|
306
|
-
expect(Puppet).to receive(:debug).with("Falling back to Puppet::Etc.group:
|
312
|
+
expect(Puppet).to receive(:debug).with("Falling back to Puppet::Etc.group: The 'getgrouplist' method is not available")
|
307
313
|
Puppet::Util::POSIX.groups_of(user)
|
308
314
|
end
|
309
315
|
end
|