puppet 4.5.3-x86-mingw32 → 4.6.1-x86-mingw32

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 (422) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +10 -1
  3. data/ext/debian/control +2 -4
  4. data/ext/project_data.yaml +4 -4
  5. data/install.rb +6 -2
  6. data/lib/puppet.rb +3 -1
  7. data/lib/puppet/agent/locker.rb +1 -1
  8. data/lib/puppet/application.rb +6 -4
  9. data/lib/puppet/application/agent.rb +2 -1
  10. data/lib/puppet/application/cert.rb +35 -2
  11. data/lib/puppet/application/device.rb +1 -1
  12. data/lib/puppet/application/generate.rb +5 -0
  13. data/lib/puppet/application/lookup.rb +3 -3
  14. data/lib/puppet/application_support.rb +1 -1
  15. data/lib/puppet/compilable_resource_type.rb +15 -0
  16. data/lib/puppet/configurer.rb +67 -10
  17. data/lib/puppet/configurer/plugin_handler.rb +2 -4
  18. data/lib/puppet/data_providers/hiera_config.rb +1 -1
  19. data/lib/puppet/defaults.rb +34 -7
  20. data/lib/puppet/environments.rb +4 -2
  21. data/lib/puppet/error.rb +1 -1
  22. data/lib/puppet/external/dot.rb +1 -1
  23. data/lib/puppet/face/ca.rb +4 -1
  24. data/lib/puppet/face/certificate.rb +7 -1
  25. data/lib/puppet/face/epp.rb +5 -5
  26. data/lib/puppet/face/generate.rb +64 -0
  27. data/lib/puppet/face/help.rb +19 -13
  28. data/lib/puppet/face/man.rb +1 -1
  29. data/lib/puppet/feature/external_facts.rb +1 -1
  30. data/lib/puppet/file_system.rb +16 -0
  31. data/lib/puppet/file_system/file_impl.rb +5 -0
  32. data/lib/puppet/file_system/memory_impl.rb +4 -0
  33. data/lib/puppet/file_system/path_pattern.rb +1 -0
  34. data/lib/puppet/file_system/windows.rb +19 -0
  35. data/lib/puppet/functions.rb +3 -5
  36. data/lib/puppet/functions/assert_type.rb +1 -1
  37. data/lib/puppet/functions/defined.rb +7 -5
  38. data/lib/puppet/functions/dig.rb +2 -18
  39. data/lib/puppet/functions/hiera.rb +1 -1
  40. data/lib/puppet/functions/lest.rb +1 -37
  41. data/lib/puppet/functions/new.rb +2 -473
  42. data/lib/puppet/functions/reverse_each.rb +2 -59
  43. data/lib/puppet/functions/scanf.rb +4 -4
  44. data/lib/puppet/functions/step.rb +1 -63
  45. data/lib/puppet/functions/then.rb +1 -61
  46. data/lib/puppet/functions/type.rb +1 -40
  47. data/lib/puppet/functions/unwrap.rb +40 -0
  48. data/lib/puppet/generate/models/type/property.rb +70 -0
  49. data/lib/puppet/generate/models/type/type.rb +57 -0
  50. data/lib/puppet/generate/templates/type/pcore.erb +41 -0
  51. data/lib/puppet/generate/type.rb +239 -0
  52. data/lib/puppet/graph/simple_graph.rb +2 -6
  53. data/lib/puppet/indirector/catalog/static_compiler.rb +5 -2
  54. data/lib/puppet/indirector/facts/facter.rb +1 -1
  55. data/lib/puppet/indirector/key/ca.rb +2 -2
  56. data/lib/puppet/indirector/request.rb +25 -4
  57. data/lib/puppet/indirector/rest.rb +73 -3
  58. data/lib/puppet/info_service/class_information_service.rb +1 -2
  59. data/lib/puppet/interface/documentation.rb +1 -1
  60. data/lib/puppet/loaders.rb +2 -0
  61. data/lib/puppet/metatype/manager.rb +6 -6
  62. data/lib/puppet/module.rb +8 -1
  63. data/lib/puppet/module_tool.rb +2 -2
  64. data/lib/puppet/module_tool/checksums.rb +1 -1
  65. data/lib/puppet/module_tool/errors/installer.rb +2 -2
  66. data/lib/puppet/module_tool/metadata.rb +1 -1
  67. data/lib/puppet/network/http/api/indirected_routes.rb +23 -32
  68. data/lib/puppet/network/http/rack/rest.rb +15 -1
  69. data/lib/puppet/network/rights.rb +1 -11
  70. data/lib/puppet/node/environment.rb +7 -3
  71. data/lib/puppet/node/facts.rb +1 -1
  72. data/lib/puppet/parameter.rb +23 -3
  73. data/lib/puppet/parameter/boolean.rb +1 -1
  74. data/lib/puppet/parameter/value.rb +1 -1
  75. data/lib/puppet/parser.rb +0 -1
  76. data/lib/puppet/parser/ast/pops_bridge.rb +1 -1
  77. data/lib/puppet/parser/ast/resource.rb +5 -0
  78. data/lib/puppet/parser/ast/resource_instance.rb +5 -1
  79. data/lib/puppet/parser/ast/resourceparam.rb +5 -0
  80. data/lib/puppet/parser/compiler.rb +14 -17
  81. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +1 -1
  82. data/lib/puppet/parser/environment_compiler.rb +10 -0
  83. data/lib/puppet/parser/functions/create_resources.rb +39 -24
  84. data/lib/puppet/parser/functions/defined.rb +2 -26
  85. data/lib/puppet/parser/functions/dig.rb +29 -0
  86. data/lib/puppet/parser/functions/lest.rb +49 -0
  87. data/lib/puppet/parser/functions/new.rb +530 -0
  88. data/lib/puppet/parser/functions/require.rb +1 -1
  89. data/lib/puppet/parser/functions/reverse_each.rb +83 -0
  90. data/lib/puppet/parser/functions/scanf.rb +4 -4
  91. data/lib/puppet/parser/functions/step.rb +84 -0
  92. data/lib/puppet/parser/functions/then.rb +73 -0
  93. data/lib/puppet/parser/functions/type.rb +53 -0
  94. data/lib/puppet/parser/resource.rb +16 -7
  95. data/lib/puppet/parser/scope.rb +36 -28
  96. data/lib/puppet/parser/type_loader.rb +1 -1
  97. data/lib/puppet/plugins/data_providers/data_provider.rb +1 -1
  98. data/lib/puppet/pops.rb +13 -0
  99. data/lib/puppet/pops/adapters.rb +49 -49
  100. data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +1 -1
  101. data/lib/puppet/pops/evaluator/access_operator.rb +39 -2
  102. data/lib/puppet/pops/evaluator/closure.rb +39 -13
  103. data/lib/puppet/pops/evaluator/collector_transformer.rb +10 -1
  104. data/lib/puppet/pops/evaluator/evaluator_impl.rb +16 -11
  105. data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
  106. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +0 -1
  107. data/lib/puppet/pops/evaluator/literal_evaluator.rb +0 -1
  108. data/lib/puppet/pops/evaluator/relationship_operator.rb +1 -2
  109. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +119 -0
  110. data/lib/puppet/pops/evaluator/runtime3_support.rb +19 -45
  111. data/lib/puppet/pops/functions/function.rb +5 -0
  112. data/lib/puppet/pops/issues.rb +1 -1
  113. data/lib/puppet/pops/label_provider.rb +2 -2
  114. data/lib/puppet/pops/loader/base_loader.rb +12 -15
  115. data/lib/puppet/pops/loader/loader.rb +15 -50
  116. data/lib/puppet/pops/loader/loader_paths.rb +28 -2
  117. data/lib/puppet/pops/loader/module_loaders.rb +16 -1
  118. data/lib/puppet/pops/loader/null_loader.rb +17 -1
  119. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +12 -11
  120. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +80 -0
  121. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +2 -3
  122. data/lib/puppet/pops/loader/runtime3_type_loader.rb +52 -13
  123. data/lib/puppet/pops/loader/static_loader.rb +55 -0
  124. data/lib/puppet/pops/loader/type_definition_instantiator.rb +30 -14
  125. data/lib/puppet/pops/loader/typed_name.rb +50 -0
  126. data/lib/puppet/pops/loaders.rb +64 -19
  127. data/lib/puppet/pops/merge_strategy.rb +7 -7
  128. data/lib/puppet/pops/migration/migration_checker.rb +4 -0
  129. data/lib/puppet/pops/model/model_label_provider.rb +2 -0
  130. data/lib/puppet/pops/parser/egrammar.ra +8 -5
  131. data/lib/puppet/pops/parser/eparser.rb +1550 -1498
  132. data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
  133. data/lib/puppet/pops/parser/interpolation_support.rb +7 -0
  134. data/lib/puppet/pops/parser/lexer2.rb +14 -1
  135. data/lib/puppet/pops/parser/locator.rb +30 -1
  136. data/lib/puppet/pops/parser/parser_support.rb +0 -3
  137. data/lib/puppet/pops/parser/slurp_support.rb +3 -3
  138. data/lib/puppet/pops/patterns.rb +9 -1
  139. data/lib/puppet/pops/pcore.rb +67 -11
  140. data/lib/puppet/pops/puppet_stack.rb +43 -0
  141. data/lib/puppet/pops/resource/param.rb +51 -0
  142. data/lib/puppet/pops/resource/resource_type_impl.rb +301 -0
  143. data/lib/puppet/pops/resource/resource_type_set.pcore +21 -0
  144. data/lib/puppet/pops/serialization.rb +17 -0
  145. data/lib/puppet/pops/serialization/abstract_reader.rb +149 -0
  146. data/lib/puppet/pops/serialization/abstract_writer.rb +179 -0
  147. data/lib/puppet/pops/serialization/deserializer.rb +60 -0
  148. data/lib/puppet/pops/serialization/extension.rb +126 -0
  149. data/lib/puppet/pops/serialization/instance_reader.rb +19 -0
  150. data/lib/puppet/pops/serialization/instance_writer.rb +14 -0
  151. data/lib/puppet/pops/serialization/json.rb +247 -0
  152. data/lib/puppet/pops/serialization/object.rb +63 -0
  153. data/lib/puppet/pops/serialization/rgen.rb +151 -0
  154. data/lib/puppet/pops/serialization/serializer.rb +91 -0
  155. data/lib/puppet/pops/serialization/time_factory.rb +66 -0
  156. data/lib/puppet/pops/types/annotatable.rb +36 -0
  157. data/lib/puppet/pops/types/implementation_registry.rb +3 -8
  158. data/lib/puppet/pops/types/p_meta_type.rb +83 -0
  159. data/lib/puppet/pops/types/p_object_type.rb +110 -117
  160. data/lib/puppet/pops/types/p_runtime_type.rb +13 -0
  161. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +23 -0
  162. data/lib/puppet/pops/types/p_sem_ver_type.rb +30 -2
  163. data/lib/puppet/pops/types/p_sensitive_type.rb +69 -0
  164. data/lib/puppet/pops/types/p_type_set_type.rb +361 -0
  165. data/lib/puppet/pops/types/puppet_object.rb +0 -5
  166. data/lib/puppet/pops/types/ruby_generator.rb +9 -2
  167. data/lib/puppet/pops/types/type_calculator.rb +6 -1
  168. data/lib/puppet/pops/types/type_factory.rb +14 -12
  169. data/lib/puppet/pops/types/type_formatter.rb +78 -33
  170. data/lib/puppet/pops/types/type_mismatch_describer.rb +0 -2
  171. data/lib/puppet/pops/types/type_parser.rb +27 -2
  172. data/lib/puppet/pops/types/type_set_reference.rb +59 -0
  173. data/lib/puppet/pops/types/types.rb +366 -13
  174. data/lib/puppet/pops/validation.rb +4 -4
  175. data/lib/puppet/pops/validation/checker4_0.rb +5 -2
  176. data/lib/puppet/pops/visitor.rb +2 -2
  177. data/lib/puppet/property.rb +64 -5
  178. data/lib/puppet/provider.rb +1 -1
  179. data/lib/puppet/provider/aixobject.rb +3 -3
  180. data/lib/puppet/provider/group/aix.rb +4 -4
  181. data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
  182. data/lib/puppet/provider/mailalias/aliases.rb +1 -1
  183. data/lib/puppet/provider/mcx/mcxcontent.rb +2 -2
  184. data/lib/puppet/provider/mount/parsed.rb +1 -1
  185. data/lib/puppet/provider/nameservice/directoryservice.rb +5 -5
  186. data/lib/puppet/provider/package/appdmg.rb +3 -3
  187. data/lib/puppet/provider/package/apple.rb +1 -1
  188. data/lib/puppet/provider/package/dnf.rb +5 -0
  189. data/lib/puppet/provider/package/nim.rb +1 -1
  190. data/lib/puppet/provider/package/pacman.rb +2 -2
  191. data/lib/puppet/provider/package/pip.rb +5 -3
  192. data/lib/puppet/provider/package/pip3.rb +1 -1
  193. data/lib/puppet/provider/package/pkg.rb +5 -5
  194. data/lib/puppet/provider/package/pkgdmg.rb +4 -4
  195. data/lib/puppet/provider/package/pkgin.rb +1 -1
  196. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  197. data/lib/puppet/provider/package/portage.rb +48 -8
  198. data/lib/puppet/provider/package/sun.rb +1 -1
  199. data/lib/puppet/provider/package/tdnf.rb +28 -0
  200. data/lib/puppet/provider/package/yum.rb +22 -4
  201. data/lib/puppet/provider/parsedfile.rb +2 -2
  202. data/lib/puppet/provider/service/base.rb +1 -1
  203. data/lib/puppet/provider/service/bsd.rb +1 -1
  204. data/lib/puppet/provider/service/daemontools.rb +2 -2
  205. data/lib/puppet/provider/service/debian.rb +3 -3
  206. data/lib/puppet/provider/service/init.rb +5 -3
  207. data/lib/puppet/provider/service/launchd.rb +16 -2
  208. data/lib/puppet/provider/service/runit.rb +1 -1
  209. data/lib/puppet/provider/service/smf.rb +8 -1
  210. data/lib/puppet/provider/service/systemd.rb +39 -6
  211. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
  212. data/lib/puppet/provider/user/aix.rb +3 -2
  213. data/lib/puppet/provider/user/directoryservice.rb +4 -3
  214. data/lib/puppet/provider/user/hpux.rb +1 -1
  215. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  216. data/lib/puppet/provider/user/windows_adsi.rb +3 -0
  217. data/lib/puppet/provider/zfs/zfs.rb +1 -1
  218. data/lib/puppet/reference/type.rb +1 -1
  219. data/lib/puppet/resource.rb +33 -7
  220. data/lib/puppet/resource/capability_finder.rb +74 -54
  221. data/lib/puppet/resource/status.rb +11 -2
  222. data/lib/puppet/settings.rb +17 -6
  223. data/lib/puppet/settings/environment_conf.rb +1 -1
  224. data/lib/puppet/settings/server_list_setting.rb +20 -0
  225. data/lib/puppet/ssl/certificate_authority.rb +32 -9
  226. data/lib/puppet/ssl/certificate_authority/interface.rb +164 -24
  227. data/lib/puppet/ssl/host.rb +3 -3
  228. data/lib/puppet/ssl/oids.rb +10 -0
  229. data/lib/puppet/ssl/validator/default_validator.rb +2 -2
  230. data/lib/puppet/test/test_helper.rb +2 -2
  231. data/lib/puppet/transaction.rb +12 -0
  232. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  233. data/lib/puppet/transaction/event.rb +29 -2
  234. data/lib/puppet/transaction/event_manager.rb +1 -1
  235. data/lib/puppet/transaction/persistence.rb +84 -0
  236. data/lib/puppet/transaction/report.rb +49 -2
  237. data/lib/puppet/transaction/resource_harness.rb +98 -18
  238. data/lib/puppet/type.rb +63 -21
  239. data/lib/puppet/type/augeas.rb +3 -3
  240. data/lib/puppet/type/cron.rb +1 -1
  241. data/lib/puppet/type/file.rb +39 -2
  242. data/lib/puppet/type/file/data_sync.rb +13 -5
  243. data/lib/puppet/type/host.rb +1 -1
  244. data/lib/puppet/type/mount.rb +2 -6
  245. data/lib/puppet/type/notify.rb +1 -1
  246. data/lib/puppet/type/package.rb +1 -1
  247. data/lib/puppet/type/resources.rb +1 -1
  248. data/lib/puppet/type/scheduled_task.rb +1 -1
  249. data/lib/puppet/type/ssh_authorized_key.rb +2 -2
  250. data/lib/puppet/type/tidy.rb +1 -1
  251. data/lib/puppet/type/yumrepo.rb +3 -3
  252. data/lib/puppet/type/zone.rb +1 -1
  253. data/lib/puppet/util.rb +2 -2
  254. data/lib/puppet/util/classgen.rb +1 -1
  255. data/lib/puppet/util/command_line.rb +6 -2
  256. data/lib/puppet/util/command_line/trollop.rb +1 -1
  257. data/lib/puppet/util/execution.rb +2 -2
  258. data/lib/puppet/util/http_proxy.rb +1 -1
  259. data/lib/puppet/util/inifile.rb +1 -1
  260. data/lib/puppet/util/instance_loader.rb +1 -1
  261. data/lib/puppet/util/logging.rb +1 -1
  262. data/lib/puppet/util/multi_match.rb +1 -1
  263. data/lib/puppet/util/plist.rb +15 -5
  264. data/lib/puppet/util/profiler.rb +1 -1
  265. data/lib/puppet/util/profiler/around_profiler.rb +1 -1
  266. data/lib/puppet/util/psych_support.rb +1 -1
  267. data/lib/puppet/util/rdoc.rb +2 -2
  268. data/lib/puppet/util/rubygems.rb +1 -1
  269. data/lib/puppet/util/watcher/periodic_watcher.rb +2 -2
  270. data/lib/puppet/util/windows/access_control_entry.rb +1 -1
  271. data/lib/puppet/util/windows/adsi.rb +30 -8
  272. data/lib/puppet/util/windows/api_types.rb +1 -1
  273. data/lib/puppet/util/windows/file.rb +59 -0
  274. data/lib/puppet/util/windows/process.rb +10 -0
  275. data/lib/puppet/util/windows/security.rb +1 -1
  276. data/lib/puppet/util/windows/user.rb +22 -4
  277. data/lib/puppet/util/yaml.rb +15 -3
  278. data/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +1 -1
  279. data/lib/puppet/vendor/rgen_patch.rb +1 -1
  280. data/lib/puppet/version.rb +2 -2
  281. data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +10 -0
  282. data/spec/integration/agent/logging_spec.rb +15 -14
  283. data/spec/integration/application/apply_spec.rb +1 -0
  284. data/spec/integration/directory_environments_spec.rb +16 -0
  285. data/spec/integration/environments/settings_spec.rb +32 -4
  286. data/spec/integration/faces/documentation_spec.rb +1 -1
  287. data/spec/integration/network/http/api/indirected_routes_spec.rb +33 -0
  288. data/spec/integration/node/environment_spec.rb +21 -0
  289. data/spec/integration/parser/collection_spec.rb +10 -0
  290. data/spec/integration/parser/compiler_spec.rb +76 -840
  291. data/spec/integration/parser/functions/require_spec.rb +3 -3
  292. data/spec/integration/parser/parameter_defaults_spec.rb +6 -2
  293. data/spec/integration/parser/pcore_resource_spec.rb +208 -0
  294. data/spec/integration/parser/resource_expressions_spec.rb +4 -2
  295. data/spec/integration/provider/yumrepo_spec.rb +4 -1
  296. data/spec/integration/transaction/report_spec.rb +666 -0
  297. data/spec/integration/type/file_spec.rb +11 -12
  298. data/spec/integration/util/windows/adsi_spec.rb +99 -0
  299. data/spec/integration/util/windows/principal_spec.rb +109 -60
  300. data/spec/integration/util/windows/process_spec.rb +4 -2
  301. data/spec/integration/util/windows/security_spec.rb +34 -8
  302. data/spec/integration/util/windows/user_spec.rb +26 -4
  303. data/spec/lib/puppet_spec/files.rb +2 -2
  304. data/spec/lib/puppet_spec/network.rb +12 -8
  305. data/spec/shared_examples/rhel_package_provider.rb +341 -0
  306. data/spec/spec_helper.rb +8 -2
  307. data/spec/unit/application/cert_spec.rb +20 -0
  308. data/spec/unit/configurer/plugin_handler_spec.rb +0 -26
  309. data/spec/unit/configurer_spec.rb +46 -0
  310. data/spec/unit/defaults_spec.rb +14 -0
  311. data/spec/unit/face/generate_spec.rb +230 -0
  312. data/spec/unit/face/help_spec.rb +53 -0
  313. data/spec/unit/face/parser_spec.rb +6 -0
  314. data/spec/unit/face/plugin_spec.rb +0 -4
  315. data/spec/unit/file_system_spec.rb +85 -0
  316. data/spec/unit/functions/lookup_spec.rb +4 -4
  317. data/spec/unit/functions/match_spec.rb +2 -2
  318. data/spec/unit/functions/regsubst_spec.rb +1 -1
  319. data/spec/unit/functions/split_spec.rb +1 -1
  320. data/spec/unit/functions/unwrap_spec.rb +29 -0
  321. data/spec/unit/functions/versioncmp_spec.rb +1 -1
  322. data/spec/unit/functions4_spec.rb +8 -8
  323. data/spec/unit/indirector/facts/facter_spec.rb +1 -9
  324. data/spec/unit/indirector/rest_spec.rb +95 -9
  325. data/spec/unit/module_spec.rb +43 -7
  326. data/spec/unit/module_tool/applications/installer_spec.rb +10 -1
  327. data/spec/unit/module_tool/applications/unpacker_spec.rb +2 -1
  328. data/spec/unit/module_tool/applications/upgrader_spec.rb +8 -0
  329. data/spec/unit/module_tool/tar/mini_spec.rb +3 -3
  330. data/spec/unit/network/http/api/indirected_routes_spec.rb +49 -58
  331. data/spec/unit/network/http/api/master/v3_spec.rb +7 -4
  332. data/spec/unit/network/rights_spec.rb +1 -1
  333. data/spec/unit/parameter_spec.rb +11 -0
  334. data/spec/unit/parser/compiler_spec.rb +19 -33
  335. data/spec/unit/{appmgmt_spec.rb → parser/environment_compiler_spec.rb} +12 -1
  336. data/spec/unit/parser/functions/create_resources_spec.rb +76 -4
  337. data/spec/unit/parser/functions/require_spec.rb +2 -2
  338. data/spec/unit/parser/resource_spec.rb +21 -11
  339. data/spec/unit/parser/scope_spec.rb +1 -5
  340. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1 -1
  341. data/spec/unit/pops/loaders/dependency_loader_spec.rb +1 -1
  342. data/spec/unit/pops/loaders/loader_paths_spec.rb +1 -1
  343. data/spec/unit/pops/loaders/loaders_spec.rb +63 -5
  344. data/spec/unit/pops/loaders/module_loaders_spec.rb +2 -2
  345. data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
  346. data/spec/unit/pops/parser/lexer2_spec.rb +27 -3
  347. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +8 -0
  348. data/spec/unit/pops/parser/parse_calls_spec.rb +9 -0
  349. data/spec/unit/pops/puppet_stack_spec.rb +79 -0
  350. data/spec/unit/pops/resource/resource_type_impl_spec.rb +37 -0
  351. data/spec/unit/pops/serialization/packer_spec.rb +153 -0
  352. data/spec/unit/pops/serialization/rgen_spec.rb +88 -0
  353. data/spec/unit/pops/serialization/serialization_spec.rb +228 -0
  354. data/spec/unit/pops/types/p_object_type_spec.rb +44 -2
  355. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +42 -0
  356. data/spec/unit/pops/types/p_sensitive_type_spec.rb +139 -0
  357. data/spec/unit/pops/types/p_type_set_type_spec.rb +424 -0
  358. data/spec/unit/pops/types/ruby_generator_spec.rb +497 -181
  359. data/spec/unit/pops/types/type_calculator_spec.rb +10 -4
  360. data/spec/unit/pops/types/type_formatter_spec.rb +1 -1
  361. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +2 -2
  362. data/spec/unit/pops/types/type_parser_spec.rb +1 -1
  363. data/spec/unit/pops/types/types_spec.rb +1 -1
  364. data/spec/unit/pops/validator/validator_spec.rb +18 -1
  365. data/spec/unit/property_spec.rb +48 -11
  366. data/spec/unit/provider/group/windows_adsi_spec.rb +11 -1
  367. data/spec/unit/provider/package/dnf_spec.rb +1 -99
  368. data/spec/unit/provider/package/pacman_spec.rb +4 -4
  369. data/spec/unit/provider/package/pip_spec.rb +14 -0
  370. data/spec/unit/provider/package/pkg_spec.rb +6 -0
  371. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -3
  372. data/spec/unit/provider/package/portage_spec.rb +64 -8
  373. data/spec/unit/provider/package/tdnf_spec.rb +18 -0
  374. data/spec/unit/provider/package/windows/package_spec.rb +4 -1
  375. data/spec/unit/provider/package/windows_spec.rb +8 -2
  376. data/spec/unit/provider/package/yum_spec.rb +6 -377
  377. data/spec/unit/provider/service/base_spec.rb +6 -0
  378. data/spec/unit/provider/service/debian_spec.rb +16 -7
  379. data/spec/unit/provider/service/gentoo_spec.rb +6 -0
  380. data/spec/unit/provider/service/init_spec.rb +7 -0
  381. data/spec/unit/provider/service/launchd_spec.rb +35 -4
  382. data/spec/unit/provider/service/openrc_spec.rb +6 -0
  383. data/spec/unit/provider/service/smf_spec.rb +31 -6
  384. data/spec/unit/provider/service/src_spec.rb +6 -0
  385. data/spec/unit/provider/service/systemd_spec.rb +70 -20
  386. data/spec/unit/provider/service/upstart_spec.rb +6 -0
  387. data/spec/unit/provider/user/aix_spec.rb +7 -0
  388. data/spec/unit/provider/user/directoryservice_spec.rb +30 -1
  389. data/spec/unit/provider/user/windows_adsi_spec.rb +19 -0
  390. data/spec/unit/resource/capability_finder_spec.rb +51 -3
  391. data/spec/unit/resource/catalog_spec.rb +5 -0
  392. data/spec/unit/resource/type_spec.rb +2 -2
  393. data/spec/unit/resource_spec.rb +19 -0
  394. data/spec/unit/settings_spec.rb +13 -0
  395. data/spec/unit/ssl/certificate_authority/interface_spec.rb +176 -10
  396. data/spec/unit/ssl/certificate_authority_spec.rb +63 -22
  397. data/spec/unit/ssl/host_spec.rb +1 -1
  398. data/spec/unit/ssl/oids_spec.rb +24 -21
  399. data/spec/unit/transaction/event_spec.rb +3 -1
  400. data/spec/unit/transaction/persistence_spec.rb +173 -0
  401. data/spec/unit/transaction/report_spec.rb +64 -1
  402. data/spec/unit/transaction/resource_harness_spec.rb +91 -0
  403. data/spec/unit/type/file/content_spec.rb +47 -15
  404. data/spec/unit/type/file_spec.rb +28 -0
  405. data/spec/unit/type/mount_spec.rb +5 -12
  406. data/spec/unit/type/yumrepo_spec.rb +1 -5
  407. data/spec/unit/type_spec.rb +32 -0
  408. data/spec/unit/util/command_line_spec.rb +11 -0
  409. data/spec/unit/util/execution_spec.rb +1 -1
  410. data/spec/unit/util/plist_spec.rb +16 -3
  411. data/spec/unit/util/storage_spec.rb +4 -1
  412. data/spec/unit/util/windows/adsi_spec.rb +23 -2
  413. data/spec/unit/util/windows/file_spec.rb +56 -1
  414. data/spec/unit/util/windows/sid_spec.rb +31 -7
  415. data/spec/unit/util/yaml_spec.rb +12 -0
  416. data/spec/unit/util_spec.rb +87 -20
  417. metadata +91 -48
  418. data/ext/puppetlisten/puppetlisten.rb +0 -77
  419. data/ext/puppetlisten/puppetrun.rb +0 -38
  420. data/lib/puppet/resource/type_collection_helper.rb +0 -7
  421. data/spec/unit/parser/functions/defined_spec.rb +0 -120
  422. data/spec/unit/resource/type_collection_helper_spec.rb +0 -24
