puppet 7.12.1 → 7.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +13 -8
  4. data/ext/project_data.yaml +1 -1
  5. data/lib/puppet/application/lookup.rb +72 -24
  6. data/lib/puppet/concurrent/thread_local_singleton.rb +5 -3
  7. data/lib/puppet/defaults.rb +3 -1
  8. data/lib/puppet/file_serving/metadata.rb +3 -0
  9. data/lib/puppet/file_system/file_impl.rb +7 -7
  10. data/lib/puppet/file_system/jruby.rb +1 -1
  11. data/lib/puppet/file_system/path_pattern.rb +10 -15
  12. data/lib/puppet/file_system/uniquefile.rb +1 -1
  13. data/lib/puppet/file_system/windows.rb +4 -4
  14. data/lib/puppet/file_system.rb +1 -1
  15. data/lib/puppet/functions/versioncmp.rb +6 -2
  16. data/lib/puppet/graph/simple_graph.rb +2 -1
  17. data/lib/puppet/pops/parser/code_merger.rb +4 -4
  18. data/lib/puppet/pops/parser/egrammar.ra +2 -0
  19. data/lib/puppet/pops/parser/eparser.rb +574 -558
  20. data/lib/puppet/pops/serialization/to_data_converter.rb +6 -18
  21. data/lib/puppet/pops/validation/checker4_0.rb +7 -2
  22. data/lib/puppet/provider/service/init.rb +5 -4
  23. data/lib/puppet/ssl/verifier.rb +3 -1
  24. data/lib/puppet/transaction/persistence.rb +22 -12
  25. data/lib/puppet/type/file/data_sync.rb +1 -1
  26. data/lib/puppet/type/file/group.rb +8 -1
  27. data/lib/puppet/type/file/owner.rb +8 -1
  28. data/lib/puppet/type/user.rb +40 -38
  29. data/lib/puppet/util/json.rb +17 -0
  30. data/lib/puppet/util/log.rb +7 -2
  31. data/lib/puppet/util/monkey_patches.rb +26 -2
  32. data/lib/puppet/util/package.rb +25 -16
  33. data/lib/puppet/util/yaml.rb +11 -0
  34. data/lib/puppet/version.rb +1 -1
  35. data/lib/puppet.rb +1 -0
  36. data/locales/puppet.pot +115 -93
  37. data/man/man5/puppet.conf.5 +10 -2
  38. data/man/man8/puppet-agent.8 +1 -1
  39. data/man/man8/puppet-apply.8 +1 -1
  40. data/man/man8/puppet-catalog.8 +1 -1
  41. data/man/man8/puppet-config.8 +1 -1
  42. data/man/man8/puppet-describe.8 +1 -1
  43. data/man/man8/puppet-device.8 +1 -1
  44. data/man/man8/puppet-doc.8 +1 -1
  45. data/man/man8/puppet-epp.8 +1 -1
  46. data/man/man8/puppet-facts.8 +1 -1
  47. data/man/man8/puppet-filebucket.8 +1 -1
  48. data/man/man8/puppet-generate.8 +1 -1
  49. data/man/man8/puppet-help.8 +1 -1
  50. data/man/man8/puppet-lookup.8 +9 -6
  51. data/man/man8/puppet-module.8 +1 -1
  52. data/man/man8/puppet-node.8 +1 -1
  53. data/man/man8/puppet-parser.8 +1 -1
  54. data/man/man8/puppet-plugin.8 +1 -1
  55. data/man/man8/puppet-report.8 +1 -1
  56. data/man/man8/puppet-resource.8 +1 -1
  57. data/man/man8/puppet-script.8 +1 -1
  58. data/man/man8/puppet-ssl.8 +1 -1
  59. data/man/man8/puppet.8 +2 -2
  60. data/spec/fixtures/unit/forge/bacula.json +1 -1
  61. data/spec/integration/application/lookup_spec.rb +29 -6
  62. data/spec/integration/parser/pcore_resource_spec.rb +10 -0
  63. data/spec/shared_contexts/l10n.rb +5 -0
  64. data/spec/unit/application/lookup_spec.rb +131 -10
  65. data/spec/unit/concurrent/thread_local_singleton_spec.rb +39 -0
  66. data/spec/unit/file_system/uniquefile_spec.rb +7 -1
  67. data/spec/unit/file_system_spec.rb +34 -4
  68. data/spec/unit/forge/module_release_spec.rb +3 -3
  69. data/spec/unit/functions/versioncmp_spec.rb +40 -4
  70. data/spec/unit/pops/parser/parse_containers_spec.rb +2 -2
  71. data/spec/unit/pops/serialization/to_from_hr_spec.rb +0 -58
  72. data/spec/unit/pops/validator/validator_spec.rb +5 -0
  73. data/spec/unit/provider/service/gentoo_spec.rb +6 -5
  74. data/spec/unit/provider/service/init_spec.rb +15 -9
  75. data/spec/unit/provider/service/openwrt_spec.rb +21 -29
  76. data/spec/unit/provider/service/redhat_spec.rb +3 -2
  77. data/spec/unit/transaction/persistence_spec.rb +51 -0
  78. data/spec/unit/type/file/group_spec.rb +7 -0
  79. data/spec/unit/type/file/owner_spec.rb +7 -0
  80. data/spec/unit/type/user_spec.rb +0 -45
  81. data/spec/unit/util/json_spec.rb +126 -0
  82. data/spec/unit/util/yaml_spec.rb +37 -13
  83. metadata +14 -4
