puppet 5.4.0 → 5.5.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 (441) hide show
  1. data/Gemfile +3 -3
  2. data/MAINTAINERS +0 -19
  3. data/README.md +5 -5
  4. data/Rakefile +26 -0
  5. data/conf/auth.conf +5 -0
  6. data/ext/project_data.yaml +1 -0
  7. data/ext/regexp_nodes/regexp_nodes.rb +3 -4
  8. data/lib/puppet/application/apply.rb +1 -1
  9. data/lib/puppet/application/cert.rb +3 -1
  10. data/lib/puppet/application/device.rb +100 -13
  11. data/lib/puppet/application/facts.rb +5 -0
  12. data/lib/puppet/application/lookup.rb +12 -2
  13. data/lib/puppet/configurer.rb +37 -17
  14. data/lib/puppet/confine.rb +4 -1
  15. data/lib/puppet/datatypes.rb +1 -1
  16. data/lib/puppet/environments.rb +1 -1
  17. data/lib/puppet/error.rb +6 -3
  18. data/lib/puppet/external/dot.rb +0 -7
  19. data/lib/puppet/external/nagios/parser.rb +1 -1
  20. data/lib/puppet/face/config.rb +92 -10
  21. data/lib/puppet/face/epp.rb +31 -6
  22. data/lib/puppet/face/facts.rb +49 -0
  23. data/lib/puppet/face/help.rb +33 -35
  24. data/lib/puppet/face/help/action.erb +1 -1
  25. data/lib/puppet/face/help/face.erb +1 -1
  26. data/lib/puppet/face/man.rb +55 -12
  27. data/lib/puppet/face/parser.rb +30 -3
  28. data/lib/puppet/file_bucket/file.rb +0 -2
  29. data/lib/puppet/file_serving/base.rb +10 -10
  30. data/lib/puppet/forge.rb +3 -3
  31. data/lib/puppet/forge/errors.rb +3 -3
  32. data/lib/puppet/functions.rb +1 -3
  33. data/lib/puppet/functions/alert.rb +1 -1
  34. data/lib/puppet/functions/all.rb +6 -6
  35. data/lib/puppet/functions/annotate.rb +10 -10
  36. data/lib/puppet/functions/any.rb +6 -6
  37. data/lib/puppet/functions/assert_type.rb +4 -4
  38. data/lib/puppet/functions/binary_file.rb +14 -2
  39. data/lib/puppet/functions/break.rb +31 -2
  40. data/lib/puppet/functions/call.rb +4 -4
  41. data/lib/puppet/functions/contain.rb +19 -3
  42. data/lib/puppet/functions/convert_to.rb +6 -5
  43. data/lib/puppet/functions/crit.rb +1 -1
  44. data/lib/puppet/functions/debug.rb +1 -1
  45. data/lib/puppet/functions/defined.rb +11 -9
  46. data/lib/puppet/functions/dig.rb +26 -2
  47. data/lib/puppet/functions/each.rb +8 -8
  48. data/lib/puppet/functions/emerg.rb +1 -1
  49. data/lib/puppet/functions/empty.rb +79 -0
  50. data/lib/puppet/functions/err.rb +1 -1
  51. data/lib/puppet/functions/eyaml_lookup_key.rb +3 -1
  52. data/lib/puppet/functions/filter.rb +7 -7
  53. data/lib/puppet/functions/find_file.rb +15 -1
  54. data/lib/puppet/functions/flatten.rb +64 -0
  55. data/lib/puppet/functions/hiera.rb +6 -6
  56. data/lib/puppet/functions/hiera_array.rb +6 -6
  57. data/lib/puppet/functions/hiera_hash.rb +6 -6
  58. data/lib/puppet/functions/hiera_include.rb +8 -8
  59. data/lib/puppet/functions/include.rb +28 -2
  60. data/lib/puppet/functions/info.rb +1 -1
  61. data/lib/puppet/functions/inline_epp.rb +2 -2
  62. data/lib/puppet/functions/join.rb +56 -0
  63. data/lib/puppet/functions/json_data.rb +2 -2
  64. data/lib/puppet/functions/keys.rb +25 -0
  65. data/lib/puppet/functions/length.rb +44 -0
  66. data/lib/puppet/functions/lest.rb +39 -1
  67. data/lib/puppet/functions/lookup.rb +2 -1
  68. data/lib/puppet/functions/map.rb +10 -9
  69. data/lib/puppet/functions/match.rb +6 -6
  70. data/lib/puppet/functions/new.rb +995 -2
  71. data/lib/puppet/functions/next.rb +1 -1
  72. data/lib/puppet/functions/notice.rb +1 -1
  73. data/lib/puppet/functions/reduce.rb +6 -6
  74. data/lib/puppet/functions/regsubst.rb +9 -3
  75. data/lib/puppet/functions/require.rb +36 -2
  76. data/lib/puppet/functions/return.rb +1 -1
  77. data/lib/puppet/functions/reverse_each.rb +71 -2
  78. data/lib/puppet/functions/slice.rb +23 -9
  79. data/lib/puppet/functions/split.rb +12 -10
  80. data/lib/puppet/functions/step.rb +73 -1
  81. data/lib/puppet/functions/strftime.rb +176 -2
  82. data/lib/puppet/functions/then.rb +65 -2
  83. data/lib/puppet/functions/tree_each.rb +19 -19
  84. data/lib/puppet/functions/type.rb +42 -1
  85. data/lib/puppet/functions/unique.rb +13 -13
  86. data/lib/puppet/functions/unwrap.rb +8 -4
  87. data/lib/puppet/functions/values.rb +25 -0
  88. data/lib/puppet/functions/versioncmp.rb +1 -1
  89. data/lib/puppet/functions/warning.rb +1 -1
  90. data/lib/puppet/functions/with.rb +6 -4
  91. data/lib/puppet/functions/yaml_data.rb +3 -1
  92. data/lib/puppet/indirector/certificate_status/file.rb +1 -1
  93. data/lib/puppet/indirector/facts/facter.rb +1 -3
  94. data/lib/puppet/indirector/facts/rest.rb +21 -0
  95. data/lib/puppet/indirector/facts/yaml.rb +0 -4
  96. data/lib/puppet/indirector/rest.rb +2 -2
  97. data/lib/puppet/module.rb +3 -3
  98. data/lib/puppet/module/task.rb +2 -3
  99. data/lib/puppet/module_tool/applications/application.rb +4 -4
  100. data/lib/puppet/module_tool/applications/builder.rb +2 -2
  101. data/lib/puppet/module_tool/applications/checksummer.rb +3 -3
  102. data/lib/puppet/module_tool/applications/unpacker.rb +2 -2
  103. data/lib/puppet/module_tool/metadata.rb +3 -3
  104. data/lib/puppet/network/authconfig.rb +1 -1
  105. data/lib/puppet/network/format_support.rb +1 -1
  106. data/lib/puppet/network/formats.rb +5 -7
  107. data/lib/puppet/network/http/api/indirected_routes.rb +1 -0
  108. data/lib/puppet/network/http/api/master/v3/environment.rb +2 -2
  109. data/lib/puppet/network/http/api/master/v3/environments.rb +2 -2
  110. data/lib/puppet/network/http/error.rb +3 -3
  111. data/lib/puppet/network/resolver.rb +1 -2
  112. data/lib/puppet/parser/compiler.rb +12 -5
  113. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +1 -1
  114. data/lib/puppet/parser/functions/fqdn_rand.rb +15 -4
  115. data/lib/puppet/parser/functions/new.rb +31 -46
  116. data/lib/puppet/parser/parser_factory.rb +1 -1
  117. data/lib/puppet/parser/resource.rb +1 -1
  118. data/lib/puppet/parser/type_loader.rb +11 -11
  119. data/lib/puppet/pops/evaluator/closure.rb +1 -1
  120. data/lib/puppet/pops/evaluator/collector_transformer.rb +1 -1
  121. data/lib/puppet/pops/evaluator/epp_evaluator.rb +2 -2
  122. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +2 -2
  123. data/lib/puppet/pops/evaluator/runtime3_support.rb +5 -2
  124. data/lib/puppet/pops/functions/dispatch.rb +1 -1
  125. data/lib/puppet/pops/issue_reporter.rb +18 -1
  126. data/lib/puppet/pops/issues.rb +6 -3
  127. data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +1 -2
  128. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -2
  129. data/lib/puppet/pops/loader/task_instantiator.rb +5 -5
  130. data/lib/puppet/pops/loader/type_definition_instantiator.rb +4 -1
  131. data/lib/puppet/pops/loaders.rb +18 -7
  132. data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
  133. data/lib/puppet/pops/lookup/lookup_adapter.rb +55 -6
  134. data/lib/puppet/pops/model/factory.rb +6 -3
  135. data/lib/puppet/pops/model/model_tree_dumper.rb +4 -0
  136. data/lib/puppet/pops/model/pn_transformer.rb +400 -0
  137. data/lib/puppet/pops/parser/egrammar.ra +1 -1
  138. data/lib/puppet/pops/parser/eparser.rb +1 -1
  139. data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
  140. data/lib/puppet/pops/parser/lexer_support.rb +3 -2
  141. data/lib/puppet/pops/parser/locator.rb +0 -2
  142. data/lib/puppet/pops/parser/pn_parser.rb +316 -0
  143. data/lib/puppet/pops/pcore.rb +17 -17
  144. data/lib/puppet/pops/pn.rb +236 -0
  145. data/lib/puppet/pops/serialization/json.rb +7 -7
  146. data/lib/puppet/pops/types/class_loader.rb +6 -3
  147. data/lib/puppet/pops/types/implementation_registry.rb +28 -35
  148. data/lib/puppet/pops/types/p_object_type.rb +3 -3
  149. data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
  150. data/lib/puppet/pops/types/p_type_set_type.rb +24 -1
  151. data/lib/puppet/pops/types/ruby_generator.rb +3 -4
  152. data/lib/puppet/pops/types/type_calculator.rb +1 -1
  153. data/lib/puppet/pops/types/type_factory.rb +0 -4
  154. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  155. data/lib/puppet/pops/types/type_parser.rb +14 -7
  156. data/lib/puppet/pops/types/types.rb +1 -1
  157. data/lib/puppet/pops/utils.rb +2 -2
  158. data/lib/puppet/pops/validation/checker4_0.rb +6 -2
  159. data/lib/puppet/provider/group/groupadd.rb +3 -1
  160. data/lib/puppet/provider/group/windows_adsi.rb +4 -7
  161. data/lib/puppet/provider/nameservice.rb +3 -3
  162. data/lib/puppet/provider/package/pacman.rb +4 -4
  163. data/lib/puppet/provider/package/pip.rb +3 -3
  164. data/lib/puppet/provider/package/pkgdmg.rb +3 -3
  165. data/lib/puppet/provider/package/pkgutil.rb +2 -2
  166. data/lib/puppet/provider/package/portage.rb +9 -9
  167. data/lib/puppet/provider/package/zypper.rb +2 -2
  168. data/lib/puppet/provider/service/base.rb +1 -1
  169. data/lib/puppet/provider/service/smf.rb +3 -2
  170. data/lib/puppet/provider/service/systemd.rb +1 -1
  171. data/lib/puppet/provider/user/useradd.rb +6 -2
  172. data/lib/puppet/provider/user/windows_adsi.rb +1 -1
  173. data/lib/puppet/provider/yumrepo/inifile.rb +20 -9
  174. data/lib/puppet/provider/zfs/zfs.rb +1 -1
  175. data/lib/puppet/reference/configuration.rb +2 -0
  176. data/lib/puppet/reference/type.rb +11 -11
  177. data/lib/puppet/resource.rb +1 -1
  178. data/lib/puppet/resource/capability_finder.rb +5 -5
  179. data/lib/puppet/resource/catalog.rb +6 -3
  180. data/lib/puppet/resource/status.rb +9 -2
  181. data/lib/puppet/resource/type.rb +1 -1
  182. data/lib/puppet/settings.rb +31 -19
  183. data/lib/puppet/settings/base_setting.rb +5 -0
  184. data/lib/puppet/settings/config_file.rb +1 -1
  185. data/lib/puppet/settings/ttl_setting.rb +5 -0
  186. data/lib/puppet/ssl/certificate_factory.rb +2 -2
  187. data/lib/puppet/ssl/certificate_request.rb +0 -2
  188. data/lib/puppet/syntax_checkers/json.rb +1 -1
  189. data/lib/puppet/transaction/additional_resource_generator.rb +2 -2
  190. data/lib/puppet/transaction/event.rb +1 -1
  191. data/lib/puppet/transaction/report.rb +18 -12
  192. data/lib/puppet/type.rb +9 -13
  193. data/lib/puppet/type/augeas.rb +2 -2
  194. data/lib/puppet/type/cron.rb +11 -6
  195. data/lib/puppet/type/exec.rb +1 -1
  196. data/lib/puppet/type/file.rb +4 -5
  197. data/lib/puppet/type/host.rb +1 -1
  198. data/lib/puppet/type/k5login.rb +30 -54
  199. data/lib/puppet/type/package.rb +3 -3
  200. data/lib/puppet/type/schedule.rb +12 -12
  201. data/lib/puppet/type/scheduled_task.rb +2 -2
  202. data/lib/puppet/type/ssh_authorized_key.rb +5 -5
  203. data/lib/puppet/type/sshkey.rb +2 -2
  204. data/lib/puppet/type/tidy.rb +1 -1
  205. data/lib/puppet/type/user.rb +1 -1
  206. data/lib/puppet/type/yumrepo.rb +26 -5
  207. data/lib/puppet/util.rb +0 -4
  208. data/lib/puppet/util/backups.rb +1 -1
  209. data/lib/puppet/util/inifile.rb +3 -4
  210. data/lib/puppet/util/json.rb +68 -0
  211. data/lib/puppet/util/json_lockfile.rb +3 -3
  212. data/lib/puppet/util/log.rb +2 -5
  213. data/lib/puppet/util/log/destinations.rb +2 -2
  214. data/lib/puppet/util/network_device/cisco/facts.rb +1 -1
  215. data/lib/puppet/util/plist.rb +1 -1
  216. data/lib/puppet/util/reference.rb +1 -8
  217. data/lib/puppet/util/tagging.rb +1 -1
  218. data/lib/puppet/util/warnings.rb +0 -2
  219. data/lib/puppet/util/windows/adsi.rb +15 -18
  220. data/lib/puppet/util/windows/com.rb +2 -1
  221. data/lib/puppet/util/windows/file.rb +2 -2
  222. data/lib/puppet/util/windows/principal.rb +7 -6
  223. data/lib/puppet/util/windows/sid.rb +60 -7
  224. data/lib/puppet/util/windows/taskscheduler.rb +0 -9
  225. data/lib/puppet/version.rb +1 -1
  226. data/lib/puppet_pal.rb +53 -48
  227. data/locales/ja/puppet.po +1357 -912
  228. data/locales/puppet.pot +549 -466
  229. data/man/man5/puppet.conf.5 +103 -20
  230. data/man/man8/puppet-agent.8 +6 -2
  231. data/man/man8/puppet-apply.8 +2 -2
  232. data/man/man8/puppet-ca.8 +1 -1
  233. data/man/man8/puppet-catalog.8 +1 -1
  234. data/man/man8/puppet-cert.8 +1 -1
  235. data/man/man8/puppet-certificate.8 +1 -1
  236. data/man/man8/puppet-certificate_request.8 +1 -1
  237. data/man/man8/puppet-certificate_revocation_list.8 +1 -1
  238. data/man/man8/puppet-config.8 +35 -1
  239. data/man/man8/puppet-describe.8 +1 -1
  240. data/man/man8/puppet-device.8 +33 -11
  241. data/man/man8/puppet-doc.8 +1 -1
  242. data/man/man8/puppet-epp.8 +34 -12
  243. data/man/man8/puppet-facts.8 +50 -1
  244. data/man/man8/puppet-filebucket.8 +38 -11
  245. data/man/man8/puppet-generate.8 +1 -1
  246. data/man/man8/puppet-help.8 +1 -1
  247. data/man/man8/puppet-key.8 +1 -1
  248. data/man/man8/puppet-lookup.8 +1 -1
  249. data/man/man8/puppet-man.8 +10 -4
  250. data/man/man8/puppet-master.8 +1 -1
  251. data/man/man8/puppet-module.8 +15 -6
  252. data/man/man8/puppet-node.8 +1 -1
  253. data/man/man8/puppet-parser.8 +31 -8
  254. data/man/man8/puppet-plugin.8 +1 -1
  255. data/man/man8/puppet-report.8 +1 -1
  256. data/man/man8/puppet-resource.8 +1 -1
  257. data/man/man8/puppet-script.8 +67 -0
  258. data/man/man8/puppet-status.8 +1 -1
  259. data/man/man8/puppet.8 +3 -3
  260. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet_x/awesome2/echo_scheme_handler.rb +1 -1
  261. data/spec/integration/application/apply_spec.rb +15 -15
  262. data/spec/integration/application/lookup_spec.rb +21 -0
  263. data/spec/integration/faces/config_spec.rb +16 -4
  264. data/spec/integration/network/http/api/indirected_routes_spec.rb +5 -5
  265. data/spec/integration/parser/catalog_spec.rb +1 -1
  266. data/spec/integration/parser/collection_spec.rb +2 -2
  267. data/spec/integration/parser/compiler_spec.rb +17 -18
  268. data/spec/integration/parser/pcore_resource_spec.rb +2 -2
  269. data/spec/integration/parser/scope_spec.rb +2 -2
  270. data/spec/integration/ssl/certificate_authority_spec.rb +7 -7
  271. data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
  272. data/spec/integration/ssl/key_spec.rb +1 -1
  273. data/spec/integration/transaction/report_spec.rb +3 -3
  274. data/spec/integration/transaction_spec.rb +0 -1
  275. data/spec/integration/type/file_spec.rb +10 -11
  276. data/spec/integration/type_spec.rb +1 -2
  277. data/spec/integration/util/windows/adsi_spec.rb +86 -1
  278. data/spec/integration/util/windows/principal_spec.rb +11 -2
  279. data/spec/integration/util/windows/security_spec.rb +2 -2
  280. data/spec/lib/matchers/json.rb +4 -4
  281. data/spec/lib/puppet_spec/language.rb +34 -35
  282. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
  283. data/spec/shared_behaviours/file_server_terminus.rb +0 -2
  284. data/spec/shared_behaviours/things_that_declare_options.rb +2 -2
  285. data/spec/spec_helper.rb +1 -1
  286. data/spec/unit/application/cert_spec.rb +21 -9
  287. data/spec/unit/application/device_spec.rb +96 -2
  288. data/spec/unit/application/face_base_spec.rb +2 -2
  289. data/spec/unit/application/lookup_spec.rb +0 -1
  290. data/spec/unit/configurer_spec.rb +14 -0
  291. data/spec/unit/confine_spec.rb +16 -0
  292. data/spec/unit/data_providers/hiera_data_provider_spec.rb +4 -4
  293. data/spec/unit/datatypes_spec.rb +49 -0
  294. data/spec/unit/environments_spec.rb +7 -0
  295. data/spec/unit/face/config_spec.rb +116 -12
  296. data/spec/unit/face/epp_face_spec.rb +53 -2
  297. data/spec/unit/face/facts_spec.rb +53 -0
  298. data/spec/unit/face/help_spec.rb +62 -69
  299. data/spec/unit/face/man_spec.rb +26 -0
  300. data/spec/unit/face/module/list_spec.rb +0 -1
  301. data/spec/unit/face/parser_spec.rb +78 -0
  302. data/spec/unit/file_bucket/dipper_spec.rb +0 -4
  303. data/spec/unit/file_serving/content_spec.rb +0 -1
  304. data/spec/unit/file_serving/fileset_spec.rb +0 -1
  305. data/spec/unit/file_serving/metadata_spec.rb +0 -1
  306. data/spec/unit/file_serving/terminus_selector_spec.rb +0 -2
  307. data/spec/unit/forge_spec.rb +1 -2
  308. data/spec/unit/functions/assert_type_spec.rb +1 -1
  309. data/spec/unit/functions/empty_spec.rb +77 -0
  310. data/spec/unit/functions/epp_spec.rb +1 -1
  311. data/spec/unit/functions/flatten_spec.rb +31 -0
  312. data/spec/unit/functions/include_spec.rb +2 -2
  313. data/spec/unit/functions/inline_epp_spec.rb +1 -1
  314. data/spec/unit/functions/join_spec.rb +33 -0
  315. data/spec/unit/functions/keys_spec.rb +31 -0
  316. data/spec/unit/functions/length_spec.rb +50 -0
  317. data/spec/unit/functions/lookup_fixture_spec.rb +1 -1
  318. data/spec/unit/functions/lookup_spec.rb +52 -0
  319. data/spec/unit/functions/shared.rb +1 -1
  320. data/spec/unit/functions/values_spec.rb +30 -0
  321. data/spec/unit/functions/versioncmp_spec.rb +1 -1
  322. data/spec/unit/functions4_spec.rb +30 -32
  323. data/spec/unit/graph/title_hash_prioritizer_spec.rb +2 -1
  324. data/spec/unit/indirector/catalog/compiler_spec.rb +0 -15
  325. data/spec/unit/indirector/facts/rest_spec.rb +45 -0
  326. data/spec/unit/indirector/facts/yaml_spec.rb +6 -0
  327. data/spec/unit/indirector/file_bucket_file/file_spec.rb +2 -2
  328. data/spec/unit/indirector/indirection_spec.rb +1 -1
  329. data/spec/unit/indirector/node/ldap_spec.rb +2 -2
  330. data/spec/unit/indirector/request_spec.rb +0 -2
  331. data/spec/unit/indirector/rest_spec.rb +2 -2
  332. data/spec/unit/indirector_spec.rb +0 -1
  333. data/spec/unit/info_service_spec.rb +1 -1
  334. data/spec/unit/interface/action_manager_spec.rb +1 -1
  335. data/spec/unit/interface/action_spec.rb +1 -1
  336. data/spec/unit/module_spec.rb +0 -5
  337. data/spec/unit/module_tool/applications/builder_spec.rb +1 -1
  338. data/spec/unit/module_tool/applications/unpacker_spec.rb +4 -4
  339. data/spec/unit/network/formats_spec.rb +5 -13
  340. data/spec/unit/network/http/api/indirected_routes_spec.rb +6 -2
  341. data/spec/unit/network/http/connection_spec.rb +1 -1
  342. data/spec/unit/network/http/handler_spec.rb +3 -2
  343. data/spec/unit/node/environment_spec.rb +1 -1
  344. data/spec/unit/node_spec.rb +3 -3
  345. data/spec/unit/parser/compiler_spec.rb +9 -2
  346. data/spec/unit/parser/environment_compiler_spec.rb +8 -8
  347. data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
  348. data/spec/unit/parser/functions/fail_spec.rb +1 -1
  349. data/spec/unit/parser/functions/fqdn_rand_spec.rb +24 -0
  350. data/spec/unit/parser/functions/realize_spec.rb +1 -1
  351. data/spec/unit/parser/resource_spec.rb +0 -1
  352. data/spec/unit/parser/scope_spec.rb +3 -3
  353. data/spec/unit/parser/type_loader_spec.rb +1 -1
  354. data/spec/unit/pops/adaptable_spec.rb +0 -1
  355. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +0 -3
  356. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +0 -4
  357. data/spec/unit/pops/factory_rspec_helper.rb +1 -1
  358. data/spec/unit/pops/factory_spec.rb +5 -5
  359. data/spec/unit/pops/issues_spec.rb +23 -8
  360. data/spec/unit/pops/loaders/loaders_spec.rb +24 -2
  361. data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
  362. data/spec/unit/pops/lookup/interpolation_spec.rb +5 -0
  363. data/spec/unit/pops/lookup/lookup_spec.rb +56 -0
  364. data/spec/unit/pops/model/pn_transformer_spec.rb +53 -0
  365. data/spec/unit/pops/parser/lexer2_spec.rb +14 -5
  366. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +9 -9
  367. data/spec/unit/pops/parser/parse_calls_spec.rb +1 -1
  368. data/spec/unit/pops/parser/parse_functions_spec.rb +1 -1
  369. data/spec/unit/pops/parser/parse_heredoc_spec.rb +3 -3
  370. data/spec/unit/pops/parser/parse_lambda_spec.rb +1 -1
  371. data/spec/unit/pops/parser/parse_resource_spec.rb +35 -35
  372. data/spec/unit/pops/parser/pn_parser_spec.rb +101 -0
  373. data/spec/unit/pops/pn_spec.rb +148 -0
  374. data/spec/unit/pops/types/iterable_spec.rb +1 -1
  375. data/spec/unit/pops/types/p_object_type_spec.rb +5 -5
  376. data/spec/unit/pops/types/p_timespan_type_spec.rb +11 -4
  377. data/spec/unit/pops/types/p_timestamp_type_spec.rb +9 -2
  378. data/spec/unit/pops/types/p_type_set_type_spec.rb +106 -2
  379. data/spec/unit/pops/types/ruby_generator_spec.rb +3 -8
  380. data/spec/unit/pops/types/string_converter_spec.rb +3 -3
  381. data/spec/unit/pops/types/type_calculator_spec.rb +1 -1
  382. data/spec/unit/pops/validator/validator_spec.rb +3 -1
  383. data/spec/unit/property_spec.rb +2 -2
  384. data/spec/unit/provider/aixobject_spec.rb +1 -1
  385. data/spec/unit/provider/cron/crontab_spec.rb +3 -3
  386. data/spec/unit/provider/exec/posix_spec.rb +6 -6
  387. data/spec/unit/provider/group/groupadd_spec.rb +4 -4
  388. data/spec/unit/provider/group/windows_adsi_spec.rb +79 -22
  389. data/spec/unit/provider/ldap_spec.rb +0 -1
  390. data/spec/unit/provider/nameservice_spec.rb +5 -5
  391. data/spec/unit/provider/package/rpm_spec.rb +3 -4
  392. data/spec/unit/provider/package/yum_spec.rb +6 -2
  393. data/spec/unit/provider/parsedfile_spec.rb +1 -1
  394. data/spec/unit/provider/service/base_spec.rb +2 -4
  395. data/spec/unit/provider/service/init_spec.rb +2 -2
  396. data/spec/unit/provider/service/openrc_spec.rb +2 -2
  397. data/spec/unit/provider/service/redhat_spec.rb +2 -2
  398. data/spec/unit/provider/service/smf_spec.rb +2 -0
  399. data/spec/unit/provider/service/systemd_spec.rb +3 -3
  400. data/spec/unit/provider/service/upstart_spec.rb +7 -7
  401. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -4
  402. data/spec/unit/provider/sshkey/parsed_spec.rb +0 -2
  403. data/spec/unit/provider/user/useradd_spec.rb +15 -9
  404. data/spec/unit/provider/user/windows_adsi_spec.rb +4 -4
  405. data/spec/unit/provider/yumrepo/inifile_spec.rb +76 -0
  406. data/spec/unit/puppet_pal_2pec.rb +4 -5
  407. data/spec/unit/resource/catalog_spec.rb +8 -3
  408. data/spec/unit/resource/status_spec.rb +15 -4
  409. data/spec/unit/resource/type_spec.rb +2 -3
  410. data/spec/unit/settings_spec.rb +9 -4
  411. data/spec/unit/ssl/certificate_authority_spec.rb +1 -9
  412. data/spec/unit/ssl/certificate_request_spec.rb +1 -2
  413. data/spec/unit/transaction/report_spec.rb +41 -0
  414. data/spec/unit/transaction_spec.rb +1 -1
  415. data/spec/unit/type/exec_spec.rb +7 -9
  416. data/spec/unit/type/file/selinux_spec.rb +0 -1
  417. data/spec/unit/type/file_spec.rb +4 -3
  418. data/spec/unit/type/k5login_spec.rb +79 -10
  419. data/spec/unit/type/mount_spec.rb +1 -1
  420. data/spec/unit/type/nagios_spec.rb +6 -6
  421. data/spec/unit/type/user_spec.rb +1 -1
  422. data/spec/unit/type/yumrepo_spec.rb +18 -0
  423. data/spec/unit/type/zfs_spec.rb +1 -1
  424. data/spec/unit/type_spec.rb +14 -15
  425. data/spec/unit/util/docs_spec.rb +1 -1
  426. data/spec/unit/util/execution_spec.rb +0 -1
  427. data/spec/unit/util/inifile_spec.rb +35 -4
  428. data/spec/unit/util/log/destinations_spec.rb +2 -2
  429. data/spec/unit/util/log_spec.rb +6 -5
  430. data/spec/unit/util/network_device/cisco/device_spec.rb +2 -2
  431. data/spec/unit/util/plist_spec.rb +3 -3
  432. data/spec/unit/util/selinux_spec.rb +2 -2
  433. data/spec/unit/util/tagging_spec.rb +1 -7
  434. data/spec/unit/util/windows/adsi_spec.rb +31 -27
  435. data/spec/unit/util/windows/sid_spec.rb +86 -15
  436. data/spec/unit/util_spec.rb +2 -2
  437. data/spec/watchr.rb +0 -1
  438. data/tasks/benchmark.rake +37 -0
  439. data/tasks/manpages.rake +1 -1
  440. metadata +71 -11
  441. checksums.yaml +0 -7
