puppet 8.3.1-x86-mingw32 → 8.5.0-x86-mingw32

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 (2270) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -1
  3. data/Gemfile.lock +89 -64
  4. data/README.md +4 -4
  5. data/Rakefile +0 -27
  6. data/examples/enc/regexp_nodes/regexp_nodes.rb +1 -1
  7. data/ext/project_data.yaml +4 -4
  8. data/ext/windows/service/daemon.rb +12 -13
  9. data/lib/hiera/puppet_function.rb +7 -6
  10. data/lib/hiera/scope.rb +6 -5
  11. data/lib/hiera_puppet.rb +1 -4
  12. data/lib/puppet/agent/disabler.rb +4 -3
  13. data/lib/puppet/agent/locker.rb +1 -2
  14. data/lib/puppet/agent.rb +5 -4
  15. data/lib/puppet/application/agent.rb +301 -298
  16. data/lib/puppet/application/apply.rb +118 -114
  17. data/lib/puppet/application/catalog.rb +1 -0
  18. data/lib/puppet/application/config.rb +1 -0
  19. data/lib/puppet/application/describe.rb +40 -42
  20. data/lib/puppet/application/device.rb +122 -122
  21. data/lib/puppet/application/doc.rb +51 -50
  22. data/lib/puppet/application/epp.rb +1 -0
  23. data/lib/puppet/application/face_base.rb +10 -10
  24. data/lib/puppet/application/facts.rb +1 -0
  25. data/lib/puppet/application/filebucket.rb +168 -166
  26. data/lib/puppet/application/generate.rb +2 -1
  27. data/lib/puppet/application/help.rb +1 -0
  28. data/lib/puppet/application/indirection_base.rb +1 -0
  29. data/lib/puppet/application/lookup.rb +171 -174
  30. data/lib/puppet/application/module.rb +1 -0
  31. data/lib/puppet/application/node.rb +1 -0
  32. data/lib/puppet/application/parser.rb +1 -0
  33. data/lib/puppet/application/plugin.rb +1 -0
  34. data/lib/puppet/application/report.rb +1 -0
  35. data/lib/puppet/application/resource.rb +95 -92
  36. data/lib/puppet/application/script.rb +73 -74
  37. data/lib/puppet/application/ssl.rb +89 -88
  38. data/lib/puppet/application.rb +16 -15
  39. data/lib/puppet/application_support.rb +2 -2
  40. data/lib/puppet/coercion.rb +3 -2
  41. data/lib/puppet/compilable_resource_type.rb +3 -2
  42. data/lib/puppet/concurrent/lock.rb +1 -3
  43. data/lib/puppet/concurrent/synchronized.rb +1 -2
  44. data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
  45. data/lib/puppet/concurrent.rb +1 -0
  46. data/lib/puppet/configurer/downloader.rb +1 -1
  47. data/lib/puppet/configurer/fact_handler.rb +5 -4
  48. data/lib/puppet/configurer/plugin_handler.rb +1 -0
  49. data/lib/puppet/configurer.rb +24 -19
  50. data/lib/puppet/confine/any.rb +2 -1
  51. data/lib/puppet/confine/boolean.rb +2 -1
  52. data/lib/puppet/confine/exists.rb +2 -1
  53. data/lib/puppet/confine/false.rb +2 -1
  54. data/lib/puppet/confine/feature.rb +2 -2
  55. data/lib/puppet/confine/true.rb +2 -1
  56. data/lib/puppet/confine/variable.rb +2 -1
  57. data/lib/puppet/confine.rb +2 -0
  58. data/lib/puppet/confine_collection.rb +4 -2
  59. data/lib/puppet/confiner.rb +1 -0
  60. data/lib/puppet/context/trusted_information.rb +5 -4
  61. data/lib/puppet/context.rb +1 -0
  62. data/lib/puppet/daemon.rb +10 -7
  63. data/lib/puppet/data_binding.rb +2 -1
  64. data/lib/puppet/datatypes/error.rb +2 -1
  65. data/lib/puppet/datatypes/impl/error.rb +1 -0
  66. data/lib/puppet/datatypes.rb +8 -3
  67. data/lib/puppet/defaults.rb +31 -30
  68. data/lib/puppet/environments.rb +10 -9
  69. data/lib/puppet/error.rb +15 -12
  70. data/lib/puppet/etc.rb +9 -5
  71. data/lib/puppet/external/dot.rb +28 -47
  72. data/lib/puppet/face/catalog/select.rb +3 -2
  73. data/lib/puppet/face/catalog.rb +3 -2
  74. data/lib/puppet/face/config.rb +19 -21
  75. data/lib/puppet/face/epp.rb +14 -14
  76. data/lib/puppet/face/facts.rb +5 -4
  77. data/lib/puppet/face/generate.rb +3 -1
  78. data/lib/puppet/face/help.rb +24 -27
  79. data/lib/puppet/face/module/changes.rb +2 -0
  80. data/lib/puppet/face/module/install.rb +6 -4
  81. data/lib/puppet/face/module/list.rb +14 -16
  82. data/lib/puppet/face/module/uninstall.rb +1 -0
  83. data/lib/puppet/face/module/upgrade.rb +4 -3
  84. data/lib/puppet/face/module.rb +1 -0
  85. data/lib/puppet/face/node/clean.rb +2 -1
  86. data/lib/puppet/face/node.rb +2 -1
  87. data/lib/puppet/face/parser.rb +8 -8
  88. data/lib/puppet/face/plugin.rb +2 -1
  89. data/lib/puppet/face/report.rb +2 -1
  90. data/lib/puppet/face/resource.rb +1 -0
  91. data/lib/puppet/face.rb +1 -0
  92. data/lib/puppet/feature/base.rb +4 -3
  93. data/lib/puppet/feature/bolt.rb +1 -0
  94. data/lib/puppet/feature/cfpropertylist.rb +1 -0
  95. data/lib/puppet/feature/eventlog.rb +1 -0
  96. data/lib/puppet/feature/hiera_eyaml.rb +1 -0
  97. data/lib/puppet/feature/hocon.rb +1 -0
  98. data/lib/puppet/feature/libuser.rb +4 -3
  99. data/lib/puppet/feature/msgpack.rb +1 -0
  100. data/lib/puppet/feature/pe_license.rb +2 -1
  101. data/lib/puppet/feature/pson.rb +1 -0
  102. data/lib/puppet/feature/selinux.rb +1 -0
  103. data/lib/puppet/feature/ssh.rb +1 -0
  104. data/lib/puppet/feature/telnet.rb +1 -0
  105. data/lib/puppet/feature/zlib.rb +1 -0
  106. data/lib/puppet/ffi/posix/constants.rb +2 -1
  107. data/lib/puppet/ffi/posix/functions.rb +1 -1
  108. data/lib/puppet/ffi/posix.rb +1 -0
  109. data/lib/puppet/ffi/windows/api_types.rb +1 -0
  110. data/lib/puppet/ffi/windows/constants.rb +78 -77
  111. data/lib/puppet/ffi/windows/functions.rb +73 -73
  112. data/lib/puppet/ffi/windows/structs.rb +3 -3
  113. data/lib/puppet/ffi/windows.rb +1 -0
  114. data/lib/puppet/file_bucket/dipper.rb +15 -7
  115. data/lib/puppet/file_bucket/file.rb +3 -2
  116. data/lib/puppet/file_bucket.rb +1 -0
  117. data/lib/puppet/file_serving/base.rb +13 -6
  118. data/lib/puppet/file_serving/configuration/parser.rb +3 -1
  119. data/lib/puppet/file_serving/configuration.rb +6 -4
  120. data/lib/puppet/file_serving/content.rb +1 -0
  121. data/lib/puppet/file_serving/fileset.rb +9 -6
  122. data/lib/puppet/file_serving/http_metadata.rb +2 -4
  123. data/lib/puppet/file_serving/metadata.rb +13 -15
  124. data/lib/puppet/file_serving/mount/file.rb +6 -3
  125. data/lib/puppet/file_serving/mount/locales.rb +2 -1
  126. data/lib/puppet/file_serving/mount/modules.rb +2 -0
  127. data/lib/puppet/file_serving/mount/pluginfacts.rb +2 -1
  128. data/lib/puppet/file_serving/mount/plugins.rb +2 -1
  129. data/lib/puppet/file_serving/mount/scripts.rb +2 -0
  130. data/lib/puppet/file_serving/mount/tasks.rb +2 -0
  131. data/lib/puppet/file_serving/mount.rb +2 -0
  132. data/lib/puppet/file_serving/terminus_helper.rb +1 -0
  133. data/lib/puppet/file_serving/terminus_selector.rb +2 -1
  134. data/lib/puppet/file_serving.rb +1 -0
  135. data/lib/puppet/file_system/file_impl.rb +6 -6
  136. data/lib/puppet/file_system/jruby.rb +1 -0
  137. data/lib/puppet/file_system/memory_file.rb +2 -0
  138. data/lib/puppet/file_system/memory_impl.rb +3 -0
  139. data/lib/puppet/file_system/path_pattern.rb +1 -0
  140. data/lib/puppet/file_system/posix.rb +5 -1
  141. data/lib/puppet/file_system/uniquefile.rb +15 -15
  142. data/lib/puppet/file_system/windows.rb +11 -9
  143. data/lib/puppet/file_system.rb +4 -3
  144. data/lib/puppet/forge/cache.rb +2 -2
  145. data/lib/puppet/forge/errors.rb +1 -3
  146. data/lib/puppet/forge/repository.rb +3 -1
  147. data/lib/puppet/forge.rb +6 -3
  148. data/lib/puppet/functions/abs.rb +6 -4
  149. data/lib/puppet/functions/alert.rb +1 -0
  150. data/lib/puppet/functions/all.rb +2 -1
  151. data/lib/puppet/functions/annotate.rb +1 -0
  152. data/lib/puppet/functions/any.rb +2 -1
  153. data/lib/puppet/functions/assert_type.rb +4 -2
  154. data/lib/puppet/functions/binary_file.rb +3 -1
  155. data/lib/puppet/functions/break.rb +3 -2
  156. data/lib/puppet/functions/call.rb +1 -1
  157. data/lib/puppet/functions/camelcase.rb +3 -3
  158. data/lib/puppet/functions/capitalize.rb +3 -3
  159. data/lib/puppet/functions/ceiling.rb +2 -2
  160. data/lib/puppet/functions/chomp.rb +2 -2
  161. data/lib/puppet/functions/chop.rb +2 -2
  162. data/lib/puppet/functions/compare.rb +2 -1
  163. data/lib/puppet/functions/contain.rb +6 -4
  164. data/lib/puppet/functions/convert_to.rb +1 -0
  165. data/lib/puppet/functions/crit.rb +1 -0
  166. data/lib/puppet/functions/debug.rb +1 -0
  167. data/lib/puppet/functions/defined.rb +7 -4
  168. data/lib/puppet/functions/dig.rb +11 -9
  169. data/lib/puppet/functions/downcase.rb +3 -2
  170. data/lib/puppet/functions/each.rb +1 -0
  171. data/lib/puppet/functions/emerg.rb +1 -0
  172. data/lib/puppet/functions/empty.rb +1 -0
  173. data/lib/puppet/functions/epp.rb +1 -1
  174. data/lib/puppet/functions/err.rb +1 -0
  175. data/lib/puppet/functions/eyaml_lookup_key.rb +5 -3
  176. data/lib/puppet/functions/filter.rb +7 -7
  177. data/lib/puppet/functions/find_file.rb +1 -0
  178. data/lib/puppet/functions/find_template.rb +1 -0
  179. data/lib/puppet/functions/flatten.rb +1 -0
  180. data/lib/puppet/functions/floor.rb +2 -2
  181. data/lib/puppet/functions/get.rb +2 -1
  182. data/lib/puppet/functions/getvar.rb +6 -5
  183. data/lib/puppet/functions/group_by.rb +2 -2
  184. data/lib/puppet/functions/hiera.rb +1 -0
  185. data/lib/puppet/functions/hiera_array.rb +1 -0
  186. data/lib/puppet/functions/hiera_hash.rb +1 -0
  187. data/lib/puppet/functions/hiera_include.rb +2 -0
  188. data/lib/puppet/functions/hocon_data.rb +1 -0
  189. data/lib/puppet/functions/import.rb +1 -0
  190. data/lib/puppet/functions/include.rb +4 -2
  191. data/lib/puppet/functions/index.rb +3 -3
  192. data/lib/puppet/functions/info.rb +1 -0
  193. data/lib/puppet/functions/inline_epp.rb +1 -1
  194. data/lib/puppet/functions/join.rb +3 -2
  195. data/lib/puppet/functions/json_data.rb +1 -0
  196. data/lib/puppet/functions/keys.rb +1 -0
  197. data/lib/puppet/functions/length.rb +1 -1
  198. data/lib/puppet/functions/lest.rb +1 -0
  199. data/lib/puppet/functions/lookup.rb +10 -11
  200. data/lib/puppet/functions/lstrip.rb +2 -2
  201. data/lib/puppet/functions/map.rb +3 -2
  202. data/lib/puppet/functions/match.rb +7 -5
  203. data/lib/puppet/functions/max.rb +6 -6
  204. data/lib/puppet/functions/min.rb +6 -6
  205. data/lib/puppet/functions/module_directory.rb +1 -0
  206. data/lib/puppet/functions/new.rb +2 -1
  207. data/lib/puppet/functions/next.rb +2 -1
  208. data/lib/puppet/functions/notice.rb +1 -0
  209. data/lib/puppet/functions/reduce.rb +1 -1
  210. data/lib/puppet/functions/regsubst.rb +1 -0
  211. data/lib/puppet/functions/require.rb +5 -2
  212. data/lib/puppet/functions/return.rb +1 -0
  213. data/lib/puppet/functions/reverse_each.rb +1 -0
  214. data/lib/puppet/functions/round.rb +1 -0
  215. data/lib/puppet/functions/rstrip.rb +2 -2
  216. data/lib/puppet/functions/scanf.rb +1 -0
  217. data/lib/puppet/functions/size.rb +1 -2
  218. data/lib/puppet/functions/slice.rb +3 -1
  219. data/lib/puppet/functions/sort.rb +1 -0
  220. data/lib/puppet/functions/split.rb +1 -0
  221. data/lib/puppet/functions/step.rb +1 -0
  222. data/lib/puppet/functions/strftime.rb +4 -3
  223. data/lib/puppet/functions/strip.rb +2 -2
  224. data/lib/puppet/functions/then.rb +2 -0
  225. data/lib/puppet/functions/tree_each.rb +3 -3
  226. data/lib/puppet/functions/type.rb +1 -0
  227. data/lib/puppet/functions/unique.rb +9 -8
  228. data/lib/puppet/functions/unwrap.rb +1 -0
  229. data/lib/puppet/functions/upcase.rb +3 -2
  230. data/lib/puppet/functions/values.rb +1 -0
  231. data/lib/puppet/functions/versioncmp.rb +2 -2
  232. data/lib/puppet/functions/warning.rb +1 -0
  233. data/lib/puppet/functions/with.rb +1 -0
  234. data/lib/puppet/functions/yaml_data.rb +1 -0
  235. data/lib/puppet/functions.rb +26 -26
  236. data/lib/puppet/generate/models/type/property.rb +3 -1
  237. data/lib/puppet/generate/models/type/type.rb +4 -2
  238. data/lib/puppet/generate/type.rb +9 -4
  239. data/lib/puppet/gettext/config.rb +6 -0
  240. data/lib/puppet/gettext/module_translations.rb +1 -1
  241. data/lib/puppet/gettext/stubs.rb +1 -0
  242. data/lib/puppet/graph/key.rb +1 -0
  243. data/lib/puppet/graph/prioritizer.rb +1 -0
  244. data/lib/puppet/graph/rb_tree_map.rb +17 -7
  245. data/lib/puppet/graph/relationship_graph.rb +18 -17
  246. data/lib/puppet/graph/sequential_prioritizer.rb +1 -0
  247. data/lib/puppet/graph/simple_graph.rb +56 -49
  248. data/lib/puppet/graph.rb +1 -0
  249. data/lib/puppet/http/client.rb +8 -5
  250. data/lib/puppet/http/dns.rb +7 -8
  251. data/lib/puppet/http/errors.rb +3 -2
  252. data/lib/puppet/http/external_client.rb +2 -2
  253. data/lib/puppet/http/factory.rb +2 -1
  254. data/lib/puppet/http/pool.rb +2 -1
  255. data/lib/puppet/http/pool_entry.rb +1 -0
  256. data/lib/puppet/http/proxy.rb +5 -4
  257. data/lib/puppet/http/redirector.rb +2 -1
  258. data/lib/puppet/http/resolver/server_list.rb +4 -4
  259. data/lib/puppet/http/resolver/settings.rb +1 -1
  260. data/lib/puppet/http/resolver/srv.rb +1 -1
  261. data/lib/puppet/http/resolver.rb +1 -0
  262. data/lib/puppet/http/response.rb +1 -0
  263. data/lib/puppet/http/response_converter.rb +3 -3
  264. data/lib/puppet/http/response_net_http.rb +1 -1
  265. data/lib/puppet/http/retry_after_handler.rb +1 -1
  266. data/lib/puppet/http/service/ca.rb +4 -3
  267. data/lib/puppet/http/service/compiler.rb +11 -5
  268. data/lib/puppet/http/service/file_server.rb +2 -1
  269. data/lib/puppet/http/service/puppetserver.rb +2 -2
  270. data/lib/puppet/http/service/report.rb +1 -1
  271. data/lib/puppet/http/service.rb +7 -9
  272. data/lib/puppet/http/session.rb +2 -1
  273. data/lib/puppet/http/site.rb +1 -0
  274. data/lib/puppet/http.rb +1 -0
  275. data/lib/puppet/indirector/catalog/compiler.rb +62 -54
  276. data/lib/puppet/indirector/catalog/json.rb +1 -0
  277. data/lib/puppet/indirector/catalog/msgpack.rb +1 -0
  278. data/lib/puppet/indirector/catalog/rest.rb +9 -0
  279. data/lib/puppet/indirector/catalog/store_configs.rb +1 -2
  280. data/lib/puppet/indirector/catalog/yaml.rb +1 -0
  281. data/lib/puppet/indirector/code.rb +1 -0
  282. data/lib/puppet/indirector/data_binding/hiera.rb +1 -1
  283. data/lib/puppet/indirector/data_binding/none.rb +1 -0
  284. data/lib/puppet/indirector/direct_file_server.rb +3 -1
  285. data/lib/puppet/indirector/envelope.rb +1 -0
  286. data/lib/puppet/indirector/errors.rb +1 -0
  287. data/lib/puppet/indirector/exec.rb +2 -1
  288. data/lib/puppet/indirector/face.rb +7 -6
  289. data/lib/puppet/indirector/fact_search.rb +2 -1
  290. data/lib/puppet/indirector/facts/facter.rb +2 -0
  291. data/lib/puppet/indirector/facts/json.rb +2 -1
  292. data/lib/puppet/indirector/facts/memory.rb +1 -0
  293. data/lib/puppet/indirector/facts/network_device.rb +1 -0
  294. data/lib/puppet/indirector/facts/rest.rb +1 -0
  295. data/lib/puppet/indirector/facts/store_configs.rb +1 -1
  296. data/lib/puppet/indirector/facts/yaml.rb +1 -0
  297. data/lib/puppet/indirector/file_bucket_file/file.rb +15 -10
  298. data/lib/puppet/indirector/file_bucket_file/rest.rb +2 -0
  299. data/lib/puppet/indirector/file_bucket_file/selector.rb +1 -1
  300. data/lib/puppet/indirector/file_content/file.rb +1 -0
  301. data/lib/puppet/indirector/file_content/file_server.rb +1 -0
  302. data/lib/puppet/indirector/file_content/rest.rb +1 -0
  303. data/lib/puppet/indirector/file_content/selector.rb +1 -0
  304. data/lib/puppet/indirector/file_content.rb +1 -0
  305. data/lib/puppet/indirector/file_metadata/file.rb +1 -0
  306. data/lib/puppet/indirector/file_metadata/file_server.rb +1 -0
  307. data/lib/puppet/indirector/file_metadata/http.rb +3 -2
  308. data/lib/puppet/indirector/file_metadata/rest.rb +1 -0
  309. data/lib/puppet/indirector/file_metadata/selector.rb +1 -0
  310. data/lib/puppet/indirector/file_metadata.rb +1 -0
  311. data/lib/puppet/indirector/file_server.rb +2 -0
  312. data/lib/puppet/indirector/generic_http.rb +1 -0
  313. data/lib/puppet/indirector/hiera.rb +7 -7
  314. data/lib/puppet/indirector/indirection.rb +23 -13
  315. data/lib/puppet/indirector/json.rb +5 -3
  316. data/lib/puppet/indirector/memory.rb +2 -0
  317. data/lib/puppet/indirector/msgpack.rb +7 -4
  318. data/lib/puppet/indirector/node/exec.rb +5 -6
  319. data/lib/puppet/indirector/node/json.rb +1 -1
  320. data/lib/puppet/indirector/node/memory.rb +1 -0
  321. data/lib/puppet/indirector/node/msgpack.rb +1 -0
  322. data/lib/puppet/indirector/node/plain.rb +1 -0
  323. data/lib/puppet/indirector/node/rest.rb +1 -0
  324. data/lib/puppet/indirector/node/store_configs.rb +1 -2
  325. data/lib/puppet/indirector/node/yaml.rb +1 -0
  326. data/lib/puppet/indirector/none.rb +1 -1
  327. data/lib/puppet/indirector/plain.rb +1 -0
  328. data/lib/puppet/indirector/report/json.rb +2 -1
  329. data/lib/puppet/indirector/report/msgpack.rb +2 -1
  330. data/lib/puppet/indirector/report/processor.rb +2 -0
  331. data/lib/puppet/indirector/report/rest.rb +1 -0
  332. data/lib/puppet/indirector/report/yaml.rb +2 -1
  333. data/lib/puppet/indirector/request.rb +10 -8
  334. data/lib/puppet/indirector/resource/ral.rb +7 -6
  335. data/lib/puppet/indirector/resource/store_configs.rb +1 -0
  336. data/lib/puppet/indirector/resource/validator.rb +1 -0
  337. data/lib/puppet/indirector/rest.rb +2 -1
  338. data/lib/puppet/indirector/store_configs.rb +1 -0
  339. data/lib/puppet/indirector/terminus.rb +4 -1
  340. data/lib/puppet/indirector/yaml.rb +3 -2
  341. data/lib/puppet/indirector.rb +2 -0
  342. data/lib/puppet/info_service/class_information_service.rb +12 -12
  343. data/lib/puppet/info_service/plan_information_service.rb +4 -3
  344. data/lib/puppet/info_service/task_information_service.rb +4 -3
  345. data/lib/puppet/interface/action.rb +45 -40
  346. data/lib/puppet/interface/action_builder.rb +15 -15
  347. data/lib/puppet/interface/action_manager.rb +4 -2
  348. data/lib/puppet/interface/documentation.rb +35 -29
  349. data/lib/puppet/interface/face_collection.rb +10 -7
  350. data/lib/puppet/interface/option.rb +21 -10
  351. data/lib/puppet/interface/option_builder.rb +13 -9
  352. data/lib/puppet/interface/option_manager.rb +5 -4
  353. data/lib/puppet/interface.rb +4 -4
  354. data/lib/puppet/loaders.rb +1 -1
  355. data/lib/puppet/metatype/manager.rb +13 -13
  356. data/lib/puppet/module/plan.rb +13 -7
  357. data/lib/puppet/module/task.rb +24 -18
  358. data/lib/puppet/module.rb +19 -8
  359. data/lib/puppet/module_tool/applications/application.rb +6 -4
  360. data/lib/puppet/module_tool/applications/checksummer.rb +2 -3
  361. data/lib/puppet/module_tool/applications/installer.rb +35 -48
  362. data/lib/puppet/module_tool/applications/uninstaller.rb +23 -22
  363. data/lib/puppet/module_tool/applications/unpacker.rb +4 -1
  364. data/lib/puppet/module_tool/applications/upgrader.rb +32 -30
  365. data/lib/puppet/module_tool/applications.rb +1 -0
  366. data/lib/puppet/module_tool/checksums.rb +1 -1
  367. data/lib/puppet/module_tool/contents_description.rb +4 -5
  368. data/lib/puppet/module_tool/dependency.rb +3 -3
  369. data/lib/puppet/module_tool/errors/base.rb +1 -0
  370. data/lib/puppet/module_tool/errors/installer.rb +5 -5
  371. data/lib/puppet/module_tool/errors/shared.rb +15 -15
  372. data/lib/puppet/module_tool/errors/uninstaller.rb +2 -2
  373. data/lib/puppet/module_tool/errors/upgrader.rb +3 -3
  374. data/lib/puppet/module_tool/errors.rb +1 -0
  375. data/lib/puppet/module_tool/install_directory.rb +6 -4
  376. data/lib/puppet/module_tool/installed_modules.rb +4 -2
  377. data/lib/puppet/module_tool/local_tarball.rb +6 -3
  378. data/lib/puppet/module_tool/metadata.rb +23 -22
  379. data/lib/puppet/module_tool/shared_behaviors.rb +34 -32
  380. data/lib/puppet/module_tool/tar/gnu.rb +1 -0
  381. data/lib/puppet/module_tool/tar/mini.rb +2 -1
  382. data/lib/puppet/module_tool/tar.rb +3 -2
  383. data/lib/puppet/module_tool.rb +5 -5
  384. data/lib/puppet/network/authconfig.rb +1 -0
  385. data/lib/puppet/network/authorization.rb +1 -0
  386. data/lib/puppet/network/client_request.rb +1 -1
  387. data/lib/puppet/network/format.rb +6 -1
  388. data/lib/puppet/network/format_handler.rb +7 -6
  389. data/lib/puppet/network/format_support.rb +6 -6
  390. data/lib/puppet/network/formats.rb +27 -21
  391. data/lib/puppet/network/http/api/indirected_routes.rb +34 -22
  392. data/lib/puppet/network/http/api/indirection_type.rb +1 -1
  393. data/lib/puppet/network/http/api/master/v3/environments.rb +1 -1
  394. data/lib/puppet/network/http/api/master/v3.rb +1 -1
  395. data/lib/puppet/network/http/api/master.rb +1 -0
  396. data/lib/puppet/network/http/api/server/v3/environments.rb +20 -15
  397. data/lib/puppet/network/http/api/server/v3.rb +13 -13
  398. data/lib/puppet/network/http/api/server.rb +1 -0
  399. data/lib/puppet/network/http/api.rb +19 -18
  400. data/lib/puppet/network/http/connection.rb +4 -3
  401. data/lib/puppet/network/http/error.rb +4 -3
  402. data/lib/puppet/network/http/handler.rb +7 -6
  403. data/lib/puppet/network/http/issues.rb +1 -0
  404. data/lib/puppet/network/http/memory_response.rb +1 -0
  405. data/lib/puppet/network/http/request.rb +20 -9
  406. data/lib/puppet/network/http/response.rb +1 -0
  407. data/lib/puppet/network/http/route.rb +4 -2
  408. data/lib/puppet/network/http.rb +1 -0
  409. data/lib/puppet/network/http_pool.rb +3 -3
  410. data/lib/puppet/network/uri.rb +1 -0
  411. data/lib/puppet/network.rb +1 -0
  412. data/lib/puppet/node/environment.rb +25 -22
  413. data/lib/puppet/node/facts.rb +8 -9
  414. data/lib/puppet/node.rb +7 -8
  415. data/lib/puppet/pal/catalog_compiler.rb +1 -3
  416. data/lib/puppet/pal/compiler.rb +10 -6
  417. data/lib/puppet/pal/function_signature.rb +4 -3
  418. data/lib/puppet/pal/json_catalog_encoder.rb +5 -1
  419. data/lib/puppet/pal/pal_api.rb +1 -0
  420. data/lib/puppet/pal/pal_impl.rb +55 -59
  421. data/lib/puppet/pal/plan_signature.rb +3 -2
  422. data/lib/puppet/pal/script_compiler.rb +3 -2
  423. data/lib/puppet/pal/task_signature.rb +14 -9
  424. data/lib/puppet/parameter/boolean.rb +1 -0
  425. data/lib/puppet/parameter/package_options.rb +1 -0
  426. data/lib/puppet/parameter/path.rb +6 -3
  427. data/lib/puppet/parameter/value.rb +2 -1
  428. data/lib/puppet/parameter/value_collection.rb +8 -8
  429. data/lib/puppet/parameter.rb +8 -7
  430. data/lib/puppet/parser/abstract_compiler.rb +1 -3
  431. data/lib/puppet/parser/ast/block_expression.rb +1 -0
  432. data/lib/puppet/parser/ast/branch.rb +1 -0
  433. data/lib/puppet/parser/ast/hostclass.rb +2 -1
  434. data/lib/puppet/parser/ast/leaf.rb +2 -0
  435. data/lib/puppet/parser/ast/node.rb +1 -0
  436. data/lib/puppet/parser/ast/pops_bridge.rb +10 -10
  437. data/lib/puppet/parser/ast/resource.rb +3 -4
  438. data/lib/puppet/parser/ast/resource_instance.rb +2 -0
  439. data/lib/puppet/parser/ast/resourceparam.rb +7 -6
  440. data/lib/puppet/parser/ast/top_level_construct.rb +1 -0
  441. data/lib/puppet/parser/ast.rb +4 -3
  442. data/lib/puppet/parser/catalog_compiler.rb +2 -3
  443. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +3 -2
  444. data/lib/puppet/parser/compiler/catalog_validator.rb +1 -0
  445. data/lib/puppet/parser/compiler.rb +20 -18
  446. data/lib/puppet/parser/e4_parser_adapter.rb +16 -16
  447. data/lib/puppet/parser/files.rb +3 -3
  448. data/lib/puppet/parser/functions/assert_type.rb +42 -41
  449. data/lib/puppet/parser/functions/binary_file.rb +15 -14
  450. data/lib/puppet/parser/functions/break.rb +28 -27
  451. data/lib/puppet/parser/functions/contain.rb +2 -1
  452. data/lib/puppet/parser/functions/create_resources.rb +14 -11
  453. data/lib/puppet/parser/functions/defined.rb +103 -102
  454. data/lib/puppet/parser/functions/dig.rb +25 -24
  455. data/lib/puppet/parser/functions/digest.rb +2 -1
  456. data/lib/puppet/parser/functions/each.rb +100 -99
  457. data/lib/puppet/parser/functions/epp.rb +3 -3
  458. data/lib/puppet/parser/functions/fail.rb +10 -9
  459. data/lib/puppet/parser/functions/file.rb +15 -14
  460. data/lib/puppet/parser/functions/filter.rb +56 -55
  461. data/lib/puppet/parser/functions/find_file.rb +18 -18
  462. data/lib/puppet/parser/functions/fqdn_rand.rb +24 -23
  463. data/lib/puppet/parser/functions/generate.rb +21 -21
  464. data/lib/puppet/parser/functions/hiera.rb +94 -93
  465. data/lib/puppet/parser/functions/hiera_array.rb +82 -82
  466. data/lib/puppet/parser/functions/hiera_hash.rb +92 -92
  467. data/lib/puppet/parser/functions/hiera_include.rb +92 -92
  468. data/lib/puppet/parser/functions/include.rb +4 -3
  469. data/lib/puppet/parser/functions/inline_epp.rb +3 -3
  470. data/lib/puppet/parser/functions/inline_template.rb +14 -13
  471. data/lib/puppet/parser/functions/lest.rb +35 -34
  472. data/lib/puppet/parser/functions/lookup.rb +131 -130
  473. data/lib/puppet/parser/functions/map.rb +53 -52
  474. data/lib/puppet/parser/functions/match.rb +30 -29
  475. data/lib/puppet/parser/functions/md5.rb +3 -2
  476. data/lib/puppet/parser/functions/new.rb +915 -915
  477. data/lib/puppet/parser/functions/next.rb +35 -34
  478. data/lib/puppet/parser/functions/realize.rb +12 -11
  479. data/lib/puppet/parser/functions/reduce.rb +133 -132
  480. data/lib/puppet/parser/functions/regsubst.rb +7 -5
  481. data/lib/puppet/parser/functions/require.rb +7 -5
  482. data/lib/puppet/parser/functions/return.rb +89 -88
  483. data/lib/puppet/parser/functions/reverse_each.rb +58 -57
  484. data/lib/puppet/parser/functions/scanf.rb +24 -23
  485. data/lib/puppet/parser/functions/sha1.rb +3 -2
  486. data/lib/puppet/parser/functions/sha256.rb +2 -1
  487. data/lib/puppet/parser/functions/shellquote.rb +1 -0
  488. data/lib/puppet/parser/functions/slice.rb +26 -25
  489. data/lib/puppet/parser/functions/split.rb +6 -6
  490. data/lib/puppet/parser/functions/sprintf.rb +7 -7
  491. data/lib/puppet/parser/functions/step.rb +61 -60
  492. data/lib/puppet/parser/functions/strftime.rb +174 -173
  493. data/lib/puppet/parser/functions/tag.rb +9 -7
  494. data/lib/puppet/parser/functions/tagged.rb +15 -13
  495. data/lib/puppet/parser/functions/template.rb +26 -24
  496. data/lib/puppet/parser/functions/then.rb +53 -52
  497. data/lib/puppet/parser/functions/type.rb +35 -34
  498. data/lib/puppet/parser/functions/versioncmp.rb +2 -2
  499. data/lib/puppet/parser/functions/with.rb +21 -20
  500. data/lib/puppet/parser/functions.rb +8 -6
  501. data/lib/puppet/parser/parser_factory.rb +1 -0
  502. data/lib/puppet/parser/relationship.rb +5 -2
  503. data/lib/puppet/parser/resource/param.rb +1 -0
  504. data/lib/puppet/parser/resource.rb +22 -21
  505. data/lib/puppet/parser/scope.rb +73 -64
  506. data/lib/puppet/parser/script_compiler.rb +10 -11
  507. data/lib/puppet/parser/templatewrapper.rb +2 -1
  508. data/lib/puppet/parser/type_loader.rb +21 -19
  509. data/lib/puppet/parser.rb +1 -0
  510. data/lib/puppet/plugins/configuration.rb +1 -0
  511. data/lib/puppet/plugins/syntax_checkers.rb +1 -1
  512. data/lib/puppet/plugins.rb +2 -1
  513. data/lib/puppet/pops/adaptable.rb +3 -2
  514. data/lib/puppet/pops/adapters.rb +3 -1
  515. data/lib/puppet/pops/evaluator/access_operator.rb +127 -115
  516. data/lib/puppet/pops/evaluator/callable_signature.rb +1 -1
  517. data/lib/puppet/pops/evaluator/closure.rb +271 -277
  518. data/lib/puppet/pops/evaluator/collector_transformer.rb +13 -11
  519. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +2 -1
  520. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +3 -3
  521. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +5 -5
  522. data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +3 -4
  523. data/lib/puppet/pops/evaluator/compare_operator.rb +27 -13
  524. data/lib/puppet/pops/evaluator/deferred_resolver.rb +19 -17
  525. data/lib/puppet/pops/evaluator/epp_evaluator.rb +16 -16
  526. data/lib/puppet/pops/evaluator/evaluator_impl.rb +197 -194
  527. data/lib/puppet/pops/evaluator/external_syntax_support.rb +2 -2
  528. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +4 -4
  529. data/lib/puppet/pops/evaluator/literal_evaluator.rb +15 -7
  530. data/lib/puppet/pops/evaluator/puppet_proc.rb +5 -3
  531. data/lib/puppet/pops/evaluator/relationship_operator.rb +11 -9
  532. data/lib/puppet/pops/evaluator/runtime3_converter.rb +30 -27
  533. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +31 -33
  534. data/lib/puppet/pops/evaluator/runtime3_support.rb +30 -32
  535. data/lib/puppet/pops/functions/dispatch.rb +6 -7
  536. data/lib/puppet/pops/functions/dispatcher.rb +5 -5
  537. data/lib/puppet/pops/functions/function.rb +3 -4
  538. data/lib/puppet/pops/issue_reporter.rb +22 -20
  539. data/lib/puppet/pops/issues.rb +13 -5
  540. data/lib/puppet/pops/label_provider.rb +3 -2
  541. data/lib/puppet/pops/loader/base_loader.rb +3 -4
  542. data/lib/puppet/pops/loader/dependency_loader.rb +5 -2
  543. data/lib/puppet/pops/loader/gem_support.rb +4 -2
  544. data/lib/puppet/pops/loader/generic_plan_instantiator.rb +1 -0
  545. data/lib/puppet/pops/loader/loader.rb +1 -2
  546. data/lib/puppet/pops/loader/loader_paths.rb +26 -26
  547. data/lib/puppet/pops/loader/module_loaders.rb +32 -37
  548. data/lib/puppet/pops/loader/predefined_loader.rb +2 -3
  549. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +5 -2
  550. data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +5 -2
  551. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +5 -5
  552. data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +4 -1
  553. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +4 -1
  554. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +13 -8
  555. data/lib/puppet/pops/loader/runtime3_type_loader.rb +3 -3
  556. data/lib/puppet/pops/loader/simple_environment_loader.rb +2 -3
  557. data/lib/puppet/pops/loader/static_loader.rb +24 -23
  558. data/lib/puppet/pops/loader/task_instantiator.rb +3 -2
  559. data/lib/puppet/pops/loader/type_definition_instantiator.rb +8 -5
  560. data/lib/puppet/pops/loader/typed_name.rb +2 -1
  561. data/lib/puppet/pops/loader/uri_helper.rb +2 -1
  562. data/lib/puppet/pops/loaders.rb +24 -21
  563. data/lib/puppet/pops/lookup/configured_data_provider.rb +1 -0
  564. data/lib/puppet/pops/lookup/context.rb +31 -23
  565. data/lib/puppet/pops/lookup/data_adapter.rb +1 -0
  566. data/lib/puppet/pops/lookup/data_dig_function_provider.rb +4 -4
  567. data/lib/puppet/pops/lookup/data_hash_function_provider.rb +1 -0
  568. data/lib/puppet/pops/lookup/data_provider.rb +1 -0
  569. data/lib/puppet/pops/lookup/environment_data_provider.rb +1 -0
  570. data/lib/puppet/pops/lookup/explainer.rb +43 -42
  571. data/lib/puppet/pops/lookup/function_provider.rb +7 -6
  572. data/lib/puppet/pops/lookup/global_data_provider.rb +3 -3
  573. data/lib/puppet/pops/lookup/hiera_config.rb +153 -114
  574. data/lib/puppet/pops/lookup/interpolation.rb +9 -4
  575. data/lib/puppet/pops/lookup/invocation.rb +3 -0
  576. data/lib/puppet/pops/lookup/key_recorder.rb +4 -2
  577. data/lib/puppet/pops/lookup/location_resolver.rb +2 -1
  578. data/lib/puppet/pops/lookup/lookup_adapter.rb +25 -21
  579. data/lib/puppet/pops/lookup/lookup_key.rb +2 -1
  580. data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +1 -0
  581. data/lib/puppet/pops/lookup/module_data_provider.rb +3 -1
  582. data/lib/puppet/pops/lookup/sub_lookup.rb +5 -2
  583. data/lib/puppet/pops/lookup.rb +13 -9
  584. data/lib/puppet/pops/merge_strategy.rb +15 -10
  585. data/lib/puppet/pops/migration/migration_checker.rb +6 -4
  586. data/lib/puppet/pops/model/ast.rb +786 -685
  587. data/lib/puppet/pops/model/ast_transformer.rb +10 -9
  588. data/lib/puppet/pops/model/factory.rb +29 -26
  589. data/lib/puppet/pops/model/model_label_provider.rb +4 -2
  590. data/lib/puppet/pops/model/model_tree_dumper.rb +31 -30
  591. data/lib/puppet/pops/model/pn_transformer.rb +4 -6
  592. data/lib/puppet/pops/model/tree_dumper.rb +5 -3
  593. data/lib/puppet/pops/parser/code_merger.rb +2 -3
  594. data/lib/puppet/pops/parser/epp_parser.rb +3 -3
  595. data/lib/puppet/pops/parser/epp_support.rb +7 -7
  596. data/lib/puppet/pops/parser/evaluating_parser.rb +9 -6
  597. data/lib/puppet/pops/parser/heredoc_support.rb +9 -10
  598. data/lib/puppet/pops/parser/interpolation_support.rb +22 -23
  599. data/lib/puppet/pops/parser/lexer2.rb +55 -51
  600. data/lib/puppet/pops/parser/lexer_support.rb +56 -57
  601. data/lib/puppet/pops/parser/locatable.rb +1 -2
  602. data/lib/puppet/pops/parser/locator.rb +42 -39
  603. data/lib/puppet/pops/parser/parser_support.rb +9 -7
  604. data/lib/puppet/pops/parser/pn_parser.rb +2 -2
  605. data/lib/puppet/pops/parser/slurp_support.rb +38 -37
  606. data/lib/puppet/pops/patterns.rb +2 -3
  607. data/lib/puppet/pops/pcore.rb +3 -3
  608. data/lib/puppet/pops/pn.rb +4 -2
  609. data/lib/puppet/pops/puppet_stack.rb +1 -0
  610. data/lib/puppet/pops/resource/param.rb +12 -12
  611. data/lib/puppet/pops/resource/resource_type_impl.rb +45 -44
  612. data/lib/puppet/pops/semantic_error.rb +2 -1
  613. data/lib/puppet/pops/serialization/abstract_reader.rb +3 -2
  614. data/lib/puppet/pops/serialization/abstract_writer.rb +7 -6
  615. data/lib/puppet/pops/serialization/deserializer.rb +2 -0
  616. data/lib/puppet/pops/serialization/extension.rb +7 -0
  617. data/lib/puppet/pops/serialization/from_data_converter.rb +15 -9
  618. data/lib/puppet/pops/serialization/instance_reader.rb +1 -0
  619. data/lib/puppet/pops/serialization/instance_writer.rb +1 -0
  620. data/lib/puppet/pops/serialization/json.rb +8 -5
  621. data/lib/puppet/pops/serialization/json_path.rb +1 -0
  622. data/lib/puppet/pops/serialization/object.rb +5 -3
  623. data/lib/puppet/pops/serialization/serializer.rb +19 -16
  624. data/lib/puppet/pops/serialization/time_factory.rb +1 -1
  625. data/lib/puppet/pops/serialization/to_data_converter.rb +7 -5
  626. data/lib/puppet/pops/serialization/to_stringified_converter.rb +7 -7
  627. data/lib/puppet/pops/serialization.rb +1 -0
  628. data/lib/puppet/pops/time/timespan.rb +19 -8
  629. data/lib/puppet/pops/time/timestamp.rb +8 -2
  630. data/lib/puppet/pops/types/annotatable.rb +1 -1
  631. data/lib/puppet/pops/types/annotation.rb +4 -3
  632. data/lib/puppet/pops/types/class_loader.rb +12 -9
  633. data/lib/puppet/pops/types/implementation_registry.rb +3 -1
  634. data/lib/puppet/pops/types/iterable.rb +22 -13
  635. data/lib/puppet/pops/types/p_binary_type.rb +4 -5
  636. data/lib/puppet/pops/types/p_init_type.rb +13 -11
  637. data/lib/puppet/pops/types/p_meta_type.rb +2 -2
  638. data/lib/puppet/pops/types/p_object_type.rb +87 -63
  639. data/lib/puppet/pops/types/p_object_type_extension.rb +10 -8
  640. data/lib/puppet/pops/types/p_runtime_type.rb +11 -10
  641. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +1 -1
  642. data/lib/puppet/pops/types/p_sem_ver_type.rb +7 -8
  643. data/lib/puppet/pops/types/p_sensitive_type.rb +2 -5
  644. data/lib/puppet/pops/types/p_timespan_type.rb +6 -5
  645. data/lib/puppet/pops/types/p_timestamp_type.rb +3 -3
  646. data/lib/puppet/pops/types/p_type_set_type.rb +42 -36
  647. data/lib/puppet/pops/types/p_uri_type.rb +30 -23
  648. data/lib/puppet/pops/types/puppet_object.rb +1 -1
  649. data/lib/puppet/pops/types/recursion_guard.rb +7 -2
  650. data/lib/puppet/pops/types/ruby_generator.rb +14 -10
  651. data/lib/puppet/pops/types/ruby_method.rb +7 -7
  652. data/lib/puppet/pops/types/string_converter.rb +93 -88
  653. data/lib/puppet/pops/types/tree_iterators.rb +11 -14
  654. data/lib/puppet/pops/types/type_acceptor.rb +1 -0
  655. data/lib/puppet/pops/types/type_asserter.rb +4 -3
  656. data/lib/puppet/pops/types/type_assertion_error.rb +0 -1
  657. data/lib/puppet/pops/types/type_calculator.rb +46 -40
  658. data/lib/puppet/pops/types/type_conversion_error.rb +1 -10
  659. data/lib/puppet/pops/types/type_factory.rb +16 -12
  660. data/lib/puppet/pops/types/type_formatter.rb +40 -43
  661. data/lib/puppet/pops/types/type_mismatch_describer.rb +37 -29
  662. data/lib/puppet/pops/types/type_parser.rb +123 -117
  663. data/lib/puppet/pops/types/type_set_reference.rb +2 -0
  664. data/lib/puppet/pops/types/type_with_members.rb +1 -2
  665. data/lib/puppet/pops/types/types.rb +243 -230
  666. data/lib/puppet/pops/utils.rb +3 -2
  667. data/lib/puppet/pops/validation/checker4_0.rb +68 -49
  668. data/lib/puppet/pops/validation/tasks_checker.rb +5 -4
  669. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  670. data/lib/puppet/pops/validation.rb +21 -19
  671. data/lib/puppet/pops/visitable.rb +1 -0
  672. data/lib/puppet/pops/visitor.rb +15 -2
  673. data/lib/puppet/pops.rb +2 -0
  674. data/lib/puppet/property/boolean.rb +1 -0
  675. data/lib/puppet/property/ensure.rb +4 -2
  676. data/lib/puppet/property/keyvalue.rb +10 -10
  677. data/lib/puppet/property/list.rb +6 -6
  678. data/lib/puppet/property/ordered_list.rb +4 -4
  679. data/lib/puppet/property.rb +21 -21
  680. data/lib/puppet/provider/aix_object.rb +14 -9
  681. data/lib/puppet/provider/command.rb +1 -0
  682. data/lib/puppet/provider/confine.rb +1 -0
  683. data/lib/puppet/provider/exec/posix.rb +3 -1
  684. data/lib/puppet/provider/exec/shell.rb +1 -0
  685. data/lib/puppet/provider/exec/windows.rb +2 -1
  686. data/lib/puppet/provider/exec.rb +4 -3
  687. data/lib/puppet/provider/file/posix.rb +1 -0
  688. data/lib/puppet/provider/file/windows.rb +13 -9
  689. data/lib/puppet/provider/group/aix.rb +1 -0
  690. data/lib/puppet/provider/group/directoryservice.rb +1 -1
  691. data/lib/puppet/provider/group/groupadd.rb +11 -6
  692. data/lib/puppet/provider/group/ldap.rb +2 -0
  693. data/lib/puppet/provider/group/pw.rb +1 -1
  694. data/lib/puppet/provider/group/windows_adsi.rb +5 -3
  695. data/lib/puppet/provider/ldap.rb +4 -3
  696. data/lib/puppet/provider/nameservice/directoryservice.rb +39 -30
  697. data/lib/puppet/provider/nameservice/objectadd.rb +1 -0
  698. data/lib/puppet/provider/nameservice/pw.rb +6 -6
  699. data/lib/puppet/provider/nameservice.rb +17 -14
  700. data/lib/puppet/provider/network_device.rb +1 -2
  701. data/lib/puppet/provider/package/aix.rb +8 -7
  702. data/lib/puppet/provider/package/appdmg.rb +22 -21
  703. data/lib/puppet/provider/package/apple.rb +4 -3
  704. data/lib/puppet/provider/package/apt.rb +10 -6
  705. data/lib/puppet/provider/package/aptitude.rb +1 -0
  706. data/lib/puppet/provider/package/aptrpm.rb +8 -5
  707. data/lib/puppet/provider/package/blastwave.rb +9 -9
  708. data/lib/puppet/provider/package/dnf.rb +7 -0
  709. data/lib/puppet/provider/package/dnfmodule.rb +9 -8
  710. data/lib/puppet/provider/package/dpkg.rb +12 -12
  711. data/lib/puppet/provider/package/fink.rb +2 -1
  712. data/lib/puppet/provider/package/freebsd.rb +3 -2
  713. data/lib/puppet/provider/package/gem.rb +12 -9
  714. data/lib/puppet/provider/package/hpux.rb +6 -5
  715. data/lib/puppet/provider/package/macports.rb +2 -1
  716. data/lib/puppet/provider/package/nim.rb +16 -18
  717. data/lib/puppet/provider/package/openbsd.rb +14 -12
  718. data/lib/puppet/provider/package/opkg.rb +8 -6
  719. data/lib/puppet/provider/package/pacman.rb +14 -14
  720. data/lib/puppet/provider/package/pip.rb +11 -9
  721. data/lib/puppet/provider/package/pip2.rb +2 -2
  722. data/lib/puppet/provider/package/pip3.rb +2 -2
  723. data/lib/puppet/provider/package/pkg.rb +33 -29
  724. data/lib/puppet/provider/package/pkgdmg.rb +12 -7
  725. data/lib/puppet/provider/package/pkgin.rb +11 -11
  726. data/lib/puppet/provider/package/pkgng.rb +12 -8
  727. data/lib/puppet/provider/package/pkgutil.rb +18 -17
  728. data/lib/puppet/provider/package/portage.rb +14 -9
  729. data/lib/puppet/provider/package/ports.rb +6 -5
  730. data/lib/puppet/provider/package/portupgrade.rb +11 -19
  731. data/lib/puppet/provider/package/puppet_gem.rb +3 -2
  732. data/lib/puppet/provider/package/puppetserver_gem.rb +5 -4
  733. data/lib/puppet/provider/package/rpm.rb +19 -15
  734. data/lib/puppet/provider/package/rug.rb +2 -1
  735. data/lib/puppet/provider/package/sun.rb +22 -19
  736. data/lib/puppet/provider/package/sunfreeware.rb +1 -0
  737. data/lib/puppet/provider/package/tdnf.rb +7 -1
  738. data/lib/puppet/provider/package/up2date.rb +2 -1
  739. data/lib/puppet/provider/package/urpmi.rb +1 -0
  740. data/lib/puppet/provider/package/windows/exe_package.rb +3 -2
  741. data/lib/puppet/provider/package/windows/msi_package.rb +1 -0
  742. data/lib/puppet/provider/package/windows/package.rb +8 -6
  743. data/lib/puppet/provider/package/windows.rb +5 -3
  744. data/lib/puppet/provider/package/yum.rb +34 -20
  745. data/lib/puppet/provider/package/zypper.rb +22 -21
  746. data/lib/puppet/provider/package.rb +8 -7
  747. data/lib/puppet/provider/package_targetable.rb +3 -2
  748. data/lib/puppet/provider/parsedfile.rb +12 -9
  749. data/lib/puppet/provider/service/base.rb +2 -2
  750. data/lib/puppet/provider/service/bsd.rb +1 -0
  751. data/lib/puppet/provider/service/daemontools.rb +17 -15
  752. data/lib/puppet/provider/service/debian.rb +6 -5
  753. data/lib/puppet/provider/service/freebsd.rb +16 -19
  754. data/lib/puppet/provider/service/gentoo.rb +5 -4
  755. data/lib/puppet/provider/service/init.rb +12 -14
  756. data/lib/puppet/provider/service/launchd.rb +13 -7
  757. data/lib/puppet/provider/service/openbsd.rb +4 -4
  758. data/lib/puppet/provider/service/openrc.rb +2 -2
  759. data/lib/puppet/provider/service/openwrt.rb +1 -1
  760. data/lib/puppet/provider/service/rcng.rb +1 -0
  761. data/lib/puppet/provider/service/redhat.rb +5 -3
  762. data/lib/puppet/provider/service/runit.rb +10 -10
  763. data/lib/puppet/provider/service/service.rb +1 -1
  764. data/lib/puppet/provider/service/smf.rb +9 -6
  765. data/lib/puppet/provider/service/src.rb +19 -20
  766. data/lib/puppet/provider/service/systemd.rb +11 -6
  767. data/lib/puppet/provider/service/upstart.rb +14 -15
  768. data/lib/puppet/provider/service/windows.rb +37 -41
  769. data/lib/puppet/provider/user/aix.rb +17 -16
  770. data/lib/puppet/provider/user/directoryservice.rb +60 -52
  771. data/lib/puppet/provider/user/hpux.rb +23 -22
  772. data/lib/puppet/provider/user/ldap.rb +12 -10
  773. data/lib/puppet/provider/user/openbsd.rb +21 -20
  774. data/lib/puppet/provider/user/pw.rb +4 -4
  775. data/lib/puppet/provider/user/user_role_add.rb +23 -18
  776. data/lib/puppet/provider/user/useradd.rb +53 -43
  777. data/lib/puppet/provider/user/windows_adsi.rb +10 -7
  778. data/lib/puppet/provider.rb +11 -11
  779. data/lib/puppet/reference/configuration.rb +48 -46
  780. data/lib/puppet/reference/function.rb +1 -0
  781. data/lib/puppet/reference/indirection.rb +28 -27
  782. data/lib/puppet/reference/metaparameter.rb +1 -0
  783. data/lib/puppet/reference/providers.rb +4 -2
  784. data/lib/puppet/reference/report.rb +1 -0
  785. data/lib/puppet/reference/type.rb +5 -4
  786. data/lib/puppet/relationship.rb +5 -4
  787. data/lib/puppet/reports/http.rb +1 -1
  788. data/lib/puppet/reports/log.rb +1 -1
  789. data/lib/puppet/reports/store.rb +5 -3
  790. data/lib/puppet/reports.rb +4 -3
  791. data/lib/puppet/resource/catalog.rb +40 -40
  792. data/lib/puppet/resource/status.rb +5 -4
  793. data/lib/puppet/resource/type.rb +35 -26
  794. data/lib/puppet/resource/type_collection.rb +9 -5
  795. data/lib/puppet/resource.rb +50 -37
  796. data/lib/puppet/runtime.rb +1 -0
  797. data/lib/puppet/scheduler/job.rb +1 -0
  798. data/lib/puppet/scheduler/scheduler.rb +2 -1
  799. data/lib/puppet/scheduler/splay_job.rb +1 -0
  800. data/lib/puppet/scheduler/timer.rb +1 -0
  801. data/lib/puppet/scheduler.rb +2 -1
  802. data/lib/puppet/settings/alias_setting.rb +1 -0
  803. data/lib/puppet/settings/array_setting.rb +1 -1
  804. data/lib/puppet/settings/autosign_setting.rb +1 -1
  805. data/lib/puppet/settings/base_setting.rb +11 -7
  806. data/lib/puppet/settings/boolean_setting.rb +2 -1
  807. data/lib/puppet/settings/certificate_revocation_setting.rb +1 -1
  808. data/lib/puppet/settings/config_file.rb +5 -5
  809. data/lib/puppet/settings/directory_setting.rb +1 -0
  810. data/lib/puppet/settings/duration_setting.rb +3 -3
  811. data/lib/puppet/settings/enum_setting.rb +2 -1
  812. data/lib/puppet/settings/environment_conf.rb +15 -12
  813. data/lib/puppet/settings/errors.rb +5 -3
  814. data/lib/puppet/settings/file_or_directory_setting.rb +1 -5
  815. data/lib/puppet/settings/file_setting.rb +3 -13
  816. data/lib/puppet/settings/http_extra_headers_setting.rb +1 -1
  817. data/lib/puppet/settings/ini_file.rb +1 -0
  818. data/lib/puppet/settings/integer_setting.rb +2 -1
  819. data/lib/puppet/settings/path_setting.rb +1 -0
  820. data/lib/puppet/settings/port_setting.rb +2 -1
  821. data/lib/puppet/settings/priority_setting.rb +12 -12
  822. data/lib/puppet/settings/server_list_setting.rb +6 -6
  823. data/lib/puppet/settings/string_setting.rb +1 -0
  824. data/lib/puppet/settings/symbolic_enum_setting.rb +2 -1
  825. data/lib/puppet/settings/terminus_setting.rb +1 -0
  826. data/lib/puppet/settings/ttl_setting.rb +5 -4
  827. data/lib/puppet/settings/value_translator.rb +8 -7
  828. data/lib/puppet/settings.rb +123 -97
  829. data/lib/puppet/ssl/base.rb +6 -2
  830. data/lib/puppet/ssl/certificate.rb +5 -4
  831. data/lib/puppet/ssl/certificate_request.rb +14 -12
  832. data/lib/puppet/ssl/certificate_request_attributes.rb +4 -2
  833. data/lib/puppet/ssl/certificate_signer.rb +2 -3
  834. data/lib/puppet/ssl/digest.rb +1 -0
  835. data/lib/puppet/ssl/error.rb +2 -0
  836. data/lib/puppet/ssl/oids.rb +7 -7
  837. data/lib/puppet/ssl/openssl_loader.rb +1 -0
  838. data/lib/puppet/ssl/ssl_context.rb +11 -15
  839. data/lib/puppet/ssl/ssl_provider.rb +10 -7
  840. data/lib/puppet/ssl/state_machine.rb +12 -11
  841. data/lib/puppet/ssl/verifier.rb +2 -2
  842. data/lib/puppet/ssl.rb +1 -0
  843. data/lib/puppet/syntax_checkers/base64.rb +3 -2
  844. data/lib/puppet/syntax_checkers/epp.rb +3 -3
  845. data/lib/puppet/syntax_checkers/json.rb +3 -4
  846. data/lib/puppet/syntax_checkers/pp.rb +3 -3
  847. data/lib/puppet/syntax_checkers.rb +2 -1
  848. data/lib/puppet/test/test_helper.rb +26 -23
  849. data/lib/puppet/thread_local.rb +1 -0
  850. data/lib/puppet/transaction/additional_resource_generator.rb +10 -6
  851. data/lib/puppet/transaction/event.rb +5 -3
  852. data/lib/puppet/transaction/event_manager.rb +6 -6
  853. data/lib/puppet/transaction/persistence.rb +3 -2
  854. data/lib/puppet/transaction/report.rb +28 -22
  855. data/lib/puppet/transaction/resource_harness.rb +7 -4
  856. data/lib/puppet/transaction.rb +22 -17
  857. data/lib/puppet/trusted_external.rb +9 -5
  858. data/lib/puppet/type/component.rb +11 -5
  859. data/lib/puppet/type/exec.rb +33 -21
  860. data/lib/puppet/type/file/checksum.rb +1 -0
  861. data/lib/puppet/type/file/checksum_value.rb +4 -3
  862. data/lib/puppet/type/file/content.rb +17 -14
  863. data/lib/puppet/type/file/ctime.rb +2 -2
  864. data/lib/puppet/type/file/data_sync.rb +6 -4
  865. data/lib/puppet/type/file/ensure.rb +11 -14
  866. data/lib/puppet/type/file/group.rb +2 -1
  867. data/lib/puppet/type/file/mode.rb +4 -2
  868. data/lib/puppet/type/file/mtime.rb +2 -1
  869. data/lib/puppet/type/file/owner.rb +2 -2
  870. data/lib/puppet/type/file/selcontext.rb +2 -3
  871. data/lib/puppet/type/file/source.rb +14 -12
  872. data/lib/puppet/type/file/target.rb +4 -5
  873. data/lib/puppet/type/file/type.rb +2 -2
  874. data/lib/puppet/type/file.rb +40 -35
  875. data/lib/puppet/type/filebucket.rb +1 -0
  876. data/lib/puppet/type/group.rb +10 -10
  877. data/lib/puppet/type/notify.rb +1 -1
  878. data/lib/puppet/type/package.rb +29 -29
  879. data/lib/puppet/type/resources.rb +33 -28
  880. data/lib/puppet/type/schedule.rb +13 -14
  881. data/lib/puppet/type/service.rb +13 -11
  882. data/lib/puppet/type/stage.rb +1 -0
  883. data/lib/puppet/type/tidy.rb +16 -11
  884. data/lib/puppet/type/user.rb +48 -43
  885. data/lib/puppet/type/whit.rb +1 -1
  886. data/lib/puppet/type.rb +115 -110
  887. data/lib/puppet/util/at_fork/noop.rb +1 -0
  888. data/lib/puppet/util/at_fork/solaris.rb +6 -5
  889. data/lib/puppet/util/at_fork.rb +2 -1
  890. data/lib/puppet/util/autoload.rb +7 -2
  891. data/lib/puppet/util/backups.rb +6 -5
  892. data/lib/puppet/util/character_encoding.rb +1 -0
  893. data/lib/puppet/util/checksums.rb +12 -10
  894. data/lib/puppet/util/classgen.rb +10 -16
  895. data/lib/puppet/util/colors.rb +65 -64
  896. data/lib/puppet/util/command_line/puppet_option_parser.rb +17 -16
  897. data/lib/puppet/util/command_line/trollop.rb +696 -689
  898. data/lib/puppet/util/command_line.rb +2 -1
  899. data/lib/puppet/util/constant_inflector.rb +3 -3
  900. data/lib/puppet/util/diff.rb +16 -16
  901. data/lib/puppet/util/docs.rb +6 -3
  902. data/lib/puppet/util/errors.rb +3 -2
  903. data/lib/puppet/util/execution.rb +27 -28
  904. data/lib/puppet/util/execution_stub.rb +1 -0
  905. data/lib/puppet/util/feature.rb +7 -8
  906. data/lib/puppet/util/file_watcher.rb +2 -0
  907. data/lib/puppet/util/fileparsing.rb +11 -12
  908. data/lib/puppet/util/filetype.rb +6 -3
  909. data/lib/puppet/util/http_proxy.rb +1 -0
  910. data/lib/puppet/util/inifile.rb +4 -4
  911. data/lib/puppet/util/instance_loader.rb +2 -0
  912. data/lib/puppet/util/json.rb +1 -0
  913. data/lib/puppet/util/json_lockfile.rb +3 -1
  914. data/lib/puppet/util/ldap/connection.rb +19 -18
  915. data/lib/puppet/util/ldap/generator.rb +1 -0
  916. data/lib/puppet/util/ldap/manager.rb +9 -9
  917. data/lib/puppet/util/ldap.rb +1 -0
  918. data/lib/puppet/util/libuser.rb +2 -2
  919. data/lib/puppet/util/limits.rb +1 -0
  920. data/lib/puppet/util/lockfile.rb +1 -0
  921. data/lib/puppet/util/log/destination.rb +1 -1
  922. data/lib/puppet/util/log/destinations.rb +15 -16
  923. data/lib/puppet/util/log.rb +28 -23
  924. data/lib/puppet/util/logging.rb +24 -21
  925. data/lib/puppet/util/metaid.rb +1 -1
  926. data/lib/puppet/util/metric.rb +5 -3
  927. data/lib/puppet/util/monkey_patches.rb +2 -1
  928. data/lib/puppet/util/multi_match.rb +8 -5
  929. data/lib/puppet/util/network_device/base.rb +2 -2
  930. data/lib/puppet/util/network_device/config.rb +5 -6
  931. data/lib/puppet/util/network_device/transport/base.rb +0 -1
  932. data/lib/puppet/util/network_device/transport.rb +1 -0
  933. data/lib/puppet/util/network_device.rb +1 -0
  934. data/lib/puppet/util/package/version/debian.rb +5 -3
  935. data/lib/puppet/util/package/version/gem.rb +2 -0
  936. data/lib/puppet/util/package/version/pip.rb +9 -4
  937. data/lib/puppet/util/package/version/range/eq.rb +2 -0
  938. data/lib/puppet/util/package/version/range/gt.rb +2 -0
  939. data/lib/puppet/util/package/version/range/gt_eq.rb +2 -0
  940. data/lib/puppet/util/package/version/range/lt.rb +3 -1
  941. data/lib/puppet/util/package/version/range/lt_eq.rb +2 -0
  942. data/lib/puppet/util/package/version/range/min_max.rb +4 -0
  943. data/lib/puppet/util/package/version/range/simple.rb +1 -0
  944. data/lib/puppet/util/package/version/range.rb +8 -5
  945. data/lib/puppet/util/package/version/rpm.rb +6 -4
  946. data/lib/puppet/util/package.rb +4 -1
  947. data/lib/puppet/util/pidlock.rb +8 -8
  948. data/lib/puppet/util/platform.rb +1 -0
  949. data/lib/puppet/util/plist.rb +7 -6
  950. data/lib/puppet/util/posix.rb +10 -8
  951. data/lib/puppet/util/profiler/aggregate.rb +3 -7
  952. data/lib/puppet/util/profiler/around_profiler.rb +1 -1
  953. data/lib/puppet/util/profiler/logging.rb +2 -1
  954. data/lib/puppet/util/profiler/object_counts.rb +1 -0
  955. data/lib/puppet/util/profiler/wall_clock.rb +3 -3
  956. data/lib/puppet/util/profiler.rb +1 -0
  957. data/lib/puppet/util/provider_features.rb +5 -2
  958. data/lib/puppet/util/psych_support.rb +1 -0
  959. data/lib/puppet/util/rdoc/code_objects.rb +14 -17
  960. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +70 -80
  961. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +50 -68
  962. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +21 -19
  963. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +1 -0
  964. data/lib/puppet/util/rdoc/parser.rb +1 -0
  965. data/lib/puppet/util/rdoc.rb +9 -9
  966. data/lib/puppet/util/reference.rb +3 -3
  967. data/lib/puppet/util/resource_template.rb +2 -1
  968. data/lib/puppet/util/retry_action.rb +4 -4
  969. data/lib/puppet/util/rpm_compare.rb +13 -10
  970. data/lib/puppet/util/rubygems.rb +1 -2
  971. data/lib/puppet/util/run_mode.rb +5 -4
  972. data/lib/puppet/util/selinux.rb +25 -14
  973. data/lib/puppet/util/skip_tags.rb +1 -0
  974. data/lib/puppet/util/splayer.rb +1 -0
  975. data/lib/puppet/util/storage.rb +2 -1
  976. data/lib/puppet/util/suidmanager.rb +21 -20
  977. data/lib/puppet/util/symbolic_file_mode.rb +11 -8
  978. data/lib/puppet/util/tag_set.rb +1 -0
  979. data/lib/puppet/util/tagging.rb +4 -3
  980. data/lib/puppet/util/terminal.rb +1 -0
  981. data/lib/puppet/util/user_attr.rb +2 -1
  982. data/lib/puppet/util/warnings.rb +3 -0
  983. data/lib/puppet/util/watched_file.rb +3 -1
  984. data/lib/puppet/util/watcher/change_watcher.rb +1 -0
  985. data/lib/puppet/util/watcher/periodic_watcher.rb +1 -1
  986. data/lib/puppet/util/watcher/timer.rb +1 -0
  987. data/lib/puppet/util/watcher.rb +1 -0
  988. data/lib/puppet/util/windows/access_control_entry.rb +1 -0
  989. data/lib/puppet/util/windows/access_control_list.rb +7 -5
  990. data/lib/puppet/util/windows/adsi.rb +46 -39
  991. data/lib/puppet/util/windows/com.rb +7 -5
  992. data/lib/puppet/util/windows/daemon.rb +39 -39
  993. data/lib/puppet/util/windows/error.rb +3 -2
  994. data/lib/puppet/util/windows/eventlog.rb +12 -9
  995. data/lib/puppet/util/windows/file.rb +43 -33
  996. data/lib/puppet/util/windows/monkey_patches/process.rb +1 -2
  997. data/lib/puppet/util/windows/principal.rb +31 -29
  998. data/lib/puppet/util/windows/process.rb +33 -26
  999. data/lib/puppet/util/windows/registry.rb +84 -49
  1000. data/lib/puppet/util/windows/root_certs.rb +2 -1
  1001. data/lib/puppet/util/windows/security.rb +61 -60
  1002. data/lib/puppet/util/windows/security_descriptor.rb +1 -0
  1003. data/lib/puppet/util/windows/service.rb +16 -5
  1004. data/lib/puppet/util/windows/sid.rb +14 -13
  1005. data/lib/puppet/util/windows/string.rb +1 -0
  1006. data/lib/puppet/util/windows/user.rb +37 -35
  1007. data/lib/puppet/util/windows.rb +7 -1
  1008. data/lib/puppet/util/yaml.rb +1 -0
  1009. data/lib/puppet/util.rb +32 -36
  1010. data/lib/puppet/vendor.rb +2 -1
  1011. data/lib/puppet/version.rb +3 -1
  1012. data/lib/puppet/x509/cert_provider.rb +19 -13
  1013. data/lib/puppet/x509/pem_store.rb +1 -0
  1014. data/lib/puppet/x509.rb +1 -0
  1015. data/lib/puppet.rb +9 -7
  1016. data/lib/puppet_pal.rb +1 -0
  1017. data/lib/puppet_x.rb +1 -0
  1018. data/locales/puppet.pot +2013 -2013
  1019. data/man/man5/puppet.conf.5 +2 -2
  1020. data/man/man8/puppet-agent.8 +1 -1
  1021. data/man/man8/puppet-apply.8 +1 -1
  1022. data/man/man8/puppet-catalog.8 +1 -1
  1023. data/man/man8/puppet-config.8 +1 -1
  1024. data/man/man8/puppet-describe.8 +1 -1
  1025. data/man/man8/puppet-device.8 +1 -1
  1026. data/man/man8/puppet-doc.8 +1 -1
  1027. data/man/man8/puppet-epp.8 +1 -1
  1028. data/man/man8/puppet-facts.8 +1 -1
  1029. data/man/man8/puppet-filebucket.8 +1 -1
  1030. data/man/man8/puppet-generate.8 +1 -1
  1031. data/man/man8/puppet-help.8 +1 -1
  1032. data/man/man8/puppet-lookup.8 +1 -1
  1033. data/man/man8/puppet-module.8 +1 -1
  1034. data/man/man8/puppet-node.8 +1 -1
  1035. data/man/man8/puppet-parser.8 +1 -1
  1036. data/man/man8/puppet-plugin.8 +1 -1
  1037. data/man/man8/puppet-report.8 +1 -1
  1038. data/man/man8/puppet-resource.8 +1 -1
  1039. data/man/man8/puppet-script.8 +1 -1
  1040. data/man/man8/puppet-ssl.8 +1 -1
  1041. data/man/man8/puppet.8 +2 -2
  1042. data/tasks/generate_cert_fixtures.rake +1 -0
  1043. metadata +3 -2456
  1044. data/CONTRIBUTING.md +0 -161
  1045. data/spec/fixtures/faulty_face/puppet/face/syntax.rb +0 -8
  1046. data/spec/fixtures/hiera.yaml +0 -9
  1047. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -92
  1048. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +0 -3
  1049. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +0 -2
  1050. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +0 -25
  1051. data/spec/fixtures/integration/application/module/environments/direnv/modules/nginx/README +0 -3
  1052. data/spec/fixtures/integration/application/module/environments/direnv/modules/nginx/manifests/init.pp +0 -17
  1053. data/spec/fixtures/integration/application/module/environments/direnv/modules/nginx/metadata.json +0 -20
  1054. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +0 -4
  1055. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +0 -3
  1056. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +0 -8
  1057. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +0 -25
  1058. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +0 -19
  1059. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +0 -20
  1060. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +0 -8
  1061. data/spec/fixtures/integration/node/environment/sitedir/00_a.pp +0 -2
  1062. data/spec/fixtures/integration/node/environment/sitedir/01_b.pp +0 -6
  1063. data/spec/fixtures/integration/node/environment/sitedir/03_empty.pp +0 -0
  1064. data/spec/fixtures/integration/node/environment/sitedir/04_include.pp +0 -2
  1065. data/spec/fixtures/integration/node/environment/sitedir2/00_a.pp +0 -2
  1066. data/spec/fixtures/integration/node/environment/sitedir2/02_folder/01_b.pp +0 -6
  1067. data/spec/fixtures/integration/node/environment/sitedir2/03_c.pp +0 -1
  1068. data/spec/fixtures/integration/node/environment/sitedir2/04_include.pp +0 -2
  1069. data/spec/fixtures/java.tgz +0 -0
  1070. data/spec/fixtures/manifests/site.pp +0 -0
  1071. data/spec/fixtures/module.tar.gz +0 -0
  1072. data/spec/fixtures/releases/jamtur01-apache/Modulefile +0 -2
  1073. data/spec/fixtures/releases/jamtur01-apache/files/httpd +0 -24
  1074. data/spec/fixtures/releases/jamtur01-apache/files/test.vhost +0 -18
  1075. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +0 -21
  1076. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/type/a2mod.rb +0 -12
  1077. data/spec/fixtures/releases/jamtur01-apache/manifests/dev.pp +0 -5
  1078. data/spec/fixtures/releases/jamtur01-apache/manifests/init.pp +0 -34
  1079. data/spec/fixtures/releases/jamtur01-apache/manifests/params.pp +0 -17
  1080. data/spec/fixtures/releases/jamtur01-apache/manifests/php.pp +0 -5
  1081. data/spec/fixtures/releases/jamtur01-apache/manifests/ssl.pp +0 -15
  1082. data/spec/fixtures/releases/jamtur01-apache/manifests/vhost.pp +0 -15
  1083. data/spec/fixtures/releases/jamtur01-apache/metadata.json +0 -1
  1084. data/spec/fixtures/releases/jamtur01-apache/templates/vhost-default.conf.erb +0 -20
  1085. data/spec/fixtures/releases/jamtur01-apache/tests/apache.pp +0 -1
  1086. data/spec/fixtures/releases/jamtur01-apache/tests/dev.pp +0 -1
  1087. data/spec/fixtures/releases/jamtur01-apache/tests/init.pp +0 -1
  1088. data/spec/fixtures/releases/jamtur01-apache/tests/php.pp +0 -1
  1089. data/spec/fixtures/releases/jamtur01-apache/tests/ssl.pp +0 -1
  1090. data/spec/fixtures/releases/jamtur01-apache/tests/vhost.pp +0 -2
  1091. data/spec/fixtures/ssl/127.0.0.1-key.pem +0 -117
  1092. data/spec/fixtures/ssl/127.0.0.1.pem +0 -70
  1093. data/spec/fixtures/ssl/bad-basic-constraints.pem +0 -81
  1094. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +0 -81
  1095. data/spec/fixtures/ssl/ca.pem +0 -81
  1096. data/spec/fixtures/ssl/crl.pem +0 -40
  1097. data/spec/fixtures/ssl/ec-key-openssl.pem +0 -8
  1098. data/spec/fixtures/ssl/ec-key-pk8.pem +0 -5
  1099. data/spec/fixtures/ssl/ec-key.pem +0 -18
  1100. data/spec/fixtures/ssl/ec.pem +0 -50
  1101. data/spec/fixtures/ssl/encrypted-ec-key.pem +0 -21
  1102. data/spec/fixtures/ssl/encrypted-key.pem +0 -120
  1103. data/spec/fixtures/ssl/intermediate-agent-crl.pem +0 -40
  1104. data/spec/fixtures/ssl/intermediate-agent.pem +0 -81
  1105. data/spec/fixtures/ssl/intermediate-crl.pem +0 -46
  1106. data/spec/fixtures/ssl/intermediate.pem +0 -81
  1107. data/spec/fixtures/ssl/netlock-arany-utf8.pem +0 -23
  1108. data/spec/fixtures/ssl/oid-key.pem +0 -117
  1109. data/spec/fixtures/ssl/oid.pem +0 -70
  1110. data/spec/fixtures/ssl/pluto-key.pem +0 -117
  1111. data/spec/fixtures/ssl/pluto.pem +0 -67
  1112. data/spec/fixtures/ssl/renewed.pem +0 -67
  1113. data/spec/fixtures/ssl/request-key.pem +0 -117
  1114. data/spec/fixtures/ssl/request.pem +0 -62
  1115. data/spec/fixtures/ssl/revoked-key.pem +0 -117
  1116. data/spec/fixtures/ssl/revoked.pem +0 -67
  1117. data/spec/fixtures/ssl/signed-key.pem +0 -117
  1118. data/spec/fixtures/ssl/signed.pem +0 -67
  1119. data/spec/fixtures/ssl/tampered-cert.pem +0 -67
  1120. data/spec/fixtures/ssl/tampered-csr.pem +0 -62
  1121. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +0 -5
  1122. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +0 -117
  1123. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +0 -70
  1124. data/spec/fixtures/ssl/unknown-ca-key.pem +0 -117
  1125. data/spec/fixtures/ssl/unknown-ca.pem +0 -81
  1126. data/spec/fixtures/stdlib.tgz +0 -0
  1127. data/spec/fixtures/unit/application/environments/production/data/common.yaml +0 -24
  1128. data/spec/fixtures/unit/application/environments/production/environment.conf +0 -1
  1129. data/spec/fixtures/unit/application/environments/production/manifests/site.pp +0 -1
  1130. data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +0 -1
  1131. data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/environment/data.pp +0 -10
  1132. data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +0 -1
  1133. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/data/bad.json +0 -3
  1134. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/environment.conf +0 -2
  1135. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/hiera.yaml +0 -5
  1136. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/manifests/site.pp +0 -5
  1137. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/data/bad.yaml +0 -3
  1138. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/environment.conf +0 -2
  1139. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/hiera.yaml +0 -5
  1140. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/manifests/site.pp +0 -5
  1141. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/data/common.yaml +0 -2
  1142. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/environment.conf +0 -2
  1143. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/manifests/site.pp +0 -1
  1144. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/data/common.yaml +0 -2
  1145. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/manifests/init.pp +0 -5
  1146. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/metadata.json +0 -9
  1147. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/first.json +0 -3
  1148. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/name.yaml +0 -2
  1149. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/second.json +0 -3
  1150. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/single.yaml +0 -2
  1151. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/third_utf8.json +0 -3
  1152. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/utf8.yaml +0 -3
  1153. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data2/single.yaml +0 -2
  1154. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/environment.conf +0 -2
  1155. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +0 -22
  1156. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +0 -5
  1157. data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +0 -48
  1158. data/spec/fixtures/unit/data_providers/environments/hiera_misc/environment.conf +0 -2
  1159. data/spec/fixtures/unit/data_providers/environments/hiera_misc/manifests/site.pp +0 -1
  1160. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/data/common.yaml +0 -30
  1161. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/manifests/init.pp +0 -13
  1162. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/metadata.json +0 -9
  1163. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +0 -4
  1164. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +0 -4
  1165. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/environment.conf +0 -2
  1166. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +0 -7
  1167. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/manifests/site.pp +0 -1
  1168. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/first.json +0 -3
  1169. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/name.yaml +0 -2
  1170. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/second.json +0 -3
  1171. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server1.yaml +0 -1
  1172. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server2.yaml +0 -1
  1173. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/single.yaml +0 -2
  1174. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data2/single.yaml +0 -2
  1175. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/hiera.yaml +0 -20
  1176. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/manifests/init.pp +0 -5
  1177. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/metadata.json +0 -9
  1178. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +0 -4
  1179. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +0 -4
  1180. data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +0 -2
  1181. data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +0 -7
  1182. data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +0 -1
  1183. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +0 -6
  1184. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +0 -5
  1185. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +0 -2
  1186. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +0 -9
  1187. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +0 -4
  1188. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +0 -5
  1189. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +0 -3
  1190. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +0 -9
  1191. data/spec/fixtures/unit/data_providers/environments/production/environment.conf +0 -2
  1192. data/spec/fixtures/unit/data_providers/environments/production/lib/puppet/functions/environment/data.rb +0 -9
  1193. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -9
  1194. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/manifests/init.pp +0 -10
  1195. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/metadata.json +0 -9
  1196. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/functions/data.pp +0 -6
  1197. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/manifests/init.pp +0 -9
  1198. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/metadata.json +0 -9
  1199. data/spec/fixtures/unit/forge/bacula-releases.json +0 -128
  1200. data/spec/fixtures/unit/forge/bacula.json +0 -76
  1201. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  1202. data/spec/fixtures/unit/functions/hiera/hiera/backend/hieraspec_backend.rb +0 -22
  1203. data/spec/fixtures/unit/functions/lookup/data/common.yaml +0 -19
  1204. data/spec/fixtures/unit/functions/lookup/hiera/backend/custom_backend.rb +0 -18
  1205. data/spec/fixtures/unit/functions/lookup/hiera/backend/other_backend.rb +0 -7
  1206. data/spec/fixtures/unit/functions/lookup_fixture/data/common.yaml +0 -19
  1207. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/environment.conf +0 -2
  1208. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/lib/puppet/functions/environment/data.rb +0 -13
  1209. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -9
  1210. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/manifests/init.pp +0 -8
  1211. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/metadata.json +0 -9
  1212. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +0 -7
  1213. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/manifests/init.pp +0 -2
  1214. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/metadata.json +0 -9
  1215. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/lib/puppet/functions/bca/data.rb +0 -9
  1216. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/manifests/init.pp +0 -2
  1217. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/metadata.json +0 -9
  1218. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/data/empty.json +0 -0
  1219. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/hiera.yaml +0 -5
  1220. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/manifests/init.pp +0 -2
  1221. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/metadata.json +0 -9
  1222. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/data/empty_key.json +0 -1
  1223. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/hiera.yaml +0 -5
  1224. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/manifests/init.pp +0 -2
  1225. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/metadata.json +0 -9
  1226. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/data/empty_key.yaml +0 -1
  1227. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/hiera.yaml +0 -5
  1228. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/manifests/init.pp +0 -2
  1229. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/metadata.json +0 -9
  1230. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/data/empty.yaml +0 -2
  1231. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/hiera.yaml +0 -5
  1232. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/manifests/init.pp +0 -2
  1233. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/metadata.json +0 -9
  1234. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/data/first.json +0 -4
  1235. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/hiera.yaml +0 -8
  1236. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/manifests/init.pp +0 -5
  1237. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/metadata.json +0 -9
  1238. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +0 -9
  1239. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/manifests/init.pp +0 -3
  1240. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/metadata.json +0 -9
  1241. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/no_provider/manifests/init.pp +0 -2
  1242. data/spec/fixtures/unit/indirector/data_binding/hiera/global.yaml +0 -10
  1243. data/spec/fixtures/unit/indirector/data_binding/hiera/invalid.yaml +0 -1
  1244. data/spec/fixtures/unit/indirector/hiera/global.yaml +0 -10
  1245. data/spec/fixtures/unit/indirector/hiera/invalid.yaml +0 -1
  1246. data/spec/fixtures/unit/module/trailing-comma.json +0 -24
  1247. data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/init.pp +0 -3
  1248. data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/wrongdefine.pp +0 -3
  1249. data/spec/fixtures/unit/parser/lexer/aliastest.pp +0 -16
  1250. data/spec/fixtures/unit/parser/lexer/append.pp +0 -11
  1251. data/spec/fixtures/unit/parser/lexer/argumentdefaults.pp +0 -14
  1252. data/spec/fixtures/unit/parser/lexer/arithmetic_expression.pp +0 -8
  1253. data/spec/fixtures/unit/parser/lexer/arraytrailingcomma.pp +0 -3
  1254. data/spec/fixtures/unit/parser/lexer/casestatement.pp +0 -65
  1255. data/spec/fixtures/unit/parser/lexer/classheirarchy.pp +0 -15
  1256. data/spec/fixtures/unit/parser/lexer/classincludes.pp +0 -17
  1257. data/spec/fixtures/unit/parser/lexer/classpathtest.pp +0 -11
  1258. data/spec/fixtures/unit/parser/lexer/collection.pp +0 -10
  1259. data/spec/fixtures/unit/parser/lexer/collection_override.pp +0 -8
  1260. data/spec/fixtures/unit/parser/lexer/collection_within_virtual_definitions.pp +0 -20
  1261. data/spec/fixtures/unit/parser/lexer/componentmetaparams.pp +0 -11
  1262. data/spec/fixtures/unit/parser/lexer/componentrequire.pp +0 -8
  1263. data/spec/fixtures/unit/parser/lexer/deepclassheirarchy.pp +0 -23
  1264. data/spec/fixtures/unit/parser/lexer/defineoverrides.pp +0 -17
  1265. data/spec/fixtures/unit/parser/lexer/emptyclass.pp +0 -9
  1266. data/spec/fixtures/unit/parser/lexer/emptyexec.pp +0 -3
  1267. data/spec/fixtures/unit/parser/lexer/emptyifelse.pp +0 -9
  1268. data/spec/fixtures/unit/parser/lexer/falsevalues.pp +0 -3
  1269. data/spec/fixtures/unit/parser/lexer/filecreate.pp +0 -11
  1270. data/spec/fixtures/unit/parser/lexer/fqdefinition.pp +0 -5
  1271. data/spec/fixtures/unit/parser/lexer/fqparents.pp +0 -11
  1272. data/spec/fixtures/unit/parser/lexer/funccomma.pp +0 -5
  1273. data/spec/fixtures/unit/parser/lexer/hash.pp +0 -33
  1274. data/spec/fixtures/unit/parser/lexer/ifexpression.pp +0 -12
  1275. data/spec/fixtures/unit/parser/lexer/implicititeration.pp +0 -15
  1276. data/spec/fixtures/unit/parser/lexer/multilinecomments.pp +0 -10
  1277. data/spec/fixtures/unit/parser/lexer/multipleclass.pp +0 -9
  1278. data/spec/fixtures/unit/parser/lexer/multipleinstances.pp +0 -7
  1279. data/spec/fixtures/unit/parser/lexer/multisubs.pp +0 -13
  1280. data/spec/fixtures/unit/parser/lexer/namevartest.pp +0 -9
  1281. data/spec/fixtures/unit/parser/lexer/scopetest.pp +0 -13
  1282. data/spec/fixtures/unit/parser/lexer/selectorvalues.pp +0 -49
  1283. data/spec/fixtures/unit/parser/lexer/simpledefaults.pp +0 -5
  1284. data/spec/fixtures/unit/parser/lexer/simpleselector.pp +0 -38
  1285. data/spec/fixtures/unit/parser/lexer/singleary.pp +0 -19
  1286. data/spec/fixtures/unit/parser/lexer/singlequote.pp +0 -11
  1287. data/spec/fixtures/unit/parser/lexer/singleselector.pp +0 -22
  1288. data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +0 -11
  1289. data/spec/fixtures/unit/parser/lexer/tag.pp +0 -9
  1290. data/spec/fixtures/unit/parser/lexer/tagged.pp +0 -35
  1291. data/spec/fixtures/unit/parser/lexer/virtualresources.pp +0 -14
  1292. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +0 -10
  1293. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/lib/puppet/bindings/confdirtest.rb +0 -10
  1294. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet/bindings/awesome2/default.rb +0 -20
  1295. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet_x/awesome2/echo_scheme_handler.rb +0 -18
  1296. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/lib/puppet/bindings/bad/default.rb +0 -5
  1297. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/lib/puppet/bindings/good/default.rb +0 -6
  1298. data/spec/fixtures/unit/pops/binder/config/binder_config/nolayer/binder_config.yaml +0 -6
  1299. data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +0 -9
  1300. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/functions/usee_puppet.pp +0 -3
  1301. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/callee.rb +0 -5
  1302. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +0 -6
  1303. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/type/usee_type.rb +0 -5
  1304. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +0 -8
  1305. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +0 -1
  1306. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee2/lib/puppet/functions/usee2/callee.rb +0 -5
  1307. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +0 -5
  1308. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +0 -5
  1309. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +0 -5
  1310. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller.rb +0 -5
  1311. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +0 -5
  1312. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +0 -5
  1313. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +0 -5
  1314. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +0 -5
  1315. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +0 -87
  1316. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/metadata.json +0 -10
  1317. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +0 -1
  1318. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +0 -1
  1319. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load.rb +0 -11
  1320. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load2.rb +0 -11
  1321. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load3.rb +0 -11
  1322. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load4.rb +0 -11
  1323. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load5.rb +0 -12
  1324. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/callee.rb +0 -8
  1325. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/callee_ws.rb +0 -8
  1326. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/func_with_syntax_error.rb +0 -9
  1327. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/good_func_load.rb +0 -9
  1328. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/metadata.json +0 -9
  1329. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcalled.pp +0 -3
  1330. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller.pp +0 -3
  1331. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller4.pp +0 -3
  1332. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/caller.rb +0 -5
  1333. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/caller_ws.rb +0 -12
  1334. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/callingpuppet.rb +0 -5
  1335. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/metadata.json +0 -9
  1336. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/functions/hello.pp +0 -3
  1337. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/manifests/init.pp +0 -3
  1338. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/metadata.json +0 -10
  1339. data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +0 -10
  1340. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/hello.pp +0 -3
  1341. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/subspace/hello.pp +0 -3
  1342. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/modulea/rb_func_a.rb +0 -5
  1343. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/rb_func_a.rb +0 -5
  1344. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/manifests/init.pp +0 -3
  1345. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/metadata.json +0 -10
  1346. data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/lib/puppet/functions/moduleb/rb_func_b.rb +0 -6
  1347. data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/manifests/init.pp +0 -3
  1348. data/spec/fixtures/unit/pops/parser/lexer/aliastest.pp +0 -16
  1349. data/spec/fixtures/unit/pops/parser/lexer/append.pp +0 -11
  1350. data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +0 -14
  1351. data/spec/fixtures/unit/pops/parser/lexer/arithmetic_expression.pp +0 -8
  1352. data/spec/fixtures/unit/pops/parser/lexer/arraytrailingcomma.pp +0 -3
  1353. data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +0 -65
  1354. data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +0 -15
  1355. data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +0 -17
  1356. data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +0 -11
  1357. data/spec/fixtures/unit/pops/parser/lexer/collection.pp +0 -10
  1358. data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +0 -8
  1359. data/spec/fixtures/unit/pops/parser/lexer/collection_within_virtual_definitions.pp +0 -20
  1360. data/spec/fixtures/unit/pops/parser/lexer/componentmetaparams.pp +0 -11
  1361. data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +0 -8
  1362. data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +0 -23
  1363. data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +0 -17
  1364. data/spec/fixtures/unit/pops/parser/lexer/emptyclass.pp +0 -9
  1365. data/spec/fixtures/unit/pops/parser/lexer/emptyexec.pp +0 -3
  1366. data/spec/fixtures/unit/pops/parser/lexer/emptyifelse.pp +0 -9
  1367. data/spec/fixtures/unit/pops/parser/lexer/falsevalues.pp +0 -3
  1368. data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +0 -11
  1369. data/spec/fixtures/unit/pops/parser/lexer/fqdefinition.pp +0 -5
  1370. data/spec/fixtures/unit/pops/parser/lexer/fqparents.pp +0 -11
  1371. data/spec/fixtures/unit/pops/parser/lexer/funccomma.pp +0 -5
  1372. data/spec/fixtures/unit/pops/parser/lexer/hash.pp +0 -33
  1373. data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +0 -12
  1374. data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +0 -15
  1375. data/spec/fixtures/unit/pops/parser/lexer/multilinecomments.pp +0 -10
  1376. data/spec/fixtures/unit/pops/parser/lexer/multipleclass.pp +0 -9
  1377. data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +0 -7
  1378. data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +0 -13
  1379. data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +0 -9
  1380. data/spec/fixtures/unit/pops/parser/lexer/scopetest.pp +0 -13
  1381. data/spec/fixtures/unit/pops/parser/lexer/selectorvalues.pp +0 -49
  1382. data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +0 -5
  1383. data/spec/fixtures/unit/pops/parser/lexer/simpleselector.pp +0 -38
  1384. data/spec/fixtures/unit/pops/parser/lexer/singleary.pp +0 -19
  1385. data/spec/fixtures/unit/pops/parser/lexer/singlequote.pp +0 -11
  1386. data/spec/fixtures/unit/pops/parser/lexer/singleselector.pp +0 -22
  1387. data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +0 -11
  1388. data/spec/fixtures/unit/pops/parser/lexer/tag.pp +0 -9
  1389. data/spec/fixtures/unit/pops/parser/lexer/tagged.pp +0 -35
  1390. data/spec/fixtures/unit/pops/parser/lexer/virtualresources.pp +0 -14
  1391. data/spec/fixtures/unit/provider/aix_object/aix_colon_list_real_world_input.out +0 -1
  1392. data/spec/fixtures/unit/provider/aix_object/aix_colon_list_real_world_output.out +0 -1
  1393. data/spec/fixtures/unit/provider/cron/crontab/single_line.yaml +0 -272
  1394. data/spec/fixtures/unit/provider/cron/crontab/vixie_header.txt +0 -3
  1395. data/spec/fixtures/unit/provider/cron/parsed/managed +0 -6
  1396. data/spec/fixtures/unit/provider/cron/parsed/simple +0 -9
  1397. data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +0 -19
  1398. data/spec/fixtures/unit/provider/package/gem/gem-list-single-package +0 -4
  1399. data/spec/fixtures/unit/provider/package/gem/line-with-1.8.5-warning +0 -14
  1400. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.detail +0 -19
  1401. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.list +0 -10
  1402. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.query +0 -1
  1403. data/spec/fixtures/unit/provider/package/openbsd/pkginfo_flavors.list +0 -2
  1404. data/spec/fixtures/unit/provider/package/pkg/dummy_implicit_version +0 -3
  1405. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris10 +0 -1
  1406. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.certificate_warning +0 -2
  1407. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.installed +0 -1
  1408. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.known +0 -1
  1409. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.installed +0 -1
  1410. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.known +0 -1
  1411. data/spec/fixtures/unit/provider/package/pkg/incomplete +0 -1
  1412. data/spec/fixtures/unit/provider/package/pkg/solaris11 +0 -2
  1413. data/spec/fixtures/unit/provider/package/pkg/unknown_status +0 -12
  1414. data/spec/fixtures/unit/provider/package/pkgng/pkg.query +0 -7
  1415. data/spec/fixtures/unit/provider/package/pkgng/pkg.query.zsh +0 -1
  1416. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +0 -5
  1417. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +0 -30
  1418. data/spec/fixtures/unit/provider/package/sun/dummy.server +0 -12
  1419. data/spec/fixtures/unit/provider/package/sun/simple +0 -24
  1420. data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +0 -187
  1421. data/spec/fixtures/unit/provider/package/yum/yum-check-update-multiline.txt +0 -201
  1422. data/spec/fixtures/unit/provider/package/yum/yum-check-update-obsoletes.txt +0 -195
  1423. data/spec/fixtures/unit/provider/package/yum/yum-check-update-plugin-output.txt +0 -36
  1424. data/spec/fixtures/unit/provider/package/yum/yum-check-update-security.txt +0 -184
  1425. data/spec/fixtures/unit/provider/package/yum/yum-check-update-simple.txt +0 -13
  1426. data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +0 -9
  1427. data/spec/fixtures/unit/provider/package/zypper/zypper-list-updates-SLES11sp1.out +0 -369
  1428. data/spec/fixtures/unit/provider/package/zypper/zypper-list-updates-empty.out +0 -3
  1429. data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +0 -13
  1430. data/spec/fixtures/unit/provider/parsedfile/aliases.txt +0 -2
  1431. data/spec/fixtures/unit/provider/parsedfile/simple.txt +0 -7
  1432. data/spec/fixtures/unit/provider/service/base/ps_ef.mixed_encoding +0 -3
  1433. data/spec/fixtures/unit/provider/service/gentoo/rc_update_show +0 -30
  1434. data/spec/fixtures/unit/provider/service/openbsd/rcctl_getall +0 -6
  1435. data/spec/fixtures/unit/provider/service/openrc/rcservice_list +0 -8
  1436. data/spec/fixtures/unit/provider/service/openrc/rcstatus +0 -43
  1437. data/spec/fixtures/unit/provider/service/smf/svcs_fmri.out +0 -6
  1438. data/spec/fixtures/unit/provider/service/smf/svcs_instances.out +0 -4
  1439. data/spec/fixtures/unit/provider/service/smf/svcs_multiple_fmris.out +0 -13
  1440. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +0 -16
  1441. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +0 -9
  1442. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -36
  1443. data/spec/fixtures/unit/reports/tagmail/tagmail_email.conf +0 -2
  1444. data/spec/fixtures/unit/reports/tagmail/tagmail_failers.conf +0 -3
  1445. data/spec/fixtures/unit/reports/tagmail/tagmail_passers.conf +0 -30
  1446. data/spec/fixtures/unit/ssl/certificate/old-style-cert-exts.pem +0 -33
  1447. data/spec/fixtures/unit/ssl/certificate_request/old-style-cert-request.pem +0 -28
  1448. data/spec/fixtures/unit/type/user/authorized_keys +0 -6
  1449. data/spec/fixtures/unit/util/filetype/aixtab_output +0 -44
  1450. data/spec/fixtures/unit/util/filetype/suntab_output +0 -9
  1451. data/spec/fixtures/unit/util/monkey_patches/x509.pem +0 -32
  1452. data/spec/fixtures/unit/util/rdoc/basic.pp +0 -16
  1453. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +0 -104
  1454. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +0 -108
  1455. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +0 -108
  1456. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +0 -104
  1457. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +0 -100
  1458. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +0 -104
  1459. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +0 -104
  1460. data/spec/fixtures/yaml/report2.6.x.yaml +0 -190
  1461. data/spec/fixtures/yaml/test.local.yaml +0 -16
  1462. data/spec/integration/agent/logging_spec.rb +0 -179
  1463. data/spec/integration/application/agent_spec.rb +0 -1054
  1464. data/spec/integration/application/apply_spec.rb +0 -781
  1465. data/spec/integration/application/doc_spec.rb +0 -24
  1466. data/spec/integration/application/filebucket_spec.rb +0 -255
  1467. data/spec/integration/application/help_spec.rb +0 -44
  1468. data/spec/integration/application/lookup_spec.rb +0 -275
  1469. data/spec/integration/application/module_spec.rb +0 -230
  1470. data/spec/integration/application/plugin_spec.rb +0 -145
  1471. data/spec/integration/application/resource_spec.rb +0 -68
  1472. data/spec/integration/application/ssl_spec.rb +0 -20
  1473. data/spec/integration/configurer_spec.rb +0 -166
  1474. data/spec/integration/data_binding_spec.rb +0 -278
  1475. data/spec/integration/defaults_spec.rb +0 -279
  1476. data/spec/integration/directory_environments_spec.rb +0 -67
  1477. data/spec/integration/environments/default_manifest_spec.rb +0 -215
  1478. data/spec/integration/environments/setting_hooks_spec.rb +0 -27
  1479. data/spec/integration/environments/settings_interpolation_spec.rb +0 -106
  1480. data/spec/integration/environments/settings_spec.rb +0 -128
  1481. data/spec/integration/http/client_spec.rb +0 -229
  1482. data/spec/integration/indirector/catalog/compiler_spec.rb +0 -75
  1483. data/spec/integration/indirector/direct_file_server_spec.rb +0 -90
  1484. data/spec/integration/indirector/facts/facter_spec.rb +0 -168
  1485. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -106
  1486. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -75
  1487. data/spec/integration/l10n/compiler_spec.rb +0 -37
  1488. data/spec/integration/network/formats_spec.rb +0 -90
  1489. data/spec/integration/network/http/api/indirected_routes_spec.rb +0 -60
  1490. data/spec/integration/network/http_pool_spec.rb +0 -275
  1491. data/spec/integration/node/environment_spec.rb +0 -170
  1492. data/spec/integration/node/facts_spec.rb +0 -40
  1493. data/spec/integration/node_spec.rb +0 -77
  1494. data/spec/integration/parser/catalog_spec.rb +0 -68
  1495. data/spec/integration/parser/class_spec.rb +0 -33
  1496. data/spec/integration/parser/collection_spec.rb +0 -362
  1497. data/spec/integration/parser/compiler_spec.rb +0 -1221
  1498. data/spec/integration/parser/conditionals_spec.rb +0 -95
  1499. data/spec/integration/parser/dynamic_scoping_spec.rb +0 -66
  1500. data/spec/integration/parser/environment_spec.rb +0 -47
  1501. data/spec/integration/parser/node_spec.rb +0 -163
  1502. data/spec/integration/parser/parameter_defaults_spec.rb +0 -358
  1503. data/spec/integration/parser/pcore_resource_spec.rb +0 -243
  1504. data/spec/integration/parser/resource_expressions_spec.rb +0 -222
  1505. data/spec/integration/parser/scope_spec.rb +0 -735
  1506. data/spec/integration/parser/script_compiler_spec.rb +0 -113
  1507. data/spec/integration/parser/undef_param_spec.rb +0 -95
  1508. data/spec/integration/provider/file/windows_spec.rb +0 -162
  1509. data/spec/integration/resource/catalog_spec.rb +0 -47
  1510. data/spec/integration/resource/type_collection_spec.rb +0 -88
  1511. data/spec/integration/transaction/report_spec.rb +0 -706
  1512. data/spec/integration/transaction_spec.rb +0 -553
  1513. data/spec/integration/type/exec_spec.rb +0 -114
  1514. data/spec/integration/type/file_spec.rb +0 -2012
  1515. data/spec/integration/type/notify_spec.rb +0 -46
  1516. data/spec/integration/type/package_spec.rb +0 -200
  1517. data/spec/integration/type/tidy_spec.rb +0 -45
  1518. data/spec/integration/type_spec.rb +0 -30
  1519. data/spec/integration/util/autoload_spec.rb +0 -104
  1520. data/spec/integration/util/execution_spec.rb +0 -104
  1521. data/spec/integration/util/rdoc/parser_spec.rb +0 -171
  1522. data/spec/integration/util/settings_spec.rb +0 -115
  1523. data/spec/integration/util/windows/adsi_spec.rb +0 -207
  1524. data/spec/integration/util/windows/monkey_patches/process_spec.rb +0 -231
  1525. data/spec/integration/util/windows/principal_spec.rb +0 -279
  1526. data/spec/integration/util/windows/process_spec.rb +0 -96
  1527. data/spec/integration/util/windows/registry_spec.rb +0 -334
  1528. data/spec/integration/util/windows/security_spec.rb +0 -1010
  1529. data/spec/integration/util/windows/user_spec.rb +0 -226
  1530. data/spec/integration/util_spec.rb +0 -104
  1531. data/spec/lib/matchers/containment_matchers.rb +0 -52
  1532. data/spec/lib/matchers/include_in_order.rb +0 -20
  1533. data/spec/lib/matchers/include_in_order_spec.rb +0 -30
  1534. data/spec/lib/matchers/json.rb +0 -132
  1535. data/spec/lib/matchers/match_tokens2.rb +0 -74
  1536. data/spec/lib/matchers/relationship_graph_matchers.rb +0 -48
  1537. data/spec/lib/matchers/resource.rb +0 -74
  1538. data/spec/lib/puppet/certificate_factory.rb +0 -218
  1539. data/spec/lib/puppet/face/1.0.0/huzzah.rb +0 -8
  1540. data/spec/lib/puppet/face/basetest.rb +0 -51
  1541. data/spec/lib/puppet/face/huzzah/obsolete.rb +0 -6
  1542. data/spec/lib/puppet/face/huzzah.rb +0 -8
  1543. data/spec/lib/puppet/face/version_matching.rb +0 -12
  1544. data/spec/lib/puppet/indirector/indirector_testing/json.rb +0 -6
  1545. data/spec/lib/puppet/indirector/indirector_testing/memory.rb +0 -7
  1546. data/spec/lib/puppet/indirector/indirector_testing/msgpack.rb +0 -6
  1547. data/spec/lib/puppet/indirector_proxy.rb +0 -34
  1548. data/spec/lib/puppet/indirector_testing.rb +0 -31
  1549. data/spec/lib/puppet/test_ca.rb +0 -157
  1550. data/spec/lib/puppet_spec/character_encoding.rb +0 -12
  1551. data/spec/lib/puppet_spec/compiler.rb +0 -112
  1552. data/spec/lib/puppet_spec/files.rb +0 -107
  1553. data/spec/lib/puppet_spec/fixtures.rb +0 -52
  1554. data/spec/lib/puppet_spec/handler.rb +0 -53
  1555. data/spec/lib/puppet_spec/https.rb +0 -95
  1556. data/spec/lib/puppet_spec/language.rb +0 -75
  1557. data/spec/lib/puppet_spec/matchers.rb +0 -68
  1558. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +0 -56
  1559. data/spec/lib/puppet_spec/module_tool/stub_source.rb +0 -136
  1560. data/spec/lib/puppet_spec/modules.rb +0 -82
  1561. data/spec/lib/puppet_spec/network.rb +0 -127
  1562. data/spec/lib/puppet_spec/pops.rb +0 -29
  1563. data/spec/lib/puppet_spec/puppetserver.rb +0 -179
  1564. data/spec/lib/puppet_spec/scope.rb +0 -13
  1565. data/spec/lib/puppet_spec/settings.rb +0 -39
  1566. data/spec/lib/puppet_spec/ssl.rb +0 -265
  1567. data/spec/lib/puppet_spec/unindent.rb +0 -5
  1568. data/spec/lib/puppet_spec/verbose.rb +0 -18
  1569. data/spec/shared_behaviours/all_parsedfile_providers.rb +0 -21
  1570. data/spec/shared_behaviours/an_indirector_face.rb +0 -6
  1571. data/spec/shared_behaviours/documentation_on_faces.rb +0 -261
  1572. data/spec/shared_behaviours/file_server_terminus.rb +0 -38
  1573. data/spec/shared_behaviours/file_serving.rb +0 -73
  1574. data/spec/shared_behaviours/hiera_indirections.rb +0 -98
  1575. data/spec/shared_behaviours/iterative_functions.rb +0 -68
  1576. data/spec/shared_behaviours/memory_terminus.rb +0 -28
  1577. data/spec/shared_behaviours/path_parameters.rb +0 -160
  1578. data/spec/shared_behaviours/store_configs_terminus.rb +0 -21
  1579. data/spec/shared_behaviours/things_that_declare_options.rb +0 -262
  1580. data/spec/shared_contexts/checksum.rb +0 -65
  1581. data/spec/shared_contexts/digests.rb +0 -100
  1582. data/spec/shared_contexts/https.rb +0 -29
  1583. data/spec/shared_contexts/l10n.rb +0 -32
  1584. data/spec/shared_contexts/provider.rb +0 -16
  1585. data/spec/shared_contexts/types_setup.rb +0 -204
  1586. data/spec/shared_examples/rhel_package_provider.rb +0 -398
  1587. data/spec/spec_helper.rb +0 -240
  1588. data/spec/unit/agent/disabler_spec.rb +0 -63
  1589. data/spec/unit/agent/locker_spec.rb +0 -99
  1590. data/spec/unit/agent_spec.rb +0 -416
  1591. data/spec/unit/application/agent_spec.rb +0 -640
  1592. data/spec/unit/application/apply_spec.rb +0 -559
  1593. data/spec/unit/application/config_spec.rb +0 -232
  1594. data/spec/unit/application/describe_spec.rb +0 -135
  1595. data/spec/unit/application/device_spec.rb +0 -616
  1596. data/spec/unit/application/doc_spec.rb +0 -333
  1597. data/spec/unit/application/face_base_spec.rb +0 -454
  1598. data/spec/unit/application/facts_spec.rb +0 -139
  1599. data/spec/unit/application/filebucket_spec.rb +0 -319
  1600. data/spec/unit/application/indirection_base_spec.rb +0 -50
  1601. data/spec/unit/application/lookup_spec.rb +0 -698
  1602. data/spec/unit/application/resource_spec.rb +0 -229
  1603. data/spec/unit/application/ssl_spec.rb +0 -507
  1604. data/spec/unit/application_spec.rb +0 -730
  1605. data/spec/unit/certificate_factory_spec.rb +0 -170
  1606. data/spec/unit/concurrent/lock_spec.rb +0 -29
  1607. data/spec/unit/concurrent/thread_local_singleton_spec.rb +0 -39
  1608. data/spec/unit/configurer/downloader_spec.rb +0 -252
  1609. data/spec/unit/configurer/fact_handler_spec.rb +0 -147
  1610. data/spec/unit/configurer/plugin_handler_spec.rb +0 -152
  1611. data/spec/unit/configurer_spec.rb +0 -1488
  1612. data/spec/unit/confine/exists_spec.rb +0 -82
  1613. data/spec/unit/confine/false_spec.rb +0 -78
  1614. data/spec/unit/confine/feature_spec.rb +0 -59
  1615. data/spec/unit/confine/true_spec.rb +0 -78
  1616. data/spec/unit/confine/variable_spec.rb +0 -105
  1617. data/spec/unit/confine_collection_spec.rb +0 -132
  1618. data/spec/unit/confine_spec.rb +0 -99
  1619. data/spec/unit/confiner_spec.rb +0 -61
  1620. data/spec/unit/context/trusted_information_spec.rb +0 -213
  1621. data/spec/unit/context_spec.rb +0 -217
  1622. data/spec/unit/daemon_spec.rb +0 -193
  1623. data/spec/unit/data_binding_spec.rb +0 -11
  1624. data/spec/unit/data_providers/function_data_provider_spec.rb +0 -122
  1625. data/spec/unit/data_providers/hiera_data_provider_spec.rb +0 -362
  1626. data/spec/unit/datatypes_spec.rb +0 -352
  1627. data/spec/unit/defaults_spec.rb +0 -182
  1628. data/spec/unit/environments_spec.rb +0 -1186
  1629. data/spec/unit/etc_spec.rb +0 -465
  1630. data/spec/unit/external/pson_spec.rb +0 -58
  1631. data/spec/unit/face/config_spec.rb +0 -402
  1632. data/spec/unit/face/epp_face_spec.rb +0 -385
  1633. data/spec/unit/face/facts_spec.rb +0 -78
  1634. data/spec/unit/face/generate_spec.rb +0 -293
  1635. data/spec/unit/face/help_spec.rb +0 -208
  1636. data/spec/unit/face/module/install_spec.rb +0 -40
  1637. data/spec/unit/face/module/list_spec.rb +0 -256
  1638. data/spec/unit/face/module/uninstall_spec.rb +0 -45
  1639. data/spec/unit/face/module/upgrade_spec.rb +0 -26
  1640. data/spec/unit/face/node_spec.rb +0 -129
  1641. data/spec/unit/face/parser_spec.rb +0 -310
  1642. data/spec/unit/face/plugin_spec.rb +0 -158
  1643. data/spec/unit/face_spec.rb +0 -1
  1644. data/spec/unit/facter_impl_spec.rb +0 -31
  1645. data/spec/unit/file_bucket/dipper_spec.rb +0 -405
  1646. data/spec/unit/file_bucket/file_spec.rb +0 -58
  1647. data/spec/unit/file_serving/base_spec.rb +0 -164
  1648. data/spec/unit/file_serving/configuration/parser_spec.rb +0 -206
  1649. data/spec/unit/file_serving/configuration_spec.rb +0 -240
  1650. data/spec/unit/file_serving/content_spec.rb +0 -98
  1651. data/spec/unit/file_serving/fileset_spec.rb +0 -417
  1652. data/spec/unit/file_serving/http_metadata_spec.rb +0 -109
  1653. data/spec/unit/file_serving/metadata_spec.rb +0 -551
  1654. data/spec/unit/file_serving/mount/file_spec.rb +0 -188
  1655. data/spec/unit/file_serving/mount/locales_spec.rb +0 -72
  1656. data/spec/unit/file_serving/mount/modules_spec.rb +0 -69
  1657. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +0 -72
  1658. data/spec/unit/file_serving/mount/plugins_spec.rb +0 -72
  1659. data/spec/unit/file_serving/mount/scripts_spec.rb +0 -69
  1660. data/spec/unit/file_serving/mount/tasks_spec.rb +0 -71
  1661. data/spec/unit/file_serving/mount_spec.rb +0 -30
  1662. data/spec/unit/file_serving/terminus_helper_spec.rb +0 -114
  1663. data/spec/unit/file_serving/terminus_selector_spec.rb +0 -84
  1664. data/spec/unit/file_system/path_pattern_spec.rb +0 -153
  1665. data/spec/unit/file_system/uniquefile_spec.rb +0 -245
  1666. data/spec/unit/file_system_spec.rb +0 -1198
  1667. data/spec/unit/forge/errors_spec.rb +0 -80
  1668. data/spec/unit/forge/forge_spec.rb +0 -69
  1669. data/spec/unit/forge/module_release_spec.rb +0 -331
  1670. data/spec/unit/forge/repository_spec.rb +0 -154
  1671. data/spec/unit/forge_spec.rb +0 -210
  1672. data/spec/unit/functions/abs_spec.rb +0 -70
  1673. data/spec/unit/functions/all_spec.rb +0 -97
  1674. data/spec/unit/functions/annotate_spec.rb +0 -175
  1675. data/spec/unit/functions/any_spec.rb +0 -109
  1676. data/spec/unit/functions/assert_type_spec.rb +0 -97
  1677. data/spec/unit/functions/binary_file_spec.rb +0 -46
  1678. data/spec/unit/functions/break_spec.rb +0 -207
  1679. data/spec/unit/functions/call_spec.rb +0 -131
  1680. data/spec/unit/functions/camelcase_spec.rb +0 -34
  1681. data/spec/unit/functions/capitalize_spec.rb +0 -34
  1682. data/spec/unit/functions/ceiling_spec.rb +0 -65
  1683. data/spec/unit/functions/chomp_spec.rb +0 -46
  1684. data/spec/unit/functions/chop_spec.rb +0 -38
  1685. data/spec/unit/functions/compare_spec.rb +0 -147
  1686. data/spec/unit/functions/contain_spec.rb +0 -297
  1687. data/spec/unit/functions/convert_to_spec.rb +0 -25
  1688. data/spec/unit/functions/defined_spec.rb +0 -288
  1689. data/spec/unit/functions/dig_spec.rb +0 -58
  1690. data/spec/unit/functions/downcase_spec.rb +0 -34
  1691. data/spec/unit/functions/each_spec.rb +0 -107
  1692. data/spec/unit/functions/empty_spec.rb +0 -87
  1693. data/spec/unit/functions/epp_spec.rb +0 -178
  1694. data/spec/unit/functions/filter_spec.rb +0 -145
  1695. data/spec/unit/functions/find_file_spec.rb +0 -69
  1696. data/spec/unit/functions/find_template_spec.rb +0 -69
  1697. data/spec/unit/functions/flatten_spec.rb +0 -31
  1698. data/spec/unit/functions/floor_spec.rb +0 -65
  1699. data/spec/unit/functions/get_spec.rb +0 -135
  1700. data/spec/unit/functions/getvar_spec.rb +0 -121
  1701. data/spec/unit/functions/group_by_spec.rb +0 -40
  1702. data/spec/unit/functions/hiera_spec.rb +0 -495
  1703. data/spec/unit/functions/include_spec.rb +0 -186
  1704. data/spec/unit/functions/index_spec.rb +0 -184
  1705. data/spec/unit/functions/inline_epp_spec.rb +0 -120
  1706. data/spec/unit/functions/join_spec.rb +0 -33
  1707. data/spec/unit/functions/keys_spec.rb +0 -31
  1708. data/spec/unit/functions/length_spec.rb +0 -50
  1709. data/spec/unit/functions/lest_spec.rb +0 -34
  1710. data/spec/unit/functions/logging_spec.rb +0 -62
  1711. data/spec/unit/functions/lookup_fixture_spec.rb +0 -687
  1712. data/spec/unit/functions/lookup_spec.rb +0 -3415
  1713. data/spec/unit/functions/lstrip_spec.rb +0 -30
  1714. data/spec/unit/functions/map_spec.rb +0 -163
  1715. data/spec/unit/functions/match_spec.rb +0 -74
  1716. data/spec/unit/functions/max_spec.rb +0 -158
  1717. data/spec/unit/functions/min_spec.rb +0 -158
  1718. data/spec/unit/functions/module_directory_spec.rb +0 -43
  1719. data/spec/unit/functions/new_spec.rb +0 -776
  1720. data/spec/unit/functions/next_spec.rb +0 -93
  1721. data/spec/unit/functions/partition_spec.rb +0 -40
  1722. data/spec/unit/functions/reduce_spec.rb +0 -85
  1723. data/spec/unit/functions/regsubst_spec.rb +0 -114
  1724. data/spec/unit/functions/require_spec.rb +0 -82
  1725. data/spec/unit/functions/return_spec.rb +0 -109
  1726. data/spec/unit/functions/reverse_each_spec.rb +0 -108
  1727. data/spec/unit/functions/round_spec.rb +0 -41
  1728. data/spec/unit/functions/rstrip_spec.rb +0 -30
  1729. data/spec/unit/functions/scanf_spec.rb +0 -32
  1730. data/spec/unit/functions/shared.rb +0 -94
  1731. data/spec/unit/functions/size_spec.rb +0 -50
  1732. data/spec/unit/functions/slice_spec.rb +0 -136
  1733. data/spec/unit/functions/sort_spec.rb +0 -79
  1734. data/spec/unit/functions/split_spec.rb +0 -59
  1735. data/spec/unit/functions/step_spec.rb +0 -113
  1736. data/spec/unit/functions/strftime_spec.rb +0 -152
  1737. data/spec/unit/functions/strip_spec.rb +0 -30
  1738. data/spec/unit/functions/then_spec.rb +0 -40
  1739. data/spec/unit/functions/tree_each_spec.rb +0 -493
  1740. data/spec/unit/functions/type_spec.rb +0 -35
  1741. data/spec/unit/functions/unique_spec.rb +0 -111
  1742. data/spec/unit/functions/unwrap_spec.rb +0 -37
  1743. data/spec/unit/functions/upcase_spec.rb +0 -34
  1744. data/spec/unit/functions/values_spec.rb +0 -30
  1745. data/spec/unit/functions/versioncmp_spec.rb +0 -70
  1746. data/spec/unit/functions/with_spec.rb +0 -31
  1747. data/spec/unit/functions4_spec.rb +0 -1046
  1748. data/spec/unit/gettext/config_spec.rb +0 -156
  1749. data/spec/unit/gettext/module_loading_spec.rb +0 -53
  1750. data/spec/unit/graph/key_spec.rb +0 -41
  1751. data/spec/unit/graph/rb_tree_map_spec.rb +0 -570
  1752. data/spec/unit/graph/relationship_graph_spec.rb +0 -401
  1753. data/spec/unit/graph/sequential_prioritizer_spec.rb +0 -32
  1754. data/spec/unit/graph/simple_graph_spec.rb +0 -759
  1755. data/spec/unit/hiera/scope_spec.rb +0 -105
  1756. data/spec/unit/hiera_puppet_spec.rb +0 -159
  1757. data/spec/unit/http/client_spec.rb +0 -937
  1758. data/spec/unit/http/dns_spec.rb +0 -281
  1759. data/spec/unit/http/external_client_spec.rb +0 -201
  1760. data/spec/unit/http/factory_spec.rb +0 -160
  1761. data/spec/unit/http/pool_entry_spec.rb +0 -49
  1762. data/spec/unit/http/pool_spec.rb +0 -401
  1763. data/spec/unit/http/proxy_spec.rb +0 -347
  1764. data/spec/unit/http/resolver_spec.rb +0 -133
  1765. data/spec/unit/http/response_spec.rb +0 -75
  1766. data/spec/unit/http/service/ca_spec.rb +0 -281
  1767. data/spec/unit/http/service/compiler_spec.rb +0 -746
  1768. data/spec/unit/http/service/file_server_spec.rb +0 -309
  1769. data/spec/unit/http/service/puppetserver_spec.rb +0 -112
  1770. data/spec/unit/http/service/report_spec.rb +0 -107
  1771. data/spec/unit/http/service_spec.rb +0 -137
  1772. data/spec/unit/http/session_spec.rb +0 -309
  1773. data/spec/unit/http/site_spec.rb +0 -96
  1774. data/spec/unit/indirector/catalog/compiler_spec.rb +0 -1221
  1775. data/spec/unit/indirector/catalog/json_spec.rb +0 -66
  1776. data/spec/unit/indirector/catalog/msgpack_spec.rb +0 -11
  1777. data/spec/unit/indirector/catalog/rest_spec.rb +0 -74
  1778. data/spec/unit/indirector/catalog/store_configs_spec.rb +0 -16
  1779. data/spec/unit/indirector/catalog/yaml_spec.rb +0 -23
  1780. data/spec/unit/indirector/data_binding/hiera_spec.rb +0 -19
  1781. data/spec/unit/indirector/data_binding/none_spec.rb +0 -28
  1782. data/spec/unit/indirector/direct_file_server_spec.rb +0 -87
  1783. data/spec/unit/indirector/envelope_spec.rb +0 -32
  1784. data/spec/unit/indirector/exec_spec.rb +0 -63
  1785. data/spec/unit/indirector/face_spec.rb +0 -80
  1786. data/spec/unit/indirector/facts/facter_spec.rb +0 -290
  1787. data/spec/unit/indirector/facts/json_spec.rb +0 -255
  1788. data/spec/unit/indirector/facts/network_device_spec.rb +0 -77
  1789. data/spec/unit/indirector/facts/rest_spec.rb +0 -99
  1790. data/spec/unit/indirector/facts/store_configs_spec.rb +0 -16
  1791. data/spec/unit/indirector/facts/yaml_spec.rb +0 -255
  1792. data/spec/unit/indirector/file_bucket_file/file_spec.rb +0 -426
  1793. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +0 -89
  1794. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +0 -46
  1795. data/spec/unit/indirector/file_content/file_server_spec.rb +0 -13
  1796. data/spec/unit/indirector/file_content/file_spec.rb +0 -13
  1797. data/spec/unit/indirector/file_content/rest_spec.rb +0 -60
  1798. data/spec/unit/indirector/file_content/selector_spec.rb +0 -9
  1799. data/spec/unit/indirector/file_metadata/file_server_spec.rb +0 -13
  1800. data/spec/unit/indirector/file_metadata/file_spec.rb +0 -57
  1801. data/spec/unit/indirector/file_metadata/http_spec.rb +0 -194
  1802. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -116
  1803. data/spec/unit/indirector/file_metadata/selector_spec.rb +0 -10
  1804. data/spec/unit/indirector/file_server_spec.rb +0 -288
  1805. data/spec/unit/indirector/hiera_spec.rb +0 -22
  1806. data/spec/unit/indirector/indirection_spec.rb +0 -916
  1807. data/spec/unit/indirector/json_spec.rb +0 -200
  1808. data/spec/unit/indirector/memory_spec.rb +0 -26
  1809. data/spec/unit/indirector/msgpack_spec.rb +0 -199
  1810. data/spec/unit/indirector/node/exec_spec.rb +0 -107
  1811. data/spec/unit/indirector/node/json_spec.rb +0 -33
  1812. data/spec/unit/indirector/node/memory_spec.rb +0 -16
  1813. data/spec/unit/indirector/node/msgpack_spec.rb +0 -23
  1814. data/spec/unit/indirector/node/plain_spec.rb +0 -34
  1815. data/spec/unit/indirector/node/rest_spec.rb +0 -66
  1816. data/spec/unit/indirector/node/store_configs_spec.rb +0 -16
  1817. data/spec/unit/indirector/node/yaml_spec.rb +0 -23
  1818. data/spec/unit/indirector/none_spec.rb +0 -33
  1819. data/spec/unit/indirector/plain_spec.rb +0 -26
  1820. data/spec/unit/indirector/report/json_spec.rb +0 -72
  1821. data/spec/unit/indirector/report/msgpack_spec.rb +0 -27
  1822. data/spec/unit/indirector/report/processor_spec.rb +0 -99
  1823. data/spec/unit/indirector/report/rest_spec.rb +0 -58
  1824. data/spec/unit/indirector/report/yaml_spec.rb +0 -91
  1825. data/spec/unit/indirector/request_spec.rb +0 -295
  1826. data/spec/unit/indirector/resource/ral_spec.rb +0 -89
  1827. data/spec/unit/indirector/resource/store_configs_spec.rb +0 -20
  1828. data/spec/unit/indirector/rest_spec.rb +0 -149
  1829. data/spec/unit/indirector/terminus_spec.rb +0 -264
  1830. data/spec/unit/indirector/yaml_spec.rb +0 -188
  1831. data/spec/unit/indirector_spec.rb +0 -148
  1832. data/spec/unit/info_service_spec.rb +0 -575
  1833. data/spec/unit/interface/action_builder_spec.rb +0 -216
  1834. data/spec/unit/interface/action_manager_spec.rb +0 -254
  1835. data/spec/unit/interface/action_spec.rb +0 -670
  1836. data/spec/unit/interface/documentation_spec.rb +0 -32
  1837. data/spec/unit/interface/face_collection_spec.rb +0 -219
  1838. data/spec/unit/interface/option_builder_spec.rb +0 -86
  1839. data/spec/unit/interface/option_spec.rb +0 -156
  1840. data/spec/unit/interface_spec.rb +0 -305
  1841. data/spec/unit/module_spec.rb +0 -985
  1842. data/spec/unit/module_tool/application_spec.rb +0 -25
  1843. data/spec/unit/module_tool/applications/checksummer_spec.rb +0 -115
  1844. data/spec/unit/module_tool/applications/installer_spec.rb +0 -473
  1845. data/spec/unit/module_tool/applications/uninstaller_spec.rb +0 -181
  1846. data/spec/unit/module_tool/applications/unpacker_spec.rb +0 -75
  1847. data/spec/unit/module_tool/applications/upgrader_spec.rb +0 -337
  1848. data/spec/unit/module_tool/install_directory_spec.rb +0 -70
  1849. data/spec/unit/module_tool/installed_modules_spec.rb +0 -49
  1850. data/spec/unit/module_tool/metadata_spec.rb +0 -330
  1851. data/spec/unit/module_tool/tar/gnu_spec.rb +0 -23
  1852. data/spec/unit/module_tool/tar/mini_spec.rb +0 -109
  1853. data/spec/unit/module_tool/tar_spec.rb +0 -36
  1854. data/spec/unit/module_tool_spec.rb +0 -304
  1855. data/spec/unit/network/authconfig_spec.rb +0 -8
  1856. data/spec/unit/network/authorization_spec.rb +0 -8
  1857. data/spec/unit/network/format_handler_spec.rb +0 -93
  1858. data/spec/unit/network/format_spec.rb +0 -205
  1859. data/spec/unit/network/format_support_spec.rb +0 -199
  1860. data/spec/unit/network/formats_spec.rb +0 -584
  1861. data/spec/unit/network/http/api/indirected_routes_spec.rb +0 -425
  1862. data/spec/unit/network/http/api/master_spec.rb +0 -38
  1863. data/spec/unit/network/http/api/server/v3/environments_spec.rb +0 -51
  1864. data/spec/unit/network/http/api/server/v3_spec.rb +0 -78
  1865. data/spec/unit/network/http/api_spec.rb +0 -109
  1866. data/spec/unit/network/http/connection_spec.rb +0 -636
  1867. data/spec/unit/network/http/error_spec.rb +0 -30
  1868. data/spec/unit/network/http/handler_spec.rb +0 -164
  1869. data/spec/unit/network/http/request_spec.rb +0 -108
  1870. data/spec/unit/network/http/response_spec.rb +0 -106
  1871. data/spec/unit/network/http/route_spec.rb +0 -90
  1872. data/spec/unit/network/http_pool_spec.rb +0 -145
  1873. data/spec/unit/network/uri_spec.rb +0 -47
  1874. data/spec/unit/node/environment_spec.rb +0 -612
  1875. data/spec/unit/node/facts_spec.rb +0 -225
  1876. data/spec/unit/node_spec.rb +0 -434
  1877. data/spec/unit/other/selinux_spec.rb +0 -27
  1878. data/spec/unit/parameter/boolean_spec.rb +0 -35
  1879. data/spec/unit/parameter/package_options_spec.rb +0 -43
  1880. data/spec/unit/parameter/path_spec.rb +0 -23
  1881. data/spec/unit/parameter/value_collection_spec.rb +0 -160
  1882. data/spec/unit/parameter/value_spec.rb +0 -82
  1883. data/spec/unit/parameter_spec.rb +0 -272
  1884. data/spec/unit/parser/ast/block_expression_spec.rb +0 -66
  1885. data/spec/unit/parser/ast/leaf_spec.rb +0 -136
  1886. data/spec/unit/parser/compiler_spec.rb +0 -1020
  1887. data/spec/unit/parser/files_spec.rb +0 -101
  1888. data/spec/unit/parser/functions/create_resources_spec.rb +0 -326
  1889. data/spec/unit/parser/functions/digest_spec.rb +0 -26
  1890. data/spec/unit/parser/functions/fail_spec.rb +0 -23
  1891. data/spec/unit/parser/functions/file_spec.rb +0 -99
  1892. data/spec/unit/parser/functions/fqdn_rand_spec.rb +0 -87
  1893. data/spec/unit/parser/functions/generate_spec.rb +0 -124
  1894. data/spec/unit/parser/functions/hiera_array_spec.rb +0 -12
  1895. data/spec/unit/parser/functions/hiera_hash_spec.rb +0 -12
  1896. data/spec/unit/parser/functions/hiera_include_spec.rb +0 -12
  1897. data/spec/unit/parser/functions/hiera_spec.rb +0 -12
  1898. data/spec/unit/parser/functions/inline_template_spec.rb +0 -36
  1899. data/spec/unit/parser/functions/lookup_spec.rb +0 -14
  1900. data/spec/unit/parser/functions/realize_spec.rb +0 -70
  1901. data/spec/unit/parser/functions/regsubst_spec.rb +0 -19
  1902. data/spec/unit/parser/functions/scanf_spec.rb +0 -25
  1903. data/spec/unit/parser/functions/shellquote_spec.rb +0 -66
  1904. data/spec/unit/parser/functions/split_spec.rb +0 -13
  1905. data/spec/unit/parser/functions/sprintf_spec.rb +0 -68
  1906. data/spec/unit/parser/functions/tag_spec.rb +0 -30
  1907. data/spec/unit/parser/functions/tagged_spec.rb +0 -36
  1908. data/spec/unit/parser/functions/template_spec.rb +0 -93
  1909. data/spec/unit/parser/functions/versioncmp_spec.rb +0 -28
  1910. data/spec/unit/parser/functions_spec.rb +0 -156
  1911. data/spec/unit/parser/relationship_spec.rb +0 -74
  1912. data/spec/unit/parser/resource/param_spec.rb +0 -32
  1913. data/spec/unit/parser/resource_spec.rb +0 -657
  1914. data/spec/unit/parser/scope_spec.rb +0 -698
  1915. data/spec/unit/parser/templatewrapper_spec.rb +0 -111
  1916. data/spec/unit/parser/type_loader_spec.rb +0 -202
  1917. data/spec/unit/plan_spec.rb +0 -65
  1918. data/spec/unit/pops/adaptable_spec.rb +0 -139
  1919. data/spec/unit/pops/benchmark_spec.rb +0 -123
  1920. data/spec/unit/pops/containment_spec.rb +0 -0
  1921. data/spec/unit/pops/evaluator/access_ops_spec.rb +0 -560
  1922. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +0 -317
  1923. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +0 -101
  1924. data/spec/unit/pops/evaluator/collections_ops_spec.rb +0 -108
  1925. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +0 -267
  1926. data/spec/unit/pops/evaluator/conditionals_spec.rb +0 -189
  1927. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -46
  1928. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +0 -1639
  1929. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +0 -75
  1930. data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +0 -63
  1931. data/spec/unit/pops/evaluator/literal_evaluator_spec.rb +0 -43
  1932. data/spec/unit/pops/evaluator/logical_ops_spec.rb +0 -89
  1933. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +0 -181
  1934. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +0 -43
  1935. data/spec/unit/pops/evaluator/variables_spec.rb +0 -88
  1936. data/spec/unit/pops/factory_rspec_helper.rb +0 -65
  1937. data/spec/unit/pops/factory_spec.rb +0 -309
  1938. data/spec/unit/pops/issues_spec.rb +0 -210
  1939. data/spec/unit/pops/label_provider_spec.rb +0 -46
  1940. data/spec/unit/pops/loaders/dependency_loader_spec.rb +0 -122
  1941. data/spec/unit/pops/loaders/environment_loader_spec.rb +0 -172
  1942. data/spec/unit/pops/loaders/loader_paths_spec.rb +0 -43
  1943. data/spec/unit/pops/loaders/loader_spec.rb +0 -516
  1944. data/spec/unit/pops/loaders/loaders_spec.rb +0 -863
  1945. data/spec/unit/pops/loaders/module_loaders_spec.rb +0 -268
  1946. data/spec/unit/pops/loaders/static_loader_spec.rb +0 -85
  1947. data/spec/unit/pops/lookup/context_spec.rb +0 -333
  1948. data/spec/unit/pops/lookup/interpolation_spec.rb +0 -389
  1949. data/spec/unit/pops/lookup/lookup_spec.rb +0 -375
  1950. data/spec/unit/pops/merge_strategy_spec.rb +0 -17
  1951. data/spec/unit/pops/migration_spec.rb +0 -51
  1952. data/spec/unit/pops/model/model_spec.rb +0 -41
  1953. data/spec/unit/pops/model/pn_transformer_spec.rb +0 -56
  1954. data/spec/unit/pops/parser/epp_parser_spec.rb +0 -115
  1955. data/spec/unit/pops/parser/evaluating_parser_spec.rb +0 -89
  1956. data/spec/unit/pops/parser/lexer2_spec.rb +0 -942
  1957. data/spec/unit/pops/parser/locator_spec.rb +0 -86
  1958. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -380
  1959. data/spec/unit/pops/parser/parse_calls_spec.rb +0 -171
  1960. data/spec/unit/pops/parser/parse_conditionals_spec.rb +0 -184
  1961. data/spec/unit/pops/parser/parse_containers_spec.rb +0 -247
  1962. data/spec/unit/pops/parser/parse_functions_spec.rb +0 -19
  1963. data/spec/unit/pops/parser/parse_heredoc_spec.rb +0 -276
  1964. data/spec/unit/pops/parser/parse_lambda_spec.rb +0 -19
  1965. data/spec/unit/pops/parser/parse_plan_spec.rb +0 -47
  1966. data/spec/unit/pops/parser/parse_resource_spec.rb +0 -328
  1967. data/spec/unit/pops/parser/parser_rspec_helper.rb +0 -17
  1968. data/spec/unit/pops/parser/parser_spec.rb +0 -211
  1969. data/spec/unit/pops/parser/parsing_typed_parameters_spec.rb +0 -65
  1970. data/spec/unit/pops/parser/pn_parser_spec.rb +0 -100
  1971. data/spec/unit/pops/pn_spec.rb +0 -147
  1972. data/spec/unit/pops/puppet_stack_spec.rb +0 -108
  1973. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -37
  1974. data/spec/unit/pops/serialization/packer_spec.rb +0 -162
  1975. data/spec/unit/pops/serialization/serialization_spec.rb +0 -458
  1976. data/spec/unit/pops/serialization/to_from_hr_spec.rb +0 -649
  1977. data/spec/unit/pops/serialization/to_stringified_spec.rb +0 -162
  1978. data/spec/unit/pops/time/timespan_spec.rb +0 -121
  1979. data/spec/unit/pops/time/timestamp_spec.rb +0 -13
  1980. data/spec/unit/pops/types/class_loader_spec.rb +0 -10
  1981. data/spec/unit/pops/types/deferred_spec.rb +0 -87
  1982. data/spec/unit/pops/types/error_spec.rb +0 -207
  1983. data/spec/unit/pops/types/iterable_spec.rb +0 -262
  1984. data/spec/unit/pops/types/p_binary_type_spec.rb +0 -243
  1985. data/spec/unit/pops/types/p_init_type_spec.rb +0 -383
  1986. data/spec/unit/pops/types/p_object_type_spec.rb +0 -1730
  1987. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +0 -340
  1988. data/spec/unit/pops/types/p_sensitive_type_spec.rb +0 -191
  1989. data/spec/unit/pops/types/p_timespan_type_spec.rb +0 -323
  1990. data/spec/unit/pops/types/p_timestamp_type_spec.rb +0 -391
  1991. data/spec/unit/pops/types/p_type_set_type_spec.rb +0 -549
  1992. data/spec/unit/pops/types/p_uri_type_spec.rb +0 -191
  1993. data/spec/unit/pops/types/recursion_guard_spec.rb +0 -93
  1994. data/spec/unit/pops/types/ruby_generator_spec.rb +0 -874
  1995. data/spec/unit/pops/types/string_converter_spec.rb +0 -1202
  1996. data/spec/unit/pops/types/task_spec.rb +0 -411
  1997. data/spec/unit/pops/types/type_acceptor_spec.rb +0 -106
  1998. data/spec/unit/pops/types/type_asserter_spec.rb +0 -43
  1999. data/spec/unit/pops/types/type_calculator_spec.rb +0 -2504
  2000. data/spec/unit/pops/types/type_factory_spec.rb +0 -322
  2001. data/spec/unit/pops/types/type_formatter_spec.rb +0 -427
  2002. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +0 -424
  2003. data/spec/unit/pops/types/type_parser_spec.rb +0 -445
  2004. data/spec/unit/pops/types/types_spec.rb +0 -755
  2005. data/spec/unit/pops/utils_spec.rb +0 -70
  2006. data/spec/unit/pops/validation_spec.rb +0 -66
  2007. data/spec/unit/pops/validator/validator_spec.rb +0 -1029
  2008. data/spec/unit/pops/visitor_spec.rb +0 -93
  2009. data/spec/unit/property/boolean_spec.rb +0 -24
  2010. data/spec/unit/property/ensure_spec.rb +0 -11
  2011. data/spec/unit/property/keyvalue_spec.rb +0 -259
  2012. data/spec/unit/property/list_spec.rb +0 -172
  2013. data/spec/unit/property/ordered_list_spec.rb +0 -59
  2014. data/spec/unit/property_spec.rb +0 -563
  2015. data/spec/unit/provider/README.markdown +0 -4
  2016. data/spec/unit/provider/aix_object_spec.rb +0 -821
  2017. data/spec/unit/provider/command_spec.rb +0 -62
  2018. data/spec/unit/provider/exec/posix_spec.rb +0 -232
  2019. data/spec/unit/provider/exec/shell_spec.rb +0 -53
  2020. data/spec/unit/provider/exec/windows_spec.rb +0 -105
  2021. data/spec/unit/provider/exec_spec.rb +0 -244
  2022. data/spec/unit/provider/file/posix_spec.rb +0 -230
  2023. data/spec/unit/provider/file/windows_spec.rb +0 -152
  2024. data/spec/unit/provider/group/aix_spec.rb +0 -91
  2025. data/spec/unit/provider/group/directoryservice_spec.rb +0 -33
  2026. data/spec/unit/provider/group/groupadd_spec.rb +0 -284
  2027. data/spec/unit/provider/group/ldap_spec.rb +0 -98
  2028. data/spec/unit/provider/group/pw_spec.rb +0 -78
  2029. data/spec/unit/provider/group/windows_adsi_spec.rb +0 -398
  2030. data/spec/unit/provider/ldap_spec.rb +0 -242
  2031. data/spec/unit/provider/nameservice/directoryservice_spec.rb +0 -157
  2032. data/spec/unit/provider/nameservice_spec.rb +0 -398
  2033. data/spec/unit/provider/package/aix_spec.rb +0 -158
  2034. data/spec/unit/provider/package/appdmg_spec.rb +0 -42
  2035. data/spec/unit/provider/package/apt_spec.rb +0 -302
  2036. data/spec/unit/provider/package/aptitude_spec.rb +0 -46
  2037. data/spec/unit/provider/package/aptrpm_spec.rb +0 -42
  2038. data/spec/unit/provider/package/base_spec.rb +0 -19
  2039. data/spec/unit/provider/package/dnf_spec.rb +0 -55
  2040. data/spec/unit/provider/package/dnfmodule_spec.rb +0 -256
  2041. data/spec/unit/provider/package/dpkg_spec.rb +0 -444
  2042. data/spec/unit/provider/package/freebsd_spec.rb +0 -51
  2043. data/spec/unit/provider/package/gem_spec.rb +0 -487
  2044. data/spec/unit/provider/package/hpux_spec.rb +0 -48
  2045. data/spec/unit/provider/package/macports_spec.rb +0 -142
  2046. data/spec/unit/provider/package/nim_spec.rb +0 -267
  2047. data/spec/unit/provider/package/openbsd_spec.rb +0 -417
  2048. data/spec/unit/provider/package/opkg_spec.rb +0 -180
  2049. data/spec/unit/provider/package/pacman_spec.rb +0 -438
  2050. data/spec/unit/provider/package/pip2_spec.rb +0 -38
  2051. data/spec/unit/provider/package/pip3_spec.rb +0 -38
  2052. data/spec/unit/provider/package/pip_spec.rb +0 -504
  2053. data/spec/unit/provider/package/pkg_spec.rb +0 -473
  2054. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -166
  2055. data/spec/unit/provider/package/pkgin_spec.rb +0 -185
  2056. data/spec/unit/provider/package/pkgng_spec.rb +0 -228
  2057. data/spec/unit/provider/package/pkgutil_spec.rb +0 -231
  2058. data/spec/unit/provider/package/portage_spec.rb +0 -226
  2059. data/spec/unit/provider/package/puppet_gem_spec.rb +0 -130
  2060. data/spec/unit/provider/package/puppetserver_gem_spec.rb +0 -139
  2061. data/spec/unit/provider/package/rpm_spec.rb +0 -674
  2062. data/spec/unit/provider/package/sun_spec.rb +0 -112
  2063. data/spec/unit/provider/package/tdnf_spec.rb +0 -15
  2064. data/spec/unit/provider/package/up2date_spec.rb +0 -22
  2065. data/spec/unit/provider/package/urpmi_spec.rb +0 -84
  2066. data/spec/unit/provider/package/windows/exe_package_spec.rb +0 -114
  2067. data/spec/unit/provider/package/windows/msi_package_spec.rb +0 -111
  2068. data/spec/unit/provider/package/windows/package_spec.rb +0 -180
  2069. data/spec/unit/provider/package/windows_spec.rb +0 -272
  2070. data/spec/unit/provider/package/yum_spec.rb +0 -512
  2071. data/spec/unit/provider/package/zypper_spec.rb +0 -327
  2072. data/spec/unit/provider/package_targetable_spec.rb +0 -60
  2073. data/spec/unit/provider/parsedfile_spec.rb +0 -263
  2074. data/spec/unit/provider/service/base_spec.rb +0 -109
  2075. data/spec/unit/provider/service/bsd_spec.rb +0 -127
  2076. data/spec/unit/provider/service/daemontools_spec.rb +0 -190
  2077. data/spec/unit/provider/service/debian_spec.rb +0 -158
  2078. data/spec/unit/provider/service/freebsd_spec.rb +0 -92
  2079. data/spec/unit/provider/service/gentoo_spec.rb +0 -250
  2080. data/spec/unit/provider/service/init_spec.rb +0 -316
  2081. data/spec/unit/provider/service/launchd_spec.rb +0 -425
  2082. data/spec/unit/provider/service/openbsd_spec.rb +0 -196
  2083. data/spec/unit/provider/service/openrc_spec.rb +0 -231
  2084. data/spec/unit/provider/service/openwrt_spec.rb +0 -101
  2085. data/spec/unit/provider/service/rcng_spec.rb +0 -40
  2086. data/spec/unit/provider/service/redhat_spec.rb +0 -190
  2087. data/spec/unit/provider/service/runit_spec.rb +0 -164
  2088. data/spec/unit/provider/service/smf_spec.rb +0 -526
  2089. data/spec/unit/provider/service/src_spec.rb +0 -186
  2090. data/spec/unit/provider/service/systemd_spec.rb +0 -576
  2091. data/spec/unit/provider/service/upstart_spec.rb +0 -681
  2092. data/spec/unit/provider/service/windows_spec.rb +0 -475
  2093. data/spec/unit/provider/user/aix_spec.rb +0 -320
  2094. data/spec/unit/provider/user/directoryservice_spec.rb +0 -1256
  2095. data/spec/unit/provider/user/hpux_spec.rb +0 -72
  2096. data/spec/unit/provider/user/ldap_spec.rb +0 -286
  2097. data/spec/unit/provider/user/openbsd_spec.rb +0 -76
  2098. data/spec/unit/provider/user/pw_spec.rb +0 -252
  2099. data/spec/unit/provider/user/user_role_add_spec.rb +0 -374
  2100. data/spec/unit/provider/user/useradd_spec.rb +0 -849
  2101. data/spec/unit/provider/user/windows_adsi_spec.rb +0 -407
  2102. data/spec/unit/provider_spec.rb +0 -904
  2103. data/spec/unit/puppet_pal_2pec.rb +0 -1033
  2104. data/spec/unit/puppet_pal_catalog_spec.rb +0 -962
  2105. data/spec/unit/puppet_pal_spec.rb +0 -3
  2106. data/spec/unit/puppet_spec.rb +0 -127
  2107. data/spec/unit/relationship_spec.rb +0 -202
  2108. data/spec/unit/reports/http_spec.rb +0 -119
  2109. data/spec/unit/reports/store_spec.rb +0 -69
  2110. data/spec/unit/reports_spec.rb +0 -68
  2111. data/spec/unit/resource/catalog_spec.rb +0 -1160
  2112. data/spec/unit/resource/status_spec.rb +0 -216
  2113. data/spec/unit/resource/type_collection_spec.rb +0 -332
  2114. data/spec/unit/resource/type_spec.rb +0 -876
  2115. data/spec/unit/resource_spec.rb +0 -1189
  2116. data/spec/unit/scheduler/job_spec.rb +0 -78
  2117. data/spec/unit/scheduler/scheduler_spec.rb +0 -115
  2118. data/spec/unit/scheduler/splay_job_spec.rb +0 -34
  2119. data/spec/unit/settings/array_setting_spec.rb +0 -39
  2120. data/spec/unit/settings/autosign_setting_spec.rb +0 -104
  2121. data/spec/unit/settings/certificate_revocation_setting_spec.rb +0 -37
  2122. data/spec/unit/settings/config_file_spec.rb +0 -147
  2123. data/spec/unit/settings/directory_setting_spec.rb +0 -27
  2124. data/spec/unit/settings/duration_setting_spec.rb +0 -48
  2125. data/spec/unit/settings/enum_setting_spec.rb +0 -27
  2126. data/spec/unit/settings/environment_conf_spec.rb +0 -133
  2127. data/spec/unit/settings/file_setting_spec.rb +0 -344
  2128. data/spec/unit/settings/http_extra_headers_spec.rb +0 -62
  2129. data/spec/unit/settings/ini_file_spec.rb +0 -550
  2130. data/spec/unit/settings/integer_setting_spec.rb +0 -42
  2131. data/spec/unit/settings/path_setting_spec.rb +0 -29
  2132. data/spec/unit/settings/port_setting_spec.rb +0 -31
  2133. data/spec/unit/settings/priority_setting_spec.rb +0 -65
  2134. data/spec/unit/settings/server_list_setting_spec.rb +0 -21
  2135. data/spec/unit/settings/string_setting_spec.rb +0 -74
  2136. data/spec/unit/settings/terminus_setting_spec.rb +0 -27
  2137. data/spec/unit/settings/value_translator_spec.rb +0 -75
  2138. data/spec/unit/settings_spec.rb +0 -2343
  2139. data/spec/unit/ssl/base_spec.rb +0 -125
  2140. data/spec/unit/ssl/certificate_request_attributes_spec.rb +0 -80
  2141. data/spec/unit/ssl/certificate_request_spec.rb +0 -373
  2142. data/spec/unit/ssl/certificate_signer_spec.rb +0 -17
  2143. data/spec/unit/ssl/certificate_spec.rb +0 -183
  2144. data/spec/unit/ssl/digest_spec.rb +0 -34
  2145. data/spec/unit/ssl/oids_spec.rb +0 -73
  2146. data/spec/unit/ssl/ssl_provider_spec.rb +0 -657
  2147. data/spec/unit/ssl/state_machine_spec.rb +0 -1117
  2148. data/spec/unit/ssl/verifier_spec.rb +0 -102
  2149. data/spec/unit/task_spec.rb +0 -345
  2150. data/spec/unit/test/test_helper_spec.rb +0 -17
  2151. data/spec/unit/transaction/additional_resource_generator_spec.rb +0 -534
  2152. data/spec/unit/transaction/event_manager_spec.rb +0 -365
  2153. data/spec/unit/transaction/event_spec.rb +0 -198
  2154. data/spec/unit/transaction/persistence_spec.rb +0 -276
  2155. data/spec/unit/transaction/report_spec.rb +0 -772
  2156. data/spec/unit/transaction/resource_harness_spec.rb +0 -625
  2157. data/spec/unit/transaction_spec.rb +0 -1037
  2158. data/spec/unit/type/README.markdown +0 -4
  2159. data/spec/unit/type/component_spec.rb +0 -52
  2160. data/spec/unit/type/exec_spec.rb +0 -932
  2161. data/spec/unit/type/file/checksum_spec.rb +0 -104
  2162. data/spec/unit/type/file/checksum_value_spec.rb +0 -285
  2163. data/spec/unit/type/file/content_spec.rb +0 -440
  2164. data/spec/unit/type/file/ctime_spec.rb +0 -33
  2165. data/spec/unit/type/file/ensure_spec.rb +0 -121
  2166. data/spec/unit/type/file/group_spec.rb +0 -65
  2167. data/spec/unit/type/file/mode_spec.rb +0 -220
  2168. data/spec/unit/type/file/mtime_spec.rb +0 -33
  2169. data/spec/unit/type/file/owner_spec.rb +0 -63
  2170. data/spec/unit/type/file/selinux_spec.rb +0 -86
  2171. data/spec/unit/type/file/source_spec.rb +0 -730
  2172. data/spec/unit/type/file/type_spec.rb +0 -18
  2173. data/spec/unit/type/file_spec.rb +0 -1746
  2174. data/spec/unit/type/filebucket_spec.rb +0 -104
  2175. data/spec/unit/type/group_spec.rb +0 -105
  2176. data/spec/unit/type/noop_metaparam_spec.rb +0 -37
  2177. data/spec/unit/type/package/package_settings_spec.rb +0 -156
  2178. data/spec/unit/type/package_spec.rb +0 -396
  2179. data/spec/unit/type/resources_spec.rb +0 -362
  2180. data/spec/unit/type/schedule_spec.rb +0 -621
  2181. data/spec/unit/type/service_spec.rb +0 -458
  2182. data/spec/unit/type/stage_spec.rb +0 -7
  2183. data/spec/unit/type/tidy_spec.rb +0 -493
  2184. data/spec/unit/type/user_spec.rb +0 -553
  2185. data/spec/unit/type/whit_spec.rb +0 -9
  2186. data/spec/unit/type_spec.rb +0 -1473
  2187. data/spec/unit/util/at_fork_spec.rb +0 -150
  2188. data/spec/unit/util/autoload_spec.rb +0 -330
  2189. data/spec/unit/util/backups_spec.rb +0 -130
  2190. data/spec/unit/util/character_encoding_spec.rb +0 -186
  2191. data/spec/unit/util/checksums_spec.rb +0 -223
  2192. data/spec/unit/util/colors_spec.rb +0 -44
  2193. data/spec/unit/util/command_line_spec.rb +0 -200
  2194. data/spec/unit/util/command_line_utils/puppet_option_parser_spec.rb +0 -129
  2195. data/spec/unit/util/constant_inflector_spec.rb +0 -55
  2196. data/spec/unit/util/diff_spec.rb +0 -46
  2197. data/spec/unit/util/docs_spec.rb +0 -100
  2198. data/spec/unit/util/errors_spec.rb +0 -36
  2199. data/spec/unit/util/execution_spec.rb +0 -943
  2200. data/spec/unit/util/execution_stub_spec.rb +0 -38
  2201. data/spec/unit/util/feature_spec.rb +0 -129
  2202. data/spec/unit/util/filetype_spec.rb +0 -223
  2203. data/spec/unit/util/inifile_spec.rb +0 -510
  2204. data/spec/unit/util/json_lockfile_spec.rb +0 -48
  2205. data/spec/unit/util/json_spec.rb +0 -126
  2206. data/spec/unit/util/ldap/connection_spec.rb +0 -162
  2207. data/spec/unit/util/ldap/generator_spec.rb +0 -49
  2208. data/spec/unit/util/ldap/manager_spec.rb +0 -612
  2209. data/spec/unit/util/lockfile_spec.rb +0 -117
  2210. data/spec/unit/util/log/destinations_spec.rb +0 -258
  2211. data/spec/unit/util/log_spec.rb +0 -479
  2212. data/spec/unit/util/logging_spec.rb +0 -618
  2213. data/spec/unit/util/metric_spec.rb +0 -89
  2214. data/spec/unit/util/monkey_patches_spec.rb +0 -161
  2215. data/spec/unit/util/multi_match_spec.rb +0 -38
  2216. data/spec/unit/util/network_device/config_spec.rb +0 -91
  2217. data/spec/unit/util/network_device/transport/base_spec.rb +0 -40
  2218. data/spec/unit/util/network_device_spec.rb +0 -43
  2219. data/spec/unit/util/package/version/debian_spec.rb +0 -83
  2220. data/spec/unit/util/package/version/pip_spec.rb +0 -464
  2221. data/spec/unit/util/package/version/range_spec.rb +0 -175
  2222. data/spec/unit/util/package/version/rpm_spec.rb +0 -121
  2223. data/spec/unit/util/package_spec.rb +0 -19
  2224. data/spec/unit/util/pidlock_spec.rb +0 -333
  2225. data/spec/unit/util/plist_spec.rb +0 -168
  2226. data/spec/unit/util/posix_spec.rb +0 -630
  2227. data/spec/unit/util/profiler/aggregate_spec.rb +0 -55
  2228. data/spec/unit/util/profiler/around_profiler_spec.rb +0 -61
  2229. data/spec/unit/util/profiler/logging_spec.rb +0 -70
  2230. data/spec/unit/util/profiler/object_counts_spec.rb +0 -13
  2231. data/spec/unit/util/profiler/wall_clock_spec.rb +0 -13
  2232. data/spec/unit/util/profiler_spec.rb +0 -47
  2233. data/spec/unit/util/rdoc_spec.rb +0 -55
  2234. data/spec/unit/util/reference_spec.rb +0 -38
  2235. data/spec/unit/util/resource_template_spec.rb +0 -57
  2236. data/spec/unit/util/retry_action_spec.rb +0 -84
  2237. data/spec/unit/util/rpm_compare_spec.rb +0 -196
  2238. data/spec/unit/util/rubygems_spec.rb +0 -47
  2239. data/spec/unit/util/run_mode_spec.rb +0 -185
  2240. data/spec/unit/util/selinux_spec.rb +0 -422
  2241. data/spec/unit/util/skip_tags_spec.rb +0 -14
  2242. data/spec/unit/util/splayer_spec.rb +0 -44
  2243. data/spec/unit/util/storage_spec.rb +0 -330
  2244. data/spec/unit/util/suidmanager_spec.rb +0 -278
  2245. data/spec/unit/util/symbolic_file_mode_spec.rb +0 -180
  2246. data/spec/unit/util/tag_set_spec.rb +0 -52
  2247. data/spec/unit/util/tagging_spec.rb +0 -246
  2248. data/spec/unit/util/terminal_spec.rb +0 -41
  2249. data/spec/unit/util/user_attr_spec.rb +0 -45
  2250. data/spec/unit/util/warnings_spec.rb +0 -45
  2251. data/spec/unit/util/watched_file_spec.rb +0 -52
  2252. data/spec/unit/util/watcher/periodic_watcher_spec.rb +0 -52
  2253. data/spec/unit/util/watcher_spec.rb +0 -86
  2254. data/spec/unit/util/windows/access_control_entry_spec.rb +0 -66
  2255. data/spec/unit/util/windows/access_control_list_spec.rb +0 -132
  2256. data/spec/unit/util/windows/adsi_spec.rb +0 -704
  2257. data/spec/unit/util/windows/api_types_spec.rb +0 -184
  2258. data/spec/unit/util/windows/eventlog_spec.rb +0 -120
  2259. data/spec/unit/util/windows/file_spec.rb +0 -88
  2260. data/spec/unit/util/windows/root_certs_spec.rb +0 -16
  2261. data/spec/unit/util/windows/security_descriptor_spec.rb +0 -115
  2262. data/spec/unit/util/windows/service_spec.rb +0 -677
  2263. data/spec/unit/util/windows/sid_spec.rb +0 -338
  2264. data/spec/unit/util/windows/string_spec.rb +0 -55
  2265. data/spec/unit/util/windows_spec.rb +0 -23
  2266. data/spec/unit/util/yaml_spec.rb +0 -171
  2267. data/spec/unit/util_spec.rb +0 -960
  2268. data/spec/unit/version_spec.rb +0 -61
  2269. data/spec/unit/x509/cert_provider_spec.rb +0 -663
  2270. data/spec/unit/x509/pem_store_spec.rb +0 -160
