puppet 4.4.0 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (745) hide show
  1. data/CONTRIBUTING.md +5 -5
  2. data/Gemfile +2 -2
  3. data/LICENSE +2 -2
  4. data/README.md +5 -0
  5. data/conf/puppet.conf +1 -1
  6. data/ext/project_data.yaml +2 -0
  7. data/ext/redhat/puppet.spec.erb +0 -9
  8. data/ext/upload_facts.rb +1 -1
  9. data/lib/hiera_puppet.rb +6 -14
  10. data/lib/puppet/application/agent.rb +3 -4
  11. data/lib/puppet/application/apply.rb +1 -1
  12. data/lib/puppet/application/ca.rb +1 -0
  13. data/lib/puppet/application/cert.rb +1 -1
  14. data/lib/puppet/application/filebucket.rb +1 -1
  15. data/lib/puppet/application/inspect.rb +2 -2
  16. data/lib/puppet/application/lookup.rb +8 -20
  17. data/lib/puppet/application/master.rb +1 -1
  18. data/lib/puppet/application/resource.rb +1 -5
  19. data/lib/puppet/data_providers/hiera_config.rb +2 -4
  20. data/lib/puppet/data_providers/hiera_interpolate.rb +12 -105
  21. data/lib/puppet/data_providers/json_data_provider_factory.rb +1 -8
  22. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -8
  23. data/lib/puppet/defaults.rb +104 -25
  24. data/lib/puppet/face/config.rb +1 -1
  25. data/lib/puppet/face/help/man.erb +1 -1
  26. data/lib/puppet/file_system/uniquefile.rb +2 -2
  27. data/lib/puppet/file_system/windows.rb +1 -15
  28. data/lib/puppet/functions/assert_type.rb +1 -1
  29. data/lib/puppet/functions/dig.rb +39 -0
  30. data/lib/puppet/functions/hiera_include.rb +2 -2
  31. data/lib/puppet/functions/inline_epp.rb +1 -1
  32. data/lib/puppet/functions/lest.rb +53 -0
  33. data/lib/puppet/functions/lookup.rb +40 -30
  34. data/lib/puppet/functions/new.rb +502 -0
  35. data/lib/puppet/functions/regsubst.rb +11 -10
  36. data/lib/puppet/functions/then.rb +74 -0
  37. data/lib/puppet/functions/type.rb +4 -4
  38. data/lib/puppet/functions/with.rb +1 -1
  39. data/lib/puppet/functions.rb +69 -0
  40. data/lib/puppet/indirector/catalog/compiler.rb +4 -1
  41. data/lib/puppet/indirector/msgpack.rb +1 -1
  42. data/lib/puppet/indirector/resource_type/parser.rb +5 -0
  43. data/lib/puppet/indirector/rest.rb +5 -1
  44. data/lib/puppet/indirector/terminus.rb +4 -4
  45. data/lib/puppet/loaders.rb +2 -0
  46. data/lib/puppet/metatype/manager.rb +19 -2
  47. data/lib/puppet/module.rb +3 -3
  48. data/lib/puppet/module_tool/applications/application.rb +1 -1
  49. data/lib/puppet/module_tool/applications/builder.rb +2 -2
  50. data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +6 -2
  51. data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +19 -4
  52. data/lib/puppet/module_tool/skeleton/templates/generator/{tests → examples}/init.pp.erb +1 -1
  53. data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +0 -1
  54. data/lib/puppet/network/auth_config_parser.rb +1 -1
  55. data/lib/puppet/network/http/api/indirected_routes.rb +0 -2
  56. data/lib/puppet/network/http/api/master/v3/environment.rb +6 -2
  57. data/lib/puppet/network/http/rack/rest.rb +10 -1
  58. data/lib/puppet/parser/ast/pops_bridge.rb +20 -3
  59. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +24 -2
  60. data/lib/puppet/parser/e4_parser_adapter.rb +13 -12
  61. data/lib/puppet/parser/environment_compiler.rb +2 -2
  62. data/lib/puppet/parser/functions/hiera_include.rb +2 -2
  63. data/lib/puppet/parser/functions/inline_epp.rb +1 -1
  64. data/lib/puppet/parser/functions/lookup.rb +0 -3
  65. data/lib/puppet/parser/resource.rb +14 -5
  66. data/lib/puppet/parser/scope.rb +18 -15
  67. data/lib/puppet/plugins/data_providers/data_provider.rb +19 -8
  68. data/lib/puppet/pops/adapters.rb +5 -1
  69. data/lib/puppet/pops/evaluator/access_operator.rb +77 -15
  70. data/lib/puppet/pops/evaluator/closure.rb +10 -5
  71. data/lib/puppet/pops/evaluator/compare_operator.rb +34 -4
  72. data/lib/puppet/pops/evaluator/evaluator_impl.rb +75 -22
  73. data/lib/puppet/pops/evaluator/literal_evaluator.rb +7 -6
  74. data/lib/puppet/pops/evaluator/runtime3_converter.rb +13 -1
  75. data/lib/puppet/pops/evaluator/runtime3_support.rb +14 -4
  76. data/lib/puppet/pops/functions/dispatcher.rb +1 -1
  77. data/lib/puppet/pops/issues.rb +18 -2
  78. data/lib/puppet/pops/loader/base_loader.rb +48 -7
  79. data/lib/puppet/pops/loader/dependency_loader.rb +27 -2
  80. data/lib/puppet/pops/loader/loader.rb +12 -0
  81. data/lib/puppet/pops/loader/predefined_loader.rb +29 -0
  82. data/lib/puppet/pops/loader/runtime3_type_loader.rb +57 -0
  83. data/lib/puppet/pops/loader/static_loader.rb +92 -5
  84. data/lib/puppet/pops/loader/type_definition_instantiator.rb +25 -3
  85. data/lib/puppet/pops/loaders.rb +84 -14
  86. data/lib/puppet/pops/lookup/explainer.rb +38 -1
  87. data/lib/puppet/pops/lookup/interpolation.rb +115 -0
  88. data/lib/puppet/pops/lookup/sub_lookup.rb +86 -0
  89. data/lib/puppet/pops/merge_strategy.rb +0 -10
  90. data/lib/puppet/pops/model/ast_transformer.rb +8 -1
  91. data/lib/puppet/pops/model/factory.rb +31 -8
  92. data/lib/puppet/pops/model/model.rb +8 -0
  93. data/lib/puppet/pops/model/model_label_provider.rb +1 -0
  94. data/lib/puppet/pops/model/model_meta.rb +7 -1
  95. data/lib/puppet/pops/model/model_tree_dumper.rb +4 -0
  96. data/lib/puppet/pops/parser/egrammar.ra +24 -7
  97. data/lib/puppet/pops/parser/eparser.rb +863 -798
  98. data/lib/puppet/pops/parser/evaluating_parser.rb +4 -0
  99. data/lib/puppet/pops/parser/locator.rb +8 -4
  100. data/lib/puppet/pops/pcore.rb +30 -0
  101. data/lib/puppet/pops/types/class_loader.rb +2 -4
  102. data/lib/puppet/pops/types/implementation_registry.rb +146 -0
  103. data/lib/puppet/pops/types/iterable.rb +4 -4
  104. data/lib/puppet/pops/types/p_object_type.rb +846 -0
  105. data/lib/puppet/pops/types/p_runtime_type.rb +102 -0
  106. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +164 -0
  107. data/lib/puppet/pops/types/p_sem_ver_type.rb +113 -0
  108. data/lib/puppet/pops/types/puppet_object.rb +21 -0
  109. data/lib/puppet/pops/types/recursion_guard.rb +10 -0
  110. data/lib/puppet/pops/types/ruby_generator.rb +258 -0
  111. data/lib/puppet/pops/types/string_converter.rb +922 -0
  112. data/lib/puppet/pops/types/type_asserter.rb +2 -2
  113. data/lib/puppet/pops/types/type_calculator.rb +30 -6
  114. data/lib/puppet/pops/types/type_conversion_error.rb +15 -0
  115. data/lib/puppet/pops/types/type_factory.rb +49 -16
  116. data/lib/puppet/pops/types/type_formatter.rb +341 -106
  117. data/lib/puppet/pops/types/type_mismatch_describer.rb +132 -41
  118. data/lib/puppet/pops/types/type_parser.rb +205 -197
  119. data/lib/puppet/pops/types/types.rb +722 -202
  120. data/lib/puppet/pops/validation/checker4_0.rb +66 -4
  121. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  122. data/lib/puppet/pops/validation.rb +1 -1
  123. data/lib/puppet/pops/visitor.rb +3 -1
  124. data/lib/puppet/pops.rb +6 -0
  125. data/lib/puppet/property.rb +1 -1
  126. data/lib/puppet/provider/augeas/augeas.rb +1 -1
  127. data/lib/puppet/provider/package/pip.rb +64 -20
  128. data/lib/puppet/provider/package/pip3.rb +2 -0
  129. data/lib/puppet/provider/package/puppet_gem.rb +0 -0
  130. data/lib/puppet/provider/package/rpm.rb +112 -0
  131. data/lib/puppet/provider/package/yum.rb +7 -68
  132. data/lib/puppet/provider/service/daemontools.rb +3 -3
  133. data/lib/puppet/provider/service/init.rb +4 -2
  134. data/lib/puppet/provider/service/runit.rb +3 -3
  135. data/lib/puppet/provider/service/smf.rb +6 -3
  136. data/lib/puppet/provider/service/systemd.rb +59 -73
  137. data/lib/puppet/provider/user/user_role_add.rb +3 -1
  138. data/lib/puppet/reference/providers.rb +2 -3
  139. data/lib/puppet/resource/catalog.rb +34 -30
  140. data/lib/puppet/resource/type_collection.rb +23 -8
  141. data/lib/puppet/resource.rb +54 -37
  142. data/lib/puppet/settings/base_setting.rb +9 -3
  143. data/lib/puppet/settings/symbolic_enum_setting.rb +17 -0
  144. data/lib/puppet/settings.rb +5 -3
  145. data/lib/puppet/ssl/oids.rb +24 -2
  146. data/lib/puppet/test/test_helper.rb +0 -1
  147. data/lib/puppet/transaction.rb +0 -24
  148. data/lib/puppet/type/exec.rb +17 -17
  149. data/lib/puppet/type/file/content.rb +8 -8
  150. data/lib/puppet/type/file/ensure.rb +4 -4
  151. data/lib/puppet/type/file/source.rb +4 -4
  152. data/lib/puppet/type/file/target.rb +2 -2
  153. data/lib/puppet/type/file.rb +15 -5
  154. data/lib/puppet/type/filebucket.rb +1 -1
  155. data/lib/puppet/type/mount.rb +18 -1
  156. data/lib/puppet/type/package.rb +3 -3
  157. data/lib/puppet/type/schedule.rb +5 -5
  158. data/lib/puppet/type/service.rb +15 -0
  159. data/lib/puppet/type/sshkey.rb +5 -3
  160. data/lib/puppet/type/stage.rb +1 -1
  161. data/lib/puppet/type/tidy.rb +3 -3
  162. data/lib/puppet/type/zone.rb +5 -5
  163. data/lib/puppet/type.rb +13 -7
  164. data/lib/puppet/util/feature.rb +1 -1
  165. data/lib/puppet/util/monkey_patches.rb +18 -5
  166. data/lib/puppet/util/network_device/cisco/device.rb +16 -6
  167. data/lib/puppet/util/network_device/cisco/interface.rb +5 -6
  168. data/lib/puppet/util/plist.rb +3 -3
  169. data/lib/puppet/util/windows/file.rb +40 -10
  170. data/lib/puppet/util/windows.rb +1 -0
  171. data/lib/puppet/version.rb +1 -1
  172. data/spec/fixtures/unit/application/environments/production/data/common.yaml +13 -0
  173. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/third_utf8.json +3 -0
  174. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/utf8.yaml +3 -0
  175. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +5 -1
  176. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +2 -2
  177. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +2 -1
  178. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/manifests/init.pp +2 -1
  179. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/data/empty_key.json +1 -0
  180. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/hiera.yaml +5 -0
  181. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/manifests/init.pp +2 -0
  182. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/metadata.json +9 -0
  183. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/data/empty_key.yaml +1 -0
  184. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/hiera.yaml +5 -0
  185. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/manifests/init.pp +2 -0
  186. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/metadata.json +9 -0
  187. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +1 -0
  188. data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +0 -0
  189. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/type/usee_type.rb +5 -0
  190. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +6 -0
  191. data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +0 -0
  192. data/spec/fixtures/unit/provider/service/smf/svcs.out +4 -3
  193. data/spec/integration/agent/logging_spec.rb +0 -0
  194. data/spec/integration/application/apply_spec.rb +0 -0
  195. data/spec/integration/application/doc_spec.rb +0 -0
  196. data/spec/integration/configurer_spec.rb +0 -0
  197. data/spec/integration/data_binding_spec.rb +0 -34
  198. data/spec/integration/defaults_spec.rb +0 -0
  199. data/spec/integration/faces/ca_spec.rb +0 -0
  200. data/spec/integration/faces/documentation_spec.rb +0 -0
  201. data/spec/integration/file_serving/fileset_spec.rb +0 -0
  202. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -0
  203. data/spec/integration/indirector/catalog/compiler_spec.rb +0 -0
  204. data/spec/integration/indirector/direct_file_server_spec.rb +0 -0
  205. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -0
  206. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -0
  207. data/spec/integration/indirector/node/ldap_spec.rb +0 -0
  208. data/spec/integration/module_tool/tar/mini_spec.rb +27 -27
  209. data/spec/integration/network/formats_spec.rb +0 -0
  210. data/spec/integration/node/environment_spec.rb +0 -0
  211. data/spec/integration/node/facts_spec.rb +0 -0
  212. data/spec/integration/node_spec.rb +0 -0
  213. data/spec/integration/parser/catalog_spec.rb +14 -2
  214. data/spec/integration/parser/collection_spec.rb +0 -0
  215. data/spec/integration/parser/compiler_spec.rb +94 -3
  216. data/spec/integration/parser/functions/require_spec.rb +0 -0
  217. data/spec/integration/parser/parameter_defaults_spec.rb +19 -1
  218. data/spec/integration/parser/resource_expressions_spec.rb +1 -1
  219. data/spec/integration/provider/mailalias/aliases_spec.rb +0 -0
  220. data/spec/integration/provider/mount_spec.rb +0 -0
  221. data/spec/integration/provider/service/init_spec.rb +0 -0
  222. data/spec/integration/provider/ssh_authorized_key_spec.rb +0 -0
  223. data/spec/integration/reference/providers_spec.rb +0 -0
  224. data/spec/integration/reports_spec.rb +0 -0
  225. data/spec/integration/resource/catalog_spec.rb +0 -0
  226. data/spec/integration/resource/type_collection_spec.rb +8 -0
  227. data/spec/integration/ssl/certificate_authority_spec.rb +0 -0
  228. data/spec/integration/ssl/certificate_request_spec.rb +0 -0
  229. data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -0
  230. data/spec/integration/ssl/host_spec.rb +0 -0
  231. data/spec/integration/transaction/report_spec.rb +0 -0
  232. data/spec/integration/transaction_spec.rb +0 -0
  233. data/spec/integration/type/exec_spec.rb +0 -0
  234. data/spec/integration/type/file_spec.rb +0 -0
  235. data/spec/integration/type/package_spec.rb +0 -0
  236. data/spec/integration/type/tidy_spec.rb +0 -0
  237. data/spec/integration/type_spec.rb +0 -0
  238. data/spec/integration/util/autoload_spec.rb +0 -0
  239. data/spec/integration/util/rdoc/parser_spec.rb +0 -0
  240. data/spec/integration/util/settings_spec.rb +26 -0
  241. data/spec/integration/util/windows/registry_spec.rb +0 -0
  242. data/spec/integration/util/windows/security_spec.rb +0 -0
  243. data/spec/integration/util/windows/user_spec.rb +0 -0
  244. data/spec/integration/util_spec.rb +0 -0
  245. data/spec/lib/puppet/face/1.0.0/huzzah.rb +0 -0
  246. data/spec/lib/puppet/face/basetest.rb +0 -0
  247. data/spec/lib/puppet/face/huzzah.rb +0 -0
  248. data/spec/lib/puppet_spec/compiler.rb +11 -4
  249. data/spec/lib/puppet_spec/files.rb +0 -0
  250. data/spec/lib/puppet_spec/fixtures.rb +0 -0
  251. data/spec/lib/puppet_spec/verbose.rb +0 -0
  252. data/spec/shared_behaviours/all_parsedfile_providers.rb +0 -0
  253. data/spec/shared_behaviours/file_server_terminus.rb +0 -0
  254. data/spec/shared_behaviours/file_serving.rb +0 -0
  255. data/spec/shared_behaviours/memory_terminus.rb +0 -0
  256. data/spec/shared_behaviours/path_parameters.rb +0 -0
  257. data/spec/shared_behaviours/things_that_declare_options.rb +0 -0
  258. data/spec/shared_contexts/types_setup.rb +4 -0
  259. data/spec/spec_helper.rb +0 -0
  260. data/spec/unit/agent/locker_spec.rb +0 -0
  261. data/spec/unit/agent_spec.rb +0 -0
  262. data/spec/unit/application/agent_spec.rb +0 -0
  263. data/spec/unit/application/apply_spec.rb +0 -0
  264. data/spec/unit/application/cert_spec.rb +0 -0
  265. data/spec/unit/application/certificate_spec.rb +0 -0
  266. data/spec/unit/application/config_spec.rb +0 -0
  267. data/spec/unit/application/describe_spec.rb +0 -0
  268. data/spec/unit/application/device_spec.rb +0 -0
  269. data/spec/unit/application/doc_spec.rb +0 -0
  270. data/spec/unit/application/face_base_spec.rb +0 -0
  271. data/spec/unit/application/facts_spec.rb +0 -0
  272. data/spec/unit/application/filebucket_spec.rb +0 -0
  273. data/spec/unit/application/indirection_base_spec.rb +0 -0
  274. data/spec/unit/application/inspect_spec.rb +19 -8
  275. data/spec/unit/application/lookup_spec.rb +92 -10
  276. data/spec/unit/application/master_spec.rb +0 -0
  277. data/spec/unit/application/resource_spec.rb +0 -0
  278. data/spec/unit/application_spec.rb +0 -0
  279. data/spec/unit/appmgmt_spec.rb +44 -35
  280. data/spec/unit/capability_spec.rb +33 -53
  281. data/spec/unit/configurer/downloader_factory_spec.rb +0 -0
  282. data/spec/unit/configurer/downloader_spec.rb +0 -0
  283. data/spec/unit/configurer/fact_handler_spec.rb +0 -0
  284. data/spec/unit/configurer/plugin_handler_spec.rb +0 -0
  285. data/spec/unit/configurer_spec.rb +0 -0
  286. data/spec/unit/confine/exists_spec.rb +0 -0
  287. data/spec/unit/confine/false_spec.rb +0 -0
  288. data/spec/unit/confine/feature_spec.rb +0 -0
  289. data/spec/unit/confine/true_spec.rb +0 -0
  290. data/spec/unit/confine/variable_spec.rb +0 -0
  291. data/spec/unit/confine_collection_spec.rb +0 -0
  292. data/spec/unit/confine_spec.rb +0 -0
  293. data/spec/unit/confiner_spec.rb +0 -0
  294. data/spec/unit/daemon_spec.rb +0 -0
  295. data/spec/unit/data_providers/function_data_provider_spec.rb +19 -1
  296. data/spec/unit/data_providers/hiera_data_provider_spec.rb +2 -2
  297. data/spec/unit/defaults_spec.rb +18 -0
  298. data/spec/unit/external/pson_spec.rb +0 -0
  299. data/spec/unit/face/catalog_spec.rb +0 -0
  300. data/spec/unit/face/certificate_spec.rb +0 -0
  301. data/spec/unit/face/config_spec.rb +0 -0
  302. data/spec/unit/face/facts_spec.rb +0 -0
  303. data/spec/unit/face/file_spec.rb +0 -0
  304. data/spec/unit/face/help_spec.rb +0 -0
  305. data/spec/unit/face/node_spec.rb +0 -0
  306. data/spec/unit/face/plugin_spec.rb +0 -0
  307. data/spec/unit/face_spec.rb +0 -0
  308. data/spec/unit/file_bucket/dipper_spec.rb +0 -0
  309. data/spec/unit/file_bucket/file_spec.rb +0 -0
  310. data/spec/unit/file_serving/base_spec.rb +0 -0
  311. data/spec/unit/file_serving/configuration/parser_spec.rb +0 -0
  312. data/spec/unit/file_serving/configuration_spec.rb +0 -0
  313. data/spec/unit/file_serving/content_spec.rb +0 -0
  314. data/spec/unit/file_serving/fileset_spec.rb +0 -0
  315. data/spec/unit/file_serving/metadata_spec.rb +0 -0
  316. data/spec/unit/file_serving/mount/file_spec.rb +0 -0
  317. data/spec/unit/file_serving/mount/modules_spec.rb +0 -0
  318. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +0 -0
  319. data/spec/unit/file_serving/mount/plugins_spec.rb +0 -0
  320. data/spec/unit/file_serving/mount_spec.rb +0 -0
  321. data/spec/unit/file_serving/terminus_helper_spec.rb +0 -0
  322. data/spec/unit/file_serving/terminus_selector_spec.rb +0 -0
  323. data/spec/unit/file_system/uniquefile_spec.rb +20 -0
  324. data/spec/unit/file_system_spec.rb +61 -0
  325. data/spec/unit/functions/assert_type_spec.rb +8 -0
  326. data/spec/unit/functions/defined_spec.rb +0 -0
  327. data/spec/unit/functions/dig_spec.rb +58 -0
  328. data/spec/unit/functions/hiera_spec.rb +0 -0
  329. data/spec/unit/functions/lest_spec.rb +34 -0
  330. data/spec/unit/functions/lookup_spec.rb +109 -3
  331. data/spec/unit/functions/new_spec.rb +543 -0
  332. data/spec/unit/functions/regsubst_spec.rb +8 -0
  333. data/spec/unit/functions/split_spec.rb +0 -0
  334. data/spec/unit/functions/then_spec.rb +40 -0
  335. data/spec/unit/functions/versioncmp_spec.rb +0 -0
  336. data/spec/unit/functions4_spec.rb +78 -10
  337. data/spec/unit/graph/relationship_graph_spec.rb +0 -0
  338. data/spec/unit/graph/simple_graph_spec.rb +0 -0
  339. data/spec/unit/hiera_puppet_spec.rb +49 -8
  340. data/spec/unit/indirector/catalog/compiler_spec.rb +7 -0
  341. data/spec/unit/indirector/catalog/json_spec.rb +0 -0
  342. data/spec/unit/indirector/catalog/msgpack_spec.rb +0 -0
  343. data/spec/unit/indirector/catalog/rest_spec.rb +0 -0
  344. data/spec/unit/indirector/catalog/static_compiler_spec.rb +0 -0
  345. data/spec/unit/indirector/catalog/store_configs_spec.rb +0 -0
  346. data/spec/unit/indirector/catalog/yaml_spec.rb +0 -0
  347. data/spec/unit/indirector/certificate/ca_spec.rb +0 -0
  348. data/spec/unit/indirector/certificate/disabled_ca_spec.rb +0 -0
  349. data/spec/unit/indirector/certificate/file_spec.rb +0 -0
  350. data/spec/unit/indirector/certificate/rest_spec.rb +0 -0
  351. data/spec/unit/indirector/certificate_request/ca_spec.rb +0 -0
  352. data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +0 -0
  353. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -0
  354. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -0
  355. data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +0 -0
  356. data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +0 -0
  357. data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +0 -0
  358. data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +0 -0
  359. data/spec/unit/indirector/certificate_status/file_spec.rb +0 -0
  360. data/spec/unit/indirector/certificate_status/rest_spec.rb +0 -0
  361. data/spec/unit/indirector/code_spec.rb +0 -0
  362. data/spec/unit/indirector/direct_file_server_spec.rb +0 -0
  363. data/spec/unit/indirector/envelope_spec.rb +0 -0
  364. data/spec/unit/indirector/exec_spec.rb +0 -0
  365. data/spec/unit/indirector/face_spec.rb +0 -0
  366. data/spec/unit/indirector/facts/facter_spec.rb +0 -0
  367. data/spec/unit/indirector/facts/network_device_spec.rb +0 -0
  368. data/spec/unit/indirector/facts/store_configs_spec.rb +0 -0
  369. data/spec/unit/indirector/facts/yaml_spec.rb +0 -0
  370. data/spec/unit/indirector/file_bucket_file/file_spec.rb +0 -0
  371. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +0 -0
  372. data/spec/unit/indirector/file_content/file_server_spec.rb +0 -0
  373. data/spec/unit/indirector/file_content/file_spec.rb +0 -0
  374. data/spec/unit/indirector/file_content/rest_spec.rb +0 -0
  375. data/spec/unit/indirector/file_metadata/file_server_spec.rb +0 -0
  376. data/spec/unit/indirector/file_metadata/file_spec.rb +0 -0
  377. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -0
  378. data/spec/unit/indirector/file_server_spec.rb +0 -0
  379. data/spec/unit/indirector/indirection_spec.rb +0 -0
  380. data/spec/unit/indirector/json_spec.rb +0 -0
  381. data/spec/unit/indirector/key/ca_spec.rb +0 -0
  382. data/spec/unit/indirector/key/disabled_ca_spec.rb +0 -0
  383. data/spec/unit/indirector/key/file_spec.rb +0 -0
  384. data/spec/unit/indirector/ldap_spec.rb +0 -0
  385. data/spec/unit/indirector/memory_spec.rb +0 -0
  386. data/spec/unit/indirector/msgpack_spec.rb +11 -1
  387. data/spec/unit/indirector/node/exec_spec.rb +0 -0
  388. data/spec/unit/indirector/node/ldap_spec.rb +0 -0
  389. data/spec/unit/indirector/node/memory_spec.rb +0 -0
  390. data/spec/unit/indirector/node/msgpack_spec.rb +0 -0
  391. data/spec/unit/indirector/node/plain_spec.rb +0 -0
  392. data/spec/unit/indirector/node/rest_spec.rb +0 -0
  393. data/spec/unit/indirector/node/store_configs_spec.rb +0 -0
  394. data/spec/unit/indirector/node/yaml_spec.rb +0 -0
  395. data/spec/unit/indirector/plain_spec.rb +0 -0
  396. data/spec/unit/indirector/report/msgpack_spec.rb +0 -0
  397. data/spec/unit/indirector/report/processor_spec.rb +0 -0
  398. data/spec/unit/indirector/report/rest_spec.rb +0 -0
  399. data/spec/unit/indirector/report/yaml_spec.rb +0 -0
  400. data/spec/unit/indirector/request_spec.rb +0 -0
  401. data/spec/unit/indirector/resource/ral_spec.rb +0 -0
  402. data/spec/unit/indirector/resource/store_configs_spec.rb +0 -0
  403. data/spec/unit/indirector/resource_type/parser_spec.rb +5 -0
  404. data/spec/unit/indirector/resource_type/rest_spec.rb +0 -0
  405. data/spec/unit/indirector/rest_spec.rb +12 -0
  406. data/spec/unit/indirector/ssl_file_spec.rb +0 -0
  407. data/spec/unit/indirector/status/rest_spec.rb +0 -0
  408. data/spec/unit/indirector/store_configs_spec.rb +0 -0
  409. data/spec/unit/indirector/terminus_spec.rb +0 -0
  410. data/spec/unit/indirector/yaml_spec.rb +0 -0
  411. data/spec/unit/indirector_spec.rb +0 -0
  412. data/spec/unit/interface/action_builder_spec.rb +0 -0
  413. data/spec/unit/interface/action_manager_spec.rb +0 -0
  414. data/spec/unit/interface/action_spec.rb +0 -0
  415. data/spec/unit/interface/documentation_spec.rb +0 -0
  416. data/spec/unit/interface/face_collection_spec.rb +0 -0
  417. data/spec/unit/interface/option_builder_spec.rb +0 -0
  418. data/spec/unit/interface/option_spec.rb +0 -0
  419. data/spec/unit/interface_spec.rb +0 -0
  420. data/spec/unit/man_spec.rb +0 -0
  421. data/spec/unit/module_spec.rb +30 -6
  422. data/spec/unit/module_tool/applications/builder_spec.rb +23 -3
  423. data/spec/unit/module_tool_spec.rb +0 -0
  424. data/spec/unit/network/auth_config_parser_spec.rb +16 -0
  425. data/spec/unit/network/authconfig_spec.rb +0 -0
  426. data/spec/unit/network/authstore_spec.rb +0 -0
  427. data/spec/unit/network/format_handler_spec.rb +0 -0
  428. data/spec/unit/network/format_spec.rb +0 -0
  429. data/spec/unit/network/formats_spec.rb +0 -0
  430. data/spec/unit/network/http/api/indirected_routes_spec.rb +21 -13
  431. data/spec/unit/network/http/api/master/v3/environment_spec.rb +60 -0
  432. data/spec/unit/network/http/api/master/v3_spec.rb +0 -0
  433. data/spec/unit/network/http/compression_spec.rb +0 -0
  434. data/spec/unit/network/http/connection_spec.rb +0 -0
  435. data/spec/unit/network/http/factory_spec.rb +0 -0
  436. data/spec/unit/network/http/handler_spec.rb +0 -0
  437. data/spec/unit/network/http/nocache_pool_spec.rb +0 -0
  438. data/spec/unit/network/http/pool_spec.rb +0 -0
  439. data/spec/unit/network/http/rack/rest_spec.rb +7 -0
  440. data/spec/unit/network/http/rack_spec.rb +0 -0
  441. data/spec/unit/network/http/session_spec.rb +0 -0
  442. data/spec/unit/network/http/site_spec.rb +0 -0
  443. data/spec/unit/network/http/webrick/rest_spec.rb +0 -0
  444. data/spec/unit/network/http/webrick_spec.rb +0 -0
  445. data/spec/unit/network/http_pool_spec.rb +0 -0
  446. data/spec/unit/network/http_spec.rb +0 -0
  447. data/spec/unit/network/resolver_spec.rb +0 -0
  448. data/spec/unit/network/rights_spec.rb +0 -0
  449. data/spec/unit/network/server_spec.rb +0 -0
  450. data/spec/unit/node/environment_spec.rb +10 -0
  451. data/spec/unit/node/facts_spec.rb +0 -0
  452. data/spec/unit/node_spec.rb +0 -0
  453. data/spec/unit/other/selinux_spec.rb +0 -0
  454. data/spec/unit/parameter/path_spec.rb +0 -0
  455. data/spec/unit/parameter/value_collection_spec.rb +0 -0
  456. data/spec/unit/parameter/value_spec.rb +0 -0
  457. data/spec/unit/parameter_spec.rb +0 -0
  458. data/spec/unit/parser/ast/leaf_spec.rb +0 -0
  459. data/spec/unit/parser/compiler_spec.rb +20 -1
  460. data/spec/unit/parser/files_spec.rb +0 -0
  461. data/spec/unit/parser/functions/create_resources_spec.rb +2 -2
  462. data/spec/unit/parser/functions/defined_spec.rb +0 -0
  463. data/spec/unit/parser/functions/digest_spec.rb +0 -0
  464. data/spec/unit/parser/functions/fail_spec.rb +0 -0
  465. data/spec/unit/parser/functions/file_spec.rb +0 -0
  466. data/spec/unit/parser/functions/fqdn_rand_spec.rb +0 -0
  467. data/spec/unit/parser/functions/generate_spec.rb +0 -0
  468. data/spec/unit/parser/functions/hiera_spec.rb +0 -0
  469. data/spec/unit/parser/functions/include_spec.rb +0 -0
  470. data/spec/unit/parser/functions/inline_template_spec.rb +0 -0
  471. data/spec/unit/parser/functions/realize_spec.rb +0 -0
  472. data/spec/unit/parser/functions/regsubst_spec.rb +0 -0
  473. data/spec/unit/parser/functions/require_spec.rb +0 -0
  474. data/spec/unit/parser/functions/scanf_spec.rb +0 -0
  475. data/spec/unit/parser/functions/shared.rb +1 -1
  476. data/spec/unit/parser/functions/shellquote_spec.rb +0 -0
  477. data/spec/unit/parser/functions/split_spec.rb +0 -0
  478. data/spec/unit/parser/functions/sprintf_spec.rb +0 -0
  479. data/spec/unit/parser/functions/tag_spec.rb +0 -0
  480. data/spec/unit/parser/functions/template_spec.rb +0 -0
  481. data/spec/unit/parser/functions/versioncmp_spec.rb +0 -0
  482. data/spec/unit/parser/functions_spec.rb +0 -0
  483. data/spec/unit/parser/relationship_spec.rb +0 -0
  484. data/spec/unit/parser/resource/param_spec.rb +0 -0
  485. data/spec/unit/parser/resource_spec.rb +8 -1
  486. data/spec/unit/parser/scope_spec.rb +45 -0
  487. data/spec/unit/parser/templatewrapper_spec.rb +0 -0
  488. data/spec/unit/parser/type_loader_spec.rb +0 -0
  489. data/spec/unit/pops/evaluator/access_ops_spec.rb +14 -0
  490. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +13 -5
  491. data/spec/unit/pops/loaders/loaders_spec.rb +8 -8
  492. data/spec/unit/pops/loaders/static_loader_spec.rb +92 -1
  493. data/spec/unit/pops/lookup/interpolation_spec.rb +313 -0
  494. data/spec/unit/pops/parser/lexer2_spec.rb +2 -9
  495. data/spec/unit/pops/parser/parse_application_spec.rb +3 -8
  496. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +19 -0
  497. data/spec/unit/pops/parser/parse_capabilities_spec.rb +3 -10
  498. data/spec/unit/pops/parser/parse_site_spec.rb +19 -10
  499. data/spec/unit/pops/parser/parser_rspec_helper.rb +0 -4
  500. data/spec/unit/pops/types/enumeration_spec.rb +13 -12
  501. data/spec/unit/pops/types/iterable_spec.rb +2 -2
  502. data/spec/unit/pops/types/p_object_type_spec.rb +1060 -0
  503. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +285 -0
  504. data/spec/unit/pops/types/recursion_guard_spec.rb +19 -17
  505. data/spec/unit/pops/types/ruby_generator_spec.rb +261 -0
  506. data/spec/unit/pops/types/string_converter_spec.rb +904 -0
  507. data/spec/unit/pops/types/type_asserter_spec.rb +3 -3
  508. data/spec/unit/pops/types/type_calculator_spec.rb +462 -412
  509. data/spec/unit/pops/types/type_factory_spec.rb +129 -88
  510. data/spec/unit/pops/types/type_formatter_spec.rb +80 -8
  511. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +27 -2
  512. data/spec/unit/pops/types/type_parser_spec.rb +55 -16
  513. data/spec/unit/pops/types/types_spec.rb +320 -0
  514. data/spec/unit/pops/validator/validator_spec.rb +84 -10
  515. data/spec/unit/property/ensure_spec.rb +0 -0
  516. data/spec/unit/property/keyvalue_spec.rb +0 -0
  517. data/spec/unit/property/list_spec.rb +0 -0
  518. data/spec/unit/property/ordered_list_spec.rb +0 -0
  519. data/spec/unit/property_spec.rb +0 -0
  520. data/spec/unit/provider/augeas/augeas_spec.rb +0 -0
  521. data/spec/unit/provider/cisco_spec.rb +0 -0
  522. data/spec/unit/provider/command_spec.rb +0 -0
  523. data/spec/unit/provider/cron/crontab_spec.rb +0 -0
  524. data/spec/unit/provider/exec/posix_spec.rb +0 -0
  525. data/spec/unit/provider/exec/shell_spec.rb +0 -0
  526. data/spec/unit/provider/exec/windows_spec.rb +0 -0
  527. data/spec/unit/provider/exec_spec.rb +0 -0
  528. data/spec/unit/provider/file/posix_spec.rb +0 -0
  529. data/spec/unit/provider/file/windows_spec.rb +0 -0
  530. data/spec/unit/provider/group/groupadd_spec.rb +0 -0
  531. data/spec/unit/provider/group/ldap_spec.rb +0 -0
  532. data/spec/unit/provider/group/pw_spec.rb +0 -0
  533. data/spec/unit/provider/group/windows_adsi_spec.rb +0 -0
  534. data/spec/unit/provider/host/parsed_spec.rb +0 -0
  535. data/spec/unit/provider/interface/cisco_spec.rb +0 -0
  536. data/spec/unit/provider/ldap_spec.rb +0 -0
  537. data/spec/unit/provider/macauthorization_spec.rb +0 -0
  538. data/spec/unit/provider/mcx/mcxcontent_spec.rb +0 -0
  539. data/spec/unit/provider/mount/parsed_spec.rb +0 -0
  540. data/spec/unit/provider/mount_spec.rb +0 -0
  541. data/spec/unit/provider/naginator_spec.rb +0 -0
  542. data/spec/unit/provider/nameservice/directoryservice_spec.rb +0 -0
  543. data/spec/unit/provider/nameservice_spec.rb +0 -0
  544. data/spec/unit/provider/network_device_spec.rb +0 -0
  545. data/spec/unit/provider/package/aix_spec.rb +0 -0
  546. data/spec/unit/provider/package/appdmg_spec.rb +0 -0
  547. data/spec/unit/provider/package/apt_spec.rb +0 -0
  548. data/spec/unit/provider/package/aptitude_spec.rb +0 -0
  549. data/spec/unit/provider/package/aptrpm_spec.rb +0 -0
  550. data/spec/unit/provider/package/dpkg_spec.rb +0 -0
  551. data/spec/unit/provider/package/freebsd_spec.rb +0 -0
  552. data/spec/unit/provider/package/gem_spec.rb +0 -0
  553. data/spec/unit/provider/package/hpux_spec.rb +0 -0
  554. data/spec/unit/provider/package/macports_spec.rb +0 -0
  555. data/spec/unit/provider/package/nim_spec.rb +0 -0
  556. data/spec/unit/provider/package/openbsd_spec.rb +0 -0
  557. data/spec/unit/provider/package/opkg_spec.rb +0 -0
  558. data/spec/unit/provider/package/pacman_spec.rb +0 -0
  559. data/spec/unit/provider/package/pip3_spec.rb +9 -262
  560. data/spec/unit/provider/package/pip_spec.rb +85 -22
  561. data/spec/unit/provider/package/pkg_spec.rb +0 -0
  562. data/spec/unit/provider/package/pkgutil_spec.rb +0 -0
  563. data/spec/unit/provider/package/puppet_gem_spec.rb +0 -0
  564. data/spec/unit/provider/package/rpm_spec.rb +160 -3
  565. data/spec/unit/provider/package/sun_spec.rb +0 -0
  566. data/spec/unit/provider/package/windows/package_spec.rb +0 -0
  567. data/spec/unit/provider/package/windows_spec.rb +0 -0
  568. data/spec/unit/provider/package/yum_spec.rb +23 -134
  569. data/spec/unit/provider/package/zypper_spec.rb +0 -0
  570. data/spec/unit/provider/parsedfile_spec.rb +0 -0
  571. data/spec/unit/provider/selboolean_spec.rb +0 -0
  572. data/spec/unit/provider/selmodule_spec.rb +0 -0
  573. data/spec/unit/provider/service/base_spec.rb +0 -0
  574. data/spec/unit/provider/service/bsd_spec.rb +0 -0
  575. data/spec/unit/provider/service/daemontools_spec.rb +0 -0
  576. data/spec/unit/provider/service/debian_spec.rb +0 -0
  577. data/spec/unit/provider/service/freebsd_spec.rb +0 -0
  578. data/spec/unit/provider/service/gentoo_spec.rb +0 -0
  579. data/spec/unit/provider/service/init_spec.rb +0 -0
  580. data/spec/unit/provider/service/launchd_spec.rb +0 -0
  581. data/spec/unit/provider/service/openbsd_spec.rb +0 -0
  582. data/spec/unit/provider/service/openrc_spec.rb +0 -0
  583. data/spec/unit/provider/service/openwrt_spec.rb +0 -0
  584. data/spec/unit/provider/service/rcng_spec.rb +0 -0
  585. data/spec/unit/provider/service/redhat_spec.rb +0 -0
  586. data/spec/unit/provider/service/runit_spec.rb +0 -0
  587. data/spec/unit/provider/service/smf_spec.rb +14 -2
  588. data/spec/unit/provider/service/src_spec.rb +0 -0
  589. data/spec/unit/provider/service/systemd_spec.rb +34 -42
  590. data/spec/unit/provider/service/upstart_spec.rb +0 -0
  591. data/spec/unit/provider/service/windows_spec.rb +0 -0
  592. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -0
  593. data/spec/unit/provider/sshkey/parsed_spec.rb +0 -0
  594. data/spec/unit/provider/user/directoryservice_spec.rb +0 -0
  595. data/spec/unit/provider/user/hpux_spec.rb +0 -0
  596. data/spec/unit/provider/user/ldap_spec.rb +0 -0
  597. data/spec/unit/provider/user/openbsd_spec.rb +0 -0
  598. data/spec/unit/provider/user/pw_spec.rb +0 -0
  599. data/spec/unit/provider/user/user_role_add_spec.rb +0 -0
  600. data/spec/unit/provider/user/useradd_spec.rb +0 -0
  601. data/spec/unit/provider/user/windows_adsi_spec.rb +0 -0
  602. data/spec/unit/provider/vlan/cisco_spec.rb +0 -0
  603. data/spec/unit/provider/zfs/zfs_spec.rb +0 -0
  604. data/spec/unit/provider/zone/solaris_spec.rb +0 -0
  605. data/spec/unit/provider/zpool/zpool_spec.rb +0 -0
  606. data/spec/unit/provider_spec.rb +0 -0
  607. data/spec/unit/puppet_spec.rb +0 -0
  608. data/spec/unit/relationship_spec.rb +0 -0
  609. data/spec/unit/reports/http_spec.rb +0 -0
  610. data/spec/unit/reports/store_spec.rb +0 -0
  611. data/spec/unit/reports_spec.rb +0 -0
  612. data/spec/unit/resource/capability_finder_spec.rb +10 -2
  613. data/spec/unit/resource/catalog_spec.rb +27 -0
  614. data/spec/unit/resource/status_spec.rb +0 -0
  615. data/spec/unit/resource/type_collection_helper_spec.rb +0 -0
  616. data/spec/unit/resource/type_collection_spec.rb +0 -0
  617. data/spec/unit/resource/type_spec.rb +0 -0
  618. data/spec/unit/resource_spec.rb +0 -0
  619. data/spec/unit/settings/directory_setting_spec.rb +0 -0
  620. data/spec/unit/settings/duration_setting_spec.rb +0 -0
  621. data/spec/unit/settings/file_setting_spec.rb +6 -0
  622. data/spec/unit/settings/path_setting_spec.rb +0 -0
  623. data/spec/unit/settings/priority_setting_spec.rb +0 -0
  624. data/spec/unit/settings_spec.rb +1 -1
  625. data/spec/unit/ssl/base_spec.rb +0 -0
  626. data/spec/unit/ssl/certificate_authority/interface_spec.rb +0 -0
  627. data/spec/unit/ssl/certificate_authority_spec.rb +0 -0
  628. data/spec/unit/ssl/certificate_factory_spec.rb +0 -0
  629. data/spec/unit/ssl/certificate_request_spec.rb +0 -0
  630. data/spec/unit/ssl/certificate_revocation_list_spec.rb +0 -0
  631. data/spec/unit/ssl/certificate_spec.rb +0 -0
  632. data/spec/unit/ssl/configuration_spec.rb +0 -0
  633. data/spec/unit/ssl/host_spec.rb +0 -0
  634. data/spec/unit/ssl/inventory_spec.rb +0 -0
  635. data/spec/unit/ssl/key_spec.rb +0 -0
  636. data/spec/unit/status_spec.rb +0 -0
  637. data/spec/unit/transaction/additional_resource_generator_spec.rb +80 -65
  638. data/spec/unit/transaction/event_manager_spec.rb +0 -0
  639. data/spec/unit/transaction/event_spec.rb +0 -0
  640. data/spec/unit/transaction/report_spec.rb +0 -0
  641. data/spec/unit/transaction/resource_harness_spec.rb +0 -0
  642. data/spec/unit/transaction_spec.rb +0 -0
  643. data/spec/unit/type/augeas_spec.rb +0 -0
  644. data/spec/unit/type/component_spec.rb +0 -0
  645. data/spec/unit/type/computer_spec.rb +0 -0
  646. data/spec/unit/type/cron_spec.rb +0 -0
  647. data/spec/unit/type/exec_spec.rb +0 -0
  648. data/spec/unit/type/file/checksum_spec.rb +0 -0
  649. data/spec/unit/type/file/checksum_value_spec.rb +0 -0
  650. data/spec/unit/type/file/content_spec.rb +0 -0
  651. data/spec/unit/type/file/ctime_spec.rb +0 -0
  652. data/spec/unit/type/file/ensure_spec.rb +0 -0
  653. data/spec/unit/type/file/group_spec.rb +0 -0
  654. data/spec/unit/type/file/mode_spec.rb +0 -0
  655. data/spec/unit/type/file/mtime_spec.rb +0 -0
  656. data/spec/unit/type/file/owner_spec.rb +0 -0
  657. data/spec/unit/type/file/selinux_spec.rb +0 -0
  658. data/spec/unit/type/file/source_spec.rb +0 -0
  659. data/spec/unit/type/file/type_spec.rb +0 -0
  660. data/spec/unit/type/file_spec.rb +0 -0
  661. data/spec/unit/type/filebucket_spec.rb +0 -0
  662. data/spec/unit/type/group_spec.rb +0 -0
  663. data/spec/unit/type/host_spec.rb +0 -0
  664. data/spec/unit/type/interface_spec.rb +0 -0
  665. data/spec/unit/type/k5login_spec.rb +0 -0
  666. data/spec/unit/type/macauthorization_spec.rb +0 -0
  667. data/spec/unit/type/mailalias_spec.rb +0 -0
  668. data/spec/unit/type/maillist_spec.rb +0 -0
  669. data/spec/unit/type/mcx_spec.rb +0 -0
  670. data/spec/unit/type/mount_spec.rb +51 -10
  671. data/spec/unit/type/nagios_spec.rb +0 -0
  672. data/spec/unit/type/noop_metaparam_spec.rb +0 -0
  673. data/spec/unit/type/package/package_settings_spec.rb +0 -0
  674. data/spec/unit/type/package_spec.rb +0 -0
  675. data/spec/unit/type/resources_spec.rb +0 -0
  676. data/spec/unit/type/schedule_spec.rb +0 -0
  677. data/spec/unit/type/selboolean_spec.rb +0 -0
  678. data/spec/unit/type/selmodule_spec.rb +0 -0
  679. data/spec/unit/type/service_spec.rb +16 -0
  680. data/spec/unit/type/ssh_authorized_key_spec.rb +0 -0
  681. data/spec/unit/type/sshkey_spec.rb +0 -0
  682. data/spec/unit/type/stage_spec.rb +0 -0
  683. data/spec/unit/type/tidy_spec.rb +0 -0
  684. data/spec/unit/type/user_spec.rb +0 -0
  685. data/spec/unit/type/vlan_spec.rb +0 -0
  686. data/spec/unit/type/whit_spec.rb +0 -0
  687. data/spec/unit/type/yumrepo_spec.rb +0 -0
  688. data/spec/unit/type/zfs_spec.rb +0 -0
  689. data/spec/unit/type/zone_spec.rb +0 -0
  690. data/spec/unit/type/zpool_spec.rb +0 -0
  691. data/spec/unit/type_spec.rb +14 -0
  692. data/spec/unit/util/autoload_spec.rb +0 -0
  693. data/spec/unit/util/backups_spec.rb +0 -0
  694. data/spec/unit/util/checksums_spec.rb +0 -0
  695. data/spec/unit/util/colors_spec.rb +0 -0
  696. data/spec/unit/util/command_line_spec.rb +0 -0
  697. data/spec/unit/util/constant_inflector_spec.rb +0 -0
  698. data/spec/unit/util/diff_spec.rb +0 -0
  699. data/spec/unit/util/errors_spec.rb +0 -0
  700. data/spec/unit/util/execution_spec.rb +0 -0
  701. data/spec/unit/util/execution_stub_spec.rb +0 -0
  702. data/spec/unit/util/feature_spec.rb +1 -1
  703. data/spec/unit/util/filetype_spec.rb +0 -0
  704. data/spec/unit/util/ldap/connection_spec.rb +0 -0
  705. data/spec/unit/util/ldap/generator_spec.rb +0 -0
  706. data/spec/unit/util/ldap/manager_spec.rb +0 -0
  707. data/spec/unit/util/log/destinations_spec.rb +0 -0
  708. data/spec/unit/util/log_spec.rb +0 -0
  709. data/spec/unit/util/logging_spec.rb +0 -0
  710. data/spec/unit/util/metric_spec.rb +0 -0
  711. data/spec/unit/util/monkey_patches_spec.rb +79 -3
  712. data/spec/unit/util/nagios_maker_spec.rb +0 -0
  713. data/spec/unit/util/network_device/cisco/device_spec.rb +1 -1
  714. data/spec/unit/util/network_device/cisco/facts_spec.rb +0 -0
  715. data/spec/unit/util/network_device/cisco/interface_spec.rb +0 -0
  716. data/spec/unit/util/network_device/config_spec.rb +0 -0
  717. data/spec/unit/util/network_device/ipcalc_spec.rb +0 -0
  718. data/spec/unit/util/network_device/transport/base_spec.rb +0 -0
  719. data/spec/unit/util/network_device/transport/ssh_spec.rb +0 -0
  720. data/spec/unit/util/network_device/transport/telnet_spec.rb +0 -0
  721. data/spec/unit/util/package_spec.rb +0 -0
  722. data/spec/unit/util/posix_spec.rb +0 -0
  723. data/spec/unit/util/rdoc_spec.rb +0 -0
  724. data/spec/unit/util/resource_template_spec.rb +0 -0
  725. data/spec/unit/util/retry_action_spec.rb +0 -0
  726. data/spec/unit/util/run_mode_spec.rb +0 -0
  727. data/spec/unit/util/selinux_spec.rb +0 -0
  728. data/spec/unit/util/storage_spec.rb +0 -0
  729. data/spec/unit/util/suidmanager_spec.rb +0 -0
  730. data/spec/unit/util/symbolic_file_mode_spec.rb +0 -0
  731. data/spec/unit/util/tagging_spec.rb +0 -0
  732. data/spec/unit/util/user_attr_spec.rb +0 -0
  733. data/spec/unit/util/warnings_spec.rb +0 -0
  734. data/spec/unit/util/windows/adsi_spec.rb +0 -0
  735. data/spec/unit/util/windows/file_spec.rb +34 -0
  736. data/spec/unit/util/windows/root_certs_spec.rb +0 -0
  737. data/spec/unit/util/windows/sid_spec.rb +0 -0
  738. data/spec/unit/util_spec.rb +0 -0
  739. data/spec/watchr.rb +0 -0
  740. metadata +3402 -3337
  741. checksums.yaml +0 -7
  742. data/ext/puppet-nm-dispatcher +0 -13
  743. data/lib/puppet/pops/types/types_meta.rb +0 -0
  744. data/spec/integration/provider/package_spec.rb +0 -35
  745. data/spec/unit/data_providers/hiera_interpolation_spec.rb +0 -57
