puppet 4.7.1 → 4.8.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.

Files changed (276) hide show
  1. data/Gemfile +0 -3
  2. data/MAINTAINERS +76 -0
  3. data/README.md +0 -6
  4. data/Rakefile +2 -2
  5. data/lib/puppet/agent.rb +3 -3
  6. data/lib/puppet/application/apply.rb +1 -1
  7. data/lib/puppet/configurer.rb +2 -2
  8. data/lib/puppet/data_providers.rb +1 -0
  9. data/lib/puppet/data_providers/data_adapter.rb +1 -0
  10. data/lib/puppet/data_providers/data_function_support.rb +1 -0
  11. data/lib/puppet/data_providers/function_env_data_provider.rb +1 -0
  12. data/lib/puppet/data_providers/function_module_data_provider.rb +1 -0
  13. data/lib/puppet/data_providers/hiera_config.rb +1 -0
  14. data/lib/puppet/data_providers/hiera_env_data_provider.rb +1 -0
  15. data/lib/puppet/data_providers/hiera_interpolate.rb +1 -0
  16. data/lib/puppet/data_providers/hiera_module_data_provider.rb +1 -0
  17. data/lib/puppet/data_providers/hiera_support.rb +1 -2
  18. data/lib/puppet/data_providers/json_data_provider_factory.rb +2 -0
  19. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -0
  20. data/lib/puppet/defaults.rb +20 -1
  21. data/lib/puppet/environments.rb +5 -2
  22. data/lib/puppet/face/catalog.rb +1 -1
  23. data/lib/puppet/face/epp.rb +57 -11
  24. data/lib/puppet/face/module/install.rb +6 -6
  25. data/lib/puppet/functions.rb +23 -24
  26. data/lib/puppet/functions/alert.rb +14 -0
  27. data/lib/puppet/functions/binary_file.rb +25 -0
  28. data/lib/puppet/functions/break.rb +22 -0
  29. data/lib/puppet/functions/contain.rb +33 -0
  30. data/lib/puppet/functions/crit.rb +14 -0
  31. data/lib/puppet/functions/debug.rb +14 -0
  32. data/lib/puppet/functions/emerg.rb +14 -0
  33. data/lib/puppet/functions/epp.rb +1 -1
  34. data/lib/puppet/functions/err.rb +14 -0
  35. data/lib/puppet/functions/find_file.rb +31 -0
  36. data/lib/puppet/functions/include.rb +21 -0
  37. data/lib/puppet/functions/info.rb +14 -0
  38. data/lib/puppet/functions/new.rb +1 -1
  39. data/lib/puppet/functions/next.rb +23 -0
  40. data/lib/puppet/functions/notice.rb +14 -0
  41. data/lib/puppet/functions/regsubst.rb +12 -16
  42. data/lib/puppet/functions/require.rb +37 -0
  43. data/lib/puppet/functions/return.rb +22 -0
  44. data/lib/puppet/functions/strftime.rb +35 -0
  45. data/lib/puppet/functions/warning.rb +14 -0
  46. data/lib/puppet/generate/models/type/type.rb +4 -0
  47. data/lib/puppet/generate/templates/type/pcore.erb +2 -1
  48. data/lib/puppet/indirector/face.rb +6 -1
  49. data/lib/puppet/network/http/error.rb +2 -2
  50. data/lib/puppet/network/http/handler.rb +2 -2
  51. data/lib/puppet/node/environment.rb +11 -0
  52. data/lib/puppet/parser/ast.rb +5 -0
  53. data/lib/puppet/parser/ast/pops_bridge.rb +17 -4
  54. data/lib/puppet/parser/compiler.rb +29 -1
  55. data/lib/puppet/parser/functions.rb +6 -0
  56. data/lib/puppet/parser/functions/assert_type.rb +1 -1
  57. data/lib/puppet/parser/functions/binary_file.rb +24 -0
  58. data/lib/puppet/parser/functions/break.rb +39 -0
  59. data/lib/puppet/parser/functions/contain.rb +7 -15
  60. data/lib/puppet/parser/functions/defined.rb +2 -2
  61. data/lib/puppet/parser/functions/dig.rb +1 -1
  62. data/lib/puppet/parser/functions/each.rb +1 -1
  63. data/lib/puppet/parser/functions/epp.rb +2 -2
  64. data/lib/puppet/parser/functions/filter.rb +1 -1
  65. data/lib/puppet/parser/functions/find_file.rb +28 -0
  66. data/lib/puppet/parser/functions/hiera.rb +4 -4
  67. data/lib/puppet/parser/functions/hiera_array.rb +1 -1
  68. data/lib/puppet/parser/functions/hiera_hash.rb +1 -1
  69. data/lib/puppet/parser/functions/hiera_include.rb +1 -1
  70. data/lib/puppet/parser/functions/include.rb +4 -8
  71. data/lib/puppet/parser/functions/inline_epp.rb +1 -1
  72. data/lib/puppet/parser/functions/lest.rb +1 -1
  73. data/lib/puppet/parser/functions/lookup.rb +4 -2
  74. data/lib/puppet/parser/functions/map.rb +1 -1
  75. data/lib/puppet/parser/functions/match.rb +1 -1
  76. data/lib/puppet/parser/functions/new.rb +414 -18
  77. data/lib/puppet/parser/functions/next.rb +38 -0
  78. data/lib/puppet/parser/functions/reduce.rb +1 -1
  79. data/lib/puppet/parser/functions/regsubst.rb +4 -2
  80. data/lib/puppet/parser/functions/require.rb +4 -27
  81. data/lib/puppet/parser/functions/return.rb +71 -0
  82. data/lib/puppet/parser/functions/reverse_each.rb +1 -1
  83. data/lib/puppet/parser/functions/scanf.rb +13 -8
  84. data/lib/puppet/parser/functions/slice.rb +1 -1
  85. data/lib/puppet/parser/functions/split.rb +1 -1
  86. data/lib/puppet/parser/functions/step.rb +1 -1
  87. data/lib/puppet/parser/functions/strftime.rb +185 -0
  88. data/lib/puppet/parser/functions/then.rb +1 -1
  89. data/lib/puppet/parser/functions/type.rb +1 -1
  90. data/lib/puppet/parser/functions/with.rb +3 -3
  91. data/lib/puppet/parser/resource.rb +8 -5
  92. data/lib/puppet/parser/scope.rb +1 -1
  93. data/lib/puppet/plugins/configuration.rb +8 -0
  94. data/lib/puppet/plugins/data_providers.rb +1 -0
  95. data/lib/puppet/plugins/data_providers/data_provider.rb +7 -28
  96. data/lib/puppet/plugins/data_providers/registry.rb +1 -0
  97. data/lib/puppet/pops.rb +4 -0
  98. data/lib/puppet/pops/evaluator/access_operator.rb +36 -5
  99. data/lib/puppet/pops/evaluator/closure.rb +81 -12
  100. data/lib/puppet/pops/evaluator/compare_operator.rb +24 -1
  101. data/lib/puppet/pops/evaluator/evaluator_impl.rb +29 -5
  102. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +1 -1
  103. data/lib/puppet/pops/evaluator/runtime3_converter.rb +53 -62
  104. data/lib/puppet/pops/evaluator/runtime3_support.rb +15 -6
  105. data/lib/puppet/pops/functions/dispatch.rb +9 -2
  106. data/lib/puppet/pops/functions/dispatcher.rb +3 -1
  107. data/lib/puppet/pops/functions/function.rb +19 -2
  108. data/lib/puppet/pops/issues.rb +9 -0
  109. data/lib/puppet/pops/label_provider.rb +2 -2
  110. data/lib/puppet/pops/loader/loader.rb +17 -0
  111. data/lib/puppet/pops/loader/static_loader.rb +0 -41
  112. data/lib/puppet/pops/lookup.rb +12 -0
  113. data/lib/puppet/pops/lookup/context.rb +86 -0
  114. data/lib/puppet/pops/lookup/explainer.rb +46 -6
  115. data/lib/puppet/pops/lookup/invocation.rb +19 -0
  116. data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
  117. data/lib/puppet/pops/model/factory.rb +20 -8
  118. data/lib/puppet/pops/model/model_label_provider.rb +3 -0
  119. data/lib/puppet/pops/model/model_meta.rb +2 -0
  120. data/lib/puppet/pops/model/model_tree_dumper.rb +14 -0
  121. data/lib/puppet/pops/parser/egrammar.ra +11 -6
  122. data/lib/puppet/pops/parser/eparser.rb +1112 -1086
  123. data/lib/puppet/pops/parser/heredoc_support.rb +1 -2
  124. data/lib/puppet/pops/pcore.rb +1 -0
  125. data/lib/puppet/pops/puppet_stack.rb +3 -3
  126. data/lib/puppet/pops/resource/param.rb +5 -1
  127. data/lib/puppet/pops/resource/resource_type_impl.rb +8 -4
  128. data/lib/puppet/pops/resource/resource_type_set.pcore +1 -0
  129. data/lib/puppet/pops/serialization/abstract_reader.rb +19 -2
  130. data/lib/puppet/pops/serialization/abstract_writer.rb +16 -3
  131. data/lib/puppet/pops/serialization/deserializer.rb +5 -1
  132. data/lib/puppet/pops/serialization/extension.rb +2 -0
  133. data/lib/puppet/pops/serialization/json.rb +76 -26
  134. data/lib/puppet/pops/serialization/serializer.rb +5 -1
  135. data/lib/puppet/pops/serialization/time_factory.rb +2 -1
  136. data/lib/puppet/pops/time/timespan.rb +718 -0
  137. data/lib/puppet/pops/time/timestamp.rb +148 -0
  138. data/lib/puppet/pops/types/p_binary_type.rb +220 -0
  139. data/lib/puppet/pops/types/p_object_type.rb +12 -6
  140. data/lib/puppet/pops/types/p_sensitive_type.rb +5 -1
  141. data/lib/puppet/pops/types/p_timespan_type.rb +141 -0
  142. data/lib/puppet/pops/types/p_timestamp_type.rb +69 -0
  143. data/lib/puppet/pops/types/string_converter.rb +62 -0
  144. data/lib/puppet/pops/types/type_asserter.rb +1 -1
  145. data/lib/puppet/pops/types/type_calculator.rb +17 -3
  146. data/lib/puppet/pops/types/type_factory.rb +35 -1
  147. data/lib/puppet/pops/types/type_formatter.rb +64 -11
  148. data/lib/puppet/pops/types/type_mismatch_describer.rb +110 -61
  149. data/lib/puppet/pops/types/type_parser.rb +18 -4
  150. data/lib/puppet/pops/types/types.rb +98 -63
  151. data/lib/puppet/pops/validation.rb +9 -1
  152. data/lib/puppet/pops/validation/checker4_0.rb +7 -0
  153. data/lib/puppet/property.rb +1 -1
  154. data/lib/puppet/provider.rb +3 -6
  155. data/lib/puppet/provider/mcx/mcxcontent.rb +1 -1
  156. data/lib/puppet/provider/mount/parsed.rb +18 -4
  157. data/lib/puppet/provider/nameservice/directoryservice.rb +15 -7
  158. data/lib/puppet/provider/package/gem.rb +6 -1
  159. data/lib/puppet/provider/package/pip.rb +0 -1
  160. data/lib/puppet/provider/package/pkg.rb +5 -1
  161. data/lib/puppet/provider/package/pkgng.rb +1 -1
  162. data/lib/puppet/provider/package/yum.rb +10 -0
  163. data/lib/puppet/provider/service/launchd.rb +1 -0
  164. data/lib/puppet/provider/user/directoryservice.rb +6 -6
  165. data/lib/puppet/provider/yumrepo/inifile.rb +1 -1
  166. data/lib/puppet/provider/zpool/zpool.rb +1 -1
  167. data/lib/puppet/resource.rb +54 -12
  168. data/lib/puppet/resource/capability_finder.rb +15 -9
  169. data/lib/puppet/resource/catalog.rb +25 -6
  170. data/lib/puppet/resource/type.rb +3 -1
  171. data/lib/puppet/settings.rb +1 -1
  172. data/lib/puppet/settings/environment_conf.rb +12 -4
  173. data/lib/puppet/syntax_checkers/base64.rb +41 -0
  174. data/lib/puppet/syntax_checkers/json.rb +0 -2
  175. data/lib/puppet/transaction.rb +6 -0
  176. data/lib/puppet/transaction/additional_resource_generator.rb +5 -0
  177. data/lib/puppet/transaction/report.rb +7 -2
  178. data/lib/puppet/type.rb +2 -1
  179. data/lib/puppet/type/file/checksum.rb +1 -0
  180. data/lib/puppet/type/file/content.rb +4 -4
  181. data/lib/puppet/type/mount.rb +44 -0
  182. data/lib/puppet/type/ssh_authorized_key.rb +1 -1
  183. data/lib/puppet/type/tidy.rb +3 -0
  184. data/lib/puppet/type/user.rb +12 -6
  185. data/lib/puppet/util/log.rb +25 -0
  186. data/lib/puppet/util/plist.rb +8 -3
  187. data/lib/puppet/version.rb +1 -1
  188. data/lib/puppet_x.rb +7 -1
  189. data/spec/integration/application/apply_spec.rb +118 -0
  190. data/spec/integration/parser/compiler_spec.rb +28 -0
  191. data/spec/integration/parser/pcore_resource_spec.rb +40 -3
  192. data/spec/integration/provider/mount_spec.rb +2 -1
  193. data/spec/integration/util/windows/principal_spec.rb +2 -2
  194. data/spec/integration/util/windows/registry_spec.rb +4 -4
  195. data/spec/lib/puppet_spec/compiler.rb +5 -1
  196. data/spec/lib/puppet_spec/unindent.rb +5 -0
  197. data/spec/shared_contexts/types_setup.rb +6 -0
  198. data/spec/shared_examples/rhel_package_provider.rb +16 -0
  199. data/spec/spec_helper.rb +1 -0
  200. data/spec/unit/agent_spec.rb +11 -0
  201. data/spec/unit/application/lookup_spec.rb +94 -3
  202. data/spec/unit/capability_spec.rb +22 -0
  203. data/spec/unit/configurer_spec.rb +8 -0
  204. data/spec/unit/face/epp_face_spec.rb +22 -3
  205. data/spec/unit/functions/assert_type_spec.rb +3 -3
  206. data/spec/unit/functions/binary_file_spec.rb +46 -0
  207. data/spec/unit/functions/break_spec.rb +89 -0
  208. data/spec/unit/{parser/functions → functions}/contain_spec.rb +68 -3
  209. data/spec/unit/functions/find_file_spec.rb +69 -0
  210. data/spec/unit/functions/include_spec.rb +175 -0
  211. data/spec/unit/functions/logging_spec.rb +54 -0
  212. data/spec/unit/functions/lookup_spec.rb +3 -3
  213. data/spec/unit/functions/new_spec.rb +105 -5
  214. data/spec/unit/functions/next_spec.rb +93 -0
  215. data/spec/unit/functions/require_spec.rb +83 -0
  216. data/spec/unit/functions/return_spec.rb +105 -0
  217. data/spec/unit/{parser/functions → functions}/shared.rb +14 -11
  218. data/spec/unit/functions/strftime_spec.rb +152 -0
  219. data/spec/unit/functions4_spec.rb +22 -0
  220. data/spec/unit/indirector/face_spec.rb +10 -2
  221. data/spec/unit/network/http/error_spec.rb +1 -2
  222. data/spec/unit/network/http/handler_spec.rb +6 -5
  223. data/spec/unit/parser/functions/hiera_array_spec.rb +1 -1
  224. data/spec/unit/parser/functions/hiera_hash_spec.rb +1 -1
  225. data/spec/unit/parser/functions/hiera_include_spec.rb +1 -1
  226. data/spec/unit/parser/functions/hiera_spec.rb +1 -1
  227. data/spec/unit/parser/functions/lookup_spec.rb +1 -1
  228. data/spec/unit/parser/functions/regsubst_spec.rb +1 -1
  229. data/spec/unit/parser/functions/split_spec.rb +1 -1
  230. data/spec/unit/pops/evaluator/access_ops_spec.rb +81 -1
  231. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +170 -0
  232. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +29 -4
  233. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +112 -4
  234. data/spec/unit/pops/loaders/dependency_loader_spec.rb +12 -0
  235. data/spec/unit/pops/loaders/static_loader_spec.rb +0 -26
  236. data/spec/unit/pops/lookup/context_spec.rb +149 -0
  237. data/spec/unit/pops/parser/parse_functions_spec.rb +19 -0
  238. data/spec/unit/pops/parser/parse_lambda_spec.rb +19 -0
  239. data/spec/unit/pops/puppet_stack_spec.rb +1 -1
  240. data/spec/unit/pops/resource/resource_type_impl_spec.rb +74 -0
  241. data/spec/unit/pops/serialization/packer_spec.rb +34 -14
  242. data/spec/unit/pops/serialization/serialization_spec.rb +67 -5
  243. data/spec/unit/pops/time/timespan_spec.rb +121 -0
  244. data/spec/unit/pops/types/p_binary_type_spec.rb +243 -0
  245. data/spec/unit/pops/types/p_object_type_spec.rb +7 -7
  246. data/spec/unit/pops/types/p_sensitive_type_spec.rb +1 -1
  247. data/spec/unit/pops/types/p_timespan_type_spec.rb +273 -0
  248. data/spec/unit/pops/types/p_timestamp_type_spec.rb +311 -0
  249. data/spec/unit/pops/types/p_type_set_type_spec.rb +13 -13
  250. data/spec/unit/pops/types/ruby_generator_spec.rb +12 -12
  251. data/spec/unit/pops/types/string_converter_spec.rb +89 -0
  252. data/spec/unit/pops/types/type_asserter_spec.rb +3 -3
  253. data/spec/unit/pops/types/type_calculator_spec.rb +113 -5
  254. data/spec/unit/pops/types/type_formatter_spec.rb +40 -0
  255. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +49 -38
  256. data/spec/unit/pops/types/type_parser_spec.rb +87 -4
  257. data/spec/unit/pops/types/types_spec.rb +1 -1
  258. data/spec/unit/pops/validator/validator_spec.rb +23 -0
  259. data/spec/unit/provider/mount/parsed_spec.rb +47 -29
  260. data/spec/unit/provider/package/pkg_spec.rb +109 -99
  261. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +1 -0
  262. data/spec/unit/provider/user/aix_spec.rb +1 -1
  263. data/spec/unit/provider/user/directoryservice_spec.rb +101 -30
  264. data/spec/unit/resource/capability_finder_spec.rb +29 -7
  265. data/spec/unit/resource/catalog_spec.rb +127 -0
  266. data/spec/unit/ssl/certificate_request_spec.rb +1 -1
  267. data/spec/unit/transaction/additional_resource_generator_spec.rb +30 -0
  268. data/spec/unit/transaction/persistence_spec.rb +1 -6
  269. data/spec/unit/transaction/report_spec.rb +23 -0
  270. data/spec/unit/transaction_spec.rb +38 -0
  271. data/spec/unit/type/mount_spec.rb +5 -0
  272. data/spec/unit/util/plist_spec.rb +14 -2
  273. metadata +71 -12
  274. data/spec/integration/parser/functions/require_spec.rb +0 -43
  275. data/spec/unit/parser/functions/include_spec.rb +0 -55
  276. data/spec/unit/parser/functions/require_spec.rb +0 -68