@@ -1,2504 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet/pops'
3
-
4
- module Puppet::Pops
5
- module Types
6
- describe 'The type calculator' do
7
- let(:calculator) { TypeCalculator.new }
8
-
9
- def range_t(from, to)
10
- PIntegerType.new(from, to)
11
- end
12
-
13
- def pattern_t(*patterns)
14
- TypeFactory.pattern(*patterns)
15
- end
16
-
17
- def regexp_t(pattern)
18
- TypeFactory.regexp(pattern)
19
- end
20
-
21
- def string_t(string = nil)
22
- TypeFactory.string(string)
23
- end
24
-
25
- def constrained_string_t(size_type)
26
- TypeFactory.string(size_type)
27
- end
28
-
29
- def callable_t(*params)
30
- TypeFactory.callable(*params)
31
- end
32
-
33
- def all_callables_t
34
- TypeFactory.all_callables
35
- end
36
-
37
- def enum_t(*strings)
38
- TypeFactory.enum(*strings)
39
- end
40
-
41
- def variant_t(*types)
42
- TypeFactory.variant(*types)
43
- end
44
-
45
- def empty_variant_t()
46
- t = TypeFactory.variant()
47
- # assert this to ensure we did get an empty variant (or tests may pass when not being empty)
48
- raise 'typefactory did not return empty variant' unless t.types.empty?
49
- t
50
- end
51
-
52
- def type_alias_t(name, type_string)
53
- type_expr = Parser::EvaluatingParser.new.parse_string(type_string)
54
- TypeFactory.type_alias(name, type_expr)
55
- end
56
-
57
- def type_reference_t(type_string)
58
- TypeFactory.type_reference(type_string)
59
- end
60
-
61
- def integer_t
62
- TypeFactory.integer
63
- end
64
-
65
- def array_t(t, s = nil)
66
- TypeFactory.array_of(t, s)
67
- end
68
-
69
- def empty_array_t
70
- array_t(unit_t, range_t(0,0))
71
- end
72
-
73
- def hash_t(k,v,s = nil)
74
- TypeFactory.hash_of(v, k, s)
75
- end
76
-
77
- def data_t
78
- TypeFactory.data
79
- end
80
-
81
- def factory
82
- TypeFactory
83
- end
84
-
85
- def collection_t(size_type = nil)
86
- TypeFactory.collection(size_type)
87
- end
88
-
89
- def tuple_t(*types)
90
- TypeFactory.tuple(types)
91
- end
92
-
93
- def constrained_tuple_t(size_type, *types)
94
- TypeFactory.tuple(types, size_type)
95
- end
96
-
97
- def struct_t(type_hash)
98
- TypeFactory.struct(type_hash)
99
- end
100
-
101
- def any_t
102
- TypeFactory.any
103
- end
104
-
105
- def optional_t(t)
106
- TypeFactory.optional(t)
107
- end
108
-
109
- def type_t(t)
110
- TypeFactory.type_type(t)
111
- end
112
-
113
- def not_undef_t(t = nil)
114
- TypeFactory.not_undef(t)
115
- end
116
-
117
- def undef_t
118
- TypeFactory.undef
119
- end
120
-
121
- def unit_t
122
- # Cannot be created via factory, the type is private to the type system
123
- PUnitType::DEFAULT
124
- end
125
-
126
- def runtime_t(t, c)
127
- TypeFactory.runtime(t, c)
128
- end
129
-
130
- def object_t(hash)
131
- TypeFactory.object(hash)
132
- end
133
-
134
- def iterable_t(t = nil)
135
- TypeFactory.iterable(t)
136
- end
137
-
138
- def types
139
- Types
140
- end
141
-
142
- context 'when inferring ruby' do
143
-
144
- it 'integer translates to PIntegerType' do
145
- expect(calculator.infer(1).class).to eq(PIntegerType)
146
- end
147
-
148
- it 'large integer translates to PIntegerType' do
149
- expect(calculator.infer(2**33).class).to eq(PIntegerType)
150
- end
151
-
152
- it 'float translates to PFloatType' do
153
- expect(calculator.infer(1.3).class).to eq(PFloatType)
154
- end
155
-
156
- it 'string translates to PStringType' do
157
- expect(calculator.infer('foo').class).to eq(PStringType)
158
- end
159
-
160
- it 'inferred string type knows the string value' do
161
- t = calculator.infer('foo')
162
- expect(t.class).to eq(PStringType)
163
- expect(t.value).to eq('foo')
164
- end
165
-
166
- it 'boolean true translates to PBooleanType::TRUE' do
167
- expect(calculator.infer(true)).to eq(PBooleanType::TRUE)
168
- end
169
-
170
- it 'boolean false translates to PBooleanType::FALSE' do
171
- expect(calculator.infer(false)).to eq(PBooleanType::FALSE)
172
- end
173
-
174
- it 'regexp translates to PRegexpType' do
175
- expect(calculator.infer(/^a regular expression$/).class).to eq(PRegexpType)
176
- end
177
-
178
- it 'iterable translates to PIteratorType' do
179
- expect(calculator.infer(Iterable.on(1))).to be_a(PIteratorType)
180
- end
181
-
182
- it 'nil translates to PUndefType' do
183
- expect(calculator.infer(nil).class).to eq(PUndefType)
184
- end
185
-
186
- it ':undef translates to PUndefType' do
187
- expect(calculator.infer(:undef).class).to eq(PUndefType)
188
- end
189
-
190
- it 'an instance of class Foo translates to PRuntimeType[ruby, Foo]' do
191
- ::Foo = Class.new
192
- begin
193
- t = calculator.infer(::Foo.new)
194
- expect(t.class).to eq(PRuntimeType)
195
- expect(t.runtime).to eq(:ruby)
196
- expect(t.runtime_type_name).to eq('Foo')
197
- ensure
198
- Object.send(:remove_const, :Foo)
199
- end
200
- end
201
-
202
- it 'Class Foo translates to PTypeType[PRuntimeType[ruby, Foo]]' do
203
- ::Foo = Class.new
204
- begin
205
- t = calculator.infer(::Foo)
206
- expect(t.class).to eq(PTypeType)
207
- tt = t.type
208
- expect(tt.class).to eq(PRuntimeType)
209
- expect(tt.runtime).to eq(:ruby)
210
- expect(tt.runtime_type_name).to eq('Foo')
211
- ensure
212
- Object.send(:remove_const, :Foo)
213
- end
214
- end
215
-
216
- it 'Module FooModule translates to PTypeType[PRuntimeType[ruby, FooModule]]' do
217
- ::FooModule = Module.new
218
- begin
219
- t = calculator.infer(::FooModule)
220
- expect(t.class).to eq(PTypeType)
221
- tt = t.type
222
- expect(tt.class).to eq(PRuntimeType)
223
- expect(tt.runtime).to eq(:ruby)
224
- expect(tt.runtime_type_name).to eq('FooModule')
225
- ensure
226
- Object.send(:remove_const, :FooModule)
227
- end
228
- end
229
-
230
- context 'sensitive' do
231
- it 'translates to PSensitiveType' do
232
- expect(calculator.infer(PSensitiveType::Sensitive.new("hunter2")).class).to eq(PSensitiveType)
233
- end
234
- end
235
-
236
- context 'binary' do
237
- it 'translates to PBinaryType' do
238
- expect(calculator.infer(PBinaryType::Binary.from_binary_string("binary")).class).to eq(PBinaryType)
239
- end
240
- end
241
-
242
- context 'version' do
243
- it 'translates to PVersionType' do
244
- expect(calculator.infer(SemanticPuppet::Version.new(1,0,0)).class).to eq(PSemVerType)
245
- end
246
-
247
- it 'range translates to PVersionRangeType' do
248
- expect(calculator.infer(SemanticPuppet::VersionRange.parse('1.x')).class).to eq(PSemVerRangeType)
249
- end
250
-
251
- it 'translates to a limited PVersionType by infer_set' do
252
- v = SemanticPuppet::Version.new(1,0,0)
253
- t = calculator.infer_set(v)
254
- expect(t.class).to eq(PSemVerType)
255
- expect(t.ranges.size).to eq(1)
256
- expect(t.ranges[0].begin).to eq(v)
257
- expect(t.ranges[0].end).to eq(v)
258
- end
259
- end
260
-
261
- context 'timespan' do
262
- it 'translates to PTimespanType' do
263
- expect(calculator.infer(Time::Timespan.from_fields_hash('days' => 2))).to be_a(PTimespanType)
264
- end
265
-
266
- it 'translates to a limited PTimespanType by infer_set' do
267
- ts = Time::Timespan.from_fields_hash('days' => 2)
268
- t = calculator.infer_set(ts)
269
- expect(t.class).to eq(PTimespanType)
270
- expect(t.from).to be(ts)
271
- expect(t.to).to be(ts)
272
- end
273
- end
274
-
275
- context 'timestamp' do
276
- it 'translates to PTimespanType' do
277
- expect(calculator.infer(Time::Timestamp.now)).to be_a(PTimestampType)
278
- end
279
-
280
- it 'translates to a limited PTimespanType by infer_set' do
281
- ts = Time::Timestamp.now
282
- t = calculator.infer_set(ts)
283
- expect(t.class).to eq(PTimestampType)
284
- expect(t.from).to be(ts)
285
- expect(t.to).to be(ts)
286
- end
287
- end
288
-
289
- context 'array' do
290
- let(:derived) do
291
- Class.new(Array).new([1,2])
292
- end
293
-
294
- let(:derived_object) do
295
- Class.new(Array) do
296
- include PuppetObject
297
-
298
- def self._pcore_type
299
- @type ||= TypeFactory.object('name' => 'DerivedObjectArray')
300
- end
301
- end.new([1,2])
302
- end
303
-
304
- it 'translates to PArrayType' do
305
- expect(calculator.infer([1,2]).class).to eq(PArrayType)
306
- end
307
-
308
- it 'translates derived Array to PRuntimeType' do
309
- expect(calculator.infer(derived).class).to eq(PRuntimeType)
310
- end
311
-
312
- it 'translates derived Puppet Object Array to PObjectType' do
313
- expect(calculator.infer(derived_object).class).to eq(PObjectType)
314
- end
315
-
316
- it 'Instance of derived Array class is not instance of Array type' do
317
- expect(PArrayType::DEFAULT).not_to be_instance(derived)
318
- end
319
-
320
- it 'Instance of derived Array class is instance of Runtime type' do
321
- expect(runtime_t('ruby', nil)).to be_instance(derived)
322
- end
323
-
324
- it 'Instance of derived Puppet Object Array class is not instance of Array type' do
325
- expect(PArrayType::DEFAULT).not_to be_instance(derived_object)
326
- end
327
-
328
- it 'Instance of derived Puppet Object Array class is instance of Object type' do
329
- expect(object_t('name' => 'DerivedObjectArray')).to be_instance(derived_object)
330
- end
331
-
332
- it 'with integer values translates to PArrayType[PIntegerType]' do
333
- expect(calculator.infer([1,2]).element_type.class).to eq(PIntegerType)
334
- end
335
-
336
- it 'with 32 and 64 bit integer values translates to PArrayType[PIntegerType]' do
337
- expect(calculator.infer([1,2**33]).element_type.class).to eq(PIntegerType)
338
- end
339
-
340
- it 'Range of integer values are computed' do
341
- t = calculator.infer([-3,0,42]).element_type
342
- expect(t.class).to eq(PIntegerType)
343
- expect(t.from).to eq(-3)
344
- expect(t.to).to eq(42)
345
- end
346
-
347
- it 'Compound string values are converted to enums' do
348
- t = calculator.infer(['a','b', 'c']).element_type
349
- expect(t.class).to eq(PEnumType)
350
- expect(t.values).to eq(['a', 'b', 'c'])
351
- end
352
-
353
- it 'with integer and float values translates to PArrayType[PNumericType]' do
354
- expect(calculator.infer([1,2.0]).element_type.class).to eq(PNumericType)
355
- end
356
-
357
- it 'with integer and string values translates to PArrayType[PScalarDataType]' do
358
- expect(calculator.infer([1,'two']).element_type.class).to eq(PScalarDataType)
359
- end
360
-
361
- it 'with float and string values translates to PArrayType[PScalarDataType]' do
362
- expect(calculator.infer([1.0,'two']).element_type.class).to eq(PScalarDataType)
363
- end
364
-
365
- it 'with integer, float, and string values translates to PArrayType[PScalarDataType]' do
366
- expect(calculator.infer([1, 2.0,'two']).element_type.class).to eq(PScalarDataType)
367
- end
368
-
369
- it 'with integer and regexp values translates to PArrayType[PScalarType]' do
370
- expect(calculator.infer([1, /two/]).element_type.class).to eq(PScalarType)
371
- end
372
-
373
- it 'with string and regexp values translates to PArrayType[PScalarType]' do
374
- expect(calculator.infer(['one', /two/]).element_type.class).to eq(PScalarType)
375
- end
376
-
377
- it 'with string and symbol values translates to PArrayType[PAnyType]' do
378
- expect(calculator.infer(['one', :two]).element_type.class).to eq(PAnyType)
379
- end
380
-
381
- it 'with integer and nil values translates to PArrayType[PIntegerType]' do
382
- expect(calculator.infer([1, nil]).element_type.class).to eq(PIntegerType)
383
- end
384
-
385
- it 'with integer value, and array of string values, translates to Array[Data]' do
386
- expect(calculator.infer([1, ['two']]).element_type.name).to eq('Data')
387
- end
388
-
389
- it 'with integer value, and hash of string => string values, translates to Array[Data]' do
390
- expect(calculator.infer([1, {'two' => 'three'} ]).element_type.name).to eq('Data')
391
- end
392
-
393
- it 'with integer value, and hash of integer => string values, translates to Array[RichData]' do
394
- expect(calculator.infer([1, {2 => 'three'} ]).element_type.name).to eq('RichData')
395
- end
396
-
397
- it 'with integer, regexp, and binary values translates to Array[RichData]' do
398
- expect(calculator.infer([1, /two/, PBinaryType::Binary.from_string('three')]).element_type.name).to eq('RichData')
399
- end
400
-
401
- it 'with arrays of string values translates to PArrayType[PArrayType[PStringType]]' do
402
- et = calculator.infer([['first', 'array'], ['second','array']])
403
- expect(et.class).to eq(PArrayType)
404
- et = et.element_type
405
- expect(et.class).to eq(PArrayType)
406
- et = et.element_type
407
- expect(et.class).to eq(PEnumType)
408
- end
409
-
410
- it 'with array of string values and array of integers translates to PArrayType[PArrayType[PScalarDataType]]' do
411
- et = calculator.infer([['first', 'array'], [1,2]])
412
- expect(et.class).to eq(PArrayType)
413
- et = et.element_type
414
- expect(et.class).to eq(PArrayType)
415
- et = et.element_type
416
- expect(et.class).to eq(PScalarDataType)
417
- end
418
-
419
- it 'with hashes of string values translates to PArrayType[PHashType[PEnumType]]' do
420
- et = calculator.infer([{:first => 'first', :second => 'second' }, {:first => 'first', :second => 'second' }])
421
- expect(et.class).to eq(PArrayType)
422
- et = et.element_type
423
- expect(et.class).to eq(PHashType)
424
- et = et.value_type
425
- expect(et.class).to eq(PEnumType)
426
- end
427
-
428
- it 'with hash of string values and hash of integers translates to PArrayType[PHashType[PScalarDataType]]' do
429
- et = calculator.infer([{:first => 'first', :second => 'second' }, {:first => 1, :second => 2 }])
430
- expect(et.class).to eq(PArrayType)
431
- et = et.element_type
432
- expect(et.class).to eq(PHashType)
433
- et = et.value_type
434
- expect(et.class).to eq(PScalarDataType)
435
- end
436
- end
437
-
438
- context 'hash' do
439
- let(:derived) do
440
- Class.new(Hash)[:first => 1, :second => 2]
441
- end
442
-
443
- let(:derived_object) do
444
- Class.new(Hash) do
445
- include PuppetObject
446
-
447
- def self._pcore_type
448
- @type ||= TypeFactory.object('name' => 'DerivedObjectHash')
449
- end
450
- end[:first => 1, :second => 2]
451
- end
452
-
453
- it 'translates to PHashType' do
454
- expect(calculator.infer({:first => 1, :second => 2}).class).to eq(PHashType)
455
- end
456
-
457
- it 'translates derived Hash to PRuntimeType' do
458
- expect(calculator.infer(derived).class).to eq(PRuntimeType)
459
- end
460
-
461
- it 'translates derived Puppet Object Hash to PObjectType' do
462
- expect(calculator.infer(derived_object).class).to eq(PObjectType)
463
- end
464
-
465
- it 'Instance of derived Hash class is not instance of Hash type' do
466
- expect(PHashType::DEFAULT).not_to be_instance(derived)
467
- end
468
-
469
- it 'Instance of derived Hash class is instance of Runtime type' do
470
- expect(runtime_t('ruby', nil)).to be_instance(derived)
471
- end
472
-
473
- it 'Instance of derived Puppet Object Hash class is not instance of Hash type' do
474
- expect(PHashType::DEFAULT).not_to be_instance(derived_object)
475
- end
476
-
477
- it 'Instance of derived Puppet Object Hash class is instance of Object type' do
478
- expect(object_t('name' => 'DerivedObjectHash')).to be_instance(derived_object)
479
- end
480
-
481
- it 'with symbolic keys translates to PHashType[PRuntimeType[ruby, Symbol], value]' do
482
- k = calculator.infer({:first => 1, :second => 2}).key_type
483
- expect(k.class).to eq(PRuntimeType)
484
- expect(k.runtime).to eq(:ruby)
485
- expect(k.runtime_type_name).to eq('Symbol')
486
- end
487
-
488
- it 'with string keys translates to PHashType[PEnumType, value]' do
489
- expect(calculator.infer({'first' => 1, 'second' => 2}).key_type.class).to eq(PEnumType)
490
- end
491
-
492
- it 'with integer values translates to PHashType[key, PIntegerType]' do
493
- expect(calculator.infer({:first => 1, :second => 2}).value_type.class).to eq(PIntegerType)
494
- end
495
-
496
- it 'when empty infers a type that answers true to is_the_empty_hash?' do
497
- expect(calculator.infer({}).is_the_empty_hash?).to eq(true)
498
- expect(calculator.infer_set({}).is_the_empty_hash?).to eq(true)
499
- end
500
-
501
- it 'when empty is assignable to any PHashType' do
502
- expect(calculator.assignable?(hash_t(string_t, string_t), calculator.infer({}))).to eq(true)
503
- end
504
-
505
- it 'when empty is not assignable to a PHashType with from size > 0' do
506
- expect(calculator.assignable?(hash_t(string_t,string_t,range_t(1, 1)), calculator.infer({}))).to eq(false)
507
- end
508
-
509
- context 'using infer_set' do
510
- it "with 'first' and 'second' keys translates to PStructType[{first=>value,second=>value}]" do
511
- t = calculator.infer_set({'first' => 1, 'second' => 2})
512
- expect(t.class).to eq(PStructType)
513
- expect(t.elements.size).to eq(2)
514
- expect(t.elements.map { |e| e.name }.sort).to eq(['first', 'second'])
515
- end
516
-
517
- it 'with string keys and string and array values translates to PStructType[{key1=>PStringType,key2=>PTupleType}]' do
518
- t = calculator.infer_set({ 'mode' => 'read', 'path' => ['foo', 'fee' ] })
519
- expect(t.class).to eq(PStructType)
520
- expect(t.elements.size).to eq(2)
521
- els = t.elements.map { |e| e.value_type }.sort {|a,b| a.to_s <=> b.to_s }
522
- expect(els[0].class).to eq(PStringType)
523
- expect(els[1].class).to eq(PTupleType)
524
- end
525
-
526
- it 'with mixed string and non-string keys translates to PHashType' do
527
- t = calculator.infer_set({ 1 => 'first', 'second' => 'second' })
528
- expect(t.class).to eq(PHashType)
529
- end
530
-
531
- it 'with empty string keys translates to PHashType' do
532
- t = calculator.infer_set({ '' => 'first', 'second' => 'second' })
533
- expect(t.class).to eq(PHashType)
534
- end
535
- end
536
- end
537
-
538
- it 'infers an instance of an anonymous class to Runtime[ruby]' do
539
- cls = Class.new do
540
- attr_reader :name
541
- def initialize(name)
542
- @name = name
543
- end
544
- end
545
- t = calculator.infer(cls.new('test'))
546
- expect(t.class).to eql(PRuntimeType)
547
- expect(t.runtime).to eql(:ruby)
548
- expect(t.name_or_pattern).to eql(nil)
549
- end
550
- end
551
-
552
- context 'patterns' do
553
- it 'constructs a PPatternType' do
554
- t = pattern_t('a(b)c')
555
- expect(t.class).to eq(PPatternType)
556
- expect(t.patterns.size).to eq(1)
557
- expect(t.patterns[0].class).to eq(PRegexpType)
558
- expect(t.patterns[0].pattern).to eq('a(b)c')
559
- expect(t.patterns[0].regexp.match('abc')[1]).to eq('b')
560
- end
561
-
562
- it 'constructs a PEnumType with multiple strings' do
563
- t = enum_t('a', 'b', 'c', 'abc')
564
- expect(t.values).to eq(['a', 'b', 'c', 'abc'].sort)
565
- end
566
- end
567
-
568
- # Deal with cases not covered by computing common type
569
- context 'when computing common type' do
570
- it 'computes given resource type commonality' do
571
- r1 = PResourceType.new('File', nil)
572
- r2 = PResourceType.new('File', nil)
573
- expect(calculator.common_type(r1, r2).to_s).to eq('File')
574
-
575
-
576
- r2 = PResourceType.new('File', '/tmp/foo')
577
- expect(calculator.common_type(r1, r2).to_s).to eq('File')
578
-
579
- r1 = PResourceType.new('File', '/tmp/foo')
580
- expect(calculator.common_type(r1, r2).to_s).to eq("File['/tmp/foo']")
581
-
582
- r1 = PResourceType.new('File', '/tmp/bar')
583
- expect(calculator.common_type(r1, r2).to_s).to eq('File')
584
-
585
- r2 = PResourceType.new('Package', 'apache')
586
- expect(calculator.common_type(r1, r2).to_s).to eq('Resource')
587
- end
588
-
589
- it 'computes given hostclass type commonality' do
590
- r1 = PClassType.new('foo')
591
- r2 = PClassType.new('foo')
592
- expect(calculator.common_type(r1, r2).to_s).to eq('Class[foo]')
593
-
594
- r2 = PClassType.new('bar')
595
- expect(calculator.common_type(r1, r2).to_s).to eq('Class')
596
-
597
- r2 = PClassType.new(nil)
598
- expect(calculator.common_type(r1, r2).to_s).to eq('Class')
599
-
600
- r1 = PClassType.new(nil)
601
- expect(calculator.common_type(r1, r2).to_s).to eq('Class')
602
- end
603
-
604
- context 'of strings' do
605
- it 'computes commonality' do
606
- t1 = string_t('abc')
607
- t2 = string_t('xyz')
608
- common_t = calculator.common_type(t1,t2)
609
- expect(common_t.class).to eq(PEnumType)
610
- expect(common_t.values).to eq(['abc', 'xyz'])
611
- end
612
-
613
- it 'computes common size_type' do
614
- t1 = constrained_string_t(range_t(3,6))
615
- t2 = constrained_string_t(range_t(2,4))
616
- common_t = calculator.common_type(t1,t2)
617
- expect(common_t.class).to eq(PStringType)
618
- expect(common_t.size_type).to eq(range_t(2,6))
619
- end
620
-
621
- it 'computes common size_type to be undef when one of the types has no size_type' do
622
- t1 = string_t
623
- t2 = constrained_string_t(range_t(2,4))
624
- common_t = calculator.common_type(t1,t2)
625
- expect(common_t.class).to eq(PStringType)
626
- expect(common_t.size_type).to be_nil
627
- end
628
-
629
- it 'computes values to be empty if the one has empty values' do
630
- t1 = string_t('apa')
631
- t2 = constrained_string_t(range_t(2,4))
632
- common_t = calculator.common_type(t1,t2)
633
- expect(common_t.class).to eq(PStringType)
634
- expect(common_t.value).to be_nil
635
- end
636
- end
637
-
638
- it 'computes pattern commonality' do
639
- t1 = pattern_t('abc')
640
- t2 = pattern_t('xyz')
641
- common_t = calculator.common_type(t1,t2)
642
- expect(common_t.class).to eq(PPatternType)
643
- expect(common_t.patterns.map { |pr| pr.pattern }).to eq(['abc', 'xyz'])
644
- expect(common_t.to_s).to eq('Pattern[/abc/, /xyz/]')
645
- end
646
-
647
- it 'computes enum commonality to value set sum' do
648
- t1 = enum_t('a', 'b', 'c')
649
- t2 = enum_t('x', 'y', 'z')
650
- common_t = calculator.common_type(t1, t2)
651
- expect(common_t).to eq(enum_t('a', 'b', 'c', 'x', 'y', 'z'))
652
- end
653
-
654
- it 'computed variant commonality to type union where added types are not sub-types' do
655
- a_t1 = integer_t
656
- a_t2 = enum_t('b')
657
- v_a = variant_t(a_t1, a_t2)
658
- b_t1 = integer_t
659
- b_t2 = enum_t('a')
660
- v_b = variant_t(b_t1, b_t2)
661
- common_t = calculator.common_type(v_a, v_b)
662
- expect(common_t.class).to eq(PVariantType)
663
- expect(Set.new(common_t.types)).to eq(Set.new([a_t1, a_t2, b_t1, b_t2]))
664
- end
665
-
666
- it 'computed variant commonality to type union where added types are sub-types' do
667
- a_t1 = integer_t
668
- a_t2 = string_t
669
- v_a = variant_t(a_t1, a_t2)
670
- b_t1 = integer_t
671
- b_t2 = enum_t('a')
672
- v_b = variant_t(b_t1, b_t2)
673
- common_t = calculator.common_type(v_a, v_b)
674
- expect(common_t.class).to eq(PVariantType)
675
- expect(Set.new(common_t.types)).to eq(Set.new([a_t1, a_t2]))
676
- end
677
-
678
- context 'commonality of scalar data types' do
679
- it 'Numeric and String == ScalarData' do
680
- expect(calculator.common_type(PNumericType::DEFAULT, PStringType::DEFAULT).class).to eq(PScalarDataType)
681
- end
682
-
683
- it 'Numeric and Boolean == ScalarData' do
684
- expect(calculator.common_type(PNumericType::DEFAULT, PBooleanType::DEFAULT).class).to eq(PScalarDataType)
685
- end
686
-
687
- it 'String and Boolean == ScalarData' do
688
- expect(calculator.common_type(PStringType::DEFAULT, PBooleanType::DEFAULT).class).to eq(PScalarDataType)
689
- end
690
- end
691
-
692
- context 'commonality of scalar types' do
693
- it 'Regexp and Integer == Scalar' do
694
- expect(calculator.common_type(PRegexpType::DEFAULT, PScalarDataType::DEFAULT).class).to eq(PScalarType)
695
- end
696
-
697
- it 'Regexp and SemVer == ScalarData' do
698
- expect(calculator.common_type(PRegexpType::DEFAULT, PSemVerType::DEFAULT).class).to eq(PScalarType)
699
- end
700
-
701
- it 'Timestamp and Timespan == ScalarData' do
702
- expect(calculator.common_type(PTimestampType::DEFAULT, PTimespanType::DEFAULT).class).to eq(PScalarType)
703
- end
704
-
705
- it 'Timestamp and Boolean == ScalarData' do
706
- expect(calculator.common_type(PTimestampType::DEFAULT, PBooleanType::DEFAULT).class).to eq(PScalarType)
707
- end
708
- end
709
-
710
- context 'of callables' do
711
- it 'incompatible instances => generic callable' do
712
- t1 = callable_t(String)
713
- t2 = callable_t(Integer)
714
- common_t = calculator.common_type(t1, t2)
715
- expect(common_t.class).to be(PCallableType)
716
- expect(common_t.param_types).to be_nil
717
- expect(common_t.block_type).to be_nil
718
- end
719
-
720
- it 'compatible instances => the most specific' do
721
- t1 = callable_t(String)
722
- scalar_t = PScalarType.new
723
- t2 = callable_t(scalar_t)
724
- common_t = calculator.common_type(t1, t2)
725
- expect(common_t.class).to be(PCallableType)
726
- expect(common_t.param_types.class).to be(PTupleType)
727
- expect(common_t.param_types.types).to eql([string_t])
728
- expect(common_t.block_type).to be_nil
729
- end
730
-
731
- it 'block_type is included in the check (incompatible block)' do
732
- b1 = callable_t(String)
733
- b2 = callable_t(Integer)
734
- t1 = callable_t(String, b1)
735
- t2 = callable_t(String, b2)
736
- common_t = calculator.common_type(t1, t2)
737
- expect(common_t.class).to be(PCallableType)
738
- expect(common_t.param_types).to be_nil
739
- expect(common_t.block_type).to be_nil
740
- end
741
-
742
- it 'block_type is included in the check (compatible block)' do
743
- b1 = callable_t(String)
744
- t1 = callable_t(String, b1)
745
- scalar_t = PScalarType::DEFAULT
746
- b2 = callable_t(scalar_t)
747
- t2 = callable_t(String, b2)
748
- common_t = calculator.common_type(t1, t2)
749
- expect(common_t.param_types.class).to be(PTupleType)
750
- expect(common_t.block_type).to eql(callable_t(scalar_t))
751
- end
752
-
753
- it 'return_type is included in the check (incompatible return_type)' do
754
- t1 = callable_t([String], String)
755
- t2 = callable_t([String], Integer)
756
- common_t = calculator.common_type(t1, t2)
757
- expect(common_t.class).to be(PCallableType)
758
- expect(common_t.param_types).to be_nil
759
- expect(common_t.return_type).to be_nil
760
- end
761
-
762
- it 'return_type is included in the check (compatible return_type)' do
763
- t1 = callable_t([String], Numeric)
764
- t2 = callable_t([String], Integer)
765
- common_t = calculator.common_type(t1, t2)
766
- expect(common_t.class).to be(PCallableType)
767
- expect(common_t.param_types).to be_a(PTupleType)
768
- expect(common_t.return_type).to eql(PNumericType::DEFAULT)
769
- end
770
- end
771
- end
772
-
773
- context 'computes assignability' do
774
- include_context 'types_setup'
775
-
776
- it 'such that all types are assignable to themselves' do
777
- all_types.each do |tc|
778
- t = tc::DEFAULT
779
- expect(t).to be_assignable_to(t)
780
- end
781
- end
782
-
783
- context 'for Unit, such that' do
784
- it 'all types are assignable to Unit' do
785
- t = PUnitType::DEFAULT
786
- all_types.each { |t2| expect(t2::DEFAULT).to be_assignable_to(t) }
787
- end
788
-
789
- it 'Unit is assignable to all other types' do
790
- t = PUnitType::DEFAULT
791
- all_types.each { |t2| expect(t).to be_assignable_to(t2::DEFAULT) }
792
- end
793
-
794
- it 'Unit is assignable to Unit' do
795
- t = PUnitType::DEFAULT
796
- t2 = PUnitType::DEFAULT
797
- expect(t).to be_assignable_to(t2)
798
- end
799
- end
800
-
801
- context 'for Any, such that' do
802
- it 'all types are assignable to Any' do
803
- t = PAnyType::DEFAULT
804
- all_types.each { |t2| expect(t2::DEFAULT).to be_assignable_to(t) }
805
- end
806
-
807
- it 'Any is not assignable to anything but Any and Optional (implied Optional[Any])' do
808
- tested_types = all_types() - [PAnyType, POptionalType]
809
- t = PAnyType::DEFAULT
810
- tested_types.each { |t2| expect(t).not_to be_assignable_to(t2::DEFAULT) }
811
- end
812
- end
813
-
814
- context "for NotUndef, such that" do
815
- it 'all types except types assignable from Undef are assignable to NotUndef' do
816
- t = not_undef_t
817
- tc = TypeCalculator.singleton
818
- undef_t = PUndefType::DEFAULT
819
- all_types.each do |c|
820
- t2 = c::DEFAULT
821
- if tc.assignable?(t2, undef_t)
822
- expect(t2).not_to be_assignable_to(t)
823
- else
824
- expect(t2).to be_assignable_to(t)
825
- end
826
- end
827
- end
828
-
829
- it 'type NotUndef[T] is assignable from T unless T is assignable from Undef ' do
830
- tc = TypeCalculator.singleton
831
- undef_t = PUndefType::DEFAULT
832
- all_types().select do |c|
833
- t2 = c::DEFAULT
834
- not_undef_t = not_undef_t(t2)
835
- if tc.assignable?(t2, undef_t)
836
- expect(t2).not_to be_assignable_to(not_undef_t)
837
- else
838
- expect(t2).to be_assignable_to(not_undef_t)
839
- end
840
- end
841
- end
842
-
843
- it 'type T is assignable from NotUndef[T] unless T is assignable from Undef' do
844
- tc = TypeCalculator.singleton
845
- undef_t = PUndefType::DEFAULT
846
- all_types().select do |c|
847
- t2 = c::DEFAULT
848
- not_undef_t = not_undef_t(t2)
849
- unless tc.assignable?(t2, undef_t)
850
- expect(not_undef_t).to be_assignable_to(t2)
851
- end
852
- end
853
- end
854
- end
855
-
856
- context "for TypeReference, such that" do
857
- it 'no other type is assignable' do
858
- t = PTypeReferenceType::DEFAULT
859
- all_instances = (all_types - [
860
- PTypeReferenceType, # Avoid comparison with t
861
- PTypeAliasType # DEFAULT resolves to PTypeReferenceType::DEFAULT, i.e. t
862
- ]).map {|c| c::DEFAULT }
863
-
864
- # Add a non-empty variant
865
- all_instances << variant_t(PAnyType::DEFAULT, PUnitType::DEFAULT)
866
- # Add a type alias that doesn't resolve to 't'
867
- all_instances << type_alias_t('MyInt', 'Integer').resolve(nil)
868
-
869
- all_instances.each { |i| expect(i).not_to be_assignable_to(t) }
870
- end
871
-
872
- it 'a TypeReference to the exact same type is assignable' do
873
- expect(type_reference_t('Integer[0,10]')).to be_assignable_to(type_reference_t('Integer[0,10]'))
874
- end
875
-
876
- it 'a TypeReference to the different type is not assignable' do
877
- expect(type_reference_t('String')).not_to be_assignable_to(type_reference_t('Integer'))
878
- end
879
-
880
- it 'a TypeReference to the different type is not assignable even if the referenced type is' do
881
- expect(type_reference_t('Integer[1,2]')).not_to be_assignable_to(type_reference_t('Integer[0,3]'))
882
- end
883
- end
884
-
885
- context 'for Data, such that' do
886
- let(:data) { TypeFactory.data }
887
- data_compatible_types.map { |t2| type_from_class(t2) }.each do |tc|
888
- it "it is assignable from #{tc.name}" do
889
- expect(tc).to be_assignable_to(data)
890
- end
891
- end
892
-
893
- data_compatible_types.map { |t2| type_from_class(t2) }.each do |tc|
894
- it "it is assignable from Optional[#{tc.name}]" do
895
- expect(optional_t(tc)).to be_assignable_to(data)
896
- end
897
- end
898
-
899
- it 'it is not assignable to any of its subtypes' do
900
- types_to_test = data_compatible_types
901
- types_to_test.each {|t2| expect(data).not_to be_assignable_to(type_from_class(t2)) }
902
- end
903
-
904
- it 'it is not assignable to any disjunct type' do
905
- tested_types = all_types - [PAnyType, POptionalType, PInitType] - scalar_data_types
906
- tested_types.each {|t2| expect(data).not_to be_assignable_to(t2::DEFAULT) }
907
- end
908
- end
909
-
910
- context 'for Rich Data, such that' do
911
- let(:rich_data) { TypeFactory.rich_data }
912
- rich_data_compatible_types.map { |t2| type_from_class(t2) }.each do |tc|
913
- it "it is assignable from #{tc.name}" do
914
- expect(tc).to be_assignable_to(rich_data)
915
- end
916
- end
917
-
918
- rich_data_compatible_types.map { |t2| type_from_class(t2) }.each do |tc|
919
- it "it is assignable from Optional[#{tc.name}]" do
920
- expect(optional_t(tc)).to be_assignable_to(rich_data)
921
- end
922
- end
923
-
924
- it 'it is not assignable to any of its subtypes' do
925
- types_to_test = rich_data_compatible_types
926
- types_to_test.each {|t2| expect(rich_data).not_to be_assignable_to(type_from_class(t2)) }
927
- end
928
-
929
- it 'it is not assignable to any disjunct type' do
930
- tested_types = all_types - [PAnyType, POptionalType, PInitType] - scalar_types
931
- tested_types.each {|t2| expect(rich_data).not_to be_assignable_to(t2::DEFAULT) }
932
- end
933
- end
934
-
935
- context 'for Variant, such that' do
936
- it 'it is assignable to a type if all contained types are assignable to that type' do
937
- v = variant_t(range_t(10, 12),range_t(14, 20))
938
- expect(v).to be_assignable_to(integer_t)
939
- expect(v).to be_assignable_to(range_t(10, 20))
940
-
941
- # test that both types are assignable to one of the variants OK
942
- expect(v).to be_assignable_to(variant_t(range_t(10, 20), range_t(30, 40)))
943
-
944
- # test where each type is assignable to different types in a variant is OK
945
- expect(v).to be_assignable_to(variant_t(range_t(10, 13), range_t(14, 40)))
946
-
947
- # not acceptable
948
- expect(v).not_to be_assignable_to(range_t(0, 4))
949
- expect(v).not_to be_assignable_to(string_t)
950
- end
951
-
952
- it 'an empty Variant is assignable to another empty Variant' do
953
- expect(empty_variant_t).to be_assignable_to(empty_variant_t)
954
- end
955
-
956
- it 'an empty Variant is assignable to Any' do
957
- expect(empty_variant_t).to be_assignable_to(PAnyType::DEFAULT)
958
- end
959
-
960
- it 'an empty Variant is assignable to Unit' do
961
- expect(empty_variant_t).to be_assignable_to(PUnitType::DEFAULT)
962
- end
963
-
964
- it 'an empty Variant is not assignable to any type except empty Variant, Any, NotUndef, and Unit' do
965
- assignables = [PUnitType, PAnyType, PNotUndefType]
966
- unassignables = all_types - assignables
967
- unassignables.each {|t2| expect(empty_variant_t).not_to be_assignable_to(t2::DEFAULT) }
968
- assignables.each {|t2| expect(empty_variant_t).to be_assignable_to(t2::DEFAULT) }
969
- end
970
-
971
- it 'an empty Variant is not assignable to Optional[Any] since it is not assignable to Undef' do
972
- opt_any = optional_t(any_t)
973
- expect(empty_variant_t).not_to be_assignable_to(opt_any)
974
- end
975
-
976
- it 'an Optional[Any] is not assignable to empty Variant' do
977
- opt_any = optional_t(any_t)
978
- expect(opt_any).not_to be_assignable_to(empty_variant_t)
979
- end
980
-
981
- it 'an empty Variant is assignable to NotUndef[Variant] since Variant is not Undef' do
982
- not_undef_variant = not_undef_t(empty_variant_t)
983
- expect(empty_variant_t).to be_assignable_to(not_undef_variant)
984
- end
985
-
986
- it 'a NotUndef[Variant] is assignable to empty Variant' do
987
- not_undef_variant = not_undef_t(empty_variant_t)
988
- expect(not_undef_variant).to be_assignable_to(empty_variant_t)
989
- end
990
- end
991
-
992
- context 'for Scalar, such that' do
993
- it 'all scalars are assignable to Scalar' do
994
- t = PScalarType::DEFAULT
995
- scalar_types.each {|t2| expect(t2::DEFAULT).to be_assignable_to(t) }
996
- end
997
-
998
- it 'Scalar is not assignable to any of its subtypes' do
999
- t = PScalarType::DEFAULT
1000
- types_to_test = scalar_types - [PScalarType]
1001
- types_to_test.each {|t2| expect(t).not_to be_assignable_to(t2::DEFAULT) }
1002
- end
1003
-
1004
- it 'Scalar is not assignable to any disjunct type' do
1005
- tested_types = all_types - [PAnyType, POptionalType, PInitType, PNotUndefType] - scalar_types
1006
- t = PScalarType::DEFAULT
1007
- tested_types.each {|t2| expect(t).not_to be_assignable_to(t2::DEFAULT) }
1008
- end
1009
- end
1010
-
1011
- context 'for Numeric, such that' do
1012
- it 'all numerics are assignable to Numeric' do
1013
- t = PNumericType::DEFAULT
1014
- numeric_types.each {|t2| expect(t2::DEFAULT).to be_assignable_to(t) }
1015
- end
1016
-
1017
- it 'Numeric is not assignable to any of its subtypes' do
1018
- t = PNumericType::DEFAULT
1019
- types_to_test = numeric_types - [PNumericType]
1020
- types_to_test.each {|t2| expect(t).not_to be_assignable_to(t2::DEFAULT) }
1021
- end
1022
-
1023
- it 'Numeric does not consider ruby Rational to be an instance' do
1024
- t = PNumericType::DEFAULT
1025
- expect(t).not_to be_instance(Rational(2,3))
1026
- end
1027
-
1028
- it 'Numeric is not assignable to any disjunct type' do
1029
- tested_types = all_types - [
1030
- PAnyType,
1031
- POptionalType,
1032
- PInitType,
1033
- PNotUndefType,
1034
- PScalarType,
1035
- PScalarDataType,
1036
- ] - numeric_types
1037
- t = PNumericType::DEFAULT
1038
- tested_types.each {|t2| expect(t).not_to be_assignable_to(t2::DEFAULT) }
1039
- end
1040
- end
1041
-
1042
- context 'for Collection, such that' do
1043
- it 'all collections are assignable to Collection' do
1044
- t = PCollectionType::DEFAULT
1045
- collection_types.each {|t2| expect(t2::DEFAULT).to be_assignable_to(t) }
1046
- end
1047
-
1048
- it 'Collection is not assignable to any of its subtypes' do
1049
- t = PCollectionType::DEFAULT
1050
- types_to_test = collection_types - [PCollectionType]
1051
- types_to_test.each {|t2| expect(t).not_to be_assignable_to(t2::DEFAULT) }
1052
- end
1053
-
1054
- it 'Collection is not assignable to any disjunct type' do
1055
- tested_types = all_types - [
1056
- PAnyType,
1057
- POptionalType,
1058
- PNotUndefType,
1059
- PIterableType] - collection_types
1060
- t = PCollectionType::DEFAULT
1061
- tested_types.each {|t2| expect(t).not_to be_assignable_to(t2::DEFAULT) }
1062
- end
1063
- end
1064
-
1065
- context 'for Array, such that' do
1066
- it 'Array is not assignable to non Array based Collection type' do
1067
- t = PArrayType::DEFAULT
1068
- tested_types = collection_types - [
1069
- PCollectionType,
1070
- PNotUndefType,
1071
- PArrayType,
1072
- PTupleType]
1073
- tested_types.each {|t2| expect(t).not_to be_assignable_to(t2::DEFAULT) }
1074
- end
1075
-
1076
- it 'Array is not assignable to any disjunct type' do
1077
- tested_types = all_types - [
1078
- PAnyType,
1079
- POptionalType,
1080
- PNotUndefType,
1081
- PIterableType] - collection_types
1082
- t = PArrayType::DEFAULT
1083
- tested_types.each {|t2| expect(t).not_to be_assignable_to(t2::DEFAULT) }
1084
- end
1085
-
1086
- it 'Empty Array is assignable to an array that accepts 0 entries' do
1087
- expect(empty_array_t).to be_assignable_to(array_t(string_t))
1088
- expect(empty_array_t).to be_assignable_to(array_t(integer_t))
1089
- end
1090
-
1091
- it 'A Tuple is assignable to an array' do
1092
- expect(tuple_t(String)).to be_assignable_to(array_t(String))
1093
- end
1094
-
1095
- it 'A Tuple with <n> elements is assignable to an array with min size <n>' do
1096
- expect(tuple_t(String,String)).to be_assignable_to(array_t(String, range_t(2, :default)))
1097
- end
1098
-
1099
- it 'A Tuple with <n> elements where the last 2 are optional is assignable to an array with size <n> - 2' do
1100
- expect(constrained_tuple_t(range_t(2, :default), String,String,String,String)).to be_assignable_to(array_t(String, range_t(2, :default)))
1101
- end
1102
- end
1103
-
1104
- context 'for Enum, such that' do
1105
- it 'Enum is assignable to an Enum with all contained options' do
1106
- expect(enum_t('a', 'b')).to be_assignable_to(enum_t('a', 'b', 'c'))
1107
- end
1108
-
1109
- it 'Enum is not assignable to an Enum with fewer contained options' do
1110
- expect(enum_t('a', 'b')).not_to be_assignable_to(enum_t('a'))
1111
- end
1112
-
1113
- it 'case insensitive Enum is not assignable to case sensitive Enum' do
1114
- expect(enum_t('a', 'b', true)).not_to be_assignable_to(enum_t('a', 'b'))
1115
- end
1116
-
1117
- it 'case sensitive Enum is assignable to case insensitive Enum' do
1118
- expect(enum_t('a', 'b')).to be_assignable_to(enum_t('a', 'b', true))
1119
- end
1120
-
1121
- it 'case sensitive Enum is not assignable to case sensitive Enum using different case' do
1122
- expect(enum_t('a', 'b')).not_to be_assignable_to(enum_t('A', 'B'))
1123
- end
1124
-
1125
- it 'case sensitive Enum is assignable to case insensitive Enum using different case' do
1126
- expect(enum_t('a', 'b')).to be_assignable_to(enum_t('A', 'B', true))
1127
- end
1128
- end
1129
-
1130
- context 'for Hash, such that' do
1131
- it 'Hash is not assignable to any other Collection type' do
1132
- t = PHashType::DEFAULT
1133
- tested_types = collection_types - [
1134
- PCollectionType,
1135
- PStructType,
1136
- PHashType]
1137
- tested_types.each {|t2| expect(t).not_to be_assignable_to(t2::DEFAULT) }
1138
- end
1139
-
1140
- it 'Hash is not assignable to any disjunct type' do
1141
- tested_types = all_types - [
1142
- PAnyType,
1143
- POptionalType,
1144
- PNotUndefType,
1145
- PIterableType] - collection_types
1146
- t = PHashType::DEFAULT
1147
- tested_types.each {|t2| expect(t).not_to be_assignable_to(t2::DEFAULT) }
1148
- end
1149
-
1150
- it 'Struct is assignable to Hash with Pattern that matches all keys' do
1151
- expect(struct_t({'x' => integer_t, 'y' => integer_t})).to be_assignable_to(hash_t(pattern_t(/^\w+$/), factory.any))
1152
- end
1153
-
1154
- it 'Struct is assignable to Hash with Enum that matches all keys' do
1155
- expect(struct_t({'x' => integer_t, 'y' => integer_t})).to be_assignable_to(hash_t(enum_t('x', 'y', 'z'), factory.any))
1156
- end
1157
-
1158
- it 'Struct is not assignable to Hash with Pattern unless all keys match' do
1159
- expect(struct_t({'a' => integer_t, 'A' => integer_t})).not_to be_assignable_to(hash_t(pattern_t(/^[A-Z]+$/), factory.any))
1160
- end
1161
-
1162
- it 'Struct is not assignable to Hash with Enum unless all keys match' do
1163
- expect(struct_t({'a' => integer_t, 'y' => integer_t})).not_to be_assignable_to(hash_t(enum_t('x', 'y', 'z'), factory.any))
1164
- end
1165
- end
1166
-
1167
- context 'for Timespan such that' do
1168
- it 'Timespan is assignable to less constrained Timespan' do
1169
- t1 = PTimespanType.new('00:00:10', '00:00:20')
1170
- t2 = PTimespanType.new('00:00:11', '00:00:19')
1171
- expect(t2).to be_assignable_to(t1)
1172
- end
1173
-
1174
- it 'Timespan is not assignable to more constrained Timespan' do
1175
- t1 = PTimespanType.new('00:00:10', '00:00:20')
1176
- t2 = PTimespanType.new('00:00:11', '00:00:19')
1177
- expect(t1).not_to be_assignable_to(t2)
1178
- end
1179
- end
1180
-
1181
- context 'for Timestamp such that' do
1182
- it 'Timestamp is assignable to less constrained Timestamp' do
1183
- t1 = PTimestampType.new('2016-01-01', '2016-12-31')
1184
- t2 = PTimestampType.new('2016-02-01', '2016-11-30')
1185
- expect(t2).to be_assignable_to(t1)
1186
- end
1187
-
1188
- it 'Timestamp is not assignable to more constrained Timestamp' do
1189
- t1 = PTimestampType.new('2016-01-01', '2016-12-31')
1190
- t2 = PTimestampType.new('2016-02-01', '2016-11-30')
1191
- expect(t1).not_to be_assignable_to(t2)
1192
- end
1193
- end
1194
-
1195
- context 'for Tuple, such that' do
1196
- it 'Tuple is not assignable to any other non Array based Collection type' do
1197
- t = PTupleType::DEFAULT
1198
- tested_types = collection_types - [
1199
- PCollectionType,
1200
- PTupleType,
1201
- PArrayType]
1202
- tested_types.each {|t2| expect(t).not_to be_assignable_to(t2::DEFAULT) }
1203
- end
1204
-
1205
- it 'A tuple with parameters is assignable to the default Tuple' do
1206
- t = PTupleType::DEFAULT
1207
- t2 = PTupleType.new([PStringType::DEFAULT])
1208
- expect(t2).to be_assignable_to(t)
1209
- end
1210
-
1211
- it 'Tuple is not assignable to any disjunct type' do
1212
- tested_types = all_types - [
1213
- PAnyType,
1214
- POptionalType,
1215
- PInitType,
1216
- PNotUndefType,
1217
- PIterableType] - collection_types
1218
- t = PTupleType::DEFAULT
1219
- tested_types.each {|t2| expect(t).not_to be_assignable_to(t2::DEFAULT) }
1220
- end
1221
- end
1222
-
1223
- context 'for Struct, such that' do
1224
- it 'Struct is not assignable to any other non Hashed based Collection type' do
1225
- t = PStructType::DEFAULT
1226
- tested_types = collection_types - [
1227
- PCollectionType,
1228
- PStructType,
1229
- PHashType,
1230
- PInitType]
1231
- tested_types.each {|t2| expect(t).not_to be_assignable_to(t2::DEFAULT) }
1232
- end
1233
-
1234
- it 'Struct is not assignable to any disjunct type' do
1235
- tested_types = all_types - [
1236
- PAnyType,
1237
- POptionalType,
1238
- PNotUndefType,
1239
- PIterableType,
1240
- PInitType] - collection_types
1241
- t = PStructType::DEFAULT
1242
- tested_types.each {|t2| expect(t).not_to be_assignable_to(t2::DEFAULT) }
1243
- end
1244
-
1245
- it 'Default key optionality is controlled by value assignability to undef' do
1246
- t1 = struct_t({'member' => string_t})
1247
- expect(t1.elements[0].key_type).to eq(string_t('member'))
1248
- t1 = struct_t({'member' => any_t})
1249
- expect(t1.elements[0].key_type).to eq(optional_t(string_t('member')))
1250
- end
1251
-
1252
- it "NotUndef['key'] becomes String['key'] (since its implied that String is required)" do
1253
- t1 = struct_t({not_undef_t('member') => string_t})
1254
- expect(t1.elements[0].key_type).to eq(string_t('member'))
1255
- end
1256
-
1257
- it "Optional['key'] becomes Optional[String['key']]" do
1258
- t1 = struct_t({optional_t('member') => string_t})
1259
- expect(t1.elements[0].key_type).to eq(optional_t(string_t('member')))
1260
- end
1261
-
1262
- it 'Optional members are not required' do
1263
- t1 = struct_t({optional_t('optional_member') => string_t, not_undef_t('other_member') => string_t})
1264
- t2 = struct_t({not_undef_t('other_member') => string_t})
1265
- expect(t2).to be_assignable_to(t1)
1266
- end
1267
-
1268
- it 'Required members not optional even when value is' do
1269
- t1 = struct_t({not_undef_t('required_member') => any_t, not_undef_t('other_member') => string_t})
1270
- t2 = struct_t({not_undef_t('other_member') => string_t})
1271
- expect(t2).not_to be_assignable_to(t1)
1272
- end
1273
-
1274
- it 'A hash of string is not assignable to struct with integer value' do
1275
- t1 = struct_t({'foo' => integer_t, 'bar' => string_t})
1276
- t2 = hash_t(string_t, string_t, range_t(2, 2))
1277
- expect(t1.assignable?(t2)).to eql(false)
1278
- end
1279
-
1280
- it 'A hash of with integer key is not assignable to struct with string key' do
1281
- t1 = struct_t({'foo' => string_t, 'bar' => string_t})
1282
- t2 = hash_t(integer_t, string_t, range_t(2, 2))
1283
- expect(t1.assignable?(t2)).to eql(false)
1284
- end
1285
- end
1286
-
1287
- context 'for Callable, such that' do
1288
- it 'Callable is not assignable to any disjunct type' do
1289
- t = PCallableType::DEFAULT
1290
- tested_types = all_types - [
1291
- PCallableType,
1292
- PAnyType,
1293
- POptionalType,
1294
- PNotUndefType]
1295
- tested_types.each {|t2| expect(t).to_not be_assignable_to(t2::DEFAULT) }
1296
- end
1297
-
1298
- it 'a callable with parameter is assignable to the default callable' do
1299
- expect(callable_t(string_t)).to be_assignable_to(PCallableType::DEFAULT)
1300
- end
1301
-
1302
- it 'the default callable is not assignable to a callable with parameter' do
1303
- expect(PCallableType::DEFAULT).not_to be_assignable_to(callable_t(string_t))
1304
- end
1305
-
1306
- it 'a callable with a return type is assignable to the default callable' do
1307
- expect(callable_t([], string_t)).to be_assignable_to(PCallableType::DEFAULT)
1308
- end
1309
-
1310
- it 'the default callable is not assignable to a callable with a return type' do
1311
- expect(PCallableType::DEFAULT).not_to be_assignable_to(callable_t([],string_t))
1312
- end
1313
-
1314
- it 'a callable with a return type Any is assignable to the default callable' do
1315
- expect(callable_t([], any_t)).to be_assignable_to(PCallableType::DEFAULT)
1316
- end
1317
-
1318
- it 'a callable with a return type Any is equal to a callable with the same parameters and no return type' do
1319
- expect(callable_t([string_t], any_t)).to eql(callable_t(string_t))
1320
- end
1321
-
1322
- it 'a callable with a return type different than Any is not equal to a callable with the same parameters and no return type' do
1323
- expect(callable_t([string_t], string_t)).not_to eql(callable_t(string_t))
1324
- end
1325
-
1326
- it 'a callable with a return type is assignable from another callable with an assignable return type' do
1327
- expect(callable_t([], string_t)).to be_assignable_to(callable_t([], PScalarType::DEFAULT))
1328
- end
1329
-
1330
- it 'a callable with a return type is not assignable from another callable unless the return type is assignable' do
1331
- expect(callable_t([], string_t)).not_to be_assignable_to(callable_t([], integer_t))
1332
- end
1333
- end
1334
-
1335
- it 'should recognize mapped ruby types' do
1336
- { Integer => PIntegerType::DEFAULT,
1337
- Float => PFloatType::DEFAULT,
1338
- Numeric => PNumericType::DEFAULT,
1339
- NilClass => PUndefType::DEFAULT,
1340
- TrueClass => PBooleanType::DEFAULT,
1341
- FalseClass => PBooleanType::DEFAULT,
1342
- String => PStringType::DEFAULT,
1343
- Regexp => PRegexpType::DEFAULT,
1344
- Regexp => PRegexpType::DEFAULT,
1345
- Array => TypeFactory.array_of_any,
1346
- Hash => TypeFactory.hash_of_any
1347
- }.each do |ruby_type, puppet_type |
1348
- expect(ruby_type).to be_assignable_to(puppet_type)
1349
- end
1350
- end
1351
-
1352
- context 'when dealing with integer ranges' do
1353
- it 'should accept an equal range' do
1354
- expect(calculator.assignable?(range_t(2,5), range_t(2,5))).to eq(true)
1355
- end
1356
-
1357
- it 'should accept a narrower range' do
1358
- expect(calculator.assignable?(range_t(2,10), range_t(3,5))).to eq(true)
1359
- end
1360
-
1361
- it 'should reject a wider range' do
1362
- expect(calculator.assignable?(range_t(3,5), range_t(2,10))).to eq(false)
1363
- end
1364
-
1365
- it 'should reject a partially overlapping range' do
1366
- expect(calculator.assignable?(range_t(3,5), range_t(2,4))).to eq(false)
1367
- expect(calculator.assignable?(range_t(3,5), range_t(4,6))).to eq(false)
1368
- end
1369
- end
1370
-
1371
- context 'when dealing with patterns' do
1372
- it 'should accept a string matching a pattern' do
1373
- p_t = pattern_t('abc')
1374
- p_s = string_t('XabcY')
1375
- expect(calculator.assignable?(p_t, p_s)).to eq(true)
1376
- end
1377
-
1378
- it 'should accept a regexp matching a pattern' do
1379
- p_t = pattern_t(/abc/)
1380
- p_s = string_t('XabcY')
1381
- expect(calculator.assignable?(p_t, p_s)).to eq(true)
1382
- end
1383
-
1384
- it 'should accept a pattern matching a pattern' do
1385
- p_t = pattern_t(pattern_t('abc'))
1386
- p_s = string_t('XabcY')
1387
- expect(calculator.assignable?(p_t, p_s)).to eq(true)
1388
- end
1389
-
1390
- it 'should accept a regexp matching a pattern' do
1391
- p_t = pattern_t(regexp_t('abc'))
1392
- p_s = string_t('XabcY')
1393
- expect(calculator.assignable?(p_t, p_s)).to eq(true)
1394
- end
1395
-
1396
- it 'should accept a string matching all patterns' do
1397
- p_t = pattern_t('abc', 'ab', 'c')
1398
- p_s = string_t('XabcY')
1399
- expect(calculator.assignable?(p_t, p_s)).to eq(true)
1400
- end
1401
-
1402
- it 'should accept multiple strings if they all match any patterns' do
1403
- p_t = pattern_t('X', 'Y', 'abc')
1404
- p_s = enum_t('Xa', 'aY', 'abc')
1405
- expect(calculator.assignable?(p_t, p_s)).to eq(true)
1406
- end
1407
-
1408
- it 'should reject a string not matching any patterns' do
1409
- p_t = pattern_t('abc', 'ab', 'c')
1410
- p_s = string_t('XqqqY')
1411
- expect(calculator.assignable?(p_t, p_s)).to eq(false)
1412
- end
1413
-
1414
- it 'should reject multiple strings if not all match any patterns' do
1415
- p_t = pattern_t('abc', 'ab', 'c', 'q')
1416
- p_s = enum_t('X', 'Y', 'Z')
1417
- expect(calculator.assignable?(p_t, p_s)).to eq(false)
1418
- end
1419
-
1420
- it 'should accept enum matching patterns as instanceof' do
1421
- enum = enum_t('XS', 'S', 'M', 'L' 'XL', 'XXL')
1422
- pattern = pattern_t('S', 'M', 'L')
1423
- expect(calculator.assignable?(pattern, enum)).to eq(true)
1424
- end
1425
-
1426
- it 'pattern should accept a variant where all variants are acceptable' do
1427
- pattern = pattern_t(/^\w+$/)
1428
- expect(calculator.assignable?(pattern, variant_t(string_t('a'), string_t('b')))).to eq(true)
1429
- end
1430
-
1431
- it 'pattern representing all patterns should accept any pattern' do
1432
- expect(calculator.assignable?(pattern_t, pattern_t('a'))).to eq(true)
1433
- expect(calculator.assignable?(pattern_t, pattern_t)).to eq(true)
1434
- end
1435
-
1436
- it 'pattern representing all patterns should accept any enum' do
1437
- expect(calculator.assignable?(pattern_t, enum_t('a'))).to eq(true)
1438
- expect(calculator.assignable?(pattern_t, enum_t)).to eq(true)
1439
- end
1440
-
1441
- it 'pattern representing all patterns should accept any string' do
1442
- expect(calculator.assignable?(pattern_t, string_t('a'))).to eq(true)
1443
- expect(calculator.assignable?(pattern_t, string_t)).to eq(true)
1444
- end
1445
-
1446
- end
1447
-
1448
- context 'when dealing with enums' do
1449
- it 'should accept a string with matching content' do
1450
- expect(calculator.assignable?(enum_t('a', 'b'), string_t('a'))).to eq(true)
1451
- expect(calculator.assignable?(enum_t('a', 'b'), string_t('b'))).to eq(true)
1452
- expect(calculator.assignable?(enum_t('a', 'b'), string_t('c'))).to eq(false)
1453
- end
1454
-
1455
- it 'should accept an enum with matching enum' do
1456
- expect(calculator.assignable?(enum_t('a', 'b'), enum_t('a', 'b'))).to eq(true)
1457
- expect(calculator.assignable?(enum_t('a', 'b'), enum_t('a'))).to eq(true)
1458
- expect(calculator.assignable?(enum_t('a', 'b'), enum_t('c'))).to eq(false)
1459
- end
1460
-
1461
- it 'non parameterized enum accepts any other enum but not the reverse' do
1462
- expect(calculator.assignable?(enum_t, enum_t('a'))).to eq(true)
1463
- expect(calculator.assignable?(enum_t('a'), enum_t)).to eq(false)
1464
- end
1465
-
1466
- it 'enum should accept a variant where all variants are acceptable' do
1467
- enum = enum_t('a', 'b')
1468
- expect(calculator.assignable?(enum, variant_t(string_t('a'), string_t('b')))).to eq(true)
1469
- end
1470
- end
1471
-
1472
- context 'when dealing with string and enum combinations' do
1473
- it 'should accept assigning any enum to unrestricted string' do
1474
- expect(calculator.assignable?(string_t, enum_t('blue'))).to eq(true)
1475
- expect(calculator.assignable?(string_t, enum_t('blue', 'red'))).to eq(true)
1476
- end
1477
-
1478
- it 'should not accept assigning longer enum value to size restricted string' do
1479
- expect(calculator.assignable?(constrained_string_t(range_t(2,2)), enum_t('a','blue'))).to eq(false)
1480
- end
1481
-
1482
- it 'should accept assigning any string to empty enum' do
1483
- expect(calculator.assignable?(enum_t, string_t)).to eq(true)
1484
- end
1485
-
1486
- it 'should accept assigning empty enum to any string' do
1487
- expect(calculator.assignable?(string_t, enum_t)).to eq(true)
1488
- end
1489
-
1490
- it 'should not accept assigning empty enum to size constrained string' do
1491
- expect(calculator.assignable?(constrained_string_t(range_t(2,2)), enum_t)).to eq(false)
1492
- end
1493
- end
1494
-
1495
- context 'when dealing with string/pattern/enum combinations' do
1496
- it 'any string is equal to any enum is equal to any pattern' do
1497
- expect(calculator.assignable?(string_t, enum_t)).to eq(true)
1498
- expect(calculator.assignable?(string_t, pattern_t)).to eq(true)
1499
- expect(calculator.assignable?(enum_t, string_t)).to eq(true)
1500
- expect(calculator.assignable?(enum_t, pattern_t)).to eq(true)
1501
- expect(calculator.assignable?(pattern_t, string_t)).to eq(true)
1502
- expect(calculator.assignable?(pattern_t, enum_t)).to eq(true)
1503
- end
1504
- end
1505
-
1506
- context 'when dealing with tuples' do
1507
- it 'matches empty tuples' do
1508
- tuple1 = tuple_t
1509
- tuple2 = tuple_t
1510
-
1511
- expect(calculator.assignable?(tuple1, tuple2)).to eq(true)
1512
- expect(calculator.assignable?(tuple2, tuple1)).to eq(true)
1513
- end
1514
-
1515
- it 'accepts an empty tuple as assignable to a tuple with a min size of 0' do
1516
- tuple1 = constrained_tuple_t(range_t(0, :default))
1517
- tuple2 = tuple_t()
1518
-
1519
- expect(calculator.assignable?(tuple1, tuple2)).to eq(true)
1520
- expect(calculator.assignable?(tuple2, tuple1)).to eq(true)
1521
- end
1522
-
1523
- it 'should accept matching tuples' do
1524
- tuple1 = tuple_t(1,2)
1525
- tuple2 = tuple_t(Integer,Integer)
1526
- expect(calculator.assignable?(tuple1, tuple2)).to eq(true)
1527
- expect(calculator.assignable?(tuple2, tuple1)).to eq(true)
1528
- end
1529
-
1530
- it 'should accept matching tuples where one is more general than the other' do
1531
- tuple1 = tuple_t(1,2)
1532
- tuple2 = tuple_t(Numeric,Numeric)
1533
- expect(calculator.assignable?(tuple1, tuple2)).to eq(false)
1534
- expect(calculator.assignable?(tuple2, tuple1)).to eq(true)
1535
- end
1536
-
1537
- it 'should accept ranged tuples' do
1538
- tuple1 = constrained_tuple_t(range_t(5,5), 1)
1539
- tuple2 = tuple_t(Integer,Integer, Integer, Integer, Integer)
1540
- expect(calculator.assignable?(tuple1, tuple2)).to eq(true)
1541
- expect(calculator.assignable?(tuple2, tuple1)).to eq(true)
1542
- end
1543
-
1544
- it 'should reject ranged tuples when ranges does not match' do
1545
- tuple1 = constrained_tuple_t(range_t(4, 5), 1)
1546
- tuple2 = tuple_t(Integer,Integer, Integer, Integer, Integer)
1547
- expect(calculator.assignable?(tuple1, tuple2)).to eq(true)
1548
- expect(calculator.assignable?(tuple2, tuple1)).to eq(false)
1549
- end
1550
-
1551
- it 'should reject ranged tuples when ranges does not match (using infinite upper bound)' do
1552
- tuple1 = constrained_tuple_t(range_t(4, :default), 1)
1553
- tuple2 = tuple_t(Integer,Integer, Integer, Integer, Integer)
1554
- expect(calculator.assignable?(tuple1, tuple2)).to eq(true)
1555
- expect(calculator.assignable?(tuple2, tuple1)).to eq(false)
1556
- end
1557
-
1558
- it 'should accept matching tuples with optional entries by repeating last' do
1559
- tuple1 = constrained_tuple_t(range_t(0, :default), 1,2)
1560
- tuple2 = constrained_tuple_t(range_t(0, :default), Numeric,Numeric)
1561
- expect(calculator.assignable?(tuple1, tuple2)).to eq(false)
1562
- expect(calculator.assignable?(tuple2, tuple1)).to eq(true)
1563
- end
1564
-
1565
- it 'should accept matching tuples with optional entries' do
1566
- tuple1 = constrained_tuple_t(range_t(1, 3), Integer, Integer, String)
1567
- array2 = array_t(Integer, range_t(2,2))
1568
- expect(calculator.assignable?(tuple1, array2)).to eq(true)
1569
- tuple1 = constrained_tuple_t(range_t(3, 3), tuple1.types)
1570
- expect(calculator.assignable?(tuple1, array2)).to eq(false)
1571
- end
1572
-
1573
- it 'should accept matching array' do
1574
- tuple1 = tuple_t(1,2)
1575
- array = array_t(Integer, range_t(2, 2))
1576
- expect(calculator.assignable?(tuple1, array)).to eq(true)
1577
- expect(calculator.assignable?(array, tuple1)).to eq(true)
1578
- end
1579
-
1580
- it 'should accept empty array when tuple allows min of 0' do
1581
- tuple1 = constrained_tuple_t(range_t(0, 1), Integer)
1582
- array = array_t(unit_t, range_t(0, 0))
1583
- expect(calculator.assignable?(tuple1, array)).to eq(true)
1584
- expect(calculator.assignable?(array, tuple1)).to eq(false)
1585
- end
1586
- end
1587
-
1588
- context 'when dealing with structs' do
1589
- it 'should accept matching structs' do
1590
- struct1 = struct_t({'a'=>Integer, 'b'=>Integer})
1591
- struct2 = struct_t({'a'=>Integer, 'b'=>Integer})
1592
- expect(calculator.assignable?(struct1, struct2)).to eq(true)
1593
- expect(calculator.assignable?(struct2, struct1)).to eq(true)
1594
- end
1595
-
1596
- it 'should accept matching structs with less elements when unmatched elements are optional' do
1597
- struct1 = struct_t({'a'=>Integer, 'b'=>Integer, 'c'=>optional_t(Integer)})
1598
- struct2 = struct_t({'a'=>Integer, 'b'=>Integer})
1599
- expect(calculator.assignable?(struct1, struct2)).to eq(true)
1600
- end
1601
-
1602
- it 'should reject matching structs with more elements even if excess elements are optional' do
1603
- struct1 = struct_t({'a'=>Integer, 'b'=>Integer})
1604
- struct2 = struct_t({'a'=>Integer, 'b'=>Integer, 'c'=>optional_t(Integer)})
1605
- expect(calculator.assignable?(struct1, struct2)).to eq(false)
1606
- end
1607
-
1608
- it 'should accept matching structs where one is more general than the other with respect to optional' do
1609
- struct1 = struct_t({'a'=>Integer, 'b'=>Integer, 'c'=>optional_t(Integer)})
1610
- struct2 = struct_t({'a'=>Integer, 'b'=>Integer, 'c'=>Integer})
1611
- expect(calculator.assignable?(struct1, struct2)).to eq(true)
1612
- end
1613
-
1614
- it 'should reject matching structs where one is more special than the other with respect to optional' do
1615
- struct1 = struct_t({'a'=>Integer, 'b'=>Integer, 'c'=>Integer})
1616
- struct2 = struct_t({'a'=>Integer, 'b'=>Integer, 'c'=>optional_t(Integer)})
1617
- expect(calculator.assignable?(struct1, struct2)).to eq(false)
1618
- end
1619
-
1620
- it 'should accept matching structs where one is more general than the other' do
1621
- struct1 = struct_t({'a'=>Integer, 'b'=>Integer})
1622
- struct2 = struct_t({'a'=>Numeric, 'b'=>Numeric})
1623
- expect(calculator.assignable?(struct1, struct2)).to eq(false)
1624
- expect(calculator.assignable?(struct2, struct1)).to eq(true)
1625
- end
1626
-
1627
- it 'should accept matching hash' do
1628
- struct1 = struct_t({'a'=>Integer, 'b'=>Integer})
1629
- non_empty_string = constrained_string_t(range_t(1, nil))
1630
- hsh = hash_t(non_empty_string, Integer, range_t(2,2))
1631
- expect(calculator.assignable?(struct1, hsh)).to eq(true)
1632
- expect(calculator.assignable?(hsh, struct1)).to eq(true)
1633
- end
1634
-
1635
- it 'should accept empty hash with key_type unit' do
1636
- struct1 = struct_t({'a'=>optional_t(Integer)})
1637
- hsh = hash_t(unit_t, unit_t, range_t(0, 0))
1638
- expect(calculator.assignable?(struct1, hsh)).to eq(true)
1639
- end
1640
- end
1641
-
1642
- it 'should recognize ruby type inheritance' do
1643
- class Foo
1644
- end
1645
-
1646
- class Bar < Foo
1647
- end
1648
-
1649
- fooType = calculator.infer(Foo.new)
1650
- barType = calculator.infer(Bar.new)
1651
-
1652
- expect(calculator.assignable?(fooType, fooType)).to eq(true)
1653
- expect(calculator.assignable?(Foo, fooType)).to eq(true)
1654
-
1655
- expect(calculator.assignable?(fooType, barType)).to eq(true)
1656
- expect(calculator.assignable?(Foo, barType)).to eq(true)
1657
-
1658
- expect(calculator.assignable?(barType, fooType)).to eq(false)
1659
- expect(calculator.assignable?(Bar, fooType)).to eq(false)
1660
- end
1661
-
1662
- it 'should allow host class with same name' do
1663
- hc1 = TypeFactory.host_class('the_name')
1664
- hc2 = TypeFactory.host_class('the_name')
1665
- expect(calculator.assignable?(hc1, hc2)).to eq(true)
1666
- end
1667
-
1668
- it 'should allow host class with name assigned to hostclass without name' do
1669
- hc1 = TypeFactory.host_class
1670
- hc2 = TypeFactory.host_class('the_name')
1671
- expect(calculator.assignable?(hc1, hc2)).to eq(true)
1672
- end
1673
-
1674
- it 'should reject host classes with different names' do
1675
- hc1 = TypeFactory.host_class('the_name')
1676
- hc2 = TypeFactory.host_class('another_name')
1677
- expect(calculator.assignable?(hc1, hc2)).to eq(false)
1678
- end
1679
-
1680
- it 'should reject host classes without name assigned to host class with name' do
1681
- hc1 = TypeFactory.host_class('the_name')
1682
- hc2 = TypeFactory.host_class
1683
- expect(calculator.assignable?(hc1, hc2)).to eq(false)
1684
- end
1685
-
1686
- it 'should allow resource with same type_name and title' do
1687
- r1 = TypeFactory.resource('file', 'foo')
1688
- r2 = TypeFactory.resource('file', 'foo')
1689
- expect(calculator.assignable?(r1, r2)).to eq(true)
1690
- end
1691
-
1692
- it 'should allow more specific resource assignment' do
1693
- r1 = TypeFactory.resource
1694
- r2 = TypeFactory.resource('file')
1695
- expect(calculator.assignable?(r1, r2)).to eq(true)
1696
- r2 = TypeFactory.resource('file', '/tmp/foo')
1697
- expect(calculator.assignable?(r1, r2)).to eq(true)
1698
- r1 = TypeFactory.resource('file')
1699
- expect(calculator.assignable?(r1, r2)).to eq(true)
1700
- end
1701
-
1702
- it 'should reject less specific resource assignment' do
1703
- r1 = TypeFactory.resource('file', '/tmp/foo')
1704
- r2 = TypeFactory.resource('file')
1705
- expect(calculator.assignable?(r1, r2)).to eq(false)
1706
- r2 = TypeFactory.resource
1707
- expect(calculator.assignable?(r1, r2)).to eq(false)
1708
- end
1709
-
1710
- context 'for TypeAlias, such that' do
1711
- let!(:parser) { TypeParser.singleton }
1712
-
1713
- it 'it is assignable to the type that it is an alias for' do
1714
- t = type_alias_t('Alias', 'Integer').resolve(nil)
1715
- expect(calculator.assignable?(integer_t, t)).to be_truthy
1716
- end
1717
-
1718
- it 'the type that it is an alias for is assignable to it' do
1719
- t = type_alias_t('Alias', 'Integer').resolve(nil)
1720
- expect(calculator.assignable?(t, integer_t)).to be_truthy
1721
- end
1722
-
1723
- it 'a recursive alias can be assignable from a conformant type with any depth' do
1724
- scope = {}
1725
-
1726
- t = type_alias_t('Tree', 'Hash[String,Variant[String,Tree]]')
1727
- loader = double
1728
- expect(loader).to receive(:load).with(:type, 'tree').and_return(t)
1729
-
1730
- expect(Adapters::LoaderAdapter).to receive(:loader_for_model_object).at_least(:once).and_return(loader)
1731
-
1732
- t.resolve(scope)
1733
- expect(calculator.assignable?(t, parser.parse('Hash[String,Variant[String,Hash[String,Variant[String,String]]]]'))).to be_truthy
1734
- end
1735
-
1736
-
1737
- it 'similar recursive aliases are assignable' do
1738
- scope = {}
1739
-
1740
- t1 = type_alias_t('Tree1', 'Hash[String,Variant[String,Tree1]]')
1741
- t2 = type_alias_t('Tree2', 'Hash[String,Variant[String,Tree2]]')
1742
- loader = double
1743
- expect(loader).to receive(:load).with(:type, 'tree1').and_return(t1)
1744
- expect(loader).to receive(:load).with(:type, 'tree2').and_return(t2)
1745
-
1746
- expect(Adapters::LoaderAdapter).to receive(:loader_for_model_object).at_least(:once).and_return(loader)
1747
-
1748
- t1.resolve(scope)
1749
- t2.resolve(scope)
1750
- expect(calculator.assignable?(t1, t2)).to be_truthy
1751
- end
1752
-
1753
- it 'crossing recursive aliases are assignable' do
1754
- t1 = type_alias_t('Tree1', 'Hash[String,Variant[String,Tree2]]')
1755
- t2 = type_alias_t('Tree2', 'Hash[String,Variant[String,Tree1]]')
1756
- loader = double
1757
- expect(loader).to receive(:load).with(:type, 'tree1').and_return(t1)
1758
- expect(loader).to receive(:load).with(:type, 'tree2').and_return(t2)
1759
-
1760
- expect(Adapters::LoaderAdapter).to receive(:loader_for_model_object).at_least(:once).and_return(loader)
1761
-
1762
- t1.resolve(loader)
1763
- t2.resolve(loader)
1764
- expect(calculator.assignable?(t1, t2)).to be_truthy
1765
- end
1766
-
1767
- it 'Type[T] is assignable to Type[AT] when AT is an alias for T' do
1768
- scope = {}
1769
-
1770
- ta = type_alias_t('PositiveInteger', 'Integer[0,default]')
1771
- loader = double
1772
- expect(loader).to receive(:load).with(:type, 'positiveinteger').and_return(ta)
1773
- expect(Adapters::LoaderAdapter).to receive(:loader_for_model_object).at_least(:once).and_return(loader)
1774
-
1775
- t1 = type_t(range_t(0, :default))
1776
- t2 = parser.parse('Type[PositiveInteger]', scope)
1777
- expect(calculator.assignable?(t2, t1)).to be_truthy
1778
- end
1779
-
1780
- it 'Type[T] is assignable to AT when AT is an alias for Type[T]' do
1781
- scope = {}
1782
-
1783
- ta = type_alias_t('PositiveIntegerType', 'Type[Integer[0,default]]')
1784
- loader = double
1785
- expect(loader).to receive(:load).with(:type, 'positiveintegertype').and_return(ta)
1786
- expect(Adapters::LoaderAdapter).to receive(:loader_for_model_object).at_least(:once).and_return(loader)
1787
-
1788
- t1 = type_t(range_t(0, :default))
1789
- t2 = parser.parse('PositiveIntegerType', scope)
1790
- expect(calculator.assignable?(t2, t1)).to be_truthy
1791
- end
1792
-
1793
- it 'Type[Type[T]] is assignable to Type[Type[AT]] when AT is an alias for T' do
1794
- scope = {}
1795
-
1796
- ta = type_alias_t('PositiveInteger', 'Integer[0,default]')
1797
- loader = double
1798
- expect(loader).to receive(:load).with(:type, 'positiveinteger').and_return(ta)
1799
- expect(Adapters::LoaderAdapter).to receive(:loader_for_model_object).at_least(:once).and_return(loader)
1800
-
1801
- t1 = type_t(type_t(range_t(0, :default)))
1802
- t2 = parser.parse('Type[Type[PositiveInteger]]', scope)
1803
- expect(calculator.assignable?(t2, t1)).to be_truthy
1804
- end
1805
-
1806
- it 'Type[Type[T]] is assignable to Type[AT] when AT is an alias for Type[T]' do
1807
- scope = {}
1808
-
1809
- ta = type_alias_t('PositiveIntegerType', 'Type[Integer[0,default]]')
1810
- loader = double
1811
- expect(loader).to receive(:load).with(:type, 'positiveintegertype').and_return(ta)
1812
- expect(Adapters::LoaderAdapter).to receive(:loader_for_model_object).at_least(:once).and_return(loader)
1813
-
1814
- t1 = type_t(type_t(range_t(0, :default)))
1815
- t2 = parser.parse('Type[PositiveIntegerType]', scope)
1816
- expect(calculator.assignable?(t2, t1)).to be_truthy
1817
- end
1818
-
1819
- it 'An alias for a Type that describes an Iterable instance is assignable to Iterable' do
1820
- t = type_alias_t('MyType', 'Enum[a,b]').resolve(nil)
1821
-
1822
- # True because String is iterable and an instance of Enum is a String
1823
- expect(calculator.assignable?(iterable_t, t)).to be_truthy
1824
- end
1825
- end
1826
- end
1827
-
1828
- context 'when testing if x is instance of type t' do
1829
- include_context 'types_setup'
1830
-
1831
- it 'should consider undef to be instance of Any, NilType, and optional' do
1832
- expect(calculator.instance?(PUndefType::DEFAULT, nil)).to eq(true)
1833
- expect(calculator.instance?(PAnyType::DEFAULT, nil)).to eq(true)
1834
- expect(calculator.instance?(POptionalType::DEFAULT, nil)).to eq(true)
1835
- end
1836
-
1837
- it 'all types should be (ruby) instance of PAnyType' do
1838
- all_types.each do |t|
1839
- expect(t::DEFAULT.is_a?(PAnyType)).to eq(true)
1840
- end
1841
- end
1842
-
1843
- it "should infer :undef to be Undef" do
1844
- expect(calculator.infer(:undef)).to be_assignable_to(undef_t)
1845
- end
1846
-
1847
- it "should not consider :default to be instance of Runtime['ruby', 'Symbol]" do
1848
- expect(calculator.instance?(PRuntimeType.new(:ruby, 'Symbol'), :default)).to eq(false)
1849
- end
1850
-
1851
- it "should not consider :undef to be instance of Runtime['ruby', 'Symbol]" do
1852
- expect(calculator.instance?(PRuntimeType.new(:ruby, 'Symbol'), :undef)).to eq(false)
1853
- end
1854
-
1855
- it 'should consider :undef to be instance of an Optional type' do
1856
- expect(calculator.instance?(POptionalType::DEFAULT, :undef)).to eq(true)
1857
- end
1858
-
1859
- it 'should not consider undef to be an instance of any other type than Any, Undef, Optional, and Init' do
1860
- types_to_test = all_types - [
1861
- PAnyType,
1862
- PUndefType,
1863
- POptionalType,
1864
- PInitType
1865
- ]
1866
-
1867
- types_to_test.each {|t| expect(calculator.instance?(t::DEFAULT, nil)).to eq(false) }
1868
- types_to_test.each {|t| expect(calculator.instance?(t::DEFAULT, :undef)).to eq(false) }
1869
- end
1870
-
1871
- it 'should consider default to be instance of Default and Any' do
1872
- expect(calculator.instance?(PDefaultType::DEFAULT, :default)).to eq(true)
1873
- expect(calculator.instance?(PAnyType::DEFAULT, :default)).to eq(true)
1874
- end
1875
-
1876
- it 'should not consider "default" to be an instance of anything but Default, Init, NotUndef, and Any' do
1877
- types_to_test = all_types - [
1878
- PAnyType,
1879
- PNotUndefType,
1880
- PDefaultType,
1881
- PInitType,
1882
- ]
1883
-
1884
- types_to_test.each {|t| expect(calculator.instance?(t::DEFAULT, :default)).to eq(false) }
1885
- end
1886
-
1887
- it 'should consider integer instanceof PIntegerType' do
1888
- expect(calculator.instance?(PIntegerType::DEFAULT, 1)).to eq(true)
1889
- end
1890
-
1891
- it 'should consider integer instanceof Integer' do
1892
- expect(calculator.instance?(Integer, 1)).to eq(true)
1893
- end
1894
-
1895
- it 'should consider integer in range' do
1896
- range = range_t(0,10)
1897
- expect(calculator.instance?(range, 1)).to eq(true)
1898
- expect(calculator.instance?(range, 10)).to eq(true)
1899
- expect(calculator.instance?(range, -1)).to eq(false)
1900
- expect(calculator.instance?(range, 11)).to eq(false)
1901
- end
1902
-
1903
- it 'should consider string in length range' do
1904
- range = constrained_string_t(range_t(1,3))
1905
- expect(calculator.instance?(range, 'a')).to eq(true)
1906
- expect(calculator.instance?(range, 'abc')).to eq(true)
1907
- expect(calculator.instance?(range, '')).to eq(false)
1908
- expect(calculator.instance?(range, 'abcd')).to eq(false)
1909
- end
1910
-
1911
- it 'should consider string values' do
1912
- string = string_t('a')
1913
- expect(calculator.instance?(string, 'a')).to eq(true)
1914
- expect(calculator.instance?(string, 'c')).to eq(false)
1915
- end
1916
-
1917
- it 'should consider array in length range' do
1918
- range = array_t(integer_t, range_t(1,3))
1919
- expect(calculator.instance?(range, [1])).to eq(true)
1920
- expect(calculator.instance?(range, [1,2,3])).to eq(true)
1921
- expect(calculator.instance?(range, [])).to eq(false)
1922
- expect(calculator.instance?(range, [1,2,3,4])).to eq(false)
1923
- end
1924
-
1925
- it 'should consider hash in length range' do
1926
- range = hash_t(integer_t, integer_t, range_t(1,2))
1927
- expect(calculator.instance?(range, {1=>1})).to eq(true)
1928
- expect(calculator.instance?(range, {1=>1, 2=>2})).to eq(true)
1929
- expect(calculator.instance?(range, {})).to eq(false)
1930
- expect(calculator.instance?(range, {1=>1, 2=>2, 3=>3})).to eq(false)
1931
- end
1932
-
1933
- it 'should consider collection in length range for array ' do
1934
- range = collection_t(range_t(1,3))
1935
- expect(calculator.instance?(range, [1])).to eq(true)
1936
- expect(calculator.instance?(range, [1,2,3])).to eq(true)
1937
- expect(calculator.instance?(range, [])).to eq(false)
1938
- expect(calculator.instance?(range, [1,2,3,4])).to eq(false)
1939
- end
1940
-
1941
- it 'should consider collection in length range for hash' do
1942
- range = collection_t(range_t(1,2))
1943
- expect(calculator.instance?(range, {1=>1})).to eq(true)
1944
- expect(calculator.instance?(range, {1=>1, 2=>2})).to eq(true)
1945
- expect(calculator.instance?(range, {})).to eq(false)
1946
- expect(calculator.instance?(range, {1=>1, 2=>2, 3=>3})).to eq(false)
1947
- end
1948
-
1949
- it 'should consider string matching enum as instanceof' do
1950
- enum = enum_t('XS', 'S', 'M', 'L', 'XL', '0')
1951
- expect(calculator.instance?(enum, 'XS')).to eq(true)
1952
- expect(calculator.instance?(enum, 'S')).to eq(true)
1953
- expect(calculator.instance?(enum, 'XXL')).to eq(false)
1954
- expect(calculator.instance?(enum, '')).to eq(false)
1955
- expect(calculator.instance?(enum, '0')).to eq(true)
1956
- expect(calculator.instance?(enum, 0)).to eq(false)
1957
- end
1958
-
1959
- it 'should consider array[string] as instance of Array[Enum] when strings are instance of Enum' do
1960
- enum = enum_t('XS', 'S', 'M', 'L', 'XL', '0')
1961
- array = array_t(enum)
1962
- expect(calculator.instance?(array, ['XS', 'S', 'XL'])).to eq(true)
1963
- expect(calculator.instance?(array, ['XS', 'S', 'XXL'])).to eq(false)
1964
- end
1965
-
1966
- it 'should consider array[mixed] as instance of Variant[mixed] when mixed types are listed in Variant' do
1967
- enum = enum_t('XS', 'S', 'M', 'L', 'XL')
1968
- sizes = range_t(30, 50)
1969
- array = array_t(variant_t(enum, sizes))
1970
- expect(calculator.instance?(array, ['XS', 'S', 30, 50])).to eq(true)
1971
- expect(calculator.instance?(array, ['XS', 'S', 'XXL'])).to eq(false)
1972
- expect(calculator.instance?(array, ['XS', 'S', 29])).to eq(false)
1973
- end
1974
-
1975
- it 'should consider array[seq] as instance of Tuple[seq] when elements of seq are instance of' do
1976
- tuple = tuple_t(Integer, String, Float)
1977
- expect(calculator.instance?(tuple, [1, 'a', 3.14])).to eq(true)
1978
- expect(calculator.instance?(tuple, [1.2, 'a', 3.14])).to eq(false)
1979
- expect(calculator.instance?(tuple, [1, 1, 3.14])).to eq(false)
1980
- expect(calculator.instance?(tuple, [1, 'a', 1])).to eq(false)
1981
- end
1982
-
1983
- it 'should not consider ProcessOutput objects as instanceof PScalarDataType' do
1984
- object = Puppet::Util::Execution::ProcessOutput.new('object', 0)
1985
-
1986
- expect(calculator.instance?(PScalarDataType::DEFAULT, object)).to eq(false)
1987
- end
1988
-
1989
- context 'and t is Struct' do
1990
- it 'should consider hash[cont] as instance of Struct[cont-t]' do
1991
- struct = struct_t({'a'=>Integer, 'b'=>String, 'c'=>Float})
1992
- expect(calculator.instance?(struct, {'a'=>1, 'b'=>'a', 'c'=>3.14})).to eq(true)
1993
- expect(calculator.instance?(struct, {'a'=>1.2, 'b'=>'a', 'c'=>3.14})).to eq(false)
1994
- expect(calculator.instance?(struct, {'a'=>1, 'b'=>1, 'c'=>3.14})).to eq(false)
1995
- expect(calculator.instance?(struct, {'a'=>1, 'b'=>'a', 'c'=>1})).to eq(false)
1996
- end
1997
-
1998
- it 'should consider empty hash as instance of Struct[x=>Optional[String]]' do
1999
- struct = struct_t({'a'=>optional_t(String)})
2000
- expect(calculator.instance?(struct, {})).to eq(true)
2001
- end
2002
-
2003
- it 'should consider hash[cont] as instance of Struct[cont-t,optionals]' do
2004
- struct = struct_t({'a'=>Integer, 'b'=>String, 'c'=>optional_t(Float)})
2005
- expect(calculator.instance?(struct, {'a'=>1, 'b'=>'a'})).to eq(true)
2006
- end
2007
-
2008
- it 'should consider hash[cont] as instance of Struct[cont-t,variants with optionals]' do
2009
- struct = struct_t({'a'=>Integer, 'b'=>String, 'c'=>variant_t(String, optional_t(Float))})
2010
- expect(calculator.instance?(struct, {'a'=>1, 'b'=>'a'})).to eq(true)
2011
- end
2012
-
2013
- it 'should not consider hash[cont,cont2] as instance of Struct[cont-t]' do
2014
- struct = struct_t({'a'=>Integer, 'b'=>String})
2015
- expect(calculator.instance?(struct, {'a'=>1, 'b'=>'a', 'c'=>'x'})).to eq(false)
2016
- end
2017
-
2018
- it 'should not consider hash[cont,cont2] as instance of Struct[cont-t,optional[cont3-t]' do
2019
- struct = struct_t({'a'=>Integer, 'b'=>String, 'c'=>optional_t(Float)})
2020
- expect(calculator.instance?(struct, {'a'=>1, 'b'=>'a', 'c'=>'x'})).to eq(false)
2021
- end
2022
-
2023
- it 'should consider nil to be a valid element value' do
2024
- struct = struct_t({not_undef_t('a') => any_t, 'b'=>String})
2025
- expect(calculator.instance?(struct, {'a'=>nil , 'b'=>'a'})).to eq(true)
2026
- end
2027
-
2028
- it 'should consider nil to be a valid element value but subject to value type' do
2029
- struct = struct_t({not_undef_t('a') => String, 'b'=>String})
2030
- expect(calculator.instance?(struct, {'a'=>nil , 'b'=>'a'})).to eq(false)
2031
- end
2032
-
2033
- it 'should consider nil to be a valid element value but subject to value type even when key is optional' do
2034
- struct = struct_t({optional_t('a') => String, 'b'=>String})
2035
- expect(calculator.instance?(struct, {'a'=>nil , 'b'=>'a'})).to eq(false)
2036
- end
2037
-
2038
- it 'should consider a hash where optional key is missing as assignable even if value of optional key is required' do
2039
- struct = struct_t({optional_t('a') => String, 'b'=>String})
2040
- expect(calculator.instance?(struct, {'b'=>'a'})).to eq(true)
2041
- end
2042
- end
2043
-
2044
- context 'and t is Data' do
2045
- it 'undef should be considered instance of Data' do
2046
- expect(calculator.instance?(data_t, nil)).to eq(true)
2047
- end
2048
-
2049
- it 'other symbols should not be considered instance of Data' do
2050
- expect(calculator.instance?(data_t, :love)).to eq(false)
2051
- end
2052
-
2053
- it 'an empty array should be considered instance of Data' do
2054
- expect(calculator.instance?(data_t, [])).to eq(true)
2055
- end
2056
-
2057
- it 'an empty hash should be considered instance of Data' do
2058
- expect(calculator.instance?(data_t, {})).to eq(true)
2059
- end
2060
-
2061
- it 'a hash with nil/undef data should be considered instance of Data' do
2062
- expect(calculator.instance?(data_t, {'a' => nil})).to eq(true)
2063
- end
2064
-
2065
- it 'a hash with nil/default key should not considered instance of Data' do
2066
- expect(calculator.instance?(data_t, {nil => 10})).to eq(false)
2067
- expect(calculator.instance?(data_t, {:default => 10})).to eq(false)
2068
- end
2069
-
2070
- it 'an array with nil entries should be considered instance of Data' do
2071
- expect(calculator.instance?(data_t, [nil])).to eq(true)
2072
- end
2073
-
2074
- it 'an array with nil + data entries should be considered instance of Data' do
2075
- expect(calculator.instance?(data_t, [1, nil, 'a'])).to eq(true)
2076
- end
2077
- end
2078
-
2079
- context 'and t is something Callable' do
2080
-
2081
- it 'a Closure should be considered a Callable' do
2082
- factory = Model::Factory
2083
- params = [factory.PARAM('a')]
2084
- the_block = factory.LAMBDA(params,factory.literal(42), nil).model
2085
- the_closure = Evaluator::Closure::Dynamic.new(:fake_evaluator, the_block, :fake_scope)
2086
- expect(calculator.instance?(all_callables_t, the_closure)).to be_truthy
2087
- expect(calculator.instance?(callable_t(any_t), the_closure)).to be_truthy
2088
- expect(calculator.instance?(callable_t(any_t, any_t), the_closure)).to be_falsey
2089
- end
2090
-
2091
- it 'a Function instance should be considered a Callable' do
2092
- fc = Puppet::Functions.create_function(:foo) do
2093
- dispatch :foo do
2094
- param 'String', :a
2095
- end
2096
-
2097
- def foo(a)
2098
- a
2099
- end
2100
- end
2101
- f = fc.new(:closure_scope, :loader)
2102
- # Any callable
2103
- expect(calculator.instance?(all_callables_t, f)).to be_truthy
2104
- # Callable[String]
2105
- expect(calculator.instance?(callable_t(String), f)).to be_truthy
2106
- end
2107
- end
2108
-
2109
- context 'and t is a TypeAlias' do
2110
- let!(:parser) { TypeParser.singleton }
2111
-
2112
- it 'should consider x an instance of the aliased simple type' do
2113
- t = type_alias_t('Alias', 'Integer').resolve(nil)
2114
- expect(calculator.instance?(t, 15)).to be_truthy
2115
- end
2116
-
2117
- it 'should consider x an instance of the aliased parameterized type' do
2118
- t = type_alias_t('Alias', 'Integer[0,20]').resolve(nil)
2119
- expect(calculator.instance?(t, 15)).to be_truthy
2120
- end
2121
-
2122
- it 'should consider t an instance of Iterable when aliased type is Iterable' do
2123
- t = type_alias_t('Alias', 'Enum[a, b]').resolve(nil)
2124
- expect(calculator.instance?(iterable_t, t)).to be_truthy
2125
- end
2126
-
2127
- it 'should consider x an instance of the aliased type that uses self recursion' do
2128
- t = type_alias_t('Tree', 'Hash[String,Variant[String,Tree]]')
2129
- loader = double
2130
- expect(loader).to receive(:load).with(:type, 'tree').and_return(t)
2131
-
2132
- expect(Adapters::LoaderAdapter).to receive(:loader_for_model_object).at_least(:once).and_return(loader)
2133
-
2134
- t.resolve(loader)
2135
- expect(calculator.instance?(t, {'a'=>{'aa'=>{'aaa'=>'aaaa'}}, 'b'=>'bb'})).to be_truthy
2136
- end
2137
-
2138
- it 'should consider x an instance of the aliased type that uses contains an alias that causes self recursion' do
2139
- t1 = type_alias_t('Tree', 'Hash[String,Variant[String,OtherTree]]')
2140
- t2 = type_alias_t('OtherTree', 'Hash[String,Tree]')
2141
- loader = double
2142
- expect(loader).to receive(:load).with(:type, 'tree').and_return(t1)
2143
- expect(loader).to receive(:load).with(:type, 'othertree').and_return(t2)
2144
-
2145
- expect(Adapters::LoaderAdapter).to receive(:loader_for_model_object).at_least(:once).and_return(loader)
2146
-
2147
- t1.resolve(loader)
2148
- expect(calculator.instance?(t1, {'a'=>{'aa'=>{'aaa'=>'aaaa'}}, 'b'=>'bb'})).to be_truthy
2149
- end
2150
- end
2151
- end
2152
-
2153
- context 'when converting a ruby class' do
2154
- it 'should yield \'PIntegerType\' for Integer' do
2155
- expect(calculator.type(Integer).class).to eq(PIntegerType)
2156
- end
2157
-
2158
- it 'should yield \'PFloatType\' for Float' do
2159
- expect(calculator.type(Float).class).to eq(PFloatType)
2160
- end
2161
-
2162
- it 'should yield \'PBooleanType\' for FalseClass and TrueClass' do
2163
- [FalseClass,TrueClass].each do |c|
2164
- expect(calculator.type(c).class).to eq(PBooleanType)
2165
- end
2166
- end
2167
-
2168
- it 'should yield \'PUndefType\' for NilClass' do
2169
- expect(calculator.type(NilClass).class).to eq(PUndefType)
2170
- end
2171
-
2172
- it 'should yield \'PStringType\' for String' do
2173
- expect(calculator.type(String).class).to eq(PStringType)
2174
- end
2175
-
2176
- it 'should yield \'PRegexpType\' for Regexp' do
2177
- expect(calculator.type(Regexp).class).to eq(PRegexpType)
2178
- end
2179
-
2180
- it 'should yield \'PArrayType[PAnyType]\' for Array' do
2181
- t = calculator.type(Array)
2182
- expect(t.class).to eq(PArrayType)
2183
- expect(t.element_type.class).to eq(PAnyType)
2184
- end
2185
-
2186
- it 'should yield \'PHashType[PAnyType,PAnyType]\' for Hash' do
2187
- t = calculator.type(Hash)
2188
- expect(t.class).to eq(PHashType)
2189
- expect(t.key_type.class).to eq(PAnyType)
2190
- expect(t.value_type.class).to eq(PAnyType)
2191
- end
2192
-
2193
- it 'type should yield \'PRuntimeType[ruby,Rational]\' for Rational' do
2194
- t = calculator.type(Rational)
2195
- expect(t.class).to eq(PRuntimeType)
2196
- expect(t.runtime).to eq(:ruby)
2197
- expect(t.runtime_type_name).to eq('Rational')
2198
- end
2199
-
2200
- it 'infer should yield \'PRuntimeType[ruby,Rational]\' for Rational instance' do
2201
- t = calculator.infer(Rational(2, 3))
2202
- expect(t.class).to eq(PRuntimeType)
2203
- expect(t.runtime).to eq(:ruby)
2204
- expect(t.runtime_type_name).to eq('Rational')
2205
- end
2206
- end
2207
-
2208
- context 'when processing meta type' do
2209
- it 'should infer PTypeType as the type of all other types' do
2210
- ptype = PTypeType
2211
- expect(calculator.infer(PUndefType::DEFAULT ).is_a?(ptype)).to eq(true)
2212
- expect(calculator.infer(PScalarType::DEFAULT ).is_a?(ptype)).to eq(true)
2213
- expect(calculator.infer(PScalarDataType::DEFAULT).is_a?(ptype)).to eq(true)
2214
- expect(calculator.infer(PStringType::DEFAULT ).is_a?(ptype)).to eq(true)
2215
- expect(calculator.infer(PNumericType::DEFAULT ).is_a?(ptype)).to eq(true)
2216
- expect(calculator.infer(PIntegerType::DEFAULT ).is_a?(ptype)).to eq(true)
2217
- expect(calculator.infer(PFloatType::DEFAULT ).is_a?(ptype)).to eq(true)
2218
- expect(calculator.infer(PRegexpType::DEFAULT ).is_a?(ptype)).to eq(true)
2219
- expect(calculator.infer(PBooleanType::DEFAULT ).is_a?(ptype)).to eq(true)
2220
- expect(calculator.infer(PCollectionType::DEFAULT).is_a?(ptype)).to eq(true)
2221
- expect(calculator.infer(PArrayType::DEFAULT ).is_a?(ptype)).to eq(true)
2222
- expect(calculator.infer(PHashType::DEFAULT ).is_a?(ptype)).to eq(true)
2223
- expect(calculator.infer(PIterableType::DEFAULT ).is_a?(ptype)).to eq(true)
2224
- expect(calculator.infer(PRuntimeType::DEFAULT ).is_a?(ptype)).to eq(true)
2225
- expect(calculator.infer(PClassType::DEFAULT ).is_a?(ptype)).to eq(true)
2226
- expect(calculator.infer(PResourceType::DEFAULT ).is_a?(ptype)).to eq(true)
2227
- expect(calculator.infer(PEnumType::DEFAULT ).is_a?(ptype)).to eq(true)
2228
- expect(calculator.infer(PPatternType::DEFAULT ).is_a?(ptype)).to eq(true)
2229
- expect(calculator.infer(PVariantType::DEFAULT ).is_a?(ptype)).to eq(true)
2230
- expect(calculator.infer(PTupleType::DEFAULT ).is_a?(ptype)).to eq(true)
2231
- expect(calculator.infer(POptionalType::DEFAULT ).is_a?(ptype)).to eq(true)
2232
- expect(calculator.infer(PCallableType::DEFAULT ).is_a?(ptype)).to eq(true)
2233
- end
2234
-
2235
- it 'should infer PTypeType as the type of all other types' do
2236
- expect(calculator.infer(PUndefType::DEFAULT ).to_s).to eq('Type[Undef]')
2237
- expect(calculator.infer(PScalarType::DEFAULT ).to_s).to eq('Type[Scalar]')
2238
- expect(calculator.infer(PScalarDataType::DEFAULT).to_s).to eq('Type[ScalarData]')
2239
- expect(calculator.infer(PStringType::DEFAULT ).to_s).to eq('Type[String]')
2240
- expect(calculator.infer(PNumericType::DEFAULT ).to_s).to eq('Type[Numeric]')
2241
- expect(calculator.infer(PIntegerType::DEFAULT ).to_s).to eq('Type[Integer]')
2242
- expect(calculator.infer(PFloatType::DEFAULT ).to_s).to eq('Type[Float]')
2243
- expect(calculator.infer(PRegexpType::DEFAULT ).to_s).to eq('Type[Regexp]')
2244
- expect(calculator.infer(PBooleanType::DEFAULT ).to_s).to eq('Type[Boolean]')
2245
- expect(calculator.infer(PCollectionType::DEFAULT).to_s).to eq('Type[Collection]')
2246
- expect(calculator.infer(PArrayType::DEFAULT ).to_s).to eq('Type[Array]')
2247
- expect(calculator.infer(PHashType::DEFAULT ).to_s).to eq('Type[Hash]')
2248
- expect(calculator.infer(PIterableType::DEFAULT ).to_s).to eq('Type[Iterable]')
2249
- expect(calculator.infer(PRuntimeType::DEFAULT ).to_s).to eq('Type[Runtime]')
2250
- expect(calculator.infer(PClassType::DEFAULT ).to_s).to eq('Type[Class]')
2251
- expect(calculator.infer(PResourceType::DEFAULT ).to_s).to eq('Type[Resource]')
2252
- expect(calculator.infer(PEnumType::DEFAULT ).to_s).to eq('Type[Enum]')
2253
- expect(calculator.infer(PVariantType::DEFAULT ).to_s).to eq('Type[Variant]')
2254
- expect(calculator.infer(PPatternType::DEFAULT ).to_s).to eq('Type[Pattern]')
2255
- expect(calculator.infer(PTupleType::DEFAULT ).to_s).to eq('Type[Tuple]')
2256
- expect(calculator.infer(POptionalType::DEFAULT ).to_s).to eq('Type[Optional]')
2257
- expect(calculator.infer(PCallableType::DEFAULT ).to_s).to eq('Type[Callable]')
2258
-
2259
- expect(calculator.infer(PResourceType.new('foo::fee::fum')).to_s).to eq('Type[Foo::Fee::Fum]')
2260
- expect(calculator.infer(PResourceType.new('foo::fee::fum')).to_s).to eq('Type[Foo::Fee::Fum]')
2261
- expect(calculator.infer(PResourceType.new('Foo::Fee::Fum')).to_s).to eq('Type[Foo::Fee::Fum]')
2262
- end
2263
-
2264
- it "computes the common type of PTypeType's type parameter" do
2265
- int_t = PIntegerType::DEFAULT
2266
- string_t = PStringType::DEFAULT
2267
- expect(calculator.infer([int_t]).to_s).to eq('Array[Type[Integer], 1, 1]')
2268
- expect(calculator.infer([int_t, string_t]).to_s).to eq('Array[Type[ScalarData], 2, 2]')
2269
- end
2270
-
2271
- it 'should infer PTypeType as the type of ruby classes' do
2272
- class Foo
2273
- end
2274
- [Object, Numeric, Integer, Float, String, Regexp, Array, Hash, Foo].each do |c|
2275
- expect(calculator.infer(c).is_a?(PTypeType)).to eq(true)
2276
- end
2277
- end
2278
-
2279
- it 'should infer PTypeType as the type of PTypeType (meta regression short-circuit)' do
2280
- expect(calculator.infer(PTypeType::DEFAULT).is_a?(PTypeType)).to eq(true)
2281
- end
2282
-
2283
- it 'computes instance? to be true if parameterized and type match' do
2284
- int_t = PIntegerType::DEFAULT
2285
- type_t = TypeFactory.type_type(int_t)
2286
- type_type_t = TypeFactory.type_type(type_t)
2287
- expect(calculator.instance?(type_type_t, type_t)).to eq(true)
2288
- end
2289
-
2290
- it 'computes instance? to be false if parameterized and type do not match' do
2291
- int_t = PIntegerType::DEFAULT
2292
- string_t = PStringType::DEFAULT
2293
- type_t = TypeFactory.type_type(int_t)
2294
- type_t2 = TypeFactory.type_type(string_t)
2295
- type_type_t = TypeFactory.type_type(type_t)
2296
- # i.e. Type[Integer] =~ Type[Type[Integer]] # false
2297
- expect(calculator.instance?(type_type_t, type_t2)).to eq(false)
2298
- end
2299
-
2300
- it 'computes instance? to be true if unparameterized and matched against a type[?]' do
2301
- int_t = PIntegerType::DEFAULT
2302
- type_t = TypeFactory.type_type(int_t)
2303
- expect(calculator.instance?(PTypeType::DEFAULT, type_t)).to eq(true)
2304
- end
2305
- end
2306
-
2307
- context 'when asking for an iterable ' do
2308
- it 'should produce an iterable for an Integer range that is finite' do
2309
- t = PIntegerType.new(1, 10)
2310
- expect(calculator.iterable(t).respond_to?(:each)).to eq(true)
2311
- end
2312
-
2313
- it 'should not produce an iterable for an Integer range that has an infinite side' do
2314
- t = PIntegerType.new(nil, 10)
2315
- expect(calculator.iterable(t)).to eq(nil)
2316
-
2317
- t = PIntegerType.new(1, nil)
2318
- expect(calculator.iterable(t)).to eq(nil)
2319
- end
2320
-
2321
- it 'all but Integer range are not iterable' do
2322
- [Object, Numeric, Float, String, Regexp, Array, Hash].each do |t|
2323
- expect(calculator.iterable(calculator.type(t))).to eq(nil)
2324
- end
2325
- end
2326
-
2327
- it 'should produce an iterable for a type alias of an Iterable type' do
2328
- t = PTypeAliasType.new('MyAlias', nil, PIntegerType.new(1, 10))
2329
- expect(calculator.iterable(t).respond_to?(:each)).to eq(true)
2330
- end
2331
- end
2332
-
2333
- context 'when dealing with different types of inference' do
2334
- it 'an instance specific inference is produced by infer' do
2335
- expect(calculator.infer(['a','b']).element_type.values).to eq(['a', 'b'])
2336
- end
2337
-
2338
- it 'a generic inference is produced using infer_generic' do
2339
- expect(calculator.infer_generic(['a','b']).element_type).to eql(string_t(range_t(1,1)))
2340
- end
2341
-
2342
- it 'a generic result is created by generalize given an instance specific result for an Array' do
2343
- generic = calculator.infer(['a','b'])
2344
- expect(generic.element_type.values).to eq(['a','b'])
2345
- generic = generic.generalize
2346
- expect(generic.element_type).to eql(string_t(range_t(1,1)))
2347
- end
2348
-
2349
- it 'a generic result is created by generalize given an instance specific result for a Hash' do
2350
- generic = calculator.infer({'a' =>1,'bcd' => 2})
2351
- expect(generic.key_type.values.sort).to eq(['a', 'bcd'])
2352
- expect(generic.value_type.from).to eq(1)
2353
- expect(generic.value_type.to).to eq(2)
2354
- generic = generic.generalize
2355
- expect(generic.key_type.size_type).to eq(range_t(1,3))
2356
- expect(generic.value_type.from).to eq(nil)
2357
- expect(generic.value_type.to).to eq(nil)
2358
- end
2359
-
2360
- it 'ensures that Struct key types are not generalized' do
2361
- generic = struct_t({'a' => any_t}).generalize
2362
- expect(generic.to_s).to eq("Struct[{'a' => Any}]")
2363
- generic = struct_t({not_undef_t('a') => any_t}).generalize
2364
- expect(generic.to_s).to eq("Struct[{NotUndef['a'] => Any}]")
2365
- generic = struct_t({optional_t('a') => string_t}).generalize
2366
- expect(generic.to_s).to eq("Struct[{Optional['a'] => String}]")
2367
- end
2368
-
2369
- it 'ensures that Struct value types are generalized' do
2370
- generic = struct_t({'a' => range_t(1, 3)}).generalize
2371
- expect(generic.to_s).to eq("Struct[{'a' => Integer}]")
2372
- end
2373
-
2374
- it "does not reduce by combining types when using infer_set" do
2375
- element_type = calculator.infer(['a','b',1,2]).element_type
2376
- expect(element_type.class).to eq(PScalarDataType)
2377
- inferred_type = calculator.infer_set(['a','b',1,2])
2378
- expect(inferred_type.class).to eq(PTupleType)
2379
- element_types = inferred_type.types
2380
- expect(element_types[0].class).to eq(PStringType)
2381
- expect(element_types[1].class).to eq(PStringType)
2382
- expect(element_types[2].class).to eq(PIntegerType)
2383
- expect(element_types[3].class).to eq(PIntegerType)
2384
- end
2385
-
2386
- it 'does not reduce by combining types when using infer_set and values are undef' do
2387
- element_type = calculator.infer(['a',nil]).element_type
2388
- expect(element_type.class).to eq(PStringType)
2389
- inferred_type = calculator.infer_set(['a',nil])
2390
- expect(inferred_type.class).to eq(PTupleType)
2391
- element_types = inferred_type.types
2392
- expect(element_types[0].class).to eq(PStringType)
2393
- expect(element_types[1].class).to eq(PUndefType)
2394
- end
2395
-
2396
- it 'infers on an empty Array produces Array[Unit,0,0]' do
2397
- inferred_type = calculator.infer([])
2398
- expect(inferred_type.element_type.class).to eq(PUnitType)
2399
- expect(inferred_type.size_range).to eq([0, 0])
2400
- end
2401
-
2402
- it 'infer_set on an empty Array produces Array[Unit,0,0]' do
2403
- inferred_type = calculator.infer_set([])
2404
- expect(inferred_type.element_type.class).to eq(PUnitType)
2405
- expect(inferred_type.size_range).to eq([0, 0])
2406
- end
2407
- end
2408
-
2409
- context 'when determening callability' do
2410
- context 'and given is exact' do
2411
- it 'with callable' do
2412
- required = callable_t(string_t)
2413
- given = callable_t(string_t)
2414
- expect(calculator.callable?(required, given)).to eq(true)
2415
- end
2416
-
2417
- it 'with args tuple' do
2418
- required = callable_t(string_t)
2419
- given = tuple_t(string_t)
2420
- expect(calculator.callable?(required, given)).to eq(true)
2421
- end
2422
-
2423
- it 'with args tuple having a block' do
2424
- required = callable_t(string_t, callable_t(string_t))
2425
- given = tuple_t(string_t, callable_t(string_t))
2426
- expect(calculator.callable?(required, given)).to eq(true)
2427
- end
2428
-
2429
- it 'with args array' do
2430
- required = callable_t(string_t)
2431
- given = array_t(string_t, range_t(1, 1))
2432
- expect(calculator.callable?(required, given)).to eq(true)
2433
- end
2434
- end
2435
-
2436
- context 'and given is more generic' do
2437
- it 'with callable' do
2438
- required = callable_t(string_t)
2439
- given = callable_t(any_t)
2440
- expect(calculator.callable?(required, given)).to eq(true)
2441
- end
2442
-
2443
- it 'with args tuple' do
2444
- required = callable_t(string_t)
2445
- given = tuple_t(any_t)
2446
- expect(calculator.callable?(required, given)).to eq(false)
2447
- end
2448
-
2449
- it 'with args tuple having a block' do
2450
- required = callable_t(string_t, callable_t(string_t))
2451
- given = tuple_t(string_t, callable_t(any_t))
2452
- expect(calculator.callable?(required, given)).to eq(true)
2453
- end
2454
-
2455
- it 'with args tuple having a block with captures rest' do
2456
- required = callable_t(string_t, callable_t(string_t))
2457
- given = tuple_t(string_t, callable_t(any_t, 0, :default))
2458
- expect(calculator.callable?(required, given)).to eq(true)
2459
- end
2460
- end
2461
-
2462
- context 'and given is more specific' do
2463
- it 'with callable' do
2464
- required = callable_t(any_t)
2465
- given = callable_t(string_t)
2466
- expect(calculator.callable?(required, given)).to eq(false)
2467
- end
2468
-
2469
- it 'with args tuple' do
2470
- required = callable_t(any_t)
2471
- given = tuple_t(string_t)
2472
- expect(calculator.callable?(required, given)).to eq(true)
2473
- end
2474
-
2475
- it 'with args tuple having a block' do
2476
- required = callable_t(string_t, callable_t(any_t))
2477
- given = tuple_t(string_t, callable_t(string_t))
2478
- expect(calculator.callable?(required, given)).to eq(false)
2479
- end
2480
-
2481
- it 'with args tuple having a block with captures rest' do
2482
- required = callable_t(string_t, callable_t(any_t))
2483
- given = tuple_t(string_t, callable_t(string_t, 0, :default))
2484
- expect(calculator.callable?(required, given)).to eq(false)
2485
- end
2486
- end
2487
- end
2488
-
2489
- matcher :be_assignable_to do |type|
2490
- match do |actual|
2491
- type.is_a?(PAnyType) && type.assignable?(actual)
2492
- end
2493
-
2494
- failure_message do |actual|
2495
- "#{TypeFormatter.string(actual)} should be assignable to #{TypeFormatter.string(type)}"
2496
- end
2497
-
2498
- failure_message_when_negated do |actual|
2499
- "#{TypeFormatter.string(actual)} is assignable to #{TypeFormatter.string(type)} when it should not"
2500
- end
2501
- end
2502
- end
2503
- end
2504
- end