puppet 7.12.1-universal-darwin → 7.15.0-universal-darwin
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CODEOWNERS +1 -1
- data/Gemfile +2 -2
- data/Gemfile.lock +36 -31
- data/ext/project_data.yaml +1 -1
- data/lib/puppet/application/lookup.rb +74 -24
- data/lib/puppet/concurrent/thread_local_singleton.rb +5 -3
- data/lib/puppet/configurer.rb +8 -14
- data/lib/puppet/defaults.rb +13 -1
- data/lib/puppet/face/generate.rb +2 -0
- data/lib/puppet/file_serving/metadata.rb +3 -0
- data/lib/puppet/file_system/file_impl.rb +7 -7
- data/lib/puppet/file_system/jruby.rb +1 -1
- data/lib/puppet/file_system/path_pattern.rb +10 -15
- data/lib/puppet/file_system/uniquefile.rb +1 -1
- data/lib/puppet/file_system/windows.rb +4 -4
- data/lib/puppet/file_system.rb +1 -1
- data/lib/puppet/functions/next.rb +18 -1
- data/lib/puppet/functions/tree_each.rb +0 -1
- data/lib/puppet/functions/versioncmp.rb +6 -2
- data/lib/puppet/generate/type.rb +9 -0
- data/lib/puppet/graph/simple_graph.rb +2 -1
- data/lib/puppet/http/client.rb +1 -1
- data/lib/puppet/node.rb +1 -1
- data/lib/puppet/pops/parser/code_merger.rb +4 -4
- data/lib/puppet/pops/parser/egrammar.ra +2 -0
- data/lib/puppet/pops/parser/eparser.rb +574 -558
- data/lib/puppet/pops/serialization/to_data_converter.rb +6 -18
- data/lib/puppet/pops/validation/checker4_0.rb +7 -2
- data/lib/puppet/provider/service/init.rb +5 -4
- data/lib/puppet/resource/type_collection.rb +21 -17
- data/lib/puppet/ssl/verifier.rb +3 -1
- data/lib/puppet/transaction/persistence.rb +22 -12
- data/lib/puppet/type/exec.rb +1 -1
- data/lib/puppet/type/file/data_sync.rb +1 -1
- data/lib/puppet/type/file/group.rb +8 -1
- data/lib/puppet/type/file/owner.rb +8 -1
- data/lib/puppet/type/user.rb +41 -39
- data/lib/puppet/util/json.rb +17 -0
- data/lib/puppet/util/log.rb +7 -2
- data/lib/puppet/util/monkey_patches.rb +26 -4
- data/lib/puppet/util/package.rb +25 -16
- data/lib/puppet/util/yaml.rb +16 -1
- data/lib/puppet/util.rb +1 -0
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +1 -0
- data/locales/puppet.pot +5 -9741
- data/man/man5/puppet.conf.5 +21 -2
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- 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 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- 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 +9 -6
- 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 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/unit/forge/bacula.json +1 -1
- data/spec/integration/application/lookup_spec.rb +81 -50
- data/spec/integration/application/resource_spec.rb +6 -2
- data/spec/integration/parser/pcore_resource_spec.rb +10 -0
- data/spec/shared_contexts/l10n.rb +5 -0
- data/spec/unit/application/lookup_spec.rb +131 -10
- data/spec/unit/concurrent/thread_local_singleton_spec.rb +39 -0
- data/spec/unit/configurer_spec.rb +124 -61
- data/spec/unit/confiner_spec.rb +6 -6
- data/spec/unit/face/generate_spec.rb +64 -0
- data/spec/unit/file_system/uniquefile_spec.rb +7 -1
- data/spec/unit/file_system_spec.rb +34 -4
- data/spec/unit/forge/module_release_spec.rb +3 -3
- data/spec/unit/functions/versioncmp_spec.rb +40 -4
- data/spec/unit/node_spec.rb +6 -0
- data/spec/unit/pops/parser/parse_containers_spec.rb +2 -2
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +0 -58
- data/spec/unit/pops/validator/validator_spec.rb +5 -0
- data/spec/unit/provider/service/gentoo_spec.rb +6 -5
- data/spec/unit/provider/service/init_spec.rb +15 -9
- data/spec/unit/provider/service/openwrt_spec.rb +21 -29
- data/spec/unit/provider/service/redhat_spec.rb +3 -2
- data/spec/unit/transaction/persistence_spec.rb +51 -0
- data/spec/unit/type/file/group_spec.rb +7 -0
- data/spec/unit/type/file/owner_spec.rb +7 -0
- data/spec/unit/type/user_spec.rb +67 -45
- data/spec/unit/util/json_spec.rb +126 -0
- data/spec/unit/util/windows_spec.rb +23 -0
- data/spec/unit/util/yaml_spec.rb +37 -13
- metadata +17 -5
@@ -0,0 +1,126 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'puppet/util/json'
|
4
|
+
|
5
|
+
describe Puppet::Util::Json do
|
6
|
+
include PuppetSpec::Files
|
7
|
+
|
8
|
+
shared_examples_for 'json file loader' do |load_method|
|
9
|
+
it 'reads a JSON file from disk' do
|
10
|
+
file_path = file_containing('input', JSON.dump({ "my" => "data" }))
|
11
|
+
|
12
|
+
expect(load_method.call(file_path)).to eq({ "my" => "data" })
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'reads JSON as UTF-8' do
|
16
|
+
file_path = file_containing('input', JSON.dump({ "my" => "𠜎" }))
|
17
|
+
|
18
|
+
expect(load_method.call(file_path)).to eq({ "my" => "𠜎" })
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context "#load" do
|
23
|
+
it 'raises an error if JSON is invalid' do
|
24
|
+
expect {
|
25
|
+
Puppet::Util::Json.load('{ invalid')
|
26
|
+
}.to raise_error(Puppet::Util::Json::ParseError, /unexpected token at '{ invalid'/)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'raises an error if the content is empty' do
|
30
|
+
expect {
|
31
|
+
Puppet::Util::Json.load('')
|
32
|
+
}.to raise_error(Puppet::Util::Json::ParseError)
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'loads true' do
|
36
|
+
expect(Puppet::Util::Json.load('true')).to eq(true)
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'loads false' do
|
40
|
+
expect(Puppet::Util::Json.load('false')).to eq(false)
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'loads a numeric' do
|
44
|
+
expect(Puppet::Util::Json.load('42')).to eq(42)
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'loads a string' do
|
48
|
+
expect(Puppet::Util::Json.load('"puppet"')).to eq('puppet')
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'loads an array' do
|
52
|
+
expect(Puppet::Util::Json.load(<<~JSON)).to eq([1, 2])
|
53
|
+
[1, 2]
|
54
|
+
JSON
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'loads a hash' do
|
58
|
+
expect(Puppet::Util::Json.load(<<~JSON)).to eq('a' => 1, 'b' => 2)
|
59
|
+
{
|
60
|
+
"a": 1,
|
61
|
+
"b": 2
|
62
|
+
}
|
63
|
+
JSON
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context "load_file_if_valid" do
|
68
|
+
before do
|
69
|
+
Puppet[:log_level] = 'debug'
|
70
|
+
end
|
71
|
+
|
72
|
+
it_should_behave_like 'json file loader', Puppet::Util::Json.method(:load_file_if_valid)
|
73
|
+
|
74
|
+
it 'returns nil when the file is invalid JSON and debug logs about it' do
|
75
|
+
file_path = file_containing('input', '{ invalid')
|
76
|
+
expect(Puppet).to receive(:debug)
|
77
|
+
.with(/Could not retrieve JSON content .+: unexpected token at '{ invalid'/).and_call_original
|
78
|
+
|
79
|
+
expect(Puppet::Util::Json.load_file_if_valid(file_path)).to eql(nil)
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'returns nil when the filename is illegal and debug logs about it' do
|
83
|
+
expect(Puppet).to receive(:debug)
|
84
|
+
.with(/Could not retrieve JSON content .+: pathname contains null byte/).and_call_original
|
85
|
+
|
86
|
+
expect(Puppet::Util::Json.load_file_if_valid("not\0allowed")).to eql(nil)
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'returns nil when the file does not exist and debug logs about it' do
|
90
|
+
expect(Puppet).to receive(:debug)
|
91
|
+
.with(/Could not retrieve JSON content .+: No such file or directory/).and_call_original
|
92
|
+
|
93
|
+
expect(Puppet::Util::Json.load_file_if_valid('does/not/exist.json')).to eql(nil)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
context '#load_file' do
|
98
|
+
it_should_behave_like 'json file loader', Puppet::Util::Json.method(:load_file)
|
99
|
+
|
100
|
+
it 'raises an error when the file is invalid JSON' do
|
101
|
+
file_path = file_containing('input', '{ invalid')
|
102
|
+
|
103
|
+
expect {
|
104
|
+
Puppet::Util::Json.load_file(file_path)
|
105
|
+
}.to raise_error(Puppet::Util::Json::ParseError, /unexpected token at '{ invalid'/)
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'raises an error when the filename is illegal' do
|
109
|
+
expect {
|
110
|
+
Puppet::Util::Json.load_file("not\0allowed")
|
111
|
+
}.to raise_error(ArgumentError, /null byte/)
|
112
|
+
end
|
113
|
+
|
114
|
+
it 'raises an error when the file does not exist' do
|
115
|
+
expect {
|
116
|
+
Puppet::Util::Json.load_file('does/not/exist.json')
|
117
|
+
}.to raise_error(Errno::ENOENT, /No such file or directory/)
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'writes data formatted as JSON to disk' do
|
121
|
+
file_path = file_containing('input', Puppet::Util::Json.dump({ "my" => "data" }))
|
122
|
+
|
123
|
+
expect(Puppet::Util::Json.load_file(file_path)).to eq({ "my" => "data" })
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Puppet::Util::Windows do
|
6
|
+
%w[
|
7
|
+
ADSI
|
8
|
+
ADSI::ADSIObject
|
9
|
+
ADSI::User
|
10
|
+
ADSI::UserProfile
|
11
|
+
ADSI::Group
|
12
|
+
EventLog
|
13
|
+
File
|
14
|
+
Process
|
15
|
+
Registry
|
16
|
+
Service
|
17
|
+
SID
|
18
|
+
].each do |name|
|
19
|
+
it "defines Puppet::Util::Windows::#{name}" do
|
20
|
+
expect(described_class.const_get(name)).to be
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/spec/unit/util/yaml_spec.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
require 'spec_helper'
|
3
|
-
|
4
3
|
require 'puppet/util/yaml'
|
5
4
|
|
6
5
|
describe Puppet::Util::Yaml do
|
@@ -10,21 +9,21 @@ describe Puppet::Util::Yaml do
|
|
10
9
|
|
11
10
|
shared_examples_for 'yaml file loader' do |load_method|
|
12
11
|
it 'returns false when the file is empty' do
|
13
|
-
|
12
|
+
file_path = file_containing('input', '')
|
14
13
|
|
15
|
-
expect(load_method.call(
|
14
|
+
expect(load_method.call(file_path)).to eq(false)
|
16
15
|
end
|
17
16
|
|
18
17
|
it 'reads a YAML file from disk' do
|
19
|
-
|
18
|
+
file_path = file_containing('input', YAML.dump({ "my" => "data" }))
|
20
19
|
|
21
|
-
expect(load_method.call(
|
20
|
+
expect(load_method.call(file_path)).to eq({ "my" => "data" })
|
22
21
|
end
|
23
22
|
|
24
23
|
it 'reads YAML as UTF-8' do
|
25
|
-
|
24
|
+
file_path = file_containing('input', YAML.dump({ "my" => "𠜎" }))
|
26
25
|
|
27
|
-
expect(load_method.call(
|
26
|
+
expect(load_method.call(file_path)).to eq({ "my" => "𠜎" })
|
28
27
|
end
|
29
28
|
end
|
30
29
|
|
@@ -119,11 +118,11 @@ FACTS
|
|
119
118
|
it_should_behave_like 'yaml file loader', Puppet::Util::Yaml.method(:safe_load_file)
|
120
119
|
|
121
120
|
it 'raises an error when the file is invalid YAML' do
|
122
|
-
|
121
|
+
file_path = file_containing('input', '{ invalid')
|
123
122
|
|
124
123
|
expect {
|
125
|
-
Puppet::Util::Yaml.safe_load_file(
|
126
|
-
}.to raise_error(Puppet::Util::Yaml::YamlLoadError, %r[\(#{
|
124
|
+
Puppet::Util::Yaml.safe_load_file(file_path)
|
125
|
+
}.to raise_error(Puppet::Util::Yaml::YamlLoadError, %r[\(#{file_path}\): .* at line \d+ column \d+])
|
127
126
|
end
|
128
127
|
|
129
128
|
it 'raises an error when the filename is illegal' do
|
@@ -139,9 +138,34 @@ FACTS
|
|
139
138
|
end
|
140
139
|
end
|
141
140
|
|
142
|
-
|
143
|
-
|
144
|
-
|
141
|
+
context "#safe_load_file_if_valid" do
|
142
|
+
before do
|
143
|
+
Puppet[:log_level] = 'debug'
|
144
|
+
end
|
145
|
+
|
146
|
+
it_should_behave_like 'yaml file loader', Puppet::Util::Yaml.method(:safe_load_file_if_valid)
|
147
|
+
|
148
|
+
it 'returns nil when the file is invalid YAML and debug logs about it' do
|
149
|
+
file_path = file_containing('input', '{ invalid')
|
150
|
+
|
151
|
+
expect(Puppet).to receive(:debug)
|
152
|
+
.with(/Could not retrieve YAML content .+ expected ',' or '}'/).and_call_original
|
153
|
+
|
154
|
+
expect(Puppet::Util::Yaml.safe_load_file_if_valid(file_path)).to eql(nil)
|
155
|
+
end
|
156
|
+
|
157
|
+
it 'returns nil when the filename is illegal and debug logs about it' do
|
158
|
+
expect(Puppet).to receive(:debug)
|
159
|
+
.with(/Could not retrieve YAML content .+: pathname contains null byte/).and_call_original
|
160
|
+
|
161
|
+
expect(Puppet::Util::Yaml.safe_load_file_if_valid("not\0allowed")).to eql(nil)
|
162
|
+
end
|
163
|
+
|
164
|
+
it 'returns nil when the file does not exist and debug logs about it' do
|
165
|
+
expect(Puppet).to receive(:debug)
|
166
|
+
.with(/Could not retrieve YAML content .+: No such file or directory/).and_call_original
|
167
|
+
|
168
|
+
expect(Puppet::Util::Yaml.safe_load_file_if_valid('does/not/exist.yaml')).to eql(nil)
|
145
169
|
end
|
146
170
|
end
|
147
171
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.
|
4
|
+
version: 7.15.0
|
5
5
|
platform: universal-darwin
|
6
6
|
authors:
|
7
7
|
- Puppet Labs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: facter
|
@@ -68,16 +68,22 @@ dependencies:
|
|
68
68
|
name: fast_gettext
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|
70
70
|
requirements:
|
71
|
-
- - "
|
71
|
+
- - ">="
|
72
72
|
- !ruby/object:Gem::Version
|
73
73
|
version: '1.1'
|
74
|
+
- - "<"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '3'
|
74
77
|
type: :runtime
|
75
78
|
prerelease: false
|
76
79
|
version_requirements: !ruby/object:Gem::Requirement
|
77
80
|
requirements:
|
78
|
-
- - "
|
81
|
+
- - ">="
|
79
82
|
- !ruby/object:Gem::Version
|
80
83
|
version: '1.1'
|
84
|
+
- - "<"
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '3'
|
81
87
|
- !ruby/object:Gem::Dependency
|
82
88
|
name: locale
|
83
89
|
requirement: !ruby/object:Gem::Requirement
|
@@ -1849,6 +1855,7 @@ files:
|
|
1849
1855
|
- spec/unit/application_spec.rb
|
1850
1856
|
- spec/unit/certificate_factory_spec.rb
|
1851
1857
|
- spec/unit/concurrent/lock_spec.rb
|
1858
|
+
- spec/unit/concurrent/thread_local_singleton_spec.rb
|
1852
1859
|
- spec/unit/configurer/downloader_spec.rb
|
1853
1860
|
- spec/unit/configurer/fact_handler_spec.rb
|
1854
1861
|
- spec/unit/configurer/plugin_handler_spec.rb
|
@@ -2445,6 +2452,7 @@ files:
|
|
2445
2452
|
- spec/unit/util/filetype_spec.rb
|
2446
2453
|
- spec/unit/util/inifile_spec.rb
|
2447
2454
|
- spec/unit/util/json_lockfile_spec.rb
|
2455
|
+
- spec/unit/util/json_spec.rb
|
2448
2456
|
- spec/unit/util/ldap/connection_spec.rb
|
2449
2457
|
- spec/unit/util/ldap/generator_spec.rb
|
2450
2458
|
- spec/unit/util/ldap/manager_spec.rb
|
@@ -2504,6 +2512,7 @@ files:
|
|
2504
2512
|
- spec/unit/util/windows/service_spec.rb
|
2505
2513
|
- spec/unit/util/windows/sid_spec.rb
|
2506
2514
|
- spec/unit/util/windows/string_spec.rb
|
2515
|
+
- spec/unit/util/windows_spec.rb
|
2507
2516
|
- spec/unit/util/yaml_spec.rb
|
2508
2517
|
- spec/unit/util_spec.rb
|
2509
2518
|
- spec/unit/version_spec.rb
|
@@ -2543,7 +2552,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
2543
2552
|
- !ruby/object:Gem::Version
|
2544
2553
|
version: 1.3.1
|
2545
2554
|
requirements: []
|
2546
|
-
rubygems_version: 3.
|
2555
|
+
rubygems_version: 3.1.6
|
2547
2556
|
signing_key:
|
2548
2557
|
specification_version: 4
|
2549
2558
|
summary: Puppet, an automated configuration management tool
|
@@ -3106,6 +3115,7 @@ test_files:
|
|
3106
3115
|
- spec/unit/application_spec.rb
|
3107
3116
|
- spec/unit/certificate_factory_spec.rb
|
3108
3117
|
- spec/unit/concurrent/lock_spec.rb
|
3118
|
+
- spec/unit/concurrent/thread_local_singleton_spec.rb
|
3109
3119
|
- spec/unit/configurer/downloader_spec.rb
|
3110
3120
|
- spec/unit/configurer/fact_handler_spec.rb
|
3111
3121
|
- spec/unit/configurer/plugin_handler_spec.rb
|
@@ -3702,6 +3712,7 @@ test_files:
|
|
3702
3712
|
- spec/unit/util/filetype_spec.rb
|
3703
3713
|
- spec/unit/util/inifile_spec.rb
|
3704
3714
|
- spec/unit/util/json_lockfile_spec.rb
|
3715
|
+
- spec/unit/util/json_spec.rb
|
3705
3716
|
- spec/unit/util/ldap/connection_spec.rb
|
3706
3717
|
- spec/unit/util/ldap/generator_spec.rb
|
3707
3718
|
- spec/unit/util/ldap/manager_spec.rb
|
@@ -3761,6 +3772,7 @@ test_files:
|
|
3761
3772
|
- spec/unit/util/windows/service_spec.rb
|
3762
3773
|
- spec/unit/util/windows/sid_spec.rb
|
3763
3774
|
- spec/unit/util/windows/string_spec.rb
|
3775
|
+
- spec/unit/util/windows_spec.rb
|
3764
3776
|
- spec/unit/util/yaml_spec.rb
|
3765
3777
|
- spec/unit/util_spec.rb
|
3766
3778
|
- spec/unit/version_spec.rb
|