@@ -46,7 +46,98 @@ describe 'the static loader' do
46
46
  end
47
47
  end
48
48
 
49
+ context 'provides access to resource types built into puppet' do
50
+ let(:loader) { loader = Puppet::Pops::Loader::StaticLoader.new() }
51
+
52
+ %w{
53
+ Auegas
54
+ Component
55
+ Computer
56
+ Cron
57
+ Exec
58
+ File
59
+ Filebucket
60
+ Group
61
+ Host
62
+ Interface
63
+ K5login
64
+ Macauthorization
65
+ Mailalias
66
+ Maillist
67
+ Mcx
68
+ Mount
69
+ Nagios_command
70
+ Nagios_contact
71
+ Nagios_contactgroup
72
+ Nagios_host
73
+ Nagios_hostdependency
74
+ Nagios_hostescalation
75
+ Nagios_hostescalation
76
+ Nagios_hostgroup
77
+ Nagios_service
78
+ Nagios_servicedependency
79
+ Nagios_serviceescalation
80
+ Nagios_serviceextinfo
81
+ Nagios_servicegroup
82
+ Nagios_timeperiod
83
+ Notify
84
+ Package
85
+ Resources
86
+ Router
87
+ Schedule
88
+ Scheduled_task
89
+ Selboolean
90
+ Selmodule
91
+ Service
92
+ Ssh_authorized_key
93
+ Sshkey
94
+ Stage
95
+ Tidy
96
+ User
97
+ Vlan
98
+ Whit
99
+ Yumrepo
100
+ Zfs
101
+ Zone
102
+ Zpool
103
+ }.each do |name |
104
+ it "such that #{name} is available" do
105
+ expect(loader.load(:type, name.downcase)).to be_the_type(resource_type(name))
106
+ end
107
+ end
108
+ end
109
+
110
+ context 'provides access to app-management specific resource types built into puppet' do
111
+ before(:each) { Puppet[:app_management] = true }
112
+ after(:each) { Puppet[:app_management] = false }
113
+
114
+ let(:loader) { loader = Puppet::Pops::Loader::StaticLoader.new() }
115
+
116
+ %w{Node}.each do |name|
117
+ it "such that #{name} is avaiable" do
118
+ expect(loader.load(:type, name.downcase)).to be_the_type(resource_type(name))
119
+ end
120
+ end
121
+ end
122
+
49
123
  def typed_name(type, name)