@@ -71,29 +71,50 @@ describe Puppet::Resource::CapabilityFinder do
71
71
  let(:capability) { Puppet::Resource.new('Cap', 'cap') }
72
72
  let(:code_id) { 'b59e5df0578ef411f773ee6c33d8073c50e7b8fe' }
73
73
 
74
- it 'should search for the resource without including code_id' do
74
+ it 'should search for the resource without including code_id or environment' do
75
75
  resources = [{"type"=>"Cap", "title"=>"cap", "parameters"=>{"host"=>"ahost"}}]
76
- Puppet::Resource::CapabilityFinder.stubs(:search).with('production', nil, capability).returns resources
76
+ Puppet::Resource::CapabilityFinder.stubs(:search).with(nil, nil, capability).returns resources
77
77
 
78
78
  result = Puppet::Resource::CapabilityFinder.find('production', code_id, Puppet::Resource.new('Cap', 'cap'))
79
79
  expect(result['host']).to eq('ahost')
80
80
  end
81
81
 
82
82
  it 'should return nil if no resource is found' do
83
- Puppet::Resource::CapabilityFinder.stubs(:search).with('production', nil, capability).returns []
83
+ Puppet::Resource::CapabilityFinder.stubs(:search).with(nil, nil, capability).returns []
84
84
 