@@ -227,7 +227,7 @@ describe 'when pcore described resources types are in use' do
227
227
  pending "assertion of parameter types not yet implemented"
228
228
  genface.types
229
229
  expect {
230
- catalog = compile_to_catalog(<<-MANIFEST)
230
+ compile_to_catalog(<<-MANIFEST)
231
231
  test2 { 'b':
232
232
  color => 'white is not a color'
233
233
  }
@@ -237,7 +237,7 @@ describe 'when pcore described resources types are in use' do
237
237
  end
238
238
 
239
239
  def find_resource_type(scope, name)
240
- t1 = Puppet::Pops::Evaluator::Runtime3ResourceSupport.find_resource_type(scope, name)
240
+ Puppet::Pops::Evaluator::Runtime3ResourceSupport.find_resource_type(scope, name)
241
241
  end
242
242
 
243
243
  def generate_and_in_a_compilers_context(&block)
@@ -20,7 +20,7 @@ describe "Two step scoping for variables" do
20
20
  describe "using unsupported operators" do
21
21
  it "issues an error for +=" do
22
22
  expect do
23
- catalog = compile_to_catalog(<<-MANIFEST)
23
+ compile_to_catalog(<<-MANIFEST)
24
24
  $var = ["top_msg"]
25
25
  node default {
26
26
  $var += ["override"]
@@ -31,7 +31,7 @@ describe "Two step scoping for variables" do
31
31
 
32
32
  it "issues an error for -=" do
33
33
  expect do
34
- catalog = compile_to_catalog(<<-MANIFEST)
34
+ compile_to_catalog(<<-MANIFEST)
35
35
  $var = ["top_msg"]
36
36
  node default {
37
37
  $var -= ["top_msg"]
@@ -36,7 +36,7 @@ describe Puppet::SSL::CertificateAuthority, :unless => Puppet.features.microsoft
36
36
 
37
37
  describe "when signing certificates" do
38
38
  it "should save the signed certificate" do
39
- host = certificate_request_for("luke.madstop.com")
39
+ certificate_request_for("luke.madstop.com")
40
40
 
41
41
  ca.sign("luke.madstop.com")
42
42
 
@@ -44,8 +44,8 @@ describe Puppet::SSL::CertificateAuthority, :unless => Puppet.features.microsoft
44
44
  end
45
45
 
46
46
  it "should be able to sign multiple certificates" do
47
- host = certificate_request_for("luke.madstop.com")
48
- other = certificate_request_for("other.madstop.com")
47
+ certificate_request_for("luke.madstop.com")
48
+ certificate_request_for("other.madstop.com")
49
49
 
50
50
  ca.sign("luke.madstop.com")
51
51
  ca.sign("other.madstop.com")
@@ -55,7 +55,7 @@ describe Puppet::SSL::CertificateAuthority, :unless => Puppet.features.microsoft
55
55
  end
56
56
 
57
57
  it "should save the signed certificate to the :signeddir" do
58
- host = certificate_request_for("luke.madstop.com")
58
+ certificate_request_for("luke.madstop.com")
59
59
 
60
60
  ca.sign("luke.madstop.com")
61
61
 
@@ -64,16 +64,16 @@ describe Puppet::SSL::CertificateAuthority, :unless => Puppet.features.microsoft
64
64
  end
65
65
 
66
66
  it "should save valid certificates" do
67
- host = certificate_request_for("luke.madstop.com")
67
+ certificate_request_for("luke.madstop.com")
68
68
 
69
69
  ca.sign("luke.madstop.com")
70
70
 
71
- unless ssl = Puppet::Util::which('openssl')
71
+ unless Puppet::Util::which('openssl')
72
72
  pending "No ssl available"
73
73
  else
74
74
  ca_cert = Puppet[:cacert]
75
75
  client_cert = File.join(Puppet[:signeddir], "luke.madstop.com.pem")
76
- output = %x{openssl verify -CAfile #{ca_cert} #{client_cert}}
76
+ %x{openssl verify -CAfile #{ca_cert} #{client_cert}}
77
77
  expect($CHILD_STATUS).to eq(0)
78
78
  end
79
79
  end
@@ -24,7 +24,7 @@ describe Puppet::SSL::CertificateRevocationList do
24
24
  }
25
25
 
26
26
  it "should be able to read in written out CRLs with no revoked certificates" do
27
- ca = Puppet::SSL::CertificateAuthority.new
27
+ Puppet::SSL::CertificateAuthority.new
28
28
 
29
29
  raise "CRL not created" unless Puppet::FileSystem.exist?(Puppet[:hostcrl])
30
30
 
@@ -84,7 +84,7 @@ describe Puppet::SSL::Key do
84
84
  # note incorrect password is an error
85
85
  expect do
86
86
  Puppet::FileSystem.open(pem_path, nil, 'r:ASCII') do |f|
87
- reloaded_key = OpenSSL::PKey::RSA.new(f.read, 'invalid_password')
87
+ OpenSSL::PKey::RSA.new(f.read, 'invalid_password')
88
88
  end
89
89
  end.to raise_error(OpenSSL::PKey::RSAError)
90
90
 
@@ -87,7 +87,7 @@ describe Puppet::Transaction::Report do
87
87
  end
88
88
 
89
89
  def get_cc_count(report)
90
- cc = report.metrics["resources"].values.each do |v|
90
+ report.metrics["resources"].values.each do |v|
91
91
  if v[0] == "corrective_change"
92
92
  return v[2]
93
93
  end
@@ -298,8 +298,8 @@ describe Puppet::Transaction::Report do
298
298
  :content => "mystuff1"),
299
299
  Puppet::Type.type(:file).new(:title => file,
300
300
  :content => "mystuff2")) do
301
- File.open(file, 'w') do |file|
302
- file.write "some content"
301
+ File.open(file, 'w') do |f|
302
+ f.write "some content"
303
303
  end
304
304
  end
305
305
 
@@ -146,7 +146,6 @@ describe Puppet::Transaction do
146
146
  # Verify that one component requiring another causes the contained
147
147
  # resources in the requiring component to get refreshed.
148
148
  it "should propagate events from a contained resource through its container to its dependent container's contained resources" do
149
- transaction = nil
150
149
  file = Puppet::Type.type(:file).new :path => tmpfile("event_propagation"), :ensure => :present
151
150
  execfile = File.join(tmpdir("exec_event"), "exectestingness2")
152
151
  exec = Puppet::Type.type(:exec).new :command => touch(execfile), :path => ENV['PATH']
@@ -292,13 +292,14 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
292
292
  Puppet::FileSystem.symlink(link_target, link)
293
293
  end
294
294
 
295
- it "should not set the executable bit on the link nor the target" do
295
+ it "should not set the executable bit on the link target" do
296
296
  catalog.add_resource described_class.new(:path => link, :ensure => :link, :mode => '0666', :target => link_target, :links => :manage)
297
297
 
298
298
  catalog.apply
299
299
 
300
- (Puppet::FileSystem.stat(link).mode & 07777) == 0666
301
- (Puppet::FileSystem.lstat(link_target).mode & 07777) == 0444
300
+ expected_target_permissions = Puppet::Util::Platform.windows? ? 0700 : 0444
301
+
302
+ expect(Puppet::FileSystem.stat(link_target).mode & 07777).to eq(expected_target_permissions)
302
303
  end
303
304
 
304
305
  it "should ignore dangling symlinks (#6856)" do
@@ -541,8 +542,6 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
541
542
  File.open(dest1, "w") { |f| f.puts "whatever" }
542
543
  Puppet::FileSystem.symlink(dest1, link)
543
544
 
544
- d = filebucket_digest.call(File.read(file[:path]))
545
-
546
545
  catalog.apply
547
546
 
548
547
  expect(Puppet::FileSystem.readlink(link)).to eq(dest2)
@@ -662,13 +661,13 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
662
661
  catalog.apply
663
662
 
664
663
  expect(@dirs).not_to be_empty
665
- @dirs.each do |path|
666
- expect(get_mode(path) & 007777).to eq(0755)
664
+ @dirs.each do |dir|
665
+ expect(get_mode(dir) & 007777).to eq(0755)
667
666
  end
668
667
 
669
668
  expect(@files).not_to be_empty
670
- @files.each do |path|
671
- expect(get_mode(path) & 007777).to eq(0644)
669
+ @files.each do |dir|
670
+ expect(get_mode(dir) & 007777).to eq(0644)
672
671
  end
673
672
  end
674
673
 
@@ -1030,8 +1029,8 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
1030
1029
  before do
1031
1030
  source = tmpdir("generating_in_catalog_source")
1032
1031
 
1033
- s1 = file_in_dir_with_contents(source, "one", "uno")
1034
- s2 = file_in_dir_with_contents(source, "two", "dos")
1032
+ file_in_dir_with_contents(source, "one", "uno")
1033
+ file_in_dir_with_contents(source, "two", "dos")
1035
1034
 
1036
1035
  @file = described_class.new(
1037
1036
  :name => path,
@@ -21,8 +21,7 @@ describe Puppet::Type do
21
21
 
22
22
  it "should not lose its provider parameter when it is reloaded" do
23
23
  type = Puppet::Type.newtype(:reload_test_type)
24
-
25
- provider = type.provide(:test_provider)
24
+ type.provide(:test_provider)
26
25
 
27
26
  # reload it
28
27
  type = Puppet::Type.newtype(:reload_test_type)
@@ -81,6 +81,91 @@ describe Puppet::Util::Windows::ADSI::Group,
81
81
  end
82
82
 
83
83
  describe '.members' do
84
+ it 'should return a list of members resolvable with Puppet::Util::Windows::ADSI::Group.name_sid_hash' do
85
+ temp_groupname = "g#{SecureRandom.uuid}"
86
+ temp_username = "u#{SecureRandom.uuid}"[0..12]
87
+
88
+ # select a virtual account that requires an authority to be able to resolve to SID
89
+ # the Dhcp service is chosen for no particular reason aside from it's a service available on all Windows versions
90
+ dhcp_virtualaccount = Puppet::Util::Windows::SID.name_to_principal('NT SERVICE\Dhcp')
91
+
92
+ # adding :SidTypeGroup as a group member will cause error in IAdsUser::Add
93
+ # adding :SidTypeDomain (such as S-1-5-80 / NT SERVICE or computer name) won't error
94
+ # but also won't be returned as a group member
95
+ # uncertain how to obtain :SidTypeComputer (perhaps AD? the local machine is :SidTypeDomain)
96
+ users = [
97
+ # Use sid_to_name to get localized names of SIDs - BUILTIN, SYSTEM, NT AUTHORITY, Everyone are all localized
98
+ # :SidTypeWellKnownGroup
99
+ # SYSTEM is prefixed with the NT Authority authority, resolveable with or without authority
100
+ { :sid => 'S-1-5-18', :name => Puppet::Util::Windows::SID.sid_to_name('S-1-5-18') },
101
+ # Everyone is not prefixed with an authority, resolveable with or without NT AUTHORITY authority
102
+ { :sid => 'S-1-1-0', :name => Puppet::Util::Windows::SID.sid_to_name('S-1-1-0') },
103
+ # Dhcp service account is prefixed with NT SERVICE authority, requires authority to resolve SID
104
+ # behavior is similar to IIS APPPOOL\DefaultAppPool
105
+ { :sid => dhcp_virtualaccount.sid, :name => dhcp_virtualaccount.domain_account },
106
+
107
+ # :SidTypeAlias with authority component
108
+ # Administrators group is prefixed with BUILTIN authority, can be resolved with or without authority
109
+ { :sid => 'S-1-5-32-544', :name => Puppet::Util::Windows::SID.sid_to_name('S-1-5-32-544') },
110
+ ]
111
+
112
+ begin
113
+ # :SidTypeUser as user on localhost, can be resolved with or without authority prefix
114
+ user = Puppet::Util::Windows::ADSI::User.create(temp_username)
115
+ user.commit()
116
+ users.push({ :sid => user.sid.sid, :name => Puppet::Util::Windows::ADSI.computer_name + '\\' + temp_username })
117
+
118
+ # create a test group and add above 5 members by SID
119
+ group = described_class.create(temp_groupname)
120
+ group.commit()
121
+ group.set_members(users.map { |u| u[:sid]} )
122
+
123
+ # most importantly make sure that all name are convertible to SIDs
124
+ expect { described_class.name_sid_hash(group.members) }.to_not raise_error
125
+
126
+ # also verify the names returned are as expected
127
+ expected_usernames = users.map { |u| u[:name] }
128
+ expect(group.members.map(&:domain_account)).to eq(expected_usernames)
129
+ ensure
130
+ described_class.delete(temp_groupname) if described_class.exists?(temp_groupname)
131
+ Puppet::Util::Windows::ADSI::User.delete(temp_username) if Puppet::Util::Windows::ADSI::User.exists?(temp_username)
132
+ end
133
+ end
134
+
135
+ it 'should return a list of Principal objects even with unresolvable SIDs' do
136
+ members = [
137
+ # NULL SID is not localized
138
+ stub('WIN32OLE', {
139
+ :objectSID => [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
140
+ :Name => 'NULL SID',
141
+ :ole_respond_to? => true,
142
+ }),
143
+ # unresolvable SID is a different story altogether
144
+ stub('WIN32OLE', {
145
+ # completely valid SID, but Name is just a stringified version
146
+ :objectSID => [1, 5, 0, 0, 0, 0, 0, 5, 21, 0, 0, 0, 5, 113, 65, 218, 15, 127, 9, 57, 219, 4, 84, 126, 88, 4, 0, 0],
147
+ :Name => 'S-1-5-21-3661721861-956923663-2119435483-1112',
148
+ :ole_respond_to? => true,
149
+ })
150
+ ]
151
+
152
+ admins_name = Puppet::Util::Windows::SID.sid_to_name('S-1-5-32-544')
153
+ admins = Puppet::Util::Windows::ADSI::Group.new(admins_name)
154
+
155
+ # touch the native_group member to have it lazily loaded, so COM objects can be stubbed
156
+ admins.native_group
157
+ admins.native_group.stubs(:Members).returns(members)
158
+
159
+ # well-known NULL SID
160
+ expect(admins.members[0].sid).to eq('S-1-0-0')
161
+ expect(admins.members[0].account_type).to eq(:SidTypeWellKnownGroup)
162
+
163
+ # unresolvable SID
164
+ expect(admins.members[1].sid).to eq('S-1-5-21-3661721861-956923663-2119435483-1112')
165
+ expect(admins.members[1].account).to eq('S-1-5-21-3661721861-956923663-2119435483-1112 (unresolvable)')
166
+ expect(admins.members[1].account_type).to eq(:SidTypeUnknown)
167
+ end
168
+
84
169
  it 'should return a list of members with UTF-8 names' do
85
170
  begin
86
171
  original_codepage = Encoding.default_external
@@ -88,7 +173,7 @@ describe Puppet::Util::Windows::ADSI::Group,
88
173
 
89
174
  # lookup by English name Administrators is not OK on localized Windows
90
175
  admins = Puppet::Util::Windows::ADSI::Group.new(administrators_principal.account)
91
- admins.members.each do |name|
176
+ admins.members.map(&:domain_account).each do |name|
92
177
  expect(name.encoding).to be(Encoding::UTF_8)
93
178
  end
94
179
  ensure
@@ -6,9 +6,9 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
6
6
 
7
7
  let (:current_user_sid) { Puppet::Util::Windows::ADSI::User.current_user_sid }
8
8
  let (:system_bytes) { [1, 1, 0, 0, 0, 0, 0, 5, 18, 0, 0, 0] }
9
- let (:null_sid_bytes) { bytes = [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] }
9
+ let (:null_sid_bytes) { [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] }
10
10
  let (:administrator_bytes) { [1, 2, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 32, 2, 0, 0] }
11
- let (:computer_sid) { Puppet::Util::Windows::SID.name_to_sid_object(Puppet::Util::Windows::ADSI.computer_name) }
11
+ let (:computer_sid) { Puppet::Util::Windows::SID.name_to_principal(Puppet::Util::Windows::ADSI.computer_name) }
12
12
  # BUILTIN is localized on German Windows, but not French
13
13
  # looking this up like this dilutes the values of the tests as we're comparing two mechanisms
14
14
  # for returning the same values, rather than to a known good
@@ -23,6 +23,7 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
23
23
  expect(principal.domain).to eq('')
24
24
  expect(principal.domain_account).to eq('NULL SID')
25
25
  expect(principal.account_type).to eq(:SidTypeWellKnownGroup)
26
+ expect(principal.to_s).to eq('NULL SID')
26
27
  end
27
28
 
28
29
  it "should create an instance from a well-known account prefixed with NT AUTHORITY" do
@@ -39,6 +40,7 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
39
40
  expect(principal.account).to eq('SYSTEM')
40
41
  expect(principal.domain).to eq('NT AUTHORITY')
41
42
  expect(principal.domain_account).to eq('NT AUTHORITY\\SYSTEM')
43
+ expect(principal.to_s).to eq('NT AUTHORITY\\SYSTEM')
42
44
  end
43
45
 
44
46
  # Windows API LookupAccountSid behaves differently if current user is SYSTEM
@@ -87,6 +89,7 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
87
89
  expect(principal.domain).to eq(domain)
88
90
  expect(principal.domain_account).to eq(qualified_name)
89
91
  expect(principal.account_type).to eq(:SidTypeAlias)
92
+ expect(principal.to_s).to eq(qualified_name)
90
93
  end
91
94
 
92
95
  it "should raise an error when trying to lookup an account that doesn't exist" do
@@ -106,6 +109,7 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
106
109
  expect(principal.account).to eq(builtin_localized)
107
110
  expect(principal.domain).to eq(builtin_localized)
108
111
  expect(principal.domain_account).to eq(builtin_localized)
112
+ expect(principal.to_s).to eq(builtin_localized)
109
113
  end
110
114
 
111
115
  it "should return a BUILTIN domain principal for BUILTIN account names" do
@@ -115,6 +119,7 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
115
119
  expect(principal.account).to eq(builtin_localized)
116
120
  expect(principal.domain).to eq(builtin_localized)
117
121
  expect(principal.domain_account).to eq(builtin_localized)
122
+ expect(principal.to_s).to eq(builtin_localized)
118
123
  end
119
124
 
120
125
  end
@@ -135,6 +140,7 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
135
140
  expect(principal.domain).to eq(computer_sid.domain)
136
141
  expect(principal.domain_account).to eq(guest_name)
137
142
  expect(principal.account_type).to eq(:SidTypeUser)
143
+ expect(principal.to_s).to eq(guest_name)
138
144
  end
139
145
 
140
146
  it "should create an instance from a well-known group SID" do
@@ -145,6 +151,7 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
145
151
  expect(principal.domain).to eq('')
146
152
  expect(principal.domain_account).to eq('NULL SID')
147
153
  expect(principal.account_type).to eq(:SidTypeWellKnownGroup)
154
+ expect(principal.to_s).to eq('NULL SID')
148
155
  end
149
156
 
150
157
  it "should create an instance from a well-known BUILTIN Alias SID" do
@@ -160,6 +167,7 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
160
167
  expect(principal.domain).to eq(domain)
161
168
  expect(principal.domain_account).to eq(qualified_name)
162
169
  expect(principal.account_type).to eq(:SidTypeAlias)
170
+ expect(principal.to_s).to eq(qualified_name)
163
171
  end
164
172
 
165
173
  it "should raise an error when trying to lookup nil" do
@@ -214,6 +222,7 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
214
222
  expect(principal.account).to eq(builtin_localized)
215
223
  expect(principal.domain).to eq(builtin_localized)
216
224
  expect(principal.domain_account).to eq(builtin_localized)
225
+ expect(principal.to_s).to eq(builtin_localized)
217
226
  end
218
227
  end
219
228
 
@@ -734,11 +734,11 @@ describe "Puppet::Util::Windows::Security", :if => Puppet.features.microsoft_win
734
734
  let (:explorer) { File.join(Dir::WINDOWS, "explorer.exe") }
735
735
 
736
736
  it "should get the owner" do
737
- expect(winsec.get_owner(explorer)).to match /^S-1-5-/
737
+ expect(winsec.get_owner(explorer)).to match(/^S-1-5-/)
738
738
  end
739
739
 
740
740
  it "should get the group" do
741
- expect(winsec.get_group(explorer)).to match /^S-1-5-/
741
+ expect(winsec.get_group(explorer)).to match(/^S-1-5-/)
742
742
  end
743
743
 
744
744
  it "should get the mode" do
@@ -9,7 +9,7 @@ module JSONMatchers
9
9
  end
10
10
 
11
11
  def json(instance)
12
- JSON.parse(instance.to_json)
12
+ Puppet::Util::Json.load(instance.to_json)
13
13
  end
14
14
 
15
15
  def attr_value(attrs, instance)
@@ -102,11 +102,11 @@ module JSONMatchers
102
102
  end
103
103
 
104
104
  if !Puppet.features.microsoft_windows?
105
- require 'json'
105
+ require 'puppet/util/json'
106
106
  require 'json-schema'
107
107
 
108
108
  class SchemaMatcher
109
- JSON_META_SCHEMA = JSON.parse(File.read('api/schemas/json-meta-schema.json'))
109
+ JSON_META_SCHEMA = Puppet::Util::Json.load(File.read('api/schemas/json-meta-schema.json'))
110
110
 
111
111
  def initialize(schema)
112
112
  @schema = schema
@@ -123,7 +123,7 @@ module JSONMatchers
123
123
  if Puppet.features.microsoft_windows?
124
124
  pending("Schema checks cannot be done on windows because of json-schema problems")
125
125
  else
126
- schema = JSON.parse(File.read(schema_file))
126
+ schema = Puppet::Util::Json.load(File.read(schema_file))
127
127
  SchemaMatcher.new(schema)
128
128
  end
129
129
  end
@@ -9,50 +9,49 @@ module PuppetSpec::Language
9
9
  expectations.each do |manifest, resources|
10
10
  it "evaluates #{manifest} to produce #{resources}" do
11
11
  begin
12
- case resources
13
- when String
14
- node = Puppet::Node.new('specification')
15
- Puppet[:code] = manifest
16
- compiler = Puppet::Parser::Compiler.new(node)
17
- evaluator = Puppet::Pops::Parser::EvaluatingParser.new()
12
+ case resources
13
+ when String
14
+ node = Puppet::Node.new('specification')
15
+ Puppet[:code] = manifest
16
+ compiler = Puppet::Parser::Compiler.new(node)
17
+ evaluator = Puppet::Pops::Parser::EvaluatingParser.new()
18
18
 
19
- # see lib/puppet/indirector/catalog/compiler.rb#filter
20
- catalog = compiler.compile.filter { |r| r.virtual? }
19
+ # see lib/puppet/indirector/catalog/compiler.rb#filter
20
+ catalog = compiler.compile.filter { |r| r.virtual? }
21
21
 
22
- compiler.send(:instance_variable_set, :@catalog, catalog)
22
+ compiler.send(:instance_variable_set, :@catalog, catalog)
23
23
 
24
- Puppet.override(:loaders => compiler.loaders) do
25
- expect(evaluator.evaluate_string(compiler.topscope, resources)).to eq(true)
26
- end
27
- when Array
28
- catalog = PuppetSpec::Compiler.compile_to_catalog(manifest)
24
+ Puppet.override(:loaders => compiler.loaders) do
25
+ expect(evaluator.evaluate_string(compiler.topscope, resources)).to eq(true)
26
+ end
27
+ when Array
28
+ catalog = PuppetSpec::Compiler.compile_to_catalog(manifest)
29
29
 
30
- if resources.empty?
31
- base_resources = ["Class[Settings]", "Class[main]", "Stage[main]"]
32
- expect(catalog.resources.collect(&:ref) - base_resources).to eq([])
33
- else
34
- resources.each do |reference|
35
- if reference.is_a?(Array)
36
- matcher = Matchers::Resource.have_resource(reference[0])
37
- reference[1].each do |name, value|
38
- matcher = matcher.with_parameter(name, value)
30
+ if resources.empty?
31
+ base_resources = ["Class[Settings]", "Class[main]", "Stage[main]"]
32
+ expect(catalog.resources.collect(&:ref) - base_resources).to eq([])
33
+ else
34
+ resources.each do |reference|
35
+ if reference.is_a?(Array)
36
+ matcher = Matchers::Resource.have_resource(reference[0])
37
+ reference[1].each do |name, value|
38
+ matcher = matcher.with_parameter(name, value)
39
+ end
40
+ else
41
+ matcher = Matchers::Resource.have_resource(reference)
39
42
  end
40
- else
41
- matcher = Matchers::Resource.have_resource(reference)
42
- end
43
43
 
44
- expect(catalog).to matcher
44
+ expect(catalog).to matcher
45
+ end
45
46
  end
47
+ else
48
+ raise "Unsupported creates specification: #{resources.inspect}"
46
49
  end
47
- else
48
- raise "Unsupported creates specification: #{resources.inspect}"
50
+ rescue Puppet::Error, RSpec::Expectations::ExpectationNotMetError => e
51
+ # provide the backtrace from the caller, or it is close to impossible to find some originators
52
+ e.set_backtrace(calledFrom)
53
+ raise
49
54
  end
50
- rescue Puppet::Error, RSpec::Expectations::ExpectationNotMetError => e
51
- # provide the backtrace from the caller, or it is close to impossible to find some originators
52
- e.set_backtrace(calledFrom)
53
- raise
54
- end
55
-
56
55
  end
57
56
  end
58
57
  end