@@ -99,10 +99,6 @@ describe Puppet::Parser::Compiler do
99
99
  expect { Puppet::Parser::Compiler.compile(@node) }.to raise_error(Puppet::Error, /Compilation has been halted because.*bad environment/)
100
100
  end
101
101
 
102
- it "should include the resource type collection helper" do
103
- expect(Puppet::Parser::Compiler.ancestors).to be_include(Puppet::Resource::TypeCollectionHelper)
104
- end
105
-
106
102
  it "should be able to return a class list containing all added classes" do
107
103
  @compiler.add_class ""
108
104
  @compiler.add_class "one"
@@ -117,13 +113,8 @@ describe Puppet::Parser::Compiler do
117
113
  expect(@compiler.node).to equal(@node)
118
114
  end
119
115
 
120
- it "should detect when ast nodes are absent" do
121
- expect(@compiler.ast_nodes?).to be_falsey
122
- end
123
-
124
- it "should detect when ast nodes are present" do
125
- @known_resource_types.expects(:nodes?).returns true
126
- expect(@compiler.ast_nodes?).to be_truthy
116
+ it "the set of ast_nodes should be empty" do
117
+ expect(@compiler.environment.known_resource_types.nodes?).to be_falsey
127
118
  end
128
119
 
129
120
  it "should copy the known_resource_types version to the catalog" do