85
85
  result = Puppet::Resource::CapabilityFinder.find('production', code_id, capability)
86
86
  expect(result).to be_nil
87
87
  end
88
88
 
89
- describe 'when multiple results are returned' do
89
+ describe 'when multiple results are returned for different environments' do
90
90
  let(:resources) do
91
- [{"type"=>"Cap", "title"=>"cap", "parameters"=>{"host"=>"ahost"}},
92
- {"type"=>"Cap", "title"=>"cap", "parameters"=>{"host"=>"bhost"}}]
91
+ [{"type"=>"Cap", "title"=>"cap", "parameters"=>{"host"=>"ahost"}, "tags"=>["producer:production"]},
92
+ {"type"=>"Cap", "title"=>"cap", "parameters"=>{"host"=>"bhost"}, "tags"=>["producer:other_env"]}]
93
93
  end
94
94
 
95
95
  before :each do
96
- Puppet::Resource::CapabilityFinder.stubs(:search).with('production', nil, capability).returns resources
96
+ Puppet::Resource::CapabilityFinder.stubs(:search).with(nil, nil, capability).returns resources
97
+ end
98
+
99
+ it 'should return the resource matching environment' do
100
+ result = Puppet::Resource::CapabilityFinder.find('production', code_id, capability)
101
+ expect(result['host']).to eq('ahost')
102
+ end
103
+
104
+ it 'should return nil if no resource matches environment' do
105
+ result = Puppet::Resource::CapabilityFinder.find('bad_env', code_id, capability)
106
+ expect(result).to be_nil
107
+ end
108
+ end
109
+
110
+ describe 'when multiple results are returned for the same environment' do
111
+ let(:resources) do
112
+ [{"type"=>"Cap", "title"=>"cap", "parameters"=>{"host"=>"ahost"}, "tags"=>["producer:production"]},
113
+ {"type"=>"Cap", "title"=>"cap", "parameters"=>{"host"=>"bhost"}, "tags"=>["producer:production"]}]
114
+ end
115
+
116
+ before :each do
117
+ Puppet::Resource::CapabilityFinder.stubs(:search).with(nil, nil, capability).returns resources
97
118
  end
98
119
 
99
120
  it 'should return the resource matching code_id' do
@@ -117,6 +138,7 @@ describe Puppet::Resource::CapabilityFinder do
117
138
  end
118
139
 
119
140
  it 'should fail if no code_id was specified' do
141
+ Puppet::Resource::CapabilityFinder.stubs(:search).with('production', nil, capability).returns resources
120
142
  expect { Puppet::Resource::CapabilityFinder.find('production', nil, capability) }.to raise_error(Puppet::DevError, /expected exactly one resource/)
121
143
  end
122
144
  end
@@ -843,6 +843,133 @@ describe Puppet::Resource::Catalog, "when converting a resource catalog to pson"
843
843
  MANIFEST
844
844
  expect(catalog.to_pson).to validate_against('api/schemas/catalog.json')
845
845
  end