@@ -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
- Puppet::FileSystem.touch(filename)
12
+ file_path = file_containing('input', '')
14
13
 
15
- expect(load_method.call(filename)).to eq(false)
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
- write_file(filename, YAML.dump({ "my" => "data" }))
18
+ file_path = file_containing('input', YAML.dump({ "my" => "data" }))
20
19
 
21
- expect(load_method.call(filename)).to eq({ "my" => "data" })
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
- write_file(filename, YAML.dump({ "my" => "𠜎" }))
24
+ file_path = file_containing('input', YAML.dump({ "my" => "𠜎" }))
26
25
 
27
- expect(load_method.call(filename)).to eq({ "my" => "𠜎" })
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
- write_file(filename, '{ invalid')
121
+ file_path = file_containing('input', '{ invalid')
123
122
 
124
123
  expect {
125
- Puppet::Util::Yaml.safe_load_file(filename)
126
- }.to raise_error(Puppet::Util::Yaml::YamlLoadError, %r[\(#{filename}\): .* at line \d+ column \d+])
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
- def write_file(name, contents)
143
- File.open(name, "w:UTF-8") do |fh|
144
- fh.write(contents)
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.12.1
4
+ version: 7.13.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet Labs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-29 00:00:00.000000000 Z
11
+ date: 2021-12-09 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
@@ -1835,6 +1841,7 @@ files:
1835
1841
  - spec/unit/application_spec.rb
1836
1842
  - spec/unit/certificate_factory_spec.rb
1837
1843
  - spec/unit/concurrent/lock_spec.rb
1844
+ - spec/unit/concurrent/thread_local_singleton_spec.rb
1838
1845
  - spec/unit/configurer/downloader_spec.rb
1839
1846
  - spec/unit/configurer/fact_handler_spec.rb
1840
1847
  - spec/unit/configurer/plugin_handler_spec.rb
@@ -2431,6 +2438,7 @@ files:
2431
2438
  - spec/unit/util/filetype_spec.rb
2432
2439
  - spec/unit/util/inifile_spec.rb
2433
2440
  - spec/unit/util/json_lockfile_spec.rb
2441
+ - spec/unit/util/json_spec.rb
2434
2442
  - spec/unit/util/ldap/connection_spec.rb
2435
2443
  - spec/unit/util/ldap/generator_spec.rb
2436
2444
  - spec/unit/util/ldap/manager_spec.rb
@@ -3092,6 +3100,7 @@ test_files:
3092
3100
  - spec/unit/application_spec.rb
3093
3101
  - spec/unit/certificate_factory_spec.rb
3094
3102
  - spec/unit/concurrent/lock_spec.rb
3103
+ - spec/unit/concurrent/thread_local_singleton_spec.rb
3095
3104
  - spec/unit/configurer/downloader_spec.rb
3096
3105
  - spec/unit/configurer/fact_handler_spec.rb
3097
3106
  - spec/unit/configurer/plugin_handler_spec.rb
@@ -3688,6 +3697,7 @@ test_files:
3688
3697
  - spec/unit/util/filetype_spec.rb
3689
3698
  - spec/unit/util/inifile_spec.rb
3690
3699
  - spec/unit/util/json_lockfile_spec.rb
3700
+ - spec/unit/util/json_spec.rb
3691
3701
  - spec/unit/util/ldap/connection_spec.rb
3692
3702
  - spec/unit/util/ldap/generator_spec.rb
3693
3703
  - spec/unit/util/ldap/manager_spec.rb