@@ -608,14 +599,13 @@ describe Puppet::Parser::Compiler do
608
599
  end
609
600
 
610
601
  it "should raise an error if a class is not found" do
611
- @scope.expects(:find_hostclass).with("notfound").returns(nil)
602
+ @scope.environment.known_resource_types.expects(:find_hostclass).with("notfound").returns(nil)
612
603
  expect{ @compiler.evaluate_classes(%w{notfound}, @scope) }.to raise_error(Puppet::Error, /Could not find class/)
613
604
  end
614
605
 
615
606
  it "should raise an error when it can't find class" do
616
607
  klasses = {'foo'=>nil}
617
608
  @node.classes = klasses
618
- @compiler.topscope.expects(:find_hostclass).with('foo').returns(nil)
619
609
  expect{ @compiler.compile }.to raise_error(Puppet::Error, /Could not find class foo for testnode/)
620
610
  end
621
611
  end
@@ -624,9 +614,7 @@ describe Puppet::Parser::Compiler do
624
614
 
625
615
  before do
626
616
  Puppet.settings[:data_binding_terminus] = "none"
627
- @class = stub 'class', :name => "my::class"
628
- @scope.stubs(:find_hostclass).with("myclass").returns(@class)
629
-
617
+ @class = @known_resource_types.add Puppet::Resource::Type.new(:hostclass, "myclass")
630
618
  @resource = stub 'resource', :ref => "Class[myclass]", :type => "file"