846
+
847
+ context 'when dealing with parameters that have non-Data values' do
848
+ context 'and rich_data is enabled' do
849
+ before(:each) do
850
+ Puppet[:rich_data] = true
851
+ end
852
+
853
+ let(:catalog_w_regexp) { compile_to_catalog("notify {'foo': message => /[a-z]+/ }") }
854
+
855
+ it 'should generate ext_parameters for parameter values that are not Data' do
856
+ expect(catalog_w_regexp.to_json).to include('"ext_parameters":{"message":[48,"[a-z]+"]}')
857
+ end
858
+
859
+ it 'should validate ext_parameters against the schema' do
860
+ expect(catalog_w_regexp.to_json).to validate_against('api/schemas/catalog.json')
861
+ end
862
+
863
+ it 'should read and convert ext_parameters containing Regexp from json' do
864
+ catalog2 = Puppet::Resource::Catalog.from_data_hash(JSON.parse(catalog_w_regexp.to_json))
865
+ message = catalog2.resource('notify', 'foo')['message']
866
+ expect(message).to be_a(Regexp)
867
+ expect(message).to eql(/[a-z]+/)
868
+ end
869
+
870
+ it 'should read and convert ext_parameters containing Version from json' do
871
+ catalog = compile_to_catalog("notify {'foo': message => SemVer('1.0.0') }")
872
+ catalog2 = Puppet::Resource::Catalog.from_data_hash(JSON.parse(catalog.to_json))
873
+ message = catalog2.resource('notify', 'foo')['message']
874
+ expect(message).to be_a(Semantic::Version)
875
+ expect(message).to eql(Semantic::Version.parse('1.0.0'))
876
+ end
877
+
878
+ it 'should read and convert ext_parameters containing VersionRange from json' do
879
+ catalog = compile_to_catalog("notify {'foo': message => SemVerRange('>=1.0.0') }")
880
+ catalog2 = Puppet::Resource::Catalog.from_data_hash(JSON.parse(catalog.to_json))
881
+ message = catalog2.resource('notify', 'foo')['message']
882
+ expect(message).to be_a(Semantic::VersionRange)
883
+ expect(message).to eql(Semantic::VersionRange.parse('>=1.0.0'))
884
+ end
885
+
886
+ it 'should read and convert ext_parameters containing Timespan from json' do
887
+ catalog = compile_to_catalog("notify {'foo': message => Timespan(1234) }")
888
+ catalog2 = Puppet::Resource::Catalog.from_data_hash(JSON.parse(catalog.to_json))
889
+ message = catalog2.resource('notify', 'foo')['message']
890
+ expect(message).to be_a(Puppet::Pops::Time::Timespan)
891
+ expect(message).to eql(Puppet::Pops::Time::Timespan.parse('1234', '%S'))
892
+ end
893
+
894
+ it 'should read and convert ext_parameters containing Timestamp from json' do
895
+ catalog = compile_to_catalog("notify {'foo': message => Timestamp('2016-09-15T08:32:16.123 UTC') }")
896
+ catalog2 = Puppet::Resource::Catalog.from_data_hash(JSON.parse(catalog.to_json))
897
+ message = catalog2.resource('notify', 'foo')['message']
898
+ expect(message).to be_a(Puppet::Pops::Time::Timestamp)
899
+ expect(message).to eql(Puppet::Pops::Time::Timestamp.parse('2016-09-15T08:32:16.123 UTC'))
900
+ end
901
+
902
+ it 'should read and convert ext_parameters containing hash with rich data from json' do
903
+ catalog = compile_to_catalog("notify {'foo': message => { 'version' => SemVer('1.0.0'), 'time' => Timestamp('2016-09-15T08:32:16.123 UTC') }}")
904
+ catalog2 = Puppet::Resource::Catalog.from_data_hash(JSON.parse(catalog.to_json))
905
+ message = catalog2.resource('notify', 'foo')['message']
906
+ expect(message).to be_a(Hash)
907
+ expect(message['version']).to eql(Semantic::Version.parse('1.0.0'))
908
+ expect(message['time']).to eql(Puppet::Pops::Time::Timestamp.parse('2016-09-15T08:32:16.123 UTC'))
909
+ end
910
+
911
+ it 'should read and convert ext_parameters containing an array with rich data from json' do
912
+ catalog = compile_to_catalog("notify {'foo': message => [ SemVer('1.0.0'), Timestamp('2016-09-15T08:32:16.123 UTC') ] }")
913
+ catalog2 = Puppet::Resource::Catalog.from_data_hash(JSON.parse(catalog.to_json))
914
+ message = catalog2.resource('notify', 'foo')['message']
915
+ expect(message).to be_a(Array)
916
+ expect(message[0]).to eql(Semantic::Version.parse('1.0.0'))
917
+ expect(message[1]).to eql(Puppet::Pops::Time::Timestamp.parse('2016-09-15T08:32:16.123 UTC'))
918
+ end
919
+ end
920
+
921
+ context 'and rich_data is disabled' do
922
+ before(:each) do
923
+ Puppet[:rich_data] = false
924
+ end
925
+
926
+ let(:catalog_w_regexp) { compile_to_catalog("notify {'foo': message => /[a-z]+/ }") }
927
+
928
+ it 'should not generate ext_parameters for parameter values that are not Data' do
929
+ expect(catalog_w_regexp.to_json).not_to include('"ext_parameters":{"message":[48,"[a-z]+"]}')
930
+ end
931
+
932
+ it 'should convert parameter containing Regexp into strings' do
933
+ catalog2 = Puppet::Resource::Catalog.from_data_hash(JSON.parse(catalog_w_regexp.to_json))
934
+ message = catalog2.resource('notify', 'foo')['message']
935
+ expect(message).to be_a(String)
936
+ expect(message).to eql('/[a-z]+/')
937
+ end
938
+
939
+ it 'should convert parameter containing Version into string' do
940
+ catalog = compile_to_catalog("notify {'foo': message => SemVer('1.0.0') }")
941
+ catalog2 = Puppet::Resource::Catalog.from_data_hash(JSON.parse(catalog.to_json))
942
+ message = catalog2.resource('notify', 'foo')['message']
943
+ expect(message).to be_a(String)
944
+ expect(message).to eql('1.0.0')
945
+ end
946
+
947
+ it 'should convert parameter containing VersionRange into string' do
948
+ catalog = compile_to_catalog("notify {'foo': message => SemVerRange('>=1.0.0') }")
949
+ catalog2 = Puppet::Resource::Catalog.from_data_hash(JSON.parse(catalog.to_json))
950
+ message = catalog2.resource('notify', 'foo')['message']
951
+ expect(message).to be_a(String)
952
+ expect(message).to eql('>=1.0.0')
953
+ end
954
+
955
+ it 'should convert parameter containing Timespan into string' do
956
+ catalog = compile_to_catalog("notify {'foo': message => Timespan(1234) }")
957
+ catalog2 = Puppet::Resource::Catalog.from_data_hash(JSON.parse(catalog.to_json))
958
+ message = catalog2.resource('notify', 'foo')['message']
959
+ expect(message).to be_a(String)
960
+ expect(message).to eql('0-00:20:34.0')
961
+ end
962
+
963
+ it 'should convert parameter containing Timestamp into string' do
964
+ catalog = compile_to_catalog("notify {'foo': message => Timestamp('2016-09-15T08:32:16.123 UTC') }")
965
+ catalog2 = Puppet::Resource::Catalog.from_data_hash(JSON.parse(catalog.to_json))
966
+ message = catalog2.resource('notify', 'foo')['message']
967
+ expect(message).to be_a(String)
968
+ expect(message).to eql('2016-09-15T08:32:16.123 UTC')
969
+ end
970
+ end
971
+
972
+ end
846
973
  end
847
974
 
848
975
  describe Puppet::Resource::Catalog, "when converting to pson" do
@@ -287,7 +287,7 @@ describe Puppet::SSL::CertificateRequest do
287
287
  exts = {"thats.no.moon" => "death star"}
288
288
  expect do
289
289
  request.generate(key, :extension_requests => exts)
290
- end.to raise_error Puppet::Error, /Cannot create CSR with extension request thats\.no\.moon.*: first num too large/
290
+ end.to raise_error Puppet::Error, /Cannot create CSR with extension request thats\.no\.moon: first num too large/
291
291
  end
292
292
  end
293
293
 
@@ -299,6 +299,20 @@ describe Puppet::Transaction::AdditionalResourceGenerator do
299
299
  include_in_order("Notify[before]", "Generator[thing]", "Notify[hello]", "Notify[third]", "Notify[after]"))
300
300
  end
301
301
 
302
+ it "sets resources_failed_to_generate to true if resource#eval_generate raises an exception" do
303
+
304
+ catalog = compile_to_ral(<<-MANIFEST)
305
+ notify { 'hello': }
306
+ MANIFEST
307
+
308
+ catalog.resource("Notify[hello]").stubs(:eval_generate).raises(RuntimeError)
309
+ relationship_graph = relationship_graph_for(catalog)
310
+ generator = Puppet::Transaction::AdditionalResourceGenerator.new(catalog, relationship_graph, prioritizer)
311
+ generator.eval_generate(catalog.resource("Notify[hello]"))
312
+
313
+ expect(generator.resources_failed_to_generate).to be_truthy
314
+ end
315
+
302
316
  def relationships_after_eval_generating(manifest, resource_to_generate)
