puppet 7.27.0-x86-mingw32 → 7.29.0-x86-mingw32

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