631
619
  end
632
620
 
@@ -658,7 +646,7 @@ describe Puppet::Parser::Compiler do
658
646
  def define_class(name, parameters)
659
647
  @node.classes[name] = parameters
660
648
  klass = Puppet::Resource::Type.new(:hostclass, name, :arguments => {'p1' => @ast_obj, 'p2' => @ast_obj})
661
- @compiler.topscope.known_resource_types.add klass
649
+ @compiler.environment.known_resource_types.add klass
662
650
  end
663
651
 
664
652
  def compile
@@ -697,7 +685,7 @@ describe Puppet::Parser::Compiler do
697
685
  ast_obj = Puppet::Parser::AST::Leaf.new(:value => 'foo')
698
686
  klasses.each do |name|
699
687
  klass = Puppet::Resource::Type.new(:hostclass, name, :arguments => {'p1' => ast_obj, 'p2' => ast_obj})
700
- @compiler.topscope.known_resource_types.add klass
688
+ @compiler.environment.known_resource_types.add klass
701
689
  end
702
690
  catalog = @compiler.compile
703
691
 
@@ -710,7 +698,7 @@ describe Puppet::Parser::Compiler do
710
698
  klass = {'foo'=>{'a'=>'one'}}
711
699
  @node.classes = klass
712
700
  klass = Puppet::Resource::Type.new(:hostclass, 'foo', :arguments => {'a' => nil, 'b' => nil})