303
317
  catalog = compile_to_ral(manifest)
304
318
  relationship_graph = relationship_graph_for(catalog)
@@ -459,6 +473,22 @@ describe Puppet::Transaction::AdditionalResourceGenerator do
459
473
  "Notify[goodbye]"))
460
474
  end
461
475
 
476
+ it "sets resources_failed_to_generate to true if resource#generate raises an exception" do
477
+
478
+ catalog = compile_to_ral(<<-MANIFEST)
479
+ user { 'foo':
480
+ ensure => present,
481
+ }
482
+ MANIFEST
483
+
484
+ catalog.resource("User[foo]").stubs(:generate).raises(RuntimeError)
485
+ relationship_graph = relationship_graph_for(catalog)
486
+ generator = Puppet::Transaction::AdditionalResourceGenerator.new(catalog, relationship_graph, prioritizer)
487
+ generator.generate_additional_resources(catalog.resource("User[foo]"))
488
+
489
+ expect(generator.resources_failed_to_generate).to be_truthy
490
+ end
491
+
462
492
  def relationships_after_generating(manifest, resource_to_generate)
463
493
  catalog = compile_to_ral(manifest)
464
494
  generate_resources_in(catalog, nil, resource_to_generate)
@@ -148,12 +148,7 @@ describe Puppet::Transaction::Persistence do
148
148
  persistence = Puppet::Transaction::Persistence.new
149
149
 
150
150
  if Puppet.features.microsoft_windows?
151
- expect do
152
- persistence.save
153
- end.to raise_error do |error|
154
- expect(error).to be_a(Puppet::Util::Windows::Error)
155
- expect(error.code).to eq(5) # ERROR_ACCESS_DENIED
156
- end
151
+ expect { persistence.save }.to raise_error(Puppet::Util::Windows::Error, /Access is denied/)
157
152
  else
158
153
  expect { persistence.save }.to raise_error(Errno::EISDIR, /Is a directory/)
159
154
  end
@@ -98,6 +98,17 @@ describe Puppet::Transaction::Report do
98
98
  expect(report.environment).to eq("some environment")
99
99
  end
100
100
 
101
+ it "should be able to set resources_failed_to_generate" do
102
+ report = Puppet::Transaction::Report.new("apply")
103
+ report.resources_failed_to_generate = true
104
+ expect(report.resources_failed_to_generate).to be_truthy
105
+ end
106
+
107
+ it "resources_failed_to_generate should not be true by default" do
108
+ report = Puppet::Transaction::Report.new("apply")
109
+ expect(report.resources_failed_to_generate).to be_falsey
110
+ end
111
+
101
112
  it "should not include whits" do
102
113
  Puppet::FileBucket::File.indirection.stubs(:save)
103
114
 
@@ -270,6 +281,12 @@ describe Puppet::Transaction::Report do
270
281
  @report.finalize_report
271
282
  expect(@report.status).to eq('failed')
272
283
  end
284
+
285
+ it "should mark the report as 'failed' if resources_failed_to_generate" do
286
+ @report.resources_failed_to_generate = true
287
+ @report.finalize_report
288
+ expect(@report.status).to eq('failed')
289
+ end
273
290
  end
274
291
 
275
292
  describe "for changes" do
@@ -455,6 +472,12 @@ describe Puppet::Transaction::Report do
455
472
  report.add_times('config_retrieval', 1.0)
456
473
  expect(report.to_yaml_properties).not_to include('@external_times')
457
474
  end
475
+
476
+ it "should not include @resources_failed_to_generate" do
477
+ report = Puppet::Transaction::Report.new("apply")
478
+ report.resources_failed_to_generate = true
479
+ expect(report.to_yaml_properties).not_to include('@resources_failed_to_generate')
480
+ end
458
481
  end
459
482
 
460
483
  it "defaults to serializing to pson" do
@@ -327,6 +327,44 @@ describe Puppet::Transaction do
327
327
  end
328
328
  end
329
329
 
330
+ describe "after resource traversal" do
331
+ let(:catalog) { Puppet::Resource::Catalog.new }
332
+ let(:prioritizer) { Puppet::Graph::RandomPrioritizer.new }
333
+ let(:report) { Puppet::Transaction::Report.new("apply") }
334
+ let(:transaction) { Puppet::Transaction.new(catalog, report, prioritizer) }
335
+ let(:generator) { Puppet::Transaction::AdditionalResourceGenerator.new(catalog, nil, prioritizer) }
336
+
337
+ before :each do
338
+ generator = Puppet::Transaction::AdditionalResourceGenerator.new(catalog, nil, prioritizer)
339
+ Puppet::Transaction::AdditionalResourceGenerator.stubs(:new).returns(generator)
340
+ end
341
+
342
+ it "should should query the generator for whether resources failed to generate" do
343
+ relationship_graph = Puppet::Graph::RelationshipGraph.new(prioritizer)
344
+ catalog.stubs(:relationship_graph).returns(relationship_graph)
345
+
346
+ sequence = sequence(:traverse_first)
347
+ relationship_graph.expects(:traverse).in_sequence(sequence)
348
+ generator.expects(:resources_failed_to_generate).in_sequence(sequence)
349
+
350
+ transaction.evaluate
351
+ end
352
+
353
+ it "should report that resources failed to generate" do
354
+ generator.expects(:resources_failed_to_generate).returns(true)
355
+ report.expects(:resources_failed_to_generate=).with(true)
356
+
357
+ transaction.evaluate
358
+ end
359
+
360
+ it "should not report that resources failed to generate if none did" do
361
+ generator.expects(:resources_failed_to_generate).returns(false)
362
+ report.expects(:resources_failed_to_generate=).never
363
+
364
+ transaction.evaluate
365
+ end
366
+ end
367
+
330
368
  describe "when performing pre-run checks" do
331
369
  let(:resource) { Puppet::Type.type(:notify).new(:title => "spec") }
332
370
  let(:transaction) { transaction_with_resource(resource) }
@@ -530,6 +530,11 @@ describe Puppet::Type.type(:mount), :unless => Puppet.features.microsoft_windows
530
530
  run_in_catalog(resource)
531
531
  end
532
532
 
533
+ it "should detect out of sync options" do
534
+ resource.provider.property_hash[:live_options] = "foo";
535
+ expect(resource.parameters[:options].insync?('soft')).to eq(false);
536
+ end
537
+
533
538
  it "should umount before flushing changes to disk" do
534
539
  syncorder = sequence('syncorder')
535
540
 
@@ -57,7 +57,10 @@ describe Puppet::Util::Plist, :if => Puppet.features.cfpropertylist? do
57
57
  Take me where I cannot stand
58
58
  I don't care, I'm still free
59
59
  You can't take the sky from me."
60
- end
60
+ end
61
+ let(:binary_data) do
62
+ "\xCF\xFA\xED\xFE\a\u0000\u0000\u0001\u0003\u0000\u0000\x80\u0002\u0000\u0000\u0000\u0012\u0000\u0000\u0000\b"
63
+ end
61
64
  let(:valid_xml_plist_hash) { {"LastUsedPrinters"=>[{"Network"=>"10.85.132.1", "PrinterID"=>"baskerville_corp_puppetlabs_net"}, {"Network"=>"10.14.96.1", "PrinterID"=>"Statler"}]} }
62
65
  let(:plist_path) { file_containing('sample.plist', valid_xml_plist) }
63
66
  let(:binary_plist_magic_number) { 'bplist00' }
@@ -96,7 +99,16 @@ describe Puppet::Util::Plist, :if => Puppet.features.cfpropertylist? do
96
99
  it "returns nil when direct parsing and plutil conversion both fail" do
97
100
  subject.stubs(:read_file_with_offset).with(plist_path, 8).returns('notbinary')
98
101
  subject.stubs(:open_file_with_args).with(plist_path, 'r:UTF-8').returns(non_plist_data)
