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