50
124
  Puppet::Pops::Loader::Loader::TypedName.new(type, name)
51
125
  end
52
- end
126
+
127
+ def resource_type(name)
128
+ Puppet::Pops::Types::TypeFactory.resource(name)
129
+ end
130
+
131
+ matcher :be_the_type do |type|
132
+ calc = Puppet::Pops::Types::TypeCalculator.new
133
+
134
+ match do |actual|
135
+ calc.assignable?(actual, type) && calc.assignable?(type, actual)
136
+ end
137
+
138
+ failure_message do |actual|
139
+ "expected #{type.to_s}, but was #{actual.to_s}"
140
+ end
141
+ end
142
+
143
+ end
@@ -0,0 +1,313 @@
1
+ #! /usr/bin/env ruby
2
+ require 'spec_helper'
3
+ require 'puppet'
4
+ require 'puppet/data_providers/hiera_config'
5
+ require 'puppet/data_providers/hiera_interpolate'
6
+
7
+ module Puppet::Pops
8
+ describe 'Puppet::Pops::Lookup::Interpolation' do
9
+
10
+ let(:interpolator) { Class.new { include Lookup::Interpolation }.new }
11
+ let(:scope) { {} }
12
+ let(:lookup_invocation) { Lookup::Invocation.new(scope, {}, {}, nil) }
13
+
14
+ def expect_lookup(*keys)
15
+ keys.each { |key| Lookup.expects(:lookup).with(key, nil, '', true, nil, lookup_invocation).returns(data[key]) }
16
+ end
17
+
18
+ context 'when interpolating nested data' do
19
+ let(:nested_hash) { {'a' => {'aa' => "%{alias('aaa')}"}} }
20
+
21
+ let(:data) {
22
+ {
23
+ 'aaa' => {'b' => {'bb' => "%{alias('bbb')}"}},
24
+ 'bbb' => ["%{alias('ccc')}"],
25
+ 'ccc' => 'text'
26
+ }
27
+ }
28
+
29
+ it 'produces a nested hash with arrays from nested aliases with hashes and arrays' do
30
+ expect_lookup('aaa', 'bbb', 'ccc')
31
+ expect(interpolator.interpolate(nested_hash, lookup_invocation, true)).to eq('a' => {'aa' => {'b' => {'bb' => ['text']}}})
32
+ end
33
+ end
34
+
35
+ context 'when there are empty interpolations %{} in data' do
36
+
37
+ let(:empty_interpolation) { 'clown%{}shoe' }
38
+ let(:empty_interpolation_as_escape) { 'clown%%{}{shoe}s' }
39
+ let(:only_empty_interpolation) { '%{}' }
40
+ let(:empty_namespace) { '%{::}' }
41
+ let(:whitespace1) { '%{ :: }' }
42
+ let(:whitespace2) { '%{ }' }
43
+
44
+ it 'should produce an empty string for the interpolation' do
45
+ expect(interpolator.interpolate(empty_interpolation, lookup_invocation, true)).to eq('clownshoe')
46
+ end
47
+
48
+ it 'the empty interpolation can be used as an escape mechanism' do
49
+ expect(interpolator.interpolate(empty_interpolation_as_escape, lookup_invocation, true)).to eq('clown%{shoe}s')
50
+ end
51
+
52
+ it 'the value can consist of only an empty escape' do
53
+ expect(interpolator.interpolate(only_empty_interpolation, lookup_invocation, true)).to eq('')
54
+ end
55
+
56
+ it 'the value can consist of an empty namespace %{::}' do
57
+ expect(interpolator.interpolate(empty_namespace, lookup_invocation, true)).to eq('')
58
+ end
59
+
60
+ it 'the value can consist of whitespace %{ :: }' do
61
+ expect(interpolator.interpolate(whitespace1, lookup_invocation, true)).to eq('')
62
+ end
63
+
64
+ it 'the value can consist of whitespace %{ }' do
65
+ expect(interpolator.interpolate(whitespace2, lookup_invocation, true)).to eq('')
66
+ end
67
+ end
68
+
69
+ context 'when there are quoted empty interpolations %{} in data' do
70
+
71
+ let(:empty_interpolation) { 'clown%{""}shoe' }
72
+ let(:empty_interpolation_as_escape) { 'clown%%{""}{shoe}s' }
73
+ let(:only_empty_interpolation) { '%{""}' }
74
+ let(:empty_namespace) { '%{"::"}' }
75
+ let(:whitespace1) { '%{ "::" }' }
76
+ let(:whitespace2) { '%{ "" }' }
77
+
78
+ it 'should produce an empty string for the interpolation' do
79
+ expect(interpolator.interpolate(empty_interpolation, lookup_invocation, true)).to eq('clownshoe')
80
+ end
81
+
82
+ it 'the empty interpolation can be used as an escape mechanism' do
83
+ expect(interpolator.interpolate(empty_interpolation_as_escape, lookup_invocation, true)).to eq('clown%{shoe}s')
84
+ end
85
+
86
+ it 'the value can consist of only an empty escape' do
87
+ expect(interpolator.interpolate(only_empty_interpolation, lookup_invocation, true)).to eq('')
88
+ end
89
+
90
+ it 'the value can consist of an empty namespace %{"::"}' do
91
+ expect(interpolator.interpolate(empty_namespace, lookup_invocation, true)).to eq('')
92
+ end
93
+
94
+ it 'the value can consist of whitespace %{ "::" }' do
95
+ expect(interpolator.interpolate(whitespace1, lookup_invocation, true)).to eq('')
96
+ end
97
+
98
+ it 'the value can consist of whitespace %{ "" }' do
99
+ expect(interpolator.interpolate(whitespace2, lookup_invocation, true)).to eq('')
100
+ end
101
+ end
102
+
103
+
104
+ context 'when using dotted keys' do
105
+ let(:data) {
106
+ {
107
+ 'a.b' => '(lookup) a dot b',
108
+ 'a' => {
109
+ 'd' => '(lookup) a dot d is a hash entry',
110
+ 'd.x' => '(lookup) a dot d.x is a hash entry',
111
+ 'd.z' => {
112
+ 'g' => '(lookup) a dot d.z dot g is a hash entry'}
113
+ },
114
+ 'a.x' => {
115
+ 'd' => '(lookup) a.x dot d is a hash entry',
116
+ 'd.x' => '(lookup) a.x dot d.x is a hash entry',
117
+ 'd.z' => {
118
+ 'g' => '(lookup) a.x dot d.z dot g is a hash entry'
119
+ }
120
+ },
121
+ 'x.1' => '(lookup) x dot 1',
122
+ 'key' => 'subkey'
123
+ }
124
+ }
125
+
126
+ let(:scope) {
127
+ {
128
+ 'a.b' => '(scope) a dot b',
129
+ 'a' => {
130
+ 'd' => '(scope) a dot d is a hash entry',
131
+ 'd.x' => '(scope) a dot d.x is a hash entry',
132
+ 'd.z' => {
133
+ 'g' => '(scope) a dot d.z dot g is a hash entry'}
134
+ },
135
+ 'a.x' => {
136
+ 'd' => '(scope) a.x dot d is a hash entry',
137
+ 'd.x' => '(scope) a.x dot d.x is a hash entry',
138
+ 'd.z' => {
139
+ 'g' => '(scope) a.x dot d.z dot g is a hash entry'
140
+ }
141
+ },
142
+ 'x.1' => '(scope) x dot 1',
143
+ }
144
+ }
145
+
146
+ it 'should find an entry using a quoted interpolation' do
147
+ expect(interpolator.interpolate("a dot c: %{'a.b'}", lookup_invocation, true)).to eq('a dot c: (scope) a dot b')
148
+ end
149
+
150
+ it 'should find an entry using a quoted interpolation with method lookup' do
151
+ expect_lookup('a.b')
152
+ expect(interpolator.interpolate("a dot c: %{lookup(\"'a.b'\")}", lookup_invocation, true)).to eq('a dot c: (lookup) a dot b')
153
+ end
154
+
155
+ it 'should find an entry using a quoted interpolation with method alias' do
156
+ expect_lookup('a.b')
157
+ expect(interpolator.interpolate("%{alias(\"'a.b'\")}", lookup_invocation, true)).to eq('(lookup) a dot b')
158
+ end
159
+
160
+ it 'should use a dotted key to navigate into a structure when it is not quoted' do
161
+ expect(interpolator.interpolate('a dot e: %{a.d}', lookup_invocation, true)).to eq('a dot e: (scope) a dot d is a hash entry')
162
+ end
163
+
164
+ it 'should use a dotted key to navigate into a structure when when it is not quoted with method lookup' do
165
+ expect_lookup('a')
166
+ expect(interpolator.interpolate("a dot e: %{lookup('a.d')}", lookup_invocation, true)).to eq('a dot e: (lookup) a dot d is a hash entry')
167
+ end
168
+
169
+ it 'should use a mix of quoted and dotted keys to navigate into a structure containing dotted keys and quoted key is last' do
170
+ expect(interpolator.interpolate("a dot ex: %{a.'d.x'}", lookup_invocation, true)).to eq('a dot ex: (scope) a dot d.x is a hash entry')
171
+ end
172
+
173
+ it 'should use a mix of quoted and dotted keys to navigate into a structure containing dotted keys and quoted key is last and method is lookup' do
174
+ expect_lookup('a')
175
+ expect(interpolator.interpolate("a dot ex: %{lookup(\"a.'d.x'\")}", lookup_invocation, true)).to eq('a dot ex: (lookup) a dot d.x is a hash entry')
176
+ end
177
+
178
+ it 'should use a mix of quoted and dotted keys to navigate into a structure containing dotted keys and quoted key is first' do
179
+ expect(interpolator.interpolate("a dot xe: %{'a.x'.d}", lookup_invocation, true)).to eq('a dot xe: (scope) a.x dot d is a hash entry')
180
+ end
181
+
182
+ it 'should use a mix of quoted and dotted keys to navigate into a structure containing dotted keys and quoted key is first and method is lookup' do
183
+ expect_lookup('a.x')
184
+ expect(interpolator.interpolate("a dot xe: %{lookup(\"'a.x'.d\")}", lookup_invocation, true)).to eq('a dot xe: (lookup) a.x dot d is a hash entry')
185
+ end
186
+
187
+ it 'should use a mix of quoted and dotted keys to navigate into a structure containing dotted keys and quoted key is in the middle' do
188
+ expect(interpolator.interpolate("a dot xm: %{a.'d.z'.g}", lookup_invocation, true)).to eq('a dot xm: (scope) a dot d.z dot g is a hash entry')
189
+ end
190
+
191
+ it 'should use a mix of quoted and dotted keys to navigate into a structure containing dotted keys and quoted key is in the middle and method is lookup' do
192
+ expect_lookup('a')
193
+ expect(interpolator.interpolate("a dot xm: %{lookup(\"a.'d.z'.g\")}", lookup_invocation, true)).to eq('a dot xm: (lookup) a dot d.z dot g is a hash entry')
194
+ end
195
+
196
+ it 'should use a mix of several quoted and dotted keys to navigate into a structure containing dotted keys and quoted key is in the middle' do
197
+ expect(interpolator.interpolate("a dot xx: %{'a.x'.'d.z'.g}", lookup_invocation, true)).to eq('a dot xx: (scope) a.x dot d.z dot g is a hash entry')
198
+ end
199
+
200
+ it 'should use a mix of several quoted and dotted keys to navigate into a structure containing dotted keys and quoted key is in the middle and method is lookup' do
201
+ expect_lookup('a.x')
202
+ expect(interpolator.interpolate("a dot xx: %{lookup(\"'a.x'.'d.z'.g\")}", lookup_invocation, true)).to eq('a dot xx: (lookup) a.x dot d.z dot g is a hash entry')
203
+ end
204
+
205
+ it 'should find an entry using using a quoted interpolation on dotted key containing numbers' do
206
+ expect(interpolator.interpolate("x dot 2: %{'x.1'}", lookup_invocation, true)).to eq('x dot 2: (scope) x dot 1')
207
+ end
208
+
209
+ it 'should find an entry using using a quoted interpolation on dotted key containing numbers using method lookup' do
210
+ expect_lookup('x.1')
211
+ expect(interpolator.interpolate("x dot 2: %{lookup(\"'x.1'\")}", lookup_invocation, true)).to eq('x dot 2: (lookup) x dot 1')
212
+ end
213
+
214
+ it 'should not find a subkey when the dotted key is quoted' do
215
+ expect(interpolator.interpolate("a dot f: %{'a.d'}", lookup_invocation, true)).to eq('a dot f: ')
216
+ end
217
+
218
+ it 'should not find a subkey when the dotted key is quoted with method lookup' do
219
+ expect_lookup('a.d')
220
+ expect(interpolator.interpolate("a dot f: %{lookup(\"'a.d'\")}", lookup_invocation, true)).to eq('a dot f: ')
221
+ end
222
+
223
+ it 'should not find a subkey that is matched within a string' do
224
+ expect_lookup('key')
225
+ expect{ interpolator.interpolate('%{hiera("key.subkey")}', lookup_invocation, true) }.to raise_error(/Got String when a hash-like object was expected to access value using 'subkey' from key 'key.subkey'/)
226
+ end
227
+ end
228
+
229
+ context 'when dealing with non alphanumeric characters' do
230
+ let(:data) {
231
+ {
232
+ 'a key with whitespace' => 'value for a ws key',
233
+ 'ws_key' => '%{alias("a key with whitespace")}',
234
+ '\#@!&%|' => 'not happy',
235
+ 'angry' => '%{alias("\#@!&%|")}',
236
+ '!$\%!' => {
237
+ '\#@!&%|' => 'not happy at all'
238
+ },
239
+ 'very_angry' => '%{alias("!$\%!.\#@!&%|")}',
240
+ 'a key with' => {
241
+ 'nested whitespace' => 'value for nested ws key',
242
+ ' untrimmed whitespace ' => 'value for untrimmed ws key'
243
+ }
244
+ }
245
+ }
246
+
247
+ it 'allows keys with white space' do
248
+ expect_lookup('ws_key', 'a key with whitespace')
249
+ expect(interpolator.interpolate("%{lookup('ws_key')}", lookup_invocation, true)).to eq('value for a ws key')
250
+ end
251
+
252
+ it 'allows keys with non alphanumeric characters' do
253
+ expect_lookup('angry', '\#@!&%|')
254
+ expect(interpolator.interpolate("%{lookup('angry')}", lookup_invocation, true)).to eq('not happy')
255
+ end
256
+
257
+ it 'allows dotted keys with non alphanumeric characters' do
258
+ expect_lookup('very_angry', '!$\%!')
259
+ expect(interpolator.interpolate("%{lookup('very_angry')}", lookup_invocation, true)).to eq('not happy at all')
260
+ end
261
+
262
+ it 'allows dotted keys with nested white space' do
263
+ expect_lookup('a key with')
264
+ expect(interpolator.interpolate("%{lookup('a key with.nested whitespace')}", lookup_invocation, true)).to eq('value for nested ws key')
265
+ end
266
+
267
+ it 'will trim each key element' do
268
+ expect_lookup('a key with')
269
+ expect(interpolator.interpolate("%{lookup(' a key with . nested whitespace ')}", lookup_invocation, true)).to eq('value for nested ws key')
270
+ end
271
+
272
+ it 'will not trim quoted key element' do
273
+ expect_lookup('a key with')
274
+ expect(interpolator.interpolate("%{lookup(' a key with .\" untrimmed whitespace \"')}", lookup_invocation, true)).to eq('value for untrimmed ws key')
275
+ end
276
+
277
+ it 'will not trim spaces outside of quoted key element' do
278
+ expect_lookup('a key with')
279
+ expect(interpolator.interpolate("%{lookup(' a key with . \" untrimmed whitespace \" ')}", lookup_invocation, true)).to eq('value for untrimmed ws key')
280
+ end
281
+ end
282
+
283
+ context 'when dealing with bad keys' do
284
+ it 'should produce an error when different quotes are used on either side' do
285
+ expect { interpolator.interpolate("%{'the.key\"}", lookup_invocation, true)}.to raise_error("Syntax error in string: %{'the.key\"}")
286
+ end
287
+
288
+ it 'should produce an if there is only one quote' do
289
+ expect { interpolator.interpolate("%{the.'key}", lookup_invocation, true)}.to raise_error("Syntax error in string: %{the.'key}")
290
+ end
291
+
292
+ it 'should produce an error for an empty segment' do
293
+ expect { interpolator.interpolate('%{the..key}', lookup_invocation, true)}.to raise_error("Syntax error in string: %{the..key}")
294
+ end
295
+
296
+ it 'should produce an error for an empty quoted segment' do
297
+ expect { interpolator.interpolate("%{the.''.key}", lookup_invocation, true)}.to raise_error("Syntax error in string: %{the.''.key}")
298
+ end
299
+
300
+ it 'should produce an error for an partly quoted segment' do
301
+ expect { interpolator.interpolate("%{the.'pa'key}", lookup_invocation, true)}.to raise_error("Syntax error in string: %{the.'pa'key}")
302
+ end
303
+
304
+ it 'should produce an error when different quotes are used on either side in a method argument' do
305
+ expect { interpolator.interpolate("%{lookup('the.key\")}", lookup_invocation, true)}.to raise_error("Syntax error in string: %{lookup('the.key\")}")
306
+ end
307
+
308
+ it 'should produce an error unless a known interpolation method is used' do
309
+ expect { interpolator.interpolate("%{flubber(\"hello\")}", lookup_invocation, true)}.to raise_error("Unknown interpolation method 'flubber'")
310
+ end
311
+ end
312
+ end
313
+ end
@@ -2,7 +2,6 @@ require 'spec_helper'
2
2
  require 'matchers/match_tokens2'