713
- @compiler.topscope.known_resource_types.add klass
701
+ @compiler.environment.known_resource_types.add klass
714
702
  expect { @compiler.compile }.to raise_error(Puppet::PreformattedError, /Class\[Foo\]: expects a value for parameter 'b'/)
715
703
  end
716
704
 
@@ -718,14 +706,14 @@ describe Puppet::Parser::Compiler do
718
706
  klass = {'foo'=>{'3'=>'one'}}
719
707
  @node.classes = klass
720
708
  klass = Puppet::Resource::Type.new(:hostclass, 'foo', :arguments => {})
721
- @compiler.topscope.known_resource_types.add klass
709
+ @compiler.environment.known_resource_types.add klass
722
710
  expect { @compiler.compile }.to raise_error(Puppet::PreformattedError, /Class\[Foo\]: has no parameter named '3'/)
723
711
  end
724
712
 
725
713
  it "should ensure class is in catalog without params" do
726
714
  @node.classes = klasses = {'foo'=>nil}
727
715
  foo = Puppet::Resource::Type.new(:hostclass, 'foo')
728
- @compiler.topscope.known_resource_types.add foo
716
+ @compiler.environment.known_resource_types.add foo
729
717
  catalog = @compiler.compile
730
718
  expect(catalog.classes).to include 'foo'