99
- Puppet.expects(:debug).with(regexp_matches(/^Failed with NoMethodError/))
102
+ Puppet.expects(:debug).with(regexp_matches(/^Failed with (CFFormatError|NoMethodError)/))
103
+ Puppet.expects(:debug).with("Plist #{plist_path} ill-formatted, converting with plutil")
104
+ Puppet::Util::Execution.expects(:execute).with(['/usr/bin/plutil', '-convert', 'xml1', '-o', '/dev/stdout', plist_path],
105
+ {:failonfail => true, :combine => true}).raises(Puppet::ExecutionFailure, 'boom')
106
+ expect(subject.read_plist_file(plist_path)).to eq(nil)
107
+ end
108
+ it "returns nil when file is a non-plist binary blob" do
109
+ subject.stubs(:read_file_with_offset).with(plist_path, 8).returns('notbinary')
110
+ subject.stubs(:open_file_with_args).with(plist_path, 'r:UTF-8').returns(binary_data)
111
+ Puppet.expects(:debug).with(regexp_matches(/^Failed with (CFFormatError|ArgumentError)/))
100
112
  Puppet.expects(:debug).with("Plist #{plist_path} ill-formatted, converting with plutil")
101
113
  Puppet::Util::Execution.expects(:execute).with(['/usr/bin/plutil', '-convert', 'xml1', '-o', '/dev/stdout', plist_path],
102
114
  {:failonfail => true, :combine => true}).raises(Puppet::ExecutionFailure, 'boom')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.7.1
4
+ version: 4.8.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-01-17 00:00:00.000000000 Z
12
+ date: 2016-11-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: facter
@@ -79,6 +79,7 @@ extensions: []
79
79
  extra_rdoc_files: []
80
80
  files:
81
81
  - CONTRIBUTING.md
82
+ - MAINTAINERS
82
83
  - Rakefile
83
84
  - LICENSE
84
85
  - COMMITTERS.md
@@ -363,6 +364,7 @@ files:
363
364
  - lib/puppet/environments.rb
364
365
  - lib/puppet/functions.rb
365
366
  - lib/puppet/syntax_checkers/json.rb
367
+ - lib/puppet/syntax_checkers/base64.rb
366
368
  - lib/puppet/settings.rb
367
369
  - lib/puppet/confiner.rb
368
370
  - lib/puppet/application/indirection_base.rb
@@ -771,6 +773,7 @@ files:
771
773
  - lib/puppet/parser/functions/regsubst.rb
772
774
  - lib/puppet/parser/functions/include.rb
773
775
  - lib/puppet/parser/functions/epp.rb
776
+ - lib/puppet/parser/functions/find_file.rb
774
777
  - lib/puppet/parser/functions/lest.rb
775
778
  - lib/puppet/parser/functions/sha1.rb
776
779
  - lib/puppet/parser/functions/map.rb
@@ -778,18 +781,22 @@ files:
778
781
  - lib/puppet/parser/functions/defined.rb
779
782
  - lib/puppet/parser/functions/match.rb
780
783
  - lib/puppet/parser/functions/digest.rb
784
+ - lib/puppet/parser/functions/binary_file.rb
781
785
  - lib/puppet/parser/functions/realize.rb
782
786
  - lib/puppet/parser/functions/then.rb
783
787
  - lib/puppet/parser/functions/tagged.rb
784
788
  - lib/puppet/parser/functions/hiera_hash.rb
785
789
  - lib/puppet/parser/functions/filter.rb
786
790
  - lib/puppet/parser/functions/contain.rb
791
+ - lib/puppet/parser/functions/break.rb
787
792
  - lib/puppet/parser/functions/hiera_array.rb
788
793
  - lib/puppet/parser/functions/file.rb
794
+ - lib/puppet/parser/functions/strftime.rb
789
795
  - lib/puppet/parser/functions/reduce.rb
790
796
  - lib/puppet/parser/functions/shellquote.rb
791
797
  - lib/puppet/parser/functions/reverse_each.rb
792
798
  - lib/puppet/parser/functions/sprintf.rb
799
+ - lib/puppet/parser/functions/return.rb
793
800
  - lib/puppet/parser/functions/scanf.rb
794
801
  - lib/puppet/parser/functions/step.rb
795
802
  - lib/puppet/parser/functions/md5.rb
@@ -803,6 +810,7 @@ files:
803
810
  - lib/puppet/parser/functions/tag.rb
804
811
  - lib/puppet/parser/functions/hiera_include.rb
805
812
  - lib/puppet/parser/functions/inline_template.rb
813
+ - lib/puppet/parser/functions/next.rb
806
814
  - lib/puppet/parser/functions/slice.rb
807
815
  - lib/puppet/parser/functions/lookup.rb
808
816
  - lib/puppet/parser/functions/new.rb
@@ -886,10 +894,13 @@ files:
886
894
  - lib/puppet/pops/types/type_calculator.rb
887
895
  - lib/puppet/pops/types/types.rb
888
896
  - lib/puppet/pops/types/p_meta_type.rb
897
+ - lib/puppet/pops/types/p_timespan_type.rb
889
898
  - lib/puppet/pops/types/p_object_type.rb
890
899
  - lib/puppet/pops/types/implementation_registry.rb
891
900
  - lib/puppet/pops/types/p_sem_ver_range_type.rb
892
901
  - lib/puppet/pops/types/type_set_reference.rb
902
+ - lib/puppet/pops/types/p_timestamp_type.rb
903
+ - lib/puppet/pops/types/p_binary_type.rb
893
904
  - lib/puppet/pops/types/ruby_generator.rb
894
905
  - lib/puppet/pops/types/p_runtime_type.rb
895
906
  - lib/puppet/pops/types/type_formatter.rb
@@ -909,6 +920,8 @@ files:
909
920
  - lib/puppet/pops/serialization.rb
910
921
  - lib/puppet/pops/migration/migration_checker.rb
911
922
  - lib/puppet/pops/merge_strategy.rb
923
+ - lib/puppet/pops/time/timespan.rb
924
+ - lib/puppet/pops/time/timestamp.rb
912
925
  - lib/puppet/pops/loaders.rb
913
926
  - lib/puppet/pops/evaluator/literal_evaluator.rb
914
927
  - lib/puppet/pops/evaluator/puppet_proc.rb
@@ -933,6 +946,7 @@ files:
933
946
  - lib/puppet/pops/lookup/explainer.rb
934
947
  - lib/puppet/pops/lookup/invocation.rb
935
948
  - lib/puppet/pops/lookup/interpolation.rb
949
+ - lib/puppet/pops/lookup/context.rb
936
950
  - lib/puppet/pops/lookup/sub_lookup.rb
937
951
  - lib/puppet/pops/pcore.rb
938
952
  - lib/puppet/pops/visitable.rb
@@ -1143,19 +1157,31 @@ files:
1143
1157
  - lib/puppet/resource/type.rb
1144
1158
  - lib/puppet/resource/capability_finder.rb
1145
1159
  - lib/puppet/resource/status.rb
1160
+ - lib/puppet/functions/notice.rb
1146
1161
  - lib/puppet/functions/regsubst.rb
1162
+ - lib/puppet/functions/include.rb
1147
1163
  - lib/puppet/functions/epp.rb
1164
+ - lib/puppet/functions/find_file.rb
1148
1165
  - lib/puppet/functions/lest.rb
1149
1166
  - lib/puppet/functions/map.rb
1150
1167
  - lib/puppet/functions/defined.rb
1151
1168
  - lib/puppet/functions/match.rb
1169
+ - lib/puppet/functions/crit.rb
1152
1170
  - lib/puppet/functions/unwrap.rb
1171
+ - lib/puppet/functions/binary_file.rb
1172
+ - lib/puppet/functions/emerg.rb
1153
1173
  - lib/puppet/functions/then.rb
1174
+ - lib/puppet/functions/alert.rb
1154
1175
  - lib/puppet/functions/hiera_hash.rb
1176
+ - lib/puppet/functions/info.rb
1155
1177
  - lib/puppet/functions/filter.rb
1178
+ - lib/puppet/functions/contain.rb
1179
+ - lib/puppet/functions/break.rb
1156
1180
  - lib/puppet/functions/hiera_array.rb
1181
+ - lib/puppet/functions/strftime.rb
1157
1182
  - lib/puppet/functions/reduce.rb
1158
1183
  - lib/puppet/functions/reverse_each.rb
1184
+ - lib/puppet/functions/return.rb
1159
1185
  - lib/puppet/functions/scanf.rb
1160
1186
  - lib/puppet/functions/step.rb
1161
1187
  - lib/puppet/functions/each.rb