3
3
  require 'puppet/pops'
4
4
  require 'puppet/pops/parser/lexer2'
5
- require_relative './parser_rspec_helper'
6
5
 
7
6
  module EgrammarLexer2Spec
8
7
  def tokens_scanned_from(s)
@@ -20,7 +19,6 @@ end
20
19
 
21
20
  describe 'Lexer2' do
22
21
  include EgrammarLexer2Spec
23
- include ParserRspecHelper
24
22
 
25
23
  {
26
24
  :LISTSTART => '[',
@@ -116,13 +114,8 @@ describe 'Lexer2' do
116
114
  end
117
115
 
118
116
  context 'when app_managment is (turned) on' do
119
- before(:each) do
120
- with_app_management(true)
121
- end
122
-
123
- after(:each) do
124
- with_app_management(false)
125
- end
117
+ before(:each) { Puppet[:app_management] = true }
118
+ after(:each) { Puppet[:app_management] = false }
126
119
 
127
120
  {
128
121
  "application" => :APPLICATION,
@@ -1,18 +1,13 @@
1
1
  #! /usr/bin/env ruby
2
2
  require 'spec_helper'
3
3
  require 'puppet/pops'
4
- require_relative './parser_rspec_helper'
4
+ require_relative 'parser_rspec_helper'
5
5
 
6
6
  describe "egrammar parsing of 'application'" do
7
7
  include ParserRspecHelper
8
8
 
9
- before(:each) do
10
- with_app_management(true)
11
- end
12
-
13
- after(:each) do
14
- with_app_management(false)
15
- end
9
+ before(:each) { Puppet[:app_management] = true }
10
+ after(:each) { Puppet[:app_management] = false }
16
11
 
17
12
  it "an empty body" do
18
13
  expect(dump(parse("application foo { }"))).to eq("(application foo () ())")
@@ -168,6 +168,25 @@ describe "egrammar parsing basic expressions" do
168
168
  expect(parse("[]").current.body.length).to eq(2)
169
169
  expect(parse("[ ]").current.body.length).to eq(3)
170
170
  end
171
+
172
+ {
173
+ 'keyword' => %w(type function),
174
+ 'reserved word' => %w(application site produces consumes)
175
+ }.each_pair do |word_type, words|
176
+ words.each do |word|
177
+ it "allows the #{word_type} '#{word}' in a list" do
178
+ expect(dump(parse("$a = [#{word}]"))).to(eq("(= $a ([] '#{word}'))"))
179
+ end
180
+
181
+ it "allows the #{word_type} '#{word}' as a key in a hash" do
182
+ expect(dump(parse("$a = {#{word}=>'x'}"))).to(eq("(= $a ({} ('#{word}' 'x')))"))
183
+ end
184
+
185
+ it "allows the #{word_type} '#{word}' as a value in a hash" do
186
+ expect(dump(parse("$a = {'x'=>#{word}}"))).to(eq("(= $a ({} ('x' '#{word}')))"))
187
+ end
188
+ end
189
+ end
171
190
  end
172
191
 
173
192
  context "When parsing indexed access" do
@@ -1,20 +1,13 @@
1
1
  #! /usr/bin/env ruby
2
2
  require 'spec_helper'
3
3
  require 'puppet/pops'
4
-
5
- # relative to this spec file (./) does not work as this file is loaded by rspec
6
- require File.join(File.dirname(__FILE__), '/parser_rspec_helper')
4
+ require_relative 'parser_rspec_helper'
7
5
 
8
6
  describe "egrammar parsing of capability mappings" do
9
7
  include ParserRspecHelper
10
8
 
11
- before(:each) do
12
- with_app_management(true)
13
- end
14
-
15
- after(:each) do
16
- with_app_management(false)
17
- end
9
+ before(:each) { Puppet[:app_management] = true }
10
+ after(:each) { Puppet[:app_management] = false }
18
11
 
19
12
  context "when parsing 'produces'" do
20
13
  it "the ast contains produces and attributes" do
@@ -1,20 +1,13 @@
1
1
  #! /usr/bin/env ruby
2
2
  require 'spec_helper'
3
3
  require 'puppet/pops'
4
-
5
- # relative to this spec file (./) does not work as this file is loaded by rspec
6
- require File.join(File.dirname(__FILE__), '/parser_rspec_helper')
4
+ require_relative 'parser_rspec_helper'
7
5
 
8
6
  describe "egrammar parsing of site expression" do
9
7
  include ParserRspecHelper
10
8
 
11
- before(:each) do
12
- with_app_management(true)
13
- end
14
-
15
- after(:each) do
16
- with_app_management(false)
17
- end
9
+ before(:each) { Puppet[:app_management] = true }
10
+ after(:each) { Puppet[:app_management] = false }
18
11
 
19
12
  context "when parsing 'site'" do
20
13
  it "an empty body is allowed" do
@@ -35,4 +28,20 @@ describe "egrammar parsing of site expression" do
35
28
  expect(dump(parse(prog))).to eq(ast)
36
29
  end
37
30
  end
31
+
32
+ context 'When parsing collections containing application management specific keywords' do
33
+ %w(application site produces consumes).each do |keyword|
34
+ it "allows the keyword '#{keyword}' in a list" do
35
+ expect(dump(parse("$a = [#{keyword}]"))).to(eq("(= $a ([] '#{keyword}'))"))
36
+ end
37
+
38
+ it "allows the keyword '#{keyword}' as a key in a hash" do
39
+ expect(dump(parse("$a = {#{keyword}=>'x'}"))).to(eq("(= $a ({} ('#{keyword}' 'x')))"))
40
+ end
41
+
42
+ it "allows the keyword '#{keyword}' as a value in a hash" do
43
+ expect(dump(parse("$a = {'x'=>#{keyword}}"))).to(eq("(= $a ({} ('x' '#{keyword}')))"))
44
+ end
45
+ end
46
+ end
38
47
  end
@@ -5,10 +5,6 @@ require File.join(File.dirname(__FILE__), '/../factory_rspec_helper')
5
5
  module ParserRspecHelper
6
6
  include FactoryRspecHelper
7
7
 
8
- def with_app_management(flag)
9
- Puppet[:app_management] = flag
10
- end
11
-
12
8
  def parse(code)
13
9
  parser = Puppet::Pops::Parser::Parser.new()
14
10
  parser.parse_string(code)
@@ -1,50 +1,51 @@
1
1
  require 'spec_helper'
2
2
  require 'puppet/pops'
3
3
 
4
+ module Puppet::Pops::Types
4
5
  describe 'The enumeration support' do
5
6
  it 'produces an enumerator for Array' do
6
- expect(Puppet::Pops::Types::Enumeration.enumerator([1,2,3]).respond_to?(:next)).to eql(true)
7
+ expect(Enumeration.enumerator([1,2,3]).respond_to?(:next)).to eql(true)
7
8
  end
8
9
 
9
10
  it 'produces an enumerator for Hash' do
10
- expect(Puppet::Pops::Types::Enumeration.enumerator({:a=>1}).respond_to?(:next)).to eql(true)
11
+ expect(Enumeration.enumerator({:a=>1}).respond_to?(:next)).to eql(true)
11
12
  end
12
13
 
13
14
  it 'produces a char enumerator for String' do
14
- enum = Puppet::Pops::Types::Enumeration.enumerator("abc")
15
+ enum = Enumeration.enumerator("abc")
15
16
  expect(enum.respond_to?(:next)).to eql(true)
16
17
  expect(enum.next).to eql('a')
17
18
  end
18
19
 
19
20
  it 'produces an enumerator for integer times' do
20
- enum = Puppet::Pops::Types::Enumeration.enumerator(2)
21
+ enum = Enumeration.enumerator(2)
21
22
  expect(enum.next).to eql(0)
22
23
  expect(enum.next).to eql(1)
23
24
  expect{enum.next}.to raise_error(StopIteration)
24
25
  end
25
26
 
26
27
  it 'produces an enumerator for Integer range' do
27
- range = Puppet::Pops::Types::TypeFactory.range(1,2)
28
- enum = Puppet::Pops::Types::Enumeration.enumerator(range)
28
+ range = TypeFactory.range(1,2)
29
+ enum = Enumeration.enumerator(range)
29
30
  expect(enum.next).to eql(1)
30
31
  expect(enum.next).to eql(2)
31
32
  expect{enum.next}.to raise_error(StopIteration)
32
33
  end
33
34
 
34
35
  it 'does not produce an enumerator for infinite Integer range' do
35
- range = Puppet::Pops::Types::TypeFactory.range(1,:default)
36
- enum = Puppet::Pops::Types::Enumeration.enumerator(range)
36
+ range = TypeFactory.range(1,:default)
37
+ enum = Enumeration.enumerator(range)
37
38
  expect(enum).to be_nil
38
- range = Puppet::Pops::Types::TypeFactory.range(:default,2)
39
- enum = Puppet::Pops::Types::Enumeration.enumerator(range)
39
+ range = TypeFactory.range(:default,2)
40
+ enum = Enumeration.enumerator(range)
40
41
  expect(enum).to be_nil
41
42
  end
42
43
 
43
44
  [3.14, /.*/, true, false, nil, :something].each do |x|
44
45
  it "does not produce an enumerator for object of type #{x.class}" do
45
- enum = Puppet::Pops::Types::Enumeration.enumerator(x)
46
+ enum = Enumeration.enumerator(x)
46
47
  expect(enum).to be_nil
47
48
  end
48
49
  end
49
-
50
+ end
50
51
  end
@@ -256,7 +256,7 @@ describe 'The iterable support' do
256
256
  end
257
257
 
258
258
  it 'will produce the string Iterator[T] on to_s on an iterator instance with element type T' do
259
- expect(Iterable.on(18).to_s).to eq('Iterator[Integer] value')
259
+ expect(Iterable.on(18).to_s).to eq('Iterator[Integer]-Value')
260
260
  end
261
261
  end
262
- end
262
+ end