731
719
  end
@@ -766,7 +754,7 @@ describe Puppet::Parser::Compiler do
766
754
 
767
755
  it "should skip classes previously evaluated with different capitalization" do
768
756
  @compiler.catalog.stubs(:tag)
769
- @scope.stubs(:find_hostclass).with("MyClass").returns(@class)
757
+ @scope.environment.known_resource_types.stubs(:find_hostclass).with("MyClass").returns(@class)
770
758
  @scope.stubs(:class_scope).with(@class).returns(@scope)
771
759
  @compiler.expects(:add_resource).never
772
760
  @resource.expects(:evaluate).never
@@ -778,8 +766,7 @@ describe Puppet::Parser::Compiler do
778
766
  describe "when evaluating AST nodes with no AST nodes present" do
779
767
 
780
768
  it "should do nothing" do
781
- @compiler.expects(:ast_nodes?).returns(false)
782
- @compiler.known_resource_types.expects(:nodes).never
769
+ @compiler.environment.known_resource_types.stubs(:nodes).returns(false)
783
770
  Puppet::Parser::Resource.expects(:new).never
784
771
 
785
772
  @compiler.send(:evaluate_ast_node)
@@ -789,16 +776,16 @@ describe Puppet::Parser::Compiler do
789
776
  describe "when evaluating AST nodes with AST nodes present" do
790
777
 
791
778
  before do
792
- @compiler.known_resource_types.stubs(:nodes?).returns true
779
+ @compiler.environment.known_resource_types.stubs(:nodes?).returns true
793
780
 
794
781
  # Set some names for our test
795
782
  @node.stubs(:names).returns(%w{a b c})
796
- @compiler.known_resource_types.stubs(:node).with("a").returns(nil)
797
- @compiler.known_resource_types.stubs(:node).with("b").returns(nil)
798
- @compiler.known_resource_types.stubs(:node).with("c").returns(nil)
783
+ @compiler.environment.known_resource_types.stubs(:node).with("a").returns(nil)
784
+ @compiler.environment.known_resource_types.stubs(:node).with("b").returns(nil)
785
+ @compiler.environment.known_resource_types.stubs(:node).with("c").returns(nil)
799
786
 
800
787
  # It should check this last, of course.
801
- @compiler.known_resource_types.stubs(:node).with("default").returns(nil)
788
+ @compiler.environment.known_resource_types.stubs(:node).with("default").returns(nil)
802
789
  end
803
790
 
804
791
  it "should fail if the named node cannot be found" do
@@ -807,7 +794,7 @@ describe Puppet::Parser::Compiler do
807
794
 
808
795
  it "should evaluate the first node class matching the node name" do
809
796
  node_class = stub 'node', :name => "c", :evaluate_code => nil
810
- @compiler.known_resource_types.stubs(:node).with("c").returns(node_class)
797
+ @compiler.environment.known_resource_types.stubs(:node).with("c").returns(node_class)
811
798
 
812
799
  node_resource = stub 'node resource', :ref => "Node[c]", :evaluate => nil, :type => "node"
813
800
  node_class.expects(:ensure_in_catalog).returns(node_resource)
@@ -817,7 +804,7 @@ describe Puppet::Parser::Compiler do
817
804
 
818
805
  it "should match the default node if no matching node can be found" do
819
806
  node_class = stub 'node', :name => "default", :evaluate_code => nil
820
- @compiler.known_resource_types.stubs(:node).with("default").returns(node_class)
807
+ @compiler.environment.known_resource_types.stubs(:node).with("default").returns(node_class)
821
808
 
822
809
  node_resource = stub 'node resource', :ref => "Node[default]", :evaluate => nil, :type => "node"
823
810
  node_class.expects(:ensure_in_catalog).returns(node_resource)
@@ -827,7 +814,7 @@ describe Puppet::Parser::Compiler do
827
814
 
828
815
  it "should evaluate the node resource immediately rather than using lazy evaluation" do
829
816
  node_class = stub 'node', :name => "c"
830
- @compiler.known_resource_types.stubs(:node).with("c").returns(node_class)
817
+ @compiler.environment.known_resource_types.stubs(:node).with("c").returns(node_class)
831
818
 
832
819
  node_resource = stub 'node resource', :ref => "Node[c]", :type => "node"
833
820
  node_class.expects(:ensure_in_catalog).returns(node_resource)
@@ -969,7 +956,6 @@ describe Puppet::Parser::Compiler do
969
956
  end
970
957
  end
971
958
 
972
-
973
959
  describe "when managing resource overrides" do
974
960
 
975
961
  before do
@@ -480,7 +480,6 @@ EOS
480
480
  end
481
481
  end
482
482
 
483
-
484
483
  describe "in the environment catalog" do
485
484
  it "does not fail if there is no site expression" do
486
485
  expect {
@@ -490,6 +489,18 @@ EOS
490
489
  }.to_not raise_error()
491
490
  end
492
491
 
492
+ it "ignores usage of hiera_include() at topscope for classification" do
493
+ Puppet.expects(:debug).with(regexp_matches /Ignoring hiera_include/)
494
+
495
+ expect {
496
+ catalog = compile_to_env_catalog(<<-EOC).to_resource
497
+ hiera_include('classes')
498
+ site { }
499
+ EOC
500
+ }.to_not raise_error()
501
+
502
+ end
503
+
493
504
  it "includes components and capability resources" do
494
505
  catalog = compile_to_env_catalog(MANIFEST).to_resource
495
506
  apps = catalog.resources.select do |res|
@@ -1,9 +1,11 @@
1
1
  require 'puppet'
2
2
  require 'spec_helper'
3
3
  require 'puppet_spec/compiler'
4
+ require 'puppet_spec/files'
4
5
 
5
6
  describe 'function for dynamically creating resources' do
6
7
  include PuppetSpec::Compiler
8
+ include PuppetSpec::Files
7
9
 
8
10
  before :each do
9
11
  node = Puppet::Node.new("floppy", :environment => 'production')
@@ -31,6 +33,35 @@ describe 'function for dynamically creating resources' do
31
33
  expect { @scope.function_create_resources(['foo',{},'foo']) }.to raise_error(ArgumentError, 'create_resources(): third argument, if provided, must be a hash')