@@ -1164,12 +1190,17 @@ files:
1164
1190
  - lib/puppet/functions/hiera.rb
1165
1191
  - lib/puppet/functions/versioncmp.rb
1166
1192
  - lib/puppet/functions/hiera_include.rb
1193
+ - lib/puppet/functions/warning.rb
1194
+ - lib/puppet/functions/next.rb
1167
1195
  - lib/puppet/functions/slice.rb
1168
1196
  - lib/puppet/functions/lookup.rb
1169
1197
  - lib/puppet/functions/import.rb
1170
1198
  - lib/puppet/functions/new.rb
1171
1199
  - lib/puppet/functions/assert_type.rb
1200
+ - lib/puppet/functions/require.rb
1201
+ - lib/puppet/functions/err.rb
1172
1202
  - lib/puppet/functions/dig.rb
1203
+ - lib/puppet/functions/debug.rb
1173
1204
  - lib/puppet/functions/with.rb
1174
1205
  - lib/puppet/functions/inline_epp.rb
1175
1206
  - lib/puppet/external/pson/version.rb
@@ -1507,6 +1538,7 @@ files:
1507
1538
  - spec/lib/puppet_spec/settings.rb
1508
1539
  - spec/lib/puppet_spec/pops.rb
1509
1540
  - spec/lib/puppet_spec/modules.rb
1541
+ - spec/lib/puppet_spec/unindent.rb
1510
1542
  - spec/lib/puppet_spec/language.rb
1511
1543
  - spec/lib/puppet_spec/handler.rb
1512
1544
  - spec/lib/puppet_spec/network.rb
@@ -1991,7 +2023,6 @@ files:
1991
2023
  - spec/integration/parser/catalog_spec.rb
1992
2024
  - spec/integration/parser/compiler_spec.rb
1993
2025
  - spec/integration/parser/environment_spec.rb
1994
- - spec/integration/parser/functions/require_spec.rb
1995
2026
  - spec/integration/parser/scope_spec.rb
1996
2027
  - spec/integration/parser/undef_param_spec.rb
1997
2028
  - spec/integration/module_tool/tar/mini_spec.rb
@@ -2360,7 +2391,6 @@ files:
2360
2391
  - spec/unit/parser/functions/scanf_spec.rb
2361
2392
  - spec/unit/parser/functions/inline_template_spec.rb
2362
2393
  - spec/unit/parser/functions/regsubst_spec.rb
2363
- - spec/unit/parser/functions/require_spec.rb
2364
2394
  - spec/unit/parser/functions/sprintf_spec.rb
2365
2395
  - spec/unit/parser/functions/digest_spec.rb
2366
2396
  - spec/unit/parser/functions/fqdn_rand_spec.rb
@@ -2369,10 +2399,7 @@ files:
2369
2399
  - spec/unit/parser/functions/tag_spec.rb
2370
2400
  - spec/unit/parser/functions/versioncmp_spec.rb
2371
2401
  - spec/unit/parser/functions/template_spec.rb
2372
- - spec/unit/parser/functions/contain_spec.rb
2373
2402
  - spec/unit/parser/functions/file_spec.rb
2374
- - spec/unit/parser/functions/shared.rb
2375
- - spec/unit/parser/functions/include_spec.rb
2376
2403
  - spec/unit/parser/functions/hiera_array_spec.rb
2377
2404
  - spec/unit/parser/functions/fail_spec.rb
2378
2405
  - spec/unit/parser/functions/hiera_spec.rb
@@ -2421,10 +2448,12 @@ files:
2421
2448
  - spec/unit/pops/adaptable_spec.rb
2422
2449
  - spec/unit/pops/label_provider_spec.rb
2423
2450
  - spec/unit/pops/types/type_mismatch_describer_spec.rb
2451
+ - spec/unit/pops/types/p_timespan_type_spec.rb
2424
2452
  - spec/unit/pops/types/recursion_guard_spec.rb
2425
2453
  - spec/unit/pops/types/p_type_set_type_spec.rb
2426
2454
  - spec/unit/pops/types/enumeration_spec.rb
2427
2455
  - spec/unit/pops/types/class_loader_spec.rb
2456
+ - spec/unit/pops/types/p_binary_type_spec.rb
2428
2457
  - spec/unit/pops/types/p_object_type_spec.rb
2429
2458
  - spec/unit/pops/types/type_acceptor_spec.rb
2430
2459
  - spec/unit/pops/types/type_calculator_spec.rb
@@ -2437,10 +2466,12 @@ files:
2437
2466
  - spec/unit/pops/types/p_sem_ver_type_spec.rb
2438
2467
  - spec/unit/pops/types/type_asserter_spec.rb
2439
2468
  - spec/unit/pops/types/type_factory_spec.rb
2469
+ - spec/unit/pops/types/p_timestamp_type_spec.rb
2440
2470
  - spec/unit/pops/types/type_formatter_spec.rb
2441
2471
  - spec/unit/pops/factory_spec.rb
2442
2472
  - spec/unit/pops/validator/validator_spec.rb
2443
2473
  - spec/unit/pops/validation_spec.rb
2474
+ - spec/unit/pops/time/timespan_spec.rb
2444
2475
  - spec/unit/pops/evaluator/runtime3_converter_spec.rb
2445
2476
  - spec/unit/pops/evaluator/conditionals_spec.rb
2446
2477
  - spec/unit/pops/evaluator/variables_spec.rb
@@ -2457,12 +2488,15 @@ files:
2457
2488
  - spec/unit/pops/evaluator/arithmetic_ops_spec.rb
2458
2489
  - spec/unit/pops/puppet_stack_spec.rb
2459
2490
  - spec/unit/pops/containment_spec.rb
2491
+ - spec/unit/pops/lookup/context_spec.rb
2460
2492
  - spec/unit/pops/lookup/interpolation_spec.rb
2461
2493
  - spec/unit/pops/serialization/serialization_spec.rb
2462
2494
  - spec/unit/pops/serialization/packer_spec.rb
2463
2495
  - spec/unit/pops/serialization/rgen_spec.rb
2464
2496
  - spec/unit/pops/issues_spec.rb
2497
+ - spec/unit/pops/parser/parse_functions_spec.rb
2465
2498
  - spec/unit/pops/parser/parse_containers_spec.rb
2499
+ - spec/unit/pops/parser/parse_lambda_spec.rb
2466
2500
  - spec/unit/pops/parser/parse_basic_expressions_spec.rb
2467
2501
  - spec/unit/pops/parser/parse_heredoc_spec.rb
2468
2502
  - spec/unit/pops/parser/source_pos_adapter_spec.rb
@@ -2558,24 +2592,35 @@ files:
2558
2592
  - spec/unit/resource/type_spec.rb
2559
2593
  - spec/unit/functions/split_spec.rb
2560
2594
  - spec/unit/functions/unwrap_spec.rb
2595
+ - spec/unit/functions/logging_spec.rb
2596
+ - spec/unit/functions/binary_file_spec.rb
2561
2597
  - spec/unit/functions/scanf_spec.rb
2562
2598
  - spec/unit/functions/regsubst_spec.rb
2563
2599
  - spec/unit/functions/dig_spec.rb
2600
+ - spec/unit/functions/require_spec.rb
2564
2601
  - spec/unit/functions/reverse_each_spec.rb
2565
2602
  - spec/unit/functions/then_spec.rb
2566
2603
  - spec/unit/functions/with_spec.rb
2604
+ - spec/unit/functions/strftime_spec.rb
2567
2605
  - spec/unit/functions/step_spec.rb
2568
2606
  - spec/unit/functions/defined_spec.rb
2607
+ - spec/unit/functions/return_spec.rb
2569
2608
  - spec/unit/functions/lookup_spec.rb
2570
2609
  - spec/unit/functions/match_spec.rb
2571
2610
  - spec/unit/functions/slice_spec.rb
2611
+ - spec/unit/functions/next_spec.rb
2612
+ - spec/unit/functions/break_spec.rb
2572
2613
  - spec/unit/functions/reduce_spec.rb
2573
2614
  - spec/unit/functions/versioncmp_spec.rb
2574
2615
  - spec/unit/functions/filter_spec.rb
2575
2616
  - spec/unit/functions/assert_type_spec.rb
2617
+ - spec/unit/functions/contain_spec.rb
2576
2618
  - spec/unit/functions/inline_epp_spec.rb