32
34
  end
33
35
 
36
+ context 'when being called from a manifest in a file' do
37
+ let(:dir) do
38
+ dir_containing('manifests', {
39
+ 'site.pp' => <<-EOF
40
+ # comment here to make the call be on a particular
41
+ # source line (3)
42
+ create_resources('notify', {
43
+ 'a' => { 'message'=>'message a'},
44
+ 'b' => { 'message'=>'message b'},
45
+ }
46
+ )
47
+ EOF
48
+ }
49
+ )
50
+ end
51
+
52
+ it 'file and line information where call originates is written to all resources created in one call' do
53
+ node = Puppet::Node.new('test')
54
+ file = File.join(dir, 'site.pp')
55
+ Puppet[:manifest] = file
56
+ catalog = Puppet::Parser::Compiler.compile(node).filter { |r| r.virtual? }
57
+
58
+ expect(catalog.resource(:notify, 'a').file).to eq(file)
59
+ expect(catalog.resource(:notify, 'a').line).to eq(3)
60
+ expect(catalog.resource(:notify, 'b').file).to eq(file)
61
+ expect(catalog.resource(:notify, 'b').line).to eq(3)
62
+ end
63
+
64
+ end
34
65
  describe 'when creating native types' do
35
66
  it 'empty hash should not cause resources to be added' do
36
67
  noop_catalog = compile_to_catalog("create_resources('file', {})")
@@ -43,6 +74,16 @@ describe 'function for dynamically creating resources' do
43
74
  expect(catalog.resource(:file, "/etc/foo")['ensure']).to eq('present')
44
75
  end
45
76
 
77
+ it 'should pick up and pass on file and line information' do
78
+ # mock location as the compile_to_catalog sets Puppet[:code} which does not
79
+ # have file/line support.
80
+ Puppet::Pops::PuppetStack.expects(:stacktrace).once.returns([['test.pp', 1234]])
81
+ catalog = compile_to_catalog("create_resources('file', {'/etc/foo'=>{'ensure'=>'present'}})")
82
+ r = catalog.resource(:file, "/etc/foo")
83
+ expect(r.file).to eq('test.pp')
84
+ expect(r.line).to eq(1234)
85
+ end
86
+
46
87
  it 'should be able to add virtual resources' do
47
88
  catalog = compile_to_catalog("create_resources('@file', {'/etc/foo'=>{'ensure'=>'present'}})\nrealize(File['/etc/foo'])")
48
89
  expect(catalog.resource(:file, "/etc/foo")['ensure']).to eq('present')
@@ -54,16 +95,16 @@ describe 'function for dynamically creating resources' do
54
95
  expect(catalog.resource(:file, "/etc/foo").exported).to eq(true)
55
96
  end
56
97
 
57
- it 'should accept multiple types' do
98
+ it 'should accept multiple resources' do
58
99
  catalog = compile_to_catalog("create_resources('notify', {'foo'=>{'message'=>'one'}, 'bar'=>{'message'=>'two'}})")
59
100
  expect(catalog.resource(:notify, "foo")['message']).to eq('one')
60
101
  expect(catalog.resource(:notify, "bar")['message']).to eq('two')
61
102
  end
62
103
 
63
- it 'should fail to add non-existing type' do
104
+ it 'should fail to add non-existing resource type' do
64
105
  expect do
65
106
  @scope.function_create_resources(['create-resource-foo', { 'foo' => {} }])
66
- end.to raise_error(/Invalid resource type create-resource-foo/)
107
+ end.to raise_error(/Unknown resource type: 'create-resource-foo'/)
67
108
  end
68
109
 
69
110
  it 'should be able to add edges' do
@@ -84,6 +125,15 @@ describe 'function for dynamically creating resources' do
84
125
  expect(rg.path_between(foo,nil)).to_not be
85
126
  end
86
127
 
128
+ it 'should filter out undefined edges in an array as they cause errors' do
129
+ rg = compile_to_relationship_graph("notify { test: }\n create_resources('notify', {'foo'=>{'require'=>[undef]}})")
130
+ test = rg.vertices.find { |v| v.title == 'test' }
131
+ foo = rg.vertices.find { |v| v.title == 'foo' }
132
+ expect(test).to be
133
+ expect(foo).to be
134
+ expect(rg.path_between(foo,nil)).to_not be
135
+ end
136
+
87
137
  it 'should account for default values' do
88
138
  catalog = compile_to_catalog("create_resources('file', {'/etc/foo'=>{'ensure'=>'present'}, '/etc/baz'=>{'group'=>'food'}}, {'group' => 'bar'})")
89
139
  expect(catalog.resource(:file, "/etc/foo")['group']).to eq('bar')
@@ -112,7 +162,29 @@ describe 'function for dynamically creating resources' do
112
162
 
113
163
  create_resources('foocreateresource', {'blah'=>{}})
114
164
  MANIFEST
115
- }.to raise_error(Puppet::Error, /Foocreateresource\[blah\]: expects a value for parameter 'one' on node test/)
165
+ }.to raise_error(Puppet::Error, /Foocreateresource\[blah\]: expects a value for parameter 'one'/)
166
+ end
167
+
168
+ it 'should accept undef as explicit value when parameter has no default value' do
169
+ catalog = compile_to_catalog(<<-MANIFEST)
170
+ define foocreateresource($one) {
171
+ notify { $name: message => "aaa${one}bbb" }
172
+ }
173
+
174
+ create_resources('foocreateresource', {'blah'=>{ one => undef}})
175
+ MANIFEST
176
+ expect(catalog.resource(:notify, "blah")['message']).to eq('aaabbb')
177
+ end
178
+
179
+ it 'should use default value expression if given value is undef' do
180
+ catalog = compile_to_catalog(<<-MANIFEST)
181
+ define foocreateresource($one = 'xx') {
182
+ notify { $name: message => "aaa${one}bbb" }
183
+ }
184
+
185
+ create_resources('foocreateresource', {'blah'=>{ one => undef}})
186
+ MANIFEST
187
+ expect(catalog.resource(:notify, "blah")['message']).to eq('aaaxxbbb')
116
188
  end
117
189
 
118
190
  it 'should be able to add multiple defines' do
@@ -18,7 +18,7 @@ describe "the require function" do
18
18
 
19
19
  @scope.stubs(:findresource)
20
20
  @klass = stub 'class', :name => "myclass"
21
- @scope.stubs(:find_hostclass).returns(@klass)
21
+ @scope.environment.known_resource_types.stubs(:find_hostclass).returns(@klass)
22
22
 
23
23
  @resource = Puppet::Parser::Resource.new(:file, "/my/file", :scope => @scope, :source => "source")
24
24
  @scope.stubs(:resource).returns @resource
@@ -45,7 +45,7 @@ describe "the require function" do
45
45
  it "should lookup the absolute class path" do
46
46
  @scope.compiler.stubs(:evaluate_classes)
47
47
 
48
- @scope.expects(:find_hostclass).with("::myclass").returns(@klass)
48
+ @scope.environment.known_resource_types.expects(:find_hostclass).with("::myclass").returns(@klass)
49
49
  @klass.expects(:name).returns("myclass")
50
50
 
51
51
  @scope.function_require(["myclass"])
@@ -54,10 +54,6 @@ describe Puppet::Parser::Resource do
54
54
  expect(Puppet::Parser::Resource.new("file", "whatever", :scope => scope).environment).to eq("foo")
55
55
  end
56
56
 
57
- it "should use the resource type collection helper module" do
58
- expect(Puppet::Parser::Resource.ancestors).to be_include(Puppet::Resource::TypeCollectionHelper)
59
- end
60
-
61
57
  it "should use the scope's environment as its environment" do
62
58
  @scope.expects(:environment).returns("myenv").at_least_once
63
59
  expect(Puppet::Parser::Resource.new("file", "whatever", :scope => @scope).environment).to eq("myenv")
@@ -157,7 +153,7 @@ describe Puppet::Parser::Resource do
157
153
  end
158
154
 
159
155
  it "should add an edge to any specified stage for class resources" do
160
- @compiler.known_resource_types.add Puppet::Resource::Type.new(:hostclass, "foo", {})
156
+ @compiler.environment.known_resource_types.add Puppet::Resource::Type.new(:hostclass, "foo", {})
161
157
 
162
158
  other_stage = Puppet::Parser::Resource.new(:stage, "other", :scope => @scope, :catalog => @catalog)
163
159
  @compiler.add_resource(@scope, other_stage)
@@ -171,7 +167,7 @@ describe Puppet::Parser::Resource do
171
167
  end
172
168
 
173
169
  it "should fail if an unknown stage is specified" do
174
- @compiler.known_resource_types.add Puppet::Resource::Type.new(:hostclass, "foo", {})
170
+ @compiler.environment.known_resource_types.add Puppet::Resource::Type.new(:hostclass, "foo", {})
175
171
 
176
172
  resource = Puppet::Parser::Resource.new(:class, "foo", :scope => @scope, :catalog => @catalog)
177
173
  resource[:stage] = 'other'
@@ -183,7 +179,7 @@ describe Puppet::Parser::Resource do
183
179
  main = @compiler.catalog.resource(:stage, :main)
184
180
  foo_stage = Puppet::Parser::Resource.new(:stage, :foo_stage, :scope => @scope, :catalog => @catalog)
185
181
  @compiler.add_resource(@scope, foo_stage)
186
- @compiler.known_resource_types.add Puppet::Resource::Type.new(:hostclass, "foo", {})
182
+ @compiler.environment.known_resource_types.add Puppet::Resource::Type.new(:hostclass, "foo", {})
187
183
  resource = Puppet::Parser::Resource.new(:class, "foo", :scope => @scope, :catalog => @catalog)
188
184
  resource[:stage] = 'foo_stage'
189
185
  @compiler.add_resource(@scope, resource)
@@ -200,6 +196,16 @@ describe Puppet::Parser::Resource do
200
196
  expect(edges).to include(['Class[main]', 'Notify[hello]'])
201
197
  end
202
198
 
199
+ it 'should evaluate class in the same file without include' do
200
+ Puppet[:code] = <<-MANIFEST
201
+ class a($myvar = 'hello') {}
202
+ class { 'a': myvar => 'goodbye' }
203
+ notify { $a::myvar: }
204
+ MANIFEST
205
+ catalog = Puppet::Parser::Compiler.compile(Puppet::Node.new 'anyone')
206
+ expect(catalog.resource('Notify[goodbye]')).to be_a(Puppet::Resource)
207
+ end
208
+
203
209
  it "should allow edges to propagate multiple levels down the scope hierarchy" do
204
210
  Puppet[:code] = <<-MANIFEST
205
211
  stage { before: before => Stage[main] }
@@ -246,7 +252,7 @@ describe Puppet::Parser::Resource do
246
252
 
247
253
  it "should add edges from top-level class resources to the main stage if no stage is specified" do
248
254
  main = @compiler.catalog.resource(:stage, :main)
249
- @compiler.known_resource_types.add Puppet::Resource::Type.new(:hostclass, "foo", {})
255
+ @compiler.environment.known_resource_types.add Puppet::Resource::Type.new(:hostclass, "foo", {})
250
256
  resource = Puppet::Parser::Resource.new(:class, "foo", :scope => @scope, :catalog => @catalog)
251
257
  @compiler.add_resource(@scope, resource)
252
258
 
@@ -258,9 +264,6 @@ describe Puppet::Parser::Resource do
258
264
 
259
265
  describe "when finishing" do
260
266
  before do
261
- @class = newclass "myclass"
262
- @nodedef = newnode("mynode")
263
-
264
267
  @resource = Puppet::Parser::Resource.new("file", "whatever", :scope => @scope, :source => @source)
265
268
  end
266
269
 
@@ -295,6 +298,13 @@ describe Puppet::Parser::Resource do
295
298
 
296
299
  expect(@resource[:owner]).to eq("other")
297
300
  end
301
+
302
+ it "converts parameters with Sensitive values to unwrapped values and metadata" do
303
+ @resource[:content] = Puppet::Pops::Types::PSensitiveType::Sensitive.new("hunter2")
304
+ @resource.finish
305
+ expect(@resource[:content]).to eq "hunter2"
306
+ expect(@resource.sensitive_parameters).to eq [:content]
307
+ end
298
308
  end
299
309
 
300
310
  describe "when being tagged" do
@@ -91,10 +91,6 @@ describe Puppet::Parser::Scope do
91
91
  }.to raise_error(Puppet::DevError, /you must pass a compiler instance/)
92
92
  end
93
93
 
94
- it "should use the resource type collection helper to find its known resource types" do
95
- expect(Puppet::Parser::Scope.ancestors).to include(Puppet::Resource::TypeCollectionHelper)
96
- end
97
-
98
94
  describe "when custom functions are called" do
99
95
  let(:env) { Puppet::Node::Environment.create(:testing, []) }
100
96
  let(:compiler) { Puppet::Parser::Compiler.new(Puppet::Node.new('foo', :environment => env)) }
@@ -230,7 +226,7 @@ describe Puppet::Parser::Scope do
230
226
 
231
227
  describe "and the variable is qualified" do
232
228
  before :each do
233
- @known_resource_types = @scope.known_resource_types
229
+ @known_resource_types = @scope.environment.known_resource_types
234
230
 
235
231
  node = Puppet::Node.new('localhost')
236
232
  @compiler = Puppet::Parser::Compiler.new(node)