2619
+ - spec/unit/functions/shared.rb
2577
2620
  - spec/unit/functions/lest_spec.rb
2621
+ - spec/unit/functions/find_file_spec.rb
2578
2622
  - spec/unit/functions/type_spec.rb
2623
+ - spec/unit/functions/include_spec.rb
2579
2624
  - spec/unit/functions/map_spec.rb
2580
2625
  - spec/unit/functions/each_spec.rb
2581
2626
  - spec/unit/functions/new_spec.rb
@@ -2752,6 +2797,7 @@ test_files:
2752
2797
  - spec/lib/puppet_spec/settings.rb
2753
2798
  - spec/lib/puppet_spec/pops.rb
2754
2799
  - spec/lib/puppet_spec/modules.rb
2800
+ - spec/lib/puppet_spec/unindent.rb
2755
2801
  - spec/lib/puppet_spec/language.rb
2756
2802
  - spec/lib/puppet_spec/handler.rb
2757
2803
  - spec/lib/puppet_spec/network.rb
@@ -3236,7 +3282,6 @@ test_files:
3236
3282
  - spec/integration/parser/catalog_spec.rb
3237
3283
  - spec/integration/parser/compiler_spec.rb
3238
3284
  - spec/integration/parser/environment_spec.rb
3239
- - spec/integration/parser/functions/require_spec.rb
3240
3285
  - spec/integration/parser/scope_spec.rb
3241
3286
  - spec/integration/parser/undef_param_spec.rb
3242
3287
  - spec/integration/module_tool/tar/mini_spec.rb
@@ -3605,7 +3650,6 @@ test_files:
3605
3650
  - spec/unit/parser/functions/scanf_spec.rb
3606
3651
  - spec/unit/parser/functions/inline_template_spec.rb
3607
3652
  - spec/unit/parser/functions/regsubst_spec.rb
3608
- - spec/unit/parser/functions/require_spec.rb
3609
3653
  - spec/unit/parser/functions/sprintf_spec.rb
3610
3654
  - spec/unit/parser/functions/digest_spec.rb
3611
3655
  - spec/unit/parser/functions/fqdn_rand_spec.rb
@@ -3614,10 +3658,7 @@ test_files:
3614
3658
  - spec/unit/parser/functions/tag_spec.rb
3615
3659
  - spec/unit/parser/functions/versioncmp_spec.rb
3616
3660
  - spec/unit/parser/functions/template_spec.rb
3617
- - spec/unit/parser/functions/contain_spec.rb
3618
3661
  - spec/unit/parser/functions/file_spec.rb
3619
- - spec/unit/parser/functions/shared.rb
3620
- - spec/unit/parser/functions/include_spec.rb
3621
3662
  - spec/unit/parser/functions/hiera_array_spec.rb
3622
3663
  - spec/unit/parser/functions/fail_spec.rb
3623
3664
  - spec/unit/parser/functions/hiera_spec.rb
@@ -3666,10 +3707,12 @@ test_files:
3666
3707
  - spec/unit/pops/adaptable_spec.rb
3667
3708
  - spec/unit/pops/label_provider_spec.rb
3668
3709
  - spec/unit/pops/types/type_mismatch_describer_spec.rb
3710
+ - spec/unit/pops/types/p_timespan_type_spec.rb
3669
3711
  - spec/unit/pops/types/recursion_guard_spec.rb
3670
3712
  - spec/unit/pops/types/p_type_set_type_spec.rb
3671
3713
  - spec/unit/pops/types/enumeration_spec.rb
3672
3714
  - spec/unit/pops/types/class_loader_spec.rb
3715
+ - spec/unit/pops/types/p_binary_type_spec.rb
3673
3716
  - spec/unit/pops/types/p_object_type_spec.rb
3674
3717
  - spec/unit/pops/types/type_acceptor_spec.rb
3675
3718
  - spec/unit/pops/types/type_calculator_spec.rb
@@ -3682,10 +3725,12 @@ test_files:
3682
3725
  - spec/unit/pops/types/p_sem_ver_type_spec.rb
3683
3726
  - spec/unit/pops/types/type_asserter_spec.rb
3684
3727
  - spec/unit/pops/types/type_factory_spec.rb
3728
+ - spec/unit/pops/types/p_timestamp_type_spec.rb
3685
3729
  - spec/unit/pops/types/type_formatter_spec.rb
3686
3730
  - spec/unit/pops/factory_spec.rb
3687
3731
  - spec/unit/pops/validator/validator_spec.rb
3688
3732
  - spec/unit/pops/validation_spec.rb
3733
+ - spec/unit/pops/time/timespan_spec.rb
3689
3734
  - spec/unit/pops/evaluator/runtime3_converter_spec.rb
3690
3735
  - spec/unit/pops/evaluator/conditionals_spec.rb
3691
3736
  - spec/unit/pops/evaluator/variables_spec.rb
@@ -3702,12 +3747,15 @@ test_files:
3702
3747
  - spec/unit/pops/evaluator/arithmetic_ops_spec.rb
3703
3748
  - spec/unit/pops/puppet_stack_spec.rb
3704
3749
  - spec/unit/pops/containment_spec.rb
3750
+ - spec/unit/pops/lookup/context_spec.rb
3705
3751
  - spec/unit/pops/lookup/interpolation_spec.rb
3706
3752
  - spec/unit/pops/serialization/serialization_spec.rb
3707
3753
  - spec/unit/pops/serialization/packer_spec.rb
3708
3754
  - spec/unit/pops/serialization/rgen_spec.rb
3709
3755
  - spec/unit/pops/issues_spec.rb
3756
+ - spec/unit/pops/parser/parse_functions_spec.rb
3710
3757
  - spec/unit/pops/parser/parse_containers_spec.rb
3758
+ - spec/unit/pops/parser/parse_lambda_spec.rb
3711
3759
  - spec/unit/pops/parser/parse_basic_expressions_spec.rb
3712
3760
  - spec/unit/pops/parser/parse_heredoc_spec.rb
3713
3761
  - spec/unit/pops/parser/source_pos_adapter_spec.rb
@@ -3803,24 +3851,35 @@ test_files:
3803
3851
  - spec/unit/resource/type_spec.rb
3804
3852
  - spec/unit/functions/split_spec.rb
3805
3853
  - spec/unit/functions/unwrap_spec.rb
3854
+ - spec/unit/functions/logging_spec.rb
3855
+ - spec/unit/functions/binary_file_spec.rb
3806
3856
  - spec/unit/functions/scanf_spec.rb
3807
3857
  - spec/unit/functions/regsubst_spec.rb
3808
3858
  - spec/unit/functions/dig_spec.rb
3859
+ - spec/unit/functions/require_spec.rb
3809
3860
  - spec/unit/functions/reverse_each_spec.rb
3810
3861
  - spec/unit/functions/then_spec.rb
3811
3862
  - spec/unit/functions/with_spec.rb
3863
+ - spec/unit/functions/strftime_spec.rb
3812
3864
  - spec/unit/functions/step_spec.rb
3813
3865
  - spec/unit/functions/defined_spec.rb
3866
+ - spec/unit/functions/return_spec.rb
3814
3867
  - spec/unit/functions/lookup_spec.rb
3815
3868
  - spec/unit/functions/match_spec.rb
3816
3869
  - spec/unit/functions/slice_spec.rb
3870
+ - spec/unit/functions/next_spec.rb
3871
+ - spec/unit/functions/break_spec.rb
3817
3872
  - spec/unit/functions/reduce_spec.rb
3818
3873
  - spec/unit/functions/versioncmp_spec.rb
3819
3874
  - spec/unit/functions/filter_spec.rb
3820
3875
  - spec/unit/functions/assert_type_spec.rb
3876
+ - spec/unit/functions/contain_spec.rb
3821
3877
  - spec/unit/functions/inline_epp_spec.rb
3878
+ - spec/unit/functions/shared.rb
3822
3879
  - spec/unit/functions/lest_spec.rb
3880
+ - spec/unit/functions/find_file_spec.rb
3823
3881
  - spec/unit/functions/type_spec.rb
3882
+ - spec/unit/functions/include_spec.rb
3824
3883
  - spec/unit/functions/map_spec.rb
3825
3884
  - spec/unit/functions/each_spec.rb
3826
3885
  - spec/unit/functions/new_spec.rb