puppet 3.6.2-x86-mingw32 → 3.7.0-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (751) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +2 -3
  3. data/Gemfile +14 -10
  4. data/README.md +1 -1
  5. data/ext/build_defaults.yaml +16 -1
  6. data/ext/debian/control +3 -2
  7. data/ext/debian/puppet-common.dirs +1 -0
  8. data/ext/debian/puppet-common.postinst +8 -8
  9. data/ext/debian/puppet-common.postrm +2 -1
  10. data/ext/project_data.yaml +16 -12
  11. data/ext/rack/example-passenger-vhost.conf +2 -2
  12. data/ext/redhat/puppet.spec.erb +6 -3
  13. data/ext/windows/service/daemon.rb +47 -41
  14. data/install.rb +1 -1
  15. data/lib/puppet.rb +34 -24
  16. data/lib/puppet/application.rb +34 -1
  17. data/lib/puppet/application/agent.rb +9 -8
  18. data/lib/puppet/application/apply.rb +14 -5
  19. data/lib/puppet/application/doc.rb +4 -11
  20. data/lib/puppet/application/master.rb +19 -17
  21. data/lib/puppet/application/queue.rb +1 -1
  22. data/lib/puppet/application/resource.rb +0 -1
  23. data/lib/puppet/configurer.rb +39 -2
  24. data/lib/puppet/configurer/downloader.rb +5 -10
  25. data/lib/puppet/configurer/downloader_factory.rb +34 -0
  26. data/lib/puppet/configurer/plugin_handler.rb +11 -17
  27. data/lib/puppet/defaults.rb +244 -119
  28. data/lib/puppet/environments.rb +8 -0
  29. data/lib/puppet/external/nagios/base.rb +1 -1
  30. data/lib/puppet/external/pson/pure/generator.rb +1 -8
  31. data/lib/puppet/face/ca.rb +7 -0
  32. data/lib/puppet/face/file/download.rb +5 -2
  33. data/lib/puppet/face/file/store.rb +1 -1
  34. data/lib/puppet/face/instrumentation_data.rb +2 -1
  35. data/lib/puppet/face/instrumentation_listener.rb +2 -1
  36. data/lib/puppet/face/instrumentation_probe.rb +2 -1
  37. data/lib/puppet/face/module/build.rb +2 -2
  38. data/lib/puppet/face/module/generate.rb +20 -12
  39. data/lib/puppet/face/module/install.rb +4 -3
  40. data/lib/puppet/face/module/uninstall.rb +7 -0
  41. data/lib/puppet/face/module/upgrade.rb +11 -3
  42. data/lib/puppet/face/node/clean.rb +1 -1
  43. data/lib/puppet/face/parser.rb +99 -7
  44. data/lib/puppet/feature/base.rb +18 -12
  45. data/lib/puppet/feature/cfacter.rb +14 -0
  46. data/lib/puppet/feature/pe_license.rb +4 -0
  47. data/lib/puppet/file_bucket/dipper.rb +19 -12
  48. data/lib/puppet/file_bucket/file.rb +73 -10
  49. data/lib/puppet/file_serving/configuration/parser.rb +3 -3
  50. data/lib/puppet/file_system.rb +1 -1
  51. data/lib/puppet/file_system/file19.rb +41 -0
  52. data/lib/puppet/file_system/file19windows.rb +0 -1
  53. data/lib/puppet/file_system/uniquefile.rb +190 -0
  54. data/lib/puppet/forge.rb +34 -7
  55. data/lib/puppet/forge/errors.rb +5 -6
  56. data/lib/puppet/forge/repository.rb +14 -2
  57. data/lib/puppet/functions.rb +19 -12
  58. data/lib/puppet/functions/assert_type.rb +27 -10
  59. data/lib/puppet/functions/each.rb +111 -0
  60. data/lib/puppet/functions/epp.rb +54 -0
  61. data/lib/puppet/functions/filter.rb +113 -0
  62. data/lib/puppet/functions/inline_epp.rb +88 -0
  63. data/lib/puppet/functions/map.rb +97 -0
  64. data/lib/puppet/functions/match.rb +102 -0
  65. data/lib/puppet/functions/reduce.rb +94 -0
  66. data/lib/puppet/functions/slice.rb +126 -0
  67. data/lib/puppet/functions/with.rb +23 -0
  68. data/lib/puppet/indirector/catalog/compiler.rb +4 -4
  69. data/lib/puppet/indirector/data_binding/hiera.rb +2 -45
  70. data/lib/puppet/indirector/facts/couch.rb +3 -1
  71. data/lib/puppet/indirector/facts/facter.rb +52 -65
  72. data/lib/puppet/indirector/file_bucket_file/file.rb +6 -3
  73. data/lib/puppet/indirector/hiera.rb +48 -0
  74. data/lib/puppet/indirector/indirection.rb +1 -1
  75. data/lib/puppet/indirector/request.rb +9 -3
  76. data/lib/puppet/indirector/resource/ral.rb +1 -1
  77. data/lib/puppet/indirector/rest.rb +7 -3
  78. data/lib/puppet/loaders.rb +0 -1
  79. data/lib/puppet/module.rb +2 -1
  80. data/lib/puppet/module_tool.rb +2 -0
  81. data/lib/puppet/module_tool/applications/application.rb +4 -5
  82. data/lib/puppet/module_tool/applications/builder.rb +64 -5
  83. data/lib/puppet/module_tool/applications/uninstaller.rb +3 -2
  84. data/lib/puppet/module_tool/applications/unpacker.rb +14 -0
  85. data/lib/puppet/module_tool/applications/upgrader.rb +23 -13
  86. data/lib/puppet/module_tool/dependency.rb +12 -0
  87. data/lib/puppet/module_tool/errors/shared.rb +1 -1
  88. data/lib/puppet/module_tool/errors/upgrader.rb +20 -0
  89. data/lib/puppet/module_tool/installed_modules.rb +6 -1
  90. data/lib/puppet/module_tool/metadata.rb +53 -3
  91. data/lib/puppet/module_tool/modulefile.rb +1 -1
  92. data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +7 -0
  93. data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +1 -1
  94. data/lib/puppet/module_tool/skeleton/templates/generator/spec/spec_helper.rb +1 -17
  95. data/lib/puppet/module_tool/tar/mini.rb +20 -2
  96. data/lib/puppet/network/http.rb +5 -0
  97. data/lib/puppet/network/http/api/v1.rb +2 -2
  98. data/lib/puppet/network/http/api/v2/environments.rb +15 -1
  99. data/lib/puppet/network/http/connection.rb +54 -68
  100. data/lib/puppet/network/http/factory.rb +44 -0
  101. data/lib/puppet/network/http/handler.rb +12 -6
  102. data/lib/puppet/network/http/nocache_pool.rb +21 -0
  103. data/lib/puppet/network/http/pool.rb +120 -0
  104. data/lib/puppet/network/http/rack/rest.rb +3 -1
  105. data/lib/puppet/network/http/session.rb +17 -0
  106. data/lib/puppet/network/http/site.rb +39 -0
  107. data/lib/puppet/network/http/webrick/rest.rb +3 -1
  108. data/lib/puppet/network/http_pool.rb +3 -4
  109. data/lib/puppet/node.rb +19 -6
  110. data/lib/puppet/node/environment.rb +34 -8
  111. data/lib/puppet/parser/ast/collection.rb +4 -0
  112. data/lib/puppet/parser/ast/collexpr.rb +1 -1
  113. data/lib/puppet/parser/ast/node.rb +5 -0
  114. data/lib/puppet/parser/ast/pops_bridge.rb +49 -6
  115. data/lib/puppet/parser/compiler.rb +66 -38
  116. data/lib/puppet/parser/e4_parser_adapter.rb +2 -2
  117. data/lib/puppet/parser/files.rb +76 -33
  118. data/lib/puppet/parser/functions.rb +1 -7
  119. data/lib/puppet/parser/functions/assert_type.rb +31 -0
  120. data/lib/puppet/parser/functions/contain.rb +15 -5
  121. data/lib/puppet/parser/functions/create_resources.rb +5 -1
  122. data/lib/puppet/parser/functions/digest.rb +5 -0
  123. data/lib/puppet/parser/functions/each.rb +46 -107
  124. data/lib/puppet/parser/functions/epp.rb +13 -9
  125. data/lib/puppet/parser/functions/file.rb +20 -12
  126. data/lib/puppet/parser/functions/filter.rb +32 -88
  127. data/lib/puppet/parser/functions/include.rb +12 -24
  128. data/lib/puppet/parser/functions/inline_epp.rb +9 -12
  129. data/lib/puppet/parser/functions/lookup.rb +1 -1
  130. data/lib/puppet/parser/functions/map.rb +30 -83
  131. data/lib/puppet/parser/functions/match.rb +28 -0
  132. data/lib/puppet/parser/functions/reduce.rb +69 -98
  133. data/lib/puppet/parser/functions/require.rb +13 -5
  134. data/lib/puppet/parser/functions/search.rb +6 -1
  135. data/lib/puppet/parser/functions/slice.rb +35 -103
  136. data/lib/puppet/parser/functions/template.rb +12 -5
  137. data/lib/puppet/parser/functions/with.rb +21 -0
  138. data/lib/puppet/parser/lexer.rb +1 -1
  139. data/lib/puppet/parser/parser_factory.rb +21 -33
  140. data/lib/puppet/parser/resource.rb +2 -3
  141. data/lib/puppet/parser/scope.rb +85 -15
  142. data/lib/puppet/pops.rb +9 -11
  143. data/lib/puppet/pops/adapters.rb +2 -1
  144. data/lib/puppet/pops/binder/bindings_checker.rb +4 -4
  145. data/lib/puppet/pops/binder/bindings_factory.rb +6 -6
  146. data/lib/puppet/pops/binder/bindings_label_provider.rb +1 -1
  147. data/lib/puppet/pops/binder/bindings_loader.rb +2 -2
  148. data/lib/puppet/pops/binder/bindings_model.rb +58 -191
  149. data/lib/puppet/pops/binder/bindings_model_dumper.rb +1 -1
  150. data/lib/puppet/pops/binder/bindings_model_meta.rb +215 -0
  151. data/lib/puppet/pops/binder/injector.rb +9 -9
  152. data/lib/puppet/pops/binder/key_factory.rb +2 -2
  153. data/lib/puppet/pops/binder/lookup.rb +14 -6
  154. data/lib/puppet/pops/binder/producers.rb +9 -12
  155. data/lib/puppet/pops/evaluator/access_operator.rb +35 -29
  156. data/lib/puppet/pops/evaluator/callable_mismatch_describer.rb +175 -0
  157. data/lib/puppet/pops/evaluator/callable_signature.rb +1 -2
  158. data/lib/puppet/pops/evaluator/closure.rb +151 -35
  159. data/lib/puppet/pops/evaluator/compare_operator.rb +26 -22
  160. data/lib/puppet/pops/evaluator/epp_evaluator.rb +16 -15
  161. data/lib/puppet/pops/evaluator/evaluator_impl.rb +277 -229
  162. data/lib/puppet/pops/evaluator/relationship_operator.rb +3 -2
  163. data/lib/puppet/pops/evaluator/runtime3_support.rb +86 -53
  164. data/lib/puppet/pops/functions/dispatch.rb +9 -4
  165. data/lib/puppet/pops/functions/dispatcher.rb +2 -169
  166. data/lib/puppet/pops/issue_reporter.rb +14 -6
  167. data/lib/puppet/pops/issues.rb +96 -21
  168. data/lib/puppet/pops/loader/base_loader.rb +3 -3
  169. data/lib/puppet/pops/loader/loader.rb +1 -1
  170. data/lib/puppet/pops/loader/loader_paths.rb +2 -21
  171. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -1
  172. data/lib/puppet/pops/loader/static_loader.rb +12 -2
  173. data/lib/puppet/pops/model/ast_transformer.rb +4 -24
  174. data/lib/puppet/pops/model/factory.rb +72 -10
  175. data/lib/puppet/pops/model/model.rb +82 -574
  176. data/lib/puppet/pops/model/model_label_provider.rb +4 -2
  177. data/lib/puppet/pops/model/model_meta.rb +576 -0
  178. data/lib/puppet/pops/model/model_tree_dumper.rb +27 -5
  179. data/lib/puppet/pops/parser/egrammar.ra +209 -221
  180. data/lib/puppet/pops/parser/eparser.rb +1459 -1431
  181. data/lib/puppet/pops/parser/evaluating_parser.rb +15 -75
  182. data/lib/puppet/pops/parser/lexer2.rb +14 -10
  183. data/lib/puppet/pops/parser/lexer_support.rb +6 -0
  184. data/lib/puppet/pops/parser/locator.rb +1 -1
  185. data/lib/puppet/pops/parser/parser_support.rb +31 -49
  186. data/lib/puppet/pops/patterns.rb +10 -10
  187. data/lib/puppet/pops/semantic_error.rb +1 -1
  188. data/lib/puppet/pops/types/class_loader.rb +24 -13
  189. data/lib/puppet/pops/types/type_calculator.rb +188 -87
  190. data/lib/puppet/pops/types/type_factory.rb +79 -53
  191. data/lib/puppet/pops/types/type_parser.rb +22 -16
  192. data/lib/puppet/pops/types/types.rb +283 -392
  193. data/lib/puppet/pops/types/types_meta.rb +223 -0
  194. data/lib/puppet/pops/utils.rb +16 -14
  195. data/lib/puppet/pops/validation/checker4_0.rb +264 -18
  196. data/lib/puppet/pops/validation/validator_factory_4_0.rb +0 -1
  197. data/lib/puppet/pops/visitor.rb +0 -103
  198. data/lib/puppet/provider/exec.rb +10 -1
  199. data/lib/puppet/provider/file/windows.rb +3 -4
  200. data/lib/puppet/provider/group/windows_adsi.rb +10 -10
  201. data/lib/puppet/provider/nameservice/directoryservice.rb +3 -4
  202. data/lib/puppet/provider/package/apt.rb +5 -1
  203. data/lib/puppet/provider/package/gem.rb +7 -3
  204. data/lib/puppet/provider/package/openbsd.rb +84 -7
  205. data/lib/puppet/provider/package/pacman.rb +29 -4
  206. data/lib/puppet/provider/package/rpm.rb +5 -7
  207. data/lib/puppet/provider/package/sun.rb +5 -1
  208. data/lib/puppet/provider/package/windows.rb +6 -1
  209. data/lib/puppet/provider/package/windows/exe_package.rb +1 -1
  210. data/lib/puppet/provider/package/windows/msi_package.rb +1 -1
  211. data/lib/puppet/provider/package/windows/package.rb +13 -1
  212. data/lib/puppet/provider/package/yum.rb +7 -3
  213. data/lib/puppet/provider/package/zypper.rb +5 -1
  214. data/lib/puppet/provider/parsedfile.rb +17 -1
  215. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +6 -12
  216. data/lib/puppet/provider/service/freebsd.rb +12 -12
  217. data/lib/puppet/provider/service/init.rb +5 -0
  218. data/lib/puppet/provider/service/launchd.rb +0 -3
  219. data/lib/puppet/provider/service/openbsd.rb +8 -7
  220. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +2 -2
  221. data/lib/puppet/provider/sshkey/parsed.rb +5 -0
  222. data/lib/puppet/provider/user/user_role_add.rb +5 -4
  223. data/lib/puppet/provider/user/windows_adsi.rb +8 -8
  224. data/lib/puppet/provider/zone/solaris.rb +1 -1
  225. data/lib/puppet/reference/metaparameter.rb +8 -6
  226. data/lib/puppet/reports/store.rb +4 -9
  227. data/lib/puppet/resource.rb +75 -11
  228. data/lib/puppet/resource/catalog.rb +9 -7
  229. data/lib/puppet/resource/type.rb +27 -0
  230. data/lib/puppet/settings.rb +61 -41
  231. data/lib/puppet/settings/base_setting.rb +9 -3
  232. data/lib/puppet/settings/environment_conf.rb +32 -4
  233. data/lib/puppet/settings/file_setting.rb +9 -1
  234. data/lib/puppet/settings/priority_setting.rb +5 -5
  235. data/lib/puppet/ssl.rb +1 -0
  236. data/lib/puppet/ssl/certificate_authority.rb +15 -6
  237. data/lib/puppet/ssl/certificate_authority/autosign_command.rb +2 -1
  238. data/lib/puppet/ssl/host.rb +3 -2
  239. data/lib/puppet/ssl/inventory.rb +11 -6
  240. data/lib/puppet/ssl/validator/default_validator.rb +1 -0
  241. data/lib/puppet/ssl/validator/no_validator.rb +3 -0
  242. data/lib/puppet/transaction.rb +29 -0
  243. data/lib/puppet/transaction/resource_harness.rb +16 -3
  244. data/lib/puppet/type.rb +71 -49
  245. data/lib/puppet/type/exec.rb +36 -8
  246. data/lib/puppet/type/file.rb +56 -16
  247. data/lib/puppet/type/file/content.rb +3 -3
  248. data/lib/puppet/type/file/mode.rb +12 -3
  249. data/lib/puppet/type/file/source.rb +4 -1
  250. data/lib/puppet/type/group.rb +1 -1
  251. data/lib/puppet/type/mount.rb +1 -3
  252. data/lib/puppet/type/resources.rb +59 -35
  253. data/lib/puppet/type/ssh_authorized_key.rb +54 -16
  254. data/lib/puppet/type/sshkey.rb +1 -1
  255. data/lib/puppet/type/user.rb +17 -11
  256. data/lib/puppet/type/yumrepo.rb +59 -8
  257. data/lib/puppet/type/zone.rb +3 -6
  258. data/lib/puppet/util.rb +64 -55
  259. data/lib/puppet/util/autoload.rb +2 -2
  260. data/lib/puppet/util/colors.rb +61 -19
  261. data/lib/puppet/util/command_line.rb +21 -4
  262. data/lib/puppet/util/execution.rb +41 -29
  263. data/lib/puppet/util/feature.rb +15 -4
  264. data/lib/puppet/util/filetype.rb +6 -2
  265. data/lib/puppet/util/http_proxy.rb +29 -2
  266. data/lib/puppet/util/lockfile.rb +1 -1
  267. data/lib/puppet/util/log/destinations.rb +7 -3
  268. data/lib/puppet/util/logging.rb +44 -14
  269. data/lib/puppet/util/pidlock.rb +11 -5
  270. data/lib/puppet/util/posix.rb +21 -31
  271. data/lib/puppet/util/profiler.rb +17 -9
  272. data/lib/puppet/util/profiler/aggregate.rb +85 -0
  273. data/lib/puppet/util/profiler/around_profiler.rb +67 -0
  274. data/lib/puppet/util/profiler/logging.rb +12 -11
  275. data/lib/puppet/util/profiler/wall_clock.rb +7 -6
  276. data/lib/puppet/util/rdoc.rb +8 -1
  277. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
  278. data/lib/puppet/util/suidmanager.rb +1 -8
  279. data/lib/puppet/util/windows.rb +14 -3
  280. data/lib/puppet/util/windows/access_control_list.rb +4 -4
  281. data/lib/puppet/util/{adsi.rb → windows/adsi.rb} +99 -37
  282. data/lib/puppet/util/windows/api_types.rb +255 -0
  283. data/lib/puppet/util/windows/com.rb +224 -0
  284. data/lib/puppet/util/windows/error.rb +72 -5
  285. data/lib/puppet/util/windows/file.rb +254 -132
  286. data/lib/puppet/util/windows/process.rb +293 -177
  287. data/lib/puppet/util/windows/registry.rb +12 -2
  288. data/lib/puppet/util/windows/root_certs.rb +16 -9
  289. data/lib/puppet/util/windows/security.rb +501 -232
  290. data/lib/puppet/util/windows/sid.rb +80 -36
  291. data/lib/puppet/util/windows/string.rb +2 -0
  292. data/lib/puppet/util/windows/taskscheduler.rb +1241 -0
  293. data/lib/puppet/util/windows/user.rb +241 -57
  294. data/lib/puppet/vendor.rb +3 -1
  295. data/lib/puppet/vendor/load_pathspec.rb +1 -0
  296. data/lib/puppet/vendor/load_rgen.rb +1 -0
  297. data/lib/puppet/vendor/pathspec/CHANGELOG.md +2 -0
  298. data/lib/puppet/vendor/pathspec/LICENSE +201 -0
  299. data/lib/puppet/vendor/pathspec/PUPPET_README.md +6 -0
  300. data/lib/puppet/vendor/pathspec/README.md +53 -0
  301. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +121 -0
  302. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +275 -0
  303. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +17 -0
  304. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +14 -0
  305. data/lib/puppet/vendor/require_vendored.rb +2 -0
  306. data/lib/puppet/vendor/rgen/CHANGELOG +197 -0
  307. data/lib/puppet/vendor/rgen/MIT-LICENSE +20 -0
  308. data/lib/puppet/vendor/rgen/PUPPET_README.md +6 -0
  309. data/lib/puppet/vendor/rgen/README.rdoc +78 -0
  310. data/lib/puppet/vendor/rgen/Rakefile +41 -0
  311. data/lib/puppet/vendor/rgen/TODO +41 -0
  312. data/lib/puppet/vendor/rgen/anounce.txt +61 -0
  313. data/lib/puppet/vendor/rgen/design_rationale.txt +71 -0
  314. data/lib/puppet/vendor/rgen/lib/ea_support/ea_support.rb +54 -0
  315. data/lib/puppet/vendor/rgen/lib/ea_support/id_store.rb +32 -0
  316. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel.rb +562 -0
  317. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_ext.rb +45 -0
  318. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_generator.rb +43 -0
  319. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_to_uml13.rb +103 -0
  320. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_to_uml13_ea.rb +89 -0
  321. data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel.rb +559 -0
  322. data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel_ext.rb +26 -0
  323. data/lib/puppet/vendor/rgen/lib/mmgen/metamodel_generator.rb +20 -0
  324. data/lib/puppet/vendor/rgen/lib/mmgen/mm_ext/ecore_mmgen_ext.rb +91 -0
  325. data/lib/puppet/vendor/rgen/lib/mmgen/mmgen.rb +28 -0
  326. data/lib/puppet/vendor/rgen/lib/mmgen/templates/annotations.tpl +37 -0
  327. data/lib/puppet/vendor/rgen/lib/mmgen/templates/metamodel_generator.tpl +172 -0
  328. data/lib/puppet/vendor/rgen/lib/rgen/array_extensions.rb +45 -0
  329. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore.rb +218 -0
  330. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_builder_methods.rb +81 -0
  331. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_ext.rb +69 -0
  332. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_interface.rb +47 -0
  333. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_to_ruby.rb +167 -0
  334. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ruby_to_ecore.rb +91 -0
  335. data/lib/puppet/vendor/rgen/lib/rgen/environment.rb +129 -0
  336. data/lib/puppet/vendor/rgen/lib/rgen/fragment/dump_file_cache.rb +63 -0
  337. data/lib/puppet/vendor/rgen/lib/rgen/fragment/fragmented_model.rb +140 -0
  338. data/lib/puppet/vendor/rgen/lib/rgen/fragment/model_fragment.rb +289 -0
  339. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_instantiator.rb +66 -0
  340. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_xml_instantiator.rb +66 -0
  341. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/default_xml_instantiator.rb +117 -0
  342. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/ecore_xml_instantiator.rb +169 -0
  343. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_instantiator.rb +126 -0
  344. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.rb +331 -0
  345. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.y +94 -0
  346. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/nodebased_xml_instantiator.rb +137 -0
  347. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/qualified_name_resolver.rb +97 -0
  348. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/reference_resolver.rb +128 -0
  349. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/resolution_helper.rb +47 -0
  350. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/xmi11_instantiator.rb +168 -0
  351. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder.rb +224 -0
  352. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_extensions.rb +556 -0
  353. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_runtime.rb +174 -0
  354. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/constant_order_helper.rb +89 -0
  355. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/data_types.rb +77 -0
  356. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/annotation.rb +30 -0
  357. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/feature.rb +168 -0
  358. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/mm_multiple.rb +23 -0
  359. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/module_extension.rb +42 -0
  360. data/lib/puppet/vendor/rgen/lib/rgen/model_builder.rb +32 -0
  361. data/lib/puppet/vendor/rgen/lib/rgen/model_builder/builder_context.rb +334 -0
  362. data/lib/puppet/vendor/rgen/lib/rgen/model_builder/model_serializer.rb +225 -0
  363. data/lib/puppet/vendor/rgen/lib/rgen/model_builder/reference_resolver.rb +156 -0
  364. data/lib/puppet/vendor/rgen/lib/rgen/serializer/json_serializer.rb +121 -0
  365. data/lib/puppet/vendor/rgen/lib/rgen/serializer/opposite_reference_filter.rb +18 -0
  366. data/lib/puppet/vendor/rgen/lib/rgen/serializer/qualified_name_provider.rb +47 -0
  367. data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi11_serializer.rb +116 -0
  368. data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi20_serializer.rb +71 -0
  369. data/lib/puppet/vendor/rgen/lib/rgen/serializer/xml_serializer.rb +98 -0
  370. data/lib/puppet/vendor/rgen/lib/rgen/template_language.rb +297 -0
  371. data/lib/puppet/vendor/rgen/lib/rgen/template_language/directory_template_container.rb +83 -0
  372. data/lib/puppet/vendor/rgen/lib/rgen/template_language/output_handler.rb +87 -0
  373. data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_container.rb +234 -0
  374. data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_helper.rb +26 -0
  375. data/lib/puppet/vendor/rgen/lib/rgen/transformer.rb +475 -0
  376. data/lib/puppet/vendor/rgen/lib/rgen/util/auto_class_creator.rb +61 -0
  377. data/lib/puppet/vendor/rgen/lib/rgen/util/cached_glob.rb +67 -0
  378. data/lib/puppet/vendor/rgen/lib/rgen/util/file_cache_map.rb +124 -0
  379. data/lib/puppet/vendor/rgen/lib/rgen/util/file_change_detector.rb +84 -0
  380. data/lib/puppet/vendor/rgen/lib/rgen/util/method_delegation.rb +114 -0
  381. data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator.rb +68 -0
  382. data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator_base.rb +142 -0
  383. data/lib/puppet/vendor/rgen/lib/rgen/util/model_dumper.rb +29 -0
  384. data/lib/puppet/vendor/rgen/lib/rgen/util/name_helper.rb +42 -0
  385. data/lib/puppet/vendor/rgen/lib/rgen/util/pattern_matcher.rb +329 -0
  386. data/lib/puppet/vendor/rgen/lib/transformers/ecore_to_uml13.rb +79 -0
  387. data/lib/puppet/vendor/rgen/lib/transformers/uml13_to_ecore.rb +127 -0
  388. data/lib/puppet/vendor/rgen/test/array_extensions_test.rb +64 -0
  389. data/lib/puppet/vendor/rgen/test/ea_instantiator_test.rb +35 -0
  390. data/lib/puppet/vendor/rgen/test/ea_serializer_test.rb +23 -0
  391. data/lib/puppet/vendor/rgen/test/ecore_self_test.rb +54 -0
  392. data/lib/puppet/vendor/rgen/test/environment_test.rb +90 -0
  393. data/lib/puppet/vendor/rgen/test/json_test.rb +171 -0
  394. data/lib/puppet/vendor/rgen/test/metamodel_builder_test.rb +1482 -0
  395. data/lib/puppet/vendor/rgen/test/metamodel_from_ecore_test.rb +57 -0
  396. data/lib/puppet/vendor/rgen/test/metamodel_order_test.rb +131 -0
  397. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test.rb +98 -0
  398. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/TestModel.rb +70 -0
  399. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel.ecore +42 -0
  400. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel_from_ecore.rb +44 -0
  401. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/using_builtin_types.ecore +9 -0
  402. data/lib/puppet/vendor/rgen/test/method_delegation_test.rb +178 -0
  403. data/lib/puppet/vendor/rgen/test/model_builder/builder_context_test.rb +59 -0
  404. data/lib/puppet/vendor/rgen/test/model_builder/builder_test.rb +242 -0
  405. data/lib/puppet/vendor/rgen/test/model_builder/ecore_original.rb +163 -0
  406. data/lib/puppet/vendor/rgen/test/model_builder/ecore_original_regenerated.rb +163 -0
  407. data/lib/puppet/vendor/rgen/test/model_builder/reference_resolver_test.rb +156 -0
  408. data/lib/puppet/vendor/rgen/test/model_builder/serializer_test.rb +94 -0
  409. data/lib/puppet/vendor/rgen/test/model_builder/statemachine_metamodel.rb +42 -0
  410. data/lib/puppet/vendor/rgen/test/model_builder/test_model/statemachine1.rb +23 -0
  411. data/lib/puppet/vendor/rgen/test/model_builder_test.rb +6 -0
  412. data/lib/puppet/vendor/rgen/test/model_fragment_test.rb +30 -0
  413. data/lib/puppet/vendor/rgen/test/output_handler_test.rb +58 -0
  414. data/lib/puppet/vendor/rgen/test/qualified_name_provider_test.rb +48 -0
  415. data/lib/puppet/vendor/rgen/test/qualified_name_resolver_test.rb +102 -0
  416. data/lib/puppet/vendor/rgen/test/reference_resolver_test.rb +117 -0
  417. data/lib/puppet/vendor/rgen/test/rgen_test.rb +26 -0
  418. data/lib/puppet/vendor/rgen/test/template_language_test.rb +163 -0
  419. data/lib/puppet/vendor/rgen/test/template_language_test/expected_result1.txt +29 -0
  420. data/lib/puppet/vendor/rgen/test/template_language_test/expected_result2.txt +9 -0
  421. data/lib/puppet/vendor/rgen/test/template_language_test/expected_result3.txt +4 -0
  422. data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestDefaultIndent.out +1 -0
  423. data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestTabIndent.out +1 -0
  424. data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/a.tpl +12 -0
  425. data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/b.tpl +5 -0
  426. data/lib/puppet/vendor/rgen/test/template_language_test/templates/code/array.tpl +11 -0
  427. data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/author.tpl +7 -0
  428. data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/chapter.tpl +5 -0
  429. data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/local.tpl +8 -0
  430. data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/test.tpl +8 -0
  431. data/lib/puppet/vendor/rgen/test/template_language_test/templates/evaluate_test/test.tpl +7 -0
  432. data/lib/puppet/vendor/rgen/test/template_language_test/templates/indent_string_test.tpl +12 -0
  433. data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/c/cmod.tpl +1 -0
  434. data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/chapter.tpl +3 -0
  435. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_backslash_r_test.tpl +5 -0
  436. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/no_indent.tpl +3 -0
  437. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/sub1/no_indent.tpl +3 -0
  438. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test.tpl +24 -0
  439. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test2.tpl +13 -0
  440. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test3.tpl +10 -0
  441. data/lib/puppet/vendor/rgen/test/template_language_test/templates/null_context_test.tpl +17 -0
  442. data/lib/puppet/vendor/rgen/test/template_language_test/templates/root.tpl +31 -0
  443. data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1.tpl +9 -0
  444. data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1/sub1.tpl +3 -0
  445. data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/test.tpl +4 -0
  446. data/lib/puppet/vendor/rgen/test/template_language_test/testout.txt +29 -0
  447. data/lib/puppet/vendor/rgen/test/testmodel/class_model_checker.rb +119 -0
  448. data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.eap +0 -0
  449. data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.xml +1029 -0
  450. data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel_partial.xml +317 -0
  451. data/lib/puppet/vendor/rgen/test/testmodel/ecore_model_checker.rb +101 -0
  452. data/lib/puppet/vendor/rgen/test/testmodel/manual_testmodel.xml +22 -0
  453. data/lib/puppet/vendor/rgen/test/testmodel/object_model_checker.rb +67 -0
  454. data/lib/puppet/vendor/rgen/test/transformer_test.rb +254 -0
  455. data/lib/puppet/vendor/rgen/test/util/file_cache_map_test.rb +99 -0
  456. data/lib/puppet/vendor/rgen/test/util/pattern_matcher_test.rb +97 -0
  457. data/lib/puppet/vendor/rgen/test/util_test.rb +5 -0
  458. data/lib/puppet/vendor/rgen/test/xml_instantiator_test.rb +160 -0
  459. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_ecore_model_checker.rb +94 -0
  460. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_ecore_instantiator.rb +53 -0
  461. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_metamodel.rb +49 -0
  462. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_to_ecore.rb +75 -0
  463. data/lib/puppet/vendor/safe_yaml/PUPPET_README.md +6 -0
  464. data/lib/puppet/vendor/semantic/PUPPET_README.md +6 -0
  465. data/lib/puppet/version.rb +1 -1
  466. data/spec/fixtures/integration/node/environment/sitedir2/00_a.pp +2 -0
  467. data/spec/fixtures/integration/node/environment/sitedir2/02_folder/01_b.pp +6 -0
  468. data/spec/fixtures/integration/node/environment/sitedir2/03_c.pp +1 -0
  469. data/spec/fixtures/integration/node/environment/sitedir2/04_include.pp +2 -0
  470. data/spec/fixtures/releases/jamtur01-apache/manifests/vhost.pp +1 -1
  471. data/spec/fixtures/unit/indirector/hiera/global.yaml +10 -0
  472. data/spec/fixtures/unit/indirector/hiera/invalid.yaml +1 -0
  473. data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/init.pp +3 -0
  474. data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/wrongdefine.pp +3 -0
  475. data/spec/fixtures/unit/parser/lexer/argumentdefaults.pp +2 -2
  476. data/spec/fixtures/unit/parser/lexer/casestatement.pp +14 -14
  477. data/spec/fixtures/unit/parser/lexer/classheirarchy.pp +3 -3
  478. data/spec/fixtures/unit/parser/lexer/classincludes.pp +3 -3
  479. data/spec/fixtures/unit/parser/lexer/classpathtest.pp +1 -1
  480. data/spec/fixtures/unit/parser/lexer/collection_override.pp +1 -1
  481. data/spec/fixtures/unit/parser/lexer/componentrequire.pp +2 -2
  482. data/spec/fixtures/unit/parser/lexer/deepclassheirarchy.pp +5 -5
  483. data/spec/fixtures/unit/parser/lexer/defineoverrides.pp +2 -2
  484. data/spec/fixtures/unit/parser/lexer/filecreate.pp +2 -2
  485. data/spec/fixtures/unit/parser/lexer/ifexpression.pp +1 -1
  486. data/spec/fixtures/unit/parser/lexer/implicititeration.pp +4 -4
  487. data/spec/fixtures/unit/parser/lexer/multipleinstances.pp +3 -3
  488. data/spec/fixtures/unit/parser/lexer/multisubs.pp +2 -2
  489. data/spec/fixtures/unit/parser/lexer/namevartest.pp +2 -2
  490. data/spec/fixtures/unit/parser/lexer/simpledefaults.pp +1 -1
  491. data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +1 -1
  492. data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +14 -14
  493. data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +3 -3
  494. data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +3 -3
  495. data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +1 -1
  496. data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +1 -1
  497. data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +2 -2
  498. data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +5 -5
  499. data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +2 -2
  500. data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +2 -2
  501. data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +1 -1
  502. data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +4 -4
  503. data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +3 -3
  504. data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +2 -2
  505. data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +2 -2
  506. data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +1 -1
  507. data/spec/fixtures/unit/provider/package/gem/gem-list-single-package +4 -0
  508. data/spec/fixtures/unit/type/user/authorized_keys +1 -1
  509. data/spec/integration/agent/logging_spec.rb +4 -0
  510. data/spec/integration/application/doc_spec.rb +4 -3
  511. data/spec/integration/configurer_spec.rb +0 -14
  512. data/spec/integration/defaults_spec.rb +26 -0
  513. data/spec/integration/environments/default_manifest_spec.rb +274 -0
  514. data/spec/integration/faces/documentation_spec.rb +0 -4
  515. data/spec/integration/file_bucket/file_spec.rb +21 -0
  516. data/spec/integration/indirector/catalog/compiler_spec.rb +0 -2
  517. data/spec/integration/indirector/catalog/queue_spec.rb +0 -2
  518. data/spec/integration/indirector/facts/facter_spec.rb +1 -1
  519. data/spec/integration/indirector/file_content/file_server_spec.rb +2 -2
  520. data/spec/integration/node/environment_spec.rb +24 -8
  521. data/spec/integration/parser/catalog_spec.rb +10 -10
  522. data/spec/integration/parser/class_spec.rb +37 -0
  523. data/spec/integration/parser/collector_spec.rb +234 -75
  524. data/spec/integration/parser/compiler_spec.rb +385 -401
  525. data/spec/integration/parser/conditionals_spec.rb +117 -0
  526. data/spec/integration/parser/future_compiler_spec.rb +359 -8
  527. data/spec/integration/parser/node_spec.rb +185 -0
  528. data/spec/integration/parser/resource_expressions_spec.rb +286 -0
  529. data/spec/integration/parser/ruby_manifest_spec.rb +0 -4
  530. data/spec/integration/parser/scope_spec.rb +94 -151
  531. data/spec/integration/provider/cron/crontab_spec.rb +137 -148
  532. data/spec/integration/ssl/certificate_authority_spec.rb +26 -0
  533. data/spec/integration/ssl/certificate_request_spec.rb +0 -6
  534. data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -2
  535. data/spec/integration/ssl/host_spec.rb +0 -2
  536. data/spec/integration/transaction_spec.rb +16 -0
  537. data/spec/integration/type/file_spec.rb +14 -13
  538. data/spec/integration/type/nagios_spec.rb +6 -15
  539. data/spec/integration/type/sshkey_spec.rb +22 -0
  540. data/spec/integration/type/tidy_spec.rb +3 -0
  541. data/spec/integration/type/user_spec.rb +8 -3
  542. data/spec/integration/util/autoload_spec.rb +6 -6
  543. data/spec/integration/util/rdoc/parser_spec.rb +7 -0
  544. data/spec/integration/util/windows/process_spec.rb +12 -0
  545. data/spec/integration/util/windows/security_spec.rb +36 -35
  546. data/spec/integration/util/windows/user_spec.rb +75 -9
  547. data/spec/integration/util_spec.rb +2 -2
  548. data/spec/lib/matchers/resource.rb +1 -0
  549. data/spec/lib/puppet_spec/compiler.rb +15 -2
  550. data/spec/lib/puppet_spec/files.rb +10 -0
  551. data/spec/lib/puppet_spec/language.rb +74 -0
  552. data/spec/lib/puppet_spec/matchers.rb +59 -32
  553. data/spec/lib/puppet_spec/module_tool/stub_source.rb +3 -0
  554. data/spec/shared_behaviours/hiera_indirections.rb +99 -0
  555. data/spec/shared_behaviours/iterative_functions.rb +69 -0
  556. data/spec/unit/application/apply_spec.rb +4 -2
  557. data/spec/unit/application/doc_spec.rb +17 -13
  558. data/spec/unit/application/master_spec.rb +35 -27
  559. data/spec/unit/application/resource_spec.rb +0 -5
  560. data/spec/unit/configurer/downloader_factory_spec.rb +96 -0
  561. data/spec/unit/configurer/downloader_spec.rb +3 -24
  562. data/spec/unit/configurer/plugin_handler_spec.rb +22 -22
  563. data/spec/unit/configurer_spec.rb +0 -4
  564. data/spec/unit/defaults_spec.rb +30 -0
  565. data/spec/unit/face/config_spec.rb +2 -1
  566. data/spec/unit/face/module/build_spec.rb +2 -2
  567. data/spec/unit/face/module/install_spec.rb +8 -8
  568. data/spec/unit/face/parser_spec.rb +71 -33
  569. data/spec/unit/file_bucket/file_spec.rb +2 -2
  570. data/spec/unit/file_system/uniquefile_spec.rb +184 -0
  571. data/spec/unit/forge/errors_spec.rb +4 -6
  572. data/spec/unit/forge/module_release_spec.rb +178 -89
  573. data/spec/unit/forge/repository_spec.rb +110 -2
  574. data/spec/unit/forge_spec.rb +39 -3
  575. data/spec/unit/functions/assert_type_spec.rb +22 -3
  576. data/spec/unit/{parser/methods → functions}/each_spec.rb +21 -1
  577. data/spec/unit/{parser/functions → functions}/epp_spec.rb +61 -9
  578. data/spec/unit/{parser/methods → functions}/filter_spec.rb +34 -38
  579. data/spec/unit/{parser/functions → functions}/inline_epp_spec.rb +18 -3
  580. data/spec/unit/functions/map_spec.rb +169 -0
  581. data/spec/unit/functions/match_spec.rb +57 -0
  582. data/spec/unit/{parser/methods → functions}/reduce_spec.rb +23 -5
  583. data/spec/unit/{parser/methods → functions}/slice_spec.rb +34 -21
  584. data/spec/unit/functions/with_spec.rb +35 -0
  585. data/spec/unit/functions4_spec.rb +7 -8
  586. data/spec/unit/indirector/catalog/compiler_spec.rb +0 -2
  587. data/spec/unit/indirector/catalog/static_compiler_spec.rb +11 -0
  588. data/spec/unit/indirector/data_binding/hiera_spec.rb +1 -96
  589. data/spec/unit/indirector/facts/facter_spec.rb +69 -102
  590. data/spec/unit/indirector/hiera_spec.rb +17 -0
  591. data/spec/unit/indirector/request_spec.rb +2 -4
  592. data/spec/unit/indirector/resource/ral_spec.rb +5 -0
  593. data/spec/unit/indirector/resource_type/parser_spec.rb +17 -12
  594. data/spec/unit/indirector/rest_spec.rb +36 -6
  595. data/spec/unit/interface/face_collection_spec.rb +2 -2
  596. data/spec/unit/module_tool/applications/builder_spec.rb +364 -14
  597. data/spec/unit/module_tool/applications/uninstaller_spec.rb +22 -0
  598. data/spec/unit/module_tool/applications/unpacker_spec.rb +40 -0
  599. data/spec/unit/module_tool/applications/upgrader_spec.rb +22 -0
  600. data/spec/unit/module_tool/installed_modules_spec.rb +49 -0
  601. data/spec/unit/module_tool/metadata_spec.rb +72 -4
  602. data/spec/unit/module_tool/tar/mini_spec.rb +2 -1
  603. data/spec/unit/network/authentication_spec.rb +4 -0
  604. data/spec/unit/network/http/api/v2/environments_spec.rb +24 -3
  605. data/spec/unit/network/http/connection_spec.rb +127 -92
  606. data/spec/unit/network/http/factory_spec.rb +82 -0
  607. data/spec/unit/network/http/handler_spec.rb +23 -13
  608. data/spec/unit/network/http/nocache_pool_spec.rb +43 -0
  609. data/spec/unit/network/http/pool_spec.rb +269 -0
  610. data/spec/unit/network/http/rack/rest_spec.rb +1 -1
  611. data/spec/unit/network/http/session_spec.rb +43 -0
  612. data/spec/unit/network/http/site_spec.rb +90 -0
  613. data/spec/unit/network/http/webrick_spec.rb +1 -1
  614. data/spec/unit/network/http_pool_spec.rb +9 -6
  615. data/spec/unit/network/http_spec.rb +10 -0
  616. data/spec/unit/node/environment_spec.rb +54 -0
  617. data/spec/unit/node_spec.rb +3 -5
  618. data/spec/unit/parser/compiler_spec.rb +9 -2
  619. data/spec/unit/parser/files_spec.rb +19 -0
  620. data/spec/unit/parser/functions/contain_spec.rb +51 -0
  621. data/spec/unit/parser/functions/create_resources_spec.rb +8 -1
  622. data/spec/unit/parser/functions/digest_spec.rb +31 -0
  623. data/spec/unit/parser/functions/file_spec.rb +48 -5
  624. data/spec/unit/parser/functions/include_spec.rb +15 -1
  625. data/spec/unit/parser/functions/realize_spec.rb +43 -35
  626. data/spec/unit/parser/functions/require_spec.rb +19 -5
  627. data/spec/unit/parser/functions/search_spec.rb +5 -0
  628. data/spec/unit/parser/functions/shared.rb +82 -0
  629. data/spec/unit/parser/functions_spec.rb +1 -1
  630. data/spec/unit/parser/lexer_spec.rb +10 -1
  631. data/spec/unit/parser/type_loader_spec.rb +0 -1
  632. data/spec/unit/pops/benchmark_spec.rb +1 -1
  633. data/spec/unit/pops/binder/bindings_composer_spec.rb +24 -22
  634. data/spec/unit/pops/binder/injector_spec.rb +8 -6
  635. data/spec/unit/pops/evaluator/access_ops_spec.rb +3 -3
  636. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +7 -4
  637. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +250 -30
  638. data/spec/unit/pops/evaluator/logical_ops_spec.rb +2 -2
  639. data/spec/unit/pops/evaluator/variables_spec.rb +0 -105
  640. data/spec/unit/pops/issues_spec.rb +170 -0
  641. data/spec/unit/pops/loaders/dependency_loader_spec.rb +17 -0
  642. data/spec/unit/pops/loaders/loader_paths_spec.rb +4 -15
  643. data/spec/unit/pops/loaders/loaders_spec.rb +31 -11
  644. data/spec/unit/pops/loaders/module_loaders_spec.rb +0 -29
  645. data/spec/unit/pops/loaders/static_loader_spec.rb +6 -0
  646. data/spec/unit/pops/parser/epp_parser_spec.rb +38 -9
  647. data/spec/unit/pops/parser/evaluating_parser_spec.rb +0 -1
  648. data/spec/unit/pops/parser/lexer2_spec.rb +21 -4
  649. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +5 -0
  650. data/spec/unit/pops/parser/parse_calls_spec.rb +6 -3
  651. data/spec/unit/pops/parser/parse_conditionals_spec.rb +12 -5
  652. data/spec/unit/pops/parser/parse_containers_spec.rb +62 -7
  653. data/spec/unit/pops/parser/parse_resource_spec.rb +155 -73
  654. data/spec/unit/pops/parser/parser_spec.rb +16 -0
  655. data/spec/unit/pops/parser/parsing_typed_parameters_spec.rb +72 -0
  656. data/spec/unit/pops/transformer/transform_calls_spec.rb +1 -1
  657. data/spec/unit/pops/types/type_calculator_spec.rb +254 -57
  658. data/spec/unit/pops/types/type_factory_spec.rb +8 -3
  659. data/spec/unit/pops/types/type_parser_spec.rb +26 -5
  660. data/spec/unit/pops/validator/validator_spec.rb +143 -27
  661. data/spec/unit/provider/exec/posix_spec.rb +22 -14
  662. data/spec/unit/provider/exec/shell_spec.rb +2 -2
  663. data/spec/unit/provider/file/windows_spec.rb +7 -7
  664. data/spec/unit/provider/group/windows_adsi_spec.rb +17 -17
  665. data/spec/unit/provider/package/gem_spec.rb +10 -0
  666. data/spec/unit/provider/package/openbsd_spec.rb +66 -9
  667. data/spec/unit/provider/package/pacman_spec.rb +90 -71
  668. data/spec/unit/provider/package/windows/package_spec.rb +21 -6
  669. data/spec/unit/provider/package/yum_spec.rb +1 -0
  670. data/spec/unit/provider/parsedfile_spec.rb +1 -1
  671. data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +9 -9
  672. data/spec/unit/provider/service/openbsd_spec.rb +26 -2
  673. data/spec/unit/provider/service/upstart_spec.rb +12 -1
  674. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +6 -0
  675. data/spec/unit/provider/user/user_role_add_spec.rb +23 -1
  676. data/spec/unit/provider/user/windows_adsi_spec.rb +17 -17
  677. data/spec/unit/reports/store_spec.rb +0 -16
  678. data/spec/unit/resource/catalog_spec.rb +0 -5
  679. data/spec/unit/resource_spec.rb +2 -2
  680. data/spec/unit/settings/autosign_setting_spec.rb +2 -2
  681. data/spec/unit/settings/environment_conf_spec.rb +77 -10
  682. data/spec/unit/settings/file_setting_spec.rb +5 -4
  683. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  684. data/spec/unit/settings_spec.rb +41 -3
  685. data/spec/unit/ssl/certificate_authority_spec.rb +25 -2
  686. data/spec/unit/ssl/inventory_spec.rb +13 -0
  687. data/spec/unit/ssl/validator_spec.rb +0 -1
  688. data/spec/unit/transaction/resource_harness_spec.rb +64 -0
  689. data/spec/unit/transaction_spec.rb +98 -47
  690. data/spec/unit/type/cron_spec.rb +3 -3
  691. data/spec/unit/type/exec_spec.rb +9 -0
  692. data/spec/unit/type/file/content_spec.rb +54 -71
  693. data/spec/unit/type/file/mode_spec.rb +26 -1
  694. data/spec/unit/type/file/source_spec.rb +26 -4
  695. data/spec/unit/type/file_spec.rb +3 -3
  696. data/spec/unit/type/nagios_spec.rb +12 -3
  697. data/spec/unit/type/resources_spec.rb +64 -30
  698. data/spec/unit/type/user_spec.rb +1 -1
  699. data/spec/unit/type/yumrepo_spec.rb +136 -0
  700. data/spec/unit/type/zone_spec.rb +44 -1
  701. data/spec/unit/type_spec.rb +20 -0
  702. data/spec/unit/util/colors_spec.rb +14 -8
  703. data/spec/unit/util/command_line_spec.rb +11 -7
  704. data/spec/unit/util/execution_spec.rb +35 -42
  705. data/spec/unit/util/feature_spec.rb +12 -0
  706. data/spec/unit/util/http_proxy_spec.rb +43 -1
  707. data/spec/unit/util/log/destinations_spec.rb +45 -1
  708. data/spec/unit/util/logging_spec.rb +38 -0
  709. data/spec/unit/util/pidlock_spec.rb +37 -1
  710. data/spec/unit/util/profiler/aggregate_spec.rb +59 -0
  711. data/spec/unit/util/profiler/around_profiler_spec.rb +61 -0
  712. data/spec/unit/util/profiler/logging_spec.rb +18 -29
  713. data/spec/unit/util/profiler/wall_clock_spec.rb +1 -1
  714. data/spec/unit/util/profiler_spec.rb +55 -0
  715. data/spec/unit/util/queue_spec.rb +0 -1
  716. data/spec/unit/util/rdoc/parser_spec.rb +14 -6
  717. data/spec/unit/util/tagging_spec.rb +1 -1
  718. data/spec/unit/util/windows/access_control_entry_spec.rb +1 -1
  719. data/spec/unit/util/{adsi_spec.rb → windows/adsi_spec.rb} +111 -108
  720. data/spec/unit/util/windows/api_types_spec.rb +28 -0
  721. data/spec/unit/util/windows/registry_spec.rb +7 -6
  722. data/spec/unit/util/windows/sid_spec.rb +3 -6
  723. data/spec/unit/util/windows/string_spec.rb +4 -0
  724. data/spec/unit/util/zaml_spec.rb +5 -1
  725. data/tasks/benchmark.rake +40 -5
  726. data/tasks/parser.rake +16 -2
  727. data/tasks/yard.rake +1 -1
  728. metadata +308 -150
  729. data/lib/puppet/file_system/tempfile.rb +0 -20
  730. data/lib/puppet/parser/e_parser_adapter.rb +0 -119
  731. data/lib/puppet/parser/functions/collect.rb +0 -15
  732. data/lib/puppet/parser/functions/select.rb +0 -15
  733. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +0 -109
  734. data/lib/puppet/pops/parser/lexer.rb +0 -753
  735. data/lib/puppet/pops/parser/makefile +0 -6
  736. data/lib/puppet/pops/validation/checker3_1.rb +0 -558
  737. data/lib/puppet/pops/validation/validator_factory_3_1.rb +0 -31
  738. data/lib/puppet/util/profiler/none.rb +0 -8
  739. data/spec/unit/face/certificate_request_spec.rb +0 -7
  740. data/spec/unit/face/certificate_revocation_list_spec.rb +0 -7
  741. data/spec/unit/face/key_spec.rb +0 -7
  742. data/spec/unit/face/report_spec.rb +0 -7
  743. data/spec/unit/face/resource_spec.rb +0 -7
  744. data/spec/unit/face/resource_type_spec.rb +0 -7
  745. data/spec/unit/file_system/tempfile_spec.rb +0 -48
  746. data/spec/unit/parser/eparser_adapter_spec.rb +0 -407
  747. data/spec/unit/parser/methods/map_spec.rb +0 -184
  748. data/spec/unit/parser/methods/shared.rb +0 -45
  749. data/spec/unit/pops/parser/lexer_spec.rb +0 -840
  750. data/spec/unit/pops/transformer/transform_resource_spec.rb +0 -185
  751. data/spec/unit/util/profiler/none_spec.rb +0 -12
@@ -1,9 +1,8 @@
1
1
  #! /usr/bin/env ruby
2
2
  require 'spec_helper'
3
-
4
3
  require 'puppet/indirector/facts/facter'
5
4
 
6
- module PuppetNodeFactsFacter
5
+ module NodeFactsFacterSpec
7
6
  describe Puppet::Node::Facts::Facter do
8
7
  FS = Puppet::FileSystem
9
8
 
@@ -24,27 +23,6 @@ describe Puppet::Node::Facts::Facter do
24
23
  Puppet::Node::Facts::Facter.name.should == :facter
25
24
  end
26
25
 
27
- describe "when reloading Facter" do
28
- before do
29
- @facter_class = Puppet::Node::Facts::Facter
30
- Facter.stubs(:clear)
31
- Facter.stubs(:load)
32
- Facter.stubs(:loadfacts)
33
- end
34
-
35
- it "should clear Facter" do
36
- Facter.expects(:clear)
37
- @facter_class.reload_facter
38
- end
39
-
40
- it "should load all Facter facts" do
41
- Facter.expects(:loadfacts)
42
- @facter_class.reload_facter
43
- end
44
- end
45
- end
46
-
47
- describe Puppet::Node::Facts::Facter do
48
26
  before :each do
49
27
  Puppet::Node::Facts::Facter.stubs(:reload_facter)
50
28
  @facter = Puppet::Node::Facts::Facter.new
@@ -54,22 +32,31 @@ describe Puppet::Node::Facts::Facter do
54
32
  @environment = stub 'environment'
55
33
  @request.stubs(:environment).returns(@environment)
56
34
  @request.environment.stubs(:modules).returns([])
35
+ @request.environment.stubs(:modulepath).returns([])
57
36
  end
58
37
 
59
- describe Puppet::Node::Facts::Facter, " when finding facts" do
60
- it "should reset and load facts" do
61
- clear = sequence 'clear'
62
- Puppet::Node::Facts::Facter.expects(:reload_facter).in_sequence(clear)
63
- Puppet::Node::Facts::Facter.expects(:load_fact_plugins).in_sequence(clear)
38
+ describe 'when finding facts' do
39
+ it 'should reset facts' do
40
+ reset = sequence 'reset'
41
+ Facter.expects(:reset).in_sequence(reset)
42
+ Puppet::Node::Facts::Facter.expects(:setup_search_paths).in_sequence(reset)
43
+ @facter.find(@request)
44
+ end
45
+
46
+ it 'should include external facts when feature is present' do
47
+ reset = sequence 'reset'
48
+ Puppet.features.stubs(:external_facts?).returns true
49
+ Facter.expects(:reset).in_sequence(reset)
50
+ Puppet::Node::Facts::Facter.expects(:setup_external_search_paths).in_sequence(reset)
51
+ Puppet::Node::Facts::Facter.expects(:setup_search_paths).in_sequence(reset)
64
52
  @facter.find(@request)
65
53
  end
66
54
 
67
- it "should include external facts when feature is present" do
68
- clear = sequence 'clear'
69
- Puppet.features.stubs(:external_facts?).returns(:true)
70
- Puppet::Node::Facts::Facter.expects(:setup_external_facts).in_sequence(clear)
71
- Puppet::Node::Facts::Facter.expects(:reload_facter).in_sequence(clear)
72
- Puppet::Node::Facts::Facter.expects(:load_fact_plugins).in_sequence(clear)
55
+ it 'should not include external facts when feature is not present' do
56
+ reset = sequence 'reset'
57
+ Puppet.features.stubs(:external_facts?).returns false
58
+ Facter.expects(:reset).in_sequence(reset)
59
+ Puppet::Node::Facts::Facter.expects(:setup_search_paths).in_sequence(reset)
73
60
  @facter.find(@request)
74
61
  end
75
62
 
@@ -114,89 +101,69 @@ describe Puppet::Node::Facts::Facter do
114
101
  end
115
102
  end
116
103
 
117
- describe Puppet::Node::Facts::Facter, " when saving facts" do
118
-
119
- it "should fail" do
120
- proc { @facter.save(@facts) }.should raise_error(Puppet::DevError)
121
- end
122
- end
123
-
124
- describe Puppet::Node::Facts::Facter, " when destroying facts" do
125
-
126
- it "should fail" do
127
- proc { @facter.destroy(@facts) }.should raise_error(Puppet::DevError)
128
- end
104
+ it 'should fail when saving facts' do
105
+ proc { @facter.save(@facts) }.should raise_error(Puppet::DevError)
129
106
  end
130
107
 
131
- it "should skip files when asked to load a directory" do
132
- FileTest.expects(:directory?).with("myfile").returns false
133
-
134
- Puppet::Node::Facts::Facter.load_facts_in_dir("myfile")
108
+ it 'should fail when destroying facts' do
109
+ proc { @facter.destroy(@facts) }.should raise_error(Puppet::DevError)
135
110
  end
136
111
 
137
- it "should load each ruby file when asked to load a directory" do
138
- FileTest.expects(:directory?).with("mydir").returns true
139
- Dir.expects(:chdir).with("mydir").yields
112
+ describe 'when setting up search paths' do
113
+ let(:factpath1) { File.expand_path 'one' }
114
+ let(:factpath2) { File.expand_path 'two' }
115
+ let(:factpath) { [factpath1, factpath2].join(File::PATH_SEPARATOR) }
116
+ let(:modulepath) { File.expand_path 'module/foo' }
117
+ let(:modulelibfacter) { File.expand_path 'module/foo/lib/facter' }
118
+ let(:modulepluginsfacter) { File.expand_path 'module/foo/plugins/facter' }
140
119
 
141
- Dir.expects(:glob).with("*.rb").returns %w{a.rb b.rb}
120
+ before :each do
121
+ FileTest.expects(:directory?).with(factpath1).returns true
122
+ FileTest.expects(:directory?).with(factpath2).returns true
123
+ @request.environment.stubs(:modulepath).returns [modulepath]
124
+ Dir.expects(:glob).with("#{modulepath}/*/lib/facter").returns [modulelibfacter]
125
+ Dir.expects(:glob).with("#{modulepath}/*/plugins/facter").returns [modulepluginsfacter]
142
126
 
143
- Puppet::Node::Facts::Facter.expects(:load).with File.join('.', 'a.rb')
144
- Puppet::Node::Facts::Facter.expects(:load).with File.join('.', 'b.rb')
145
-
146
- Puppet::Node::Facts::Facter.load_facts_in_dir("mydir")
147
- end
127
+ Puppet[:factpath] = factpath
128
+ end
148
129
 
149
- it "should include pluginfactdest when loading external facts",
150
- :if => (Puppet.features.external_facts? and not Puppet.features.microsoft_windows?) do
151
- Puppet[:pluginfactdest] = "/plugin/dest"
152
- @facter.find(@request)
153
- Facter.search_external_path.include?("/plugin/dest")
154
- end
130
+ it 'should skip files' do
131
+ FileTest.expects(:directory?).with(modulelibfacter).returns false
132
+ FileTest.expects(:directory?).with(modulepluginsfacter).returns false
133
+ Facter.expects(:search).with(factpath1, factpath2)
134
+ Puppet::Node::Facts::Facter.setup_search_paths @request
135
+ end
155
136
 
156
- it "should include pluginfactdest when loading external facts",
157
- :if => (Puppet.features.external_facts? and Puppet.features.microsoft_windows?) do
158
- Puppet[:pluginfactdest] = "/plugin/dest"
159
- @facter.find(@request)
160
- Facter.search_external_path.include?("C:/plugin/dest")
137
+ it 'should add directories' do
138
+ FileTest.expects(:directory?).with(modulelibfacter).returns true
139
+ FileTest.expects(:directory?).with(modulepluginsfacter).returns true
140
+ Facter.expects(:search).with(modulelibfacter, modulepluginsfacter, factpath1, factpath2)
141
+ Puppet::Node::Facts::Facter.setup_search_paths @request
142
+ end
161
143
  end
162
144
 
163
- describe "when loading fact plugins from disk" do
164
- let(:one) { File.expand_path("one") }
165
- let(:two) { File.expand_path("two") }
166
-
167
- it "should load each directory in the Fact path" do
168
- Puppet[:factpath] = [one, two].join(File::PATH_SEPARATOR)
169
-
170
- Puppet::Node::Facts::Facter.expects(:load_facts_in_dir).with(one)
171
- Puppet::Node::Facts::Facter.expects(:load_facts_in_dir).with(two)
145
+ describe 'when setting up external search paths', :if => Puppet.features.external_facts? do
146
+ let(:pluginfactdest) { File.expand_path 'plugin/dest' }
147
+ let(:modulepath) { File.expand_path 'module/foo' }
148
+ let(:modulefactsd) { File.expand_path 'module/foo/facts.d' }
172
149
 
173
- Puppet::Node::Facts::Facter.load_fact_plugins
150
+ before :each do
151
+ FileTest.expects(:directory?).with(pluginfactdest).returns true
152
+ mod = Puppet::Module.new('foo', modulepath, @request.environment)
153
+ @request.environment.stubs(:modules).returns [mod]
154
+ Puppet[:pluginfactdest] = pluginfactdest
174
155
  end
175
156
 
176
- it "should load all facts from the modules" do
177
- Puppet::Node::Facts::Facter.stubs(:load_facts_in_dir)
178
-
179
- Dir.stubs(:glob).returns []
180
- Dir.expects(:glob).with("#{one}/*/lib/facter").returns %w{oneA oneB}
181
- Dir.expects(:glob).with("#{two}/*/lib/facter").returns %w{twoA twoB}
182
-
183
- Puppet::Node::Facts::Facter.expects(:load_facts_in_dir).with("oneA")
184
- Puppet::Node::Facts::Facter.expects(:load_facts_in_dir).with("oneB")
185
- Puppet::Node::Facts::Facter.expects(:load_facts_in_dir).with("twoA")
186
- Puppet::Node::Facts::Facter.expects(:load_facts_in_dir).with("twoB")
187
-
188
- FS.overlay(FS::MemoryFile.a_directory(one), FS::MemoryFile.a_directory(two)) do
189
- Puppet.override(:current_environment => Puppet::Node::Environment.create(:testing, [one, two], "")) do
190
- Puppet::Node::Facts::Facter.load_fact_plugins
191
- end
192
- end
157
+ it 'should skip files' do
158
+ File.expects(:directory?).with(modulefactsd).returns false
159
+ Facter.expects(:search_external).with [pluginfactdest]
160
+ Puppet::Node::Facts::Facter.setup_external_search_paths @request
193
161
  end
194
162
 
195
- it "should include module plugin facts when present", :if => Puppet.features.external_facts? do
196
- mod = Puppet::Module.new("mymodule", "#{one}/mymodule", @request.environment)
197
- @request.environment.stubs(:modules).returns([mod])
198
- @facter.find(@request)
199
- Facter.search_external_path.include?("#{one}/mymodule/facts.d")
163
+ it 'should add directories' do
164
+ File.expects(:directory?).with(modulefactsd).returns true
165
+ Facter.expects(:search_external).with [modulefactsd, pluginfactdest]
166
+ Puppet::Node::Facts::Facter.setup_external_search_paths @request
200
167
  end
201
168
  end
202
169
  end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+ require 'puppet/data_binding'
3
+ require 'puppet/indirector/hiera'
4
+ require 'hiera/backend'
5
+
6
+ describe Puppet::Indirector::Hiera do
7
+
8
+ module Testing
9
+ module DataBinding
10
+ class Hiera < Puppet::Indirector::Hiera
11
+ end
12
+ end
13
+ end
14
+
15
+ it_should_behave_like "Hiera indirection", Testing::DataBinding::Hiera, my_fixture_dir
16
+ end
17
+
@@ -232,14 +232,12 @@ describe Puppet::Indirector::Request do
232
232
  Puppet::Indirector::Request.new(:myind, :find, "my key", nil, :environment => env).environment.should equal(env)
233
233
  end
234
234
 
235
- it "should use the configured environment when none is provided" do
235
+ it "should use the current environment when none is provided" do
236
236
  configured = Puppet::Node::Environment.create(:foo, [])
237
237
 
238
238
  Puppet[:environment] = "foo"
239
239
 
240
- Puppet.override(:environments => Puppet::Environments::Static.new(configured)) do
241
- Puppet::Indirector::Request.new(:myind, :find, "my key", nil).environment.should == configured
242
- end
240
+ expect(Puppet::Indirector::Request.new(:myind, :find, "my key", nil).environment).to eq(Puppet.lookup(:current_environment))
243
241
  end
244
242
 
245
243
  it "should support converting its options to a hash" do
@@ -25,6 +25,11 @@ describe "Puppet::Resource::Ral" do
25
25
  Puppet::Resource::Ral.new.find(@request).should == my_resource
26
26
  end
27
27
 
28
+ it "should produce Puppet::Error instead of ArgumentError" do
29
+ @bad_request = stub 'thiswillcauseanerror', :key => "thiswill/causeanerror"
30
+ expect{Puppet::Resource::Ral.new.find(@bad_request)}.to raise_error(Puppet::Error)
31
+ end
32
+
28
33
  it "if there is no instance, it should create one" do
29
34
  wrong_instance = stub "wrong user", :name => "bob"
30
35
  root = mock "Root User"
@@ -7,9 +7,13 @@ require 'puppet_spec/files'
7
7
  describe Puppet::Indirector::ResourceType::Parser do
8
8
  include PuppetSpec::Files
9
9
 
10
+ let(:environmentpath) { tmpdir("envs") }
11
+ let(:modulepath) { "#{environmentpath}/test/modules" }
12
+ let(:environment) { Puppet::Node::Environment.create(:test, [modulepath]) }
10
13
  before do
11
14
  @terminus = Puppet::Indirector::ResourceType::Parser.new
12
15
  @request = Puppet::Indirector::Request.new(:resource_type, :find, "foo", nil)
16
+ @request.environment = environment
13
17
  @krt = @request.environment.known_resource_types
14
18
  end
15
19
 
@@ -26,19 +30,18 @@ describe Puppet::Indirector::ResourceType::Parser do
26
30
  end
27
31
 
28
32
  it "should attempt to load the type if none is found in memory" do
29
- dir = tmpdir("find_a_type")
30
- FileUtils.mkdir_p(dir)
31
- Puppet[:modulepath] = dir
33
+ FileUtils.mkdir_p(modulepath)
32
34
 
33
35
  # Make a new request, since we've reset the env
34
- @request = Puppet::Indirector::Request.new(:resource_type, :find, "foo::bar", nil)
36
+ request = Puppet::Indirector::Request.new(:resource_type, :find, "foo::bar", nil)
37
+ request.environment = environment
35
38
 
36
- manifest_path = File.join(dir, "foo", "manifests")
39
+ manifest_path = File.join(modulepath, "foo", "manifests")
37
40
  FileUtils.mkdir_p(manifest_path)
38
41
 
39
42
  File.open(File.join(manifest_path, "bar.pp"), "w") { |f| f.puts "class foo::bar {}" }
40
43
 
41
- result = @terminus.find(@request)
44
+ result = @terminus.find(request)
42
45
  result.should be_instance_of(Puppet::Resource::Type)
43
46
  result.name.should == "foo::bar"
44
47
  end
@@ -108,10 +111,11 @@ describe Puppet::Indirector::ResourceType::Parser do
108
111
  second = File.join(dir, "second")
109
112
  FileUtils.mkdir_p(first)
110
113
  FileUtils.mkdir_p(second)
111
- Puppet[:modulepath] = "#{first}#{File::PATH_SEPARATOR}#{second}"
114
+ environment = Puppet::Node::Environment.create(:test, [first, second])
112
115
 
113
116
  # Make a new request, since we've reset the env
114
- @request = Puppet::Indirector::Request.new(:resource_type, :search, "*", nil)
117
+ request = Puppet::Indirector::Request.new(:resource_type, :search, "*", nil)
118
+ request.environment = environment
115
119
 
116
120
  onepath = File.join(first, "one", "manifests")
117
121
  FileUtils.mkdir_p(onepath)
@@ -121,7 +125,7 @@ describe Puppet::Indirector::ResourceType::Parser do
121
125
  File.open(File.join(onepath, "oneklass.pp"), "w") { |f| f.puts "class one::oneklass {}" }
122
126
  File.open(File.join(twopath, "twoklass.pp"), "w") { |f| f.puts "class two::twoklass {}" }
123
127
 
124
- result = @terminus.search(@request)
128
+ result = @terminus.search(request)
125
129
  result.find { |t| t.name == "one::oneklass" }.should be_instance_of(Puppet::Resource::Type)
126
130
  result.find { |t| t.name == "two::twoklass" }.should be_instance_of(Puppet::Resource::Type)
127
131
  end
@@ -228,10 +232,11 @@ describe Puppet::Indirector::ResourceType::Parser do
228
232
  second = File.join(dir, "second")
229
233
  FileUtils.mkdir_p(first)
230
234
  FileUtils.mkdir_p(second)
231
- Puppet[:modulepath] = "#{first}#{File::PATH_SEPARATOR}#{second}"
235
+ environment = Puppet::Node::Environment.create(:test, [first,second])
232
236
 
233
237
  # Make a new request, since we've reset the env
234
- @request = Puppet::Indirector::Request.new(:resource_type, :search, "*", nil)
238
+ request = Puppet::Indirector::Request.new(:resource_type, :search, "*", nil)
239
+ request.environment = environment
235
240
 
236
241
  onepath = File.join(first, "one", "manifests")
237
242
  FileUtils.mkdir_p(onepath)
@@ -241,7 +246,7 @@ describe Puppet::Indirector::ResourceType::Parser do
241
246
  File.open(File.join(onepath, "oneklass.pp"), "w") { |f| f.puts "class one::oneklass {}" }
242
247
  File.open(File.join(twopath, "twoklass.pp"), "w") { |f| f.puts "class two::twoklass {}" }
243
248
 
244
- result = @terminus.search(@request)
249
+ result = @terminus.search(request)
245
250
  result.find { |t| t.name == "one::oneklass" }.should be_instance_of(Puppet::Resource::Type)
246
251
  result.find { |t| t.name == "two::twoklass" }.should be_instance_of(Puppet::Resource::Type)
247
252
  end
@@ -136,6 +136,12 @@ describe Puppet::Indirector::REST do
136
136
  let(:indirection) { Puppet::TestModel.indirection }
137
137
  let(:model) { Puppet::TestModel }
138
138
 
139
+ around(:each) do |example|
140
+ Puppet.override(:current_environment => Puppet::Node::Environment.create(:production, [])) do
141
+ example.run
142
+ end
143
+ end
144
+
139
145
  def mock_response(code, body, content_type='text/plain', encoding=nil)
140
146
  obj = stub('http 200 ok', :code => code.to_s, :body => body)
141
147
  obj.stubs(:[]).with('content-type').returns(content_type)
@@ -285,17 +291,41 @@ describe Puppet::Indirector::REST do
285
291
  end
286
292
 
287
293
  context 'when fail_on_404 is used in request' do
288
- let(:request) { find_request('foo', :fail_on_404 => true) }
289
-
290
294
  it 'raises an error for a 404 when asked to do so' do
295
+ request = find_request('foo', :fail_on_404 => true)
291
296
  response = mock_response('404', 'this is the notfound you are looking for')
292
297
  connection.expects(:get).returns(response)
293
- expected_message = [
294
- 'Find /production/test_model/foo?fail_on_404=true',
295
- 'resulted in 404 with the message: this is the notfound you are looking for'].join( ' ')
298
+
299
+ expect do
300
+ terminus.find(request)
301
+ end.to raise_error(
302
+ Puppet::Error,
303
+ 'Find /production/test_model/foo?fail_on_404=true resulted in 404 with the message: this is the notfound you are looking for')
304
+ end
305
+
306
+ it 'truncates the URI when it is very long' do
307
+ request = find_request('foo', :fail_on_404 => true, :long_param => ('A' * 100) + 'B')
308
+ response = mock_response('404', 'this is the notfound you are looking for')
309
+ connection.expects(:get).returns(response)
310
+
311
+ expect do
312
+ terminus.find(request)
313
+ end.to raise_error(
314
+ Puppet::Error,
315
+ /\/production\/test_model\/foo.*long_param=A+\.\.\..*resulted in 404 with the message/)
316
+ end
317
+
318
+ it 'does not truncate the URI when logging debug information' do
319
+ Puppet.debug = true
320
+ request = find_request('foo', :fail_on_404 => true, :long_param => ('A' * 100) + 'B')
321
+ response = mock_response('404', 'this is the notfound you are looking for')
322
+ connection.expects(:get).returns(response)
323
+
296
324
  expect do
297
325
  terminus.find(request)
298
- end.to raise_error(Puppet::Error, expected_message)
326
+ end.to raise_error(
327
+ Puppet::Error,
328
+ /\/production\/test_model\/foo.*long_param=A+B.*resulted in 404 with the message/)
299
329
  end
300
330
  end
301
331
 
@@ -11,12 +11,12 @@ describe Puppet::Interface::FaceCollection do
11
11
  # the 'subject' of the specs will differ.
12
12
  before :all do
13
13
  # Save FaceCollection's global state
14
- faces = subject.instance_variable_get(:@faces)
14
+ faces = described_class.instance_variable_get(:@faces)
15
15
  @faces = faces.dup
16
16
  faces.each do |k, v|
17
17
  @faces[k] = v.dup
18
18
  end
19
- @faces_loaded = subject.instance_variable_get(:@loaded)
19
+ @faces_loaded = described_class.instance_variable_get(:@loaded)
20
20
 
21
21
  # Save the already required face files
22
22
  @required = []
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'puppet/file_system'
2
3
  require 'puppet/module_tool/applications'
3
4
  require 'puppet_spec/modules'
4
5
 
@@ -12,6 +13,330 @@ describe Puppet::ModuleTool::Applications::Builder do
12
13
  let(:tarball) { File.join(path, 'pkg', release_name) + ".tar.gz" }
13
14
  let(:builder) { Puppet::ModuleTool::Applications::Builder.new(path) }
14
15
 
16
+ shared_examples "a packagable module" do
17
+ def target_exists?(file)
18
+ File.exist?(File.join(path, "pkg", "#{module_name}-#{version}", file))
19
+ end
20
+
21
+ def build
22
+ tarrer = mock('tarrer')
23
+ Puppet::ModuleTool::Tar.expects(:instance).returns(tarrer)
24
+ Dir.expects(:chdir).with(File.join(path, 'pkg')).yields
25
+ tarrer.expects(:pack).with(release_name, tarball)
26
+
27
+ builder.run
28
+ end
29
+
30
+ def create_regular_files
31
+ Puppet::FileSystem.touch(File.join(path, '.dotfile'))
32
+ Puppet::FileSystem.touch(File.join(path, 'file.foo'))
33
+ Puppet::FileSystem.touch(File.join(path, 'REVISION'))
34
+ Puppet::FileSystem.touch(File.join(path, '~file'))
35
+ Puppet::FileSystem.touch(File.join(path, '#file'))
36
+ Puppet::FileSystem.mkpath(File.join(path, 'pkg'))
37
+ Puppet::FileSystem.mkpath(File.join(path, 'coverage'))
38
+ Puppet::FileSystem.mkpath(File.join(path, 'sub'))
39
+ Puppet::FileSystem.touch(File.join(path, 'sub/.dotfile'))
40
+ Puppet::FileSystem.touch(File.join(path, 'sub/file.foo'))
41
+ Puppet::FileSystem.touch(File.join(path, 'sub/REVISION'))
42
+ Puppet::FileSystem.touch(File.join(path, 'sub/~file'))
43
+ Puppet::FileSystem.touch(File.join(path, 'sub/#file'))
44
+ Puppet::FileSystem.mkpath(File.join(path, 'sub/pkg'))
45
+ Puppet::FileSystem.mkpath(File.join(path, 'sub/coverage'))
46
+ end
47
+
48
+ def create_symlinks
49
+ Puppet::FileSystem.touch(File.join(path, 'symlinkedfile'))
50
+ Puppet::FileSystem.symlink(File.join(path, 'symlinkedfile'), File.join(path, 'symlinkfile'))
51
+ end
52
+
53
+ def create_ignored_files
54
+ Puppet::FileSystem.touch(File.join(path, 'gitignored.foo'))
55
+ Puppet::FileSystem.mkpath(File.join(path, 'gitdirectory/sub'))
56
+ Puppet::FileSystem.touch(File.join(path, 'gitdirectory/gitartifact'))
57
+ Puppet::FileSystem.touch(File.join(path, 'gitdirectory/gitimportantfile'))
58
+ Puppet::FileSystem.touch(File.join(path, 'gitdirectory/sub/artifact'))
59
+ Puppet::FileSystem.touch(File.join(path, 'pmtignored.foo'))
60
+ Puppet::FileSystem.mkpath(File.join(path, 'pmtdirectory/sub'))
61
+ Puppet::FileSystem.touch(File.join(path, 'pmtdirectory/pmtimportantfile'))
62
+ Puppet::FileSystem.touch(File.join(path, 'pmtdirectory/pmtartifact'))
63
+ Puppet::FileSystem.touch(File.join(path, 'pmtdirectory/sub/artifact'))
64
+ end
65
+
66
+ def create_pmtignore_file
67
+ Puppet::FileSystem.open(File.join(path, '.pmtignore'), 0600, 'w') do |f|
68
+ f << <<-PMTIGNORE
69
+ pmtignored.*
70
+ pmtdirectory/sub/**
71
+ pmtdirectory/pmt*
72
+ !pmtimportantfile
73
+ PMTIGNORE
74
+ end
75
+ end
76
+
77
+ def create_gitignore_file
78
+ Puppet::FileSystem.open(File.join(path, '.gitignore'), 0600, 'w') do |f|
79
+ f << <<-GITIGNORE
80
+ gitignored.*
81
+ gitdirectory/sub/**
82
+ gitdirectory/git*
83
+ !gitimportantfile
84
+ GITIGNORE
85
+ end
86
+ end
87
+
88
+ def create_symlink_gitignore_file
89
+ Puppet::FileSystem.open(File.join(path, '.gitignore'), 0600, 'w') do |f|
90
+ f << <<-GITIGNORE
91
+ symlinkfile
92
+ GITIGNORE
93
+ end
94
+ end
95
+
96
+ shared_examples "regular files are present" do
97
+ it "has metadata" do
98
+ expect(target_exists?('metadata.json')).to eq true
99
+ end
100
+
101
+ it "has checksums" do
102
+ expect(target_exists?('checksums.json')).to eq true
103
+ end
104
+
105
+ it "copies regular files" do
106
+ expect(target_exists?('file.foo')).to eq true
107
+ end
108
+ end
109
+
110
+ shared_examples "default artifacts are removed in module dir but not in subdirs" do
111
+ it "ignores dotfiles" do
112
+ expect(target_exists?('.dotfile')).to eq false
113
+ expect(target_exists?('sub/.dotfile')).to eq true
114
+ end
115
+
116
+ it "does not have .gitignore" do
117
+ expect(target_exists?('.gitignore')).to eq false
118
+ end
119
+
120
+ it "does not have .pmtignore" do
121
+ expect(target_exists?('.pmtignore')).to eq false
122
+ end
123
+
124
+ it "does not have pkg" do
125
+ expect(target_exists?('pkg')).to eq false
126
+ expect(target_exists?('sub/pkg')).to eq true
127
+ end
128
+
129
+ it "does not have coverage" do
130
+ expect(target_exists?('coverage')).to eq false
131
+ expect(target_exists?('sub/coverage')).to eq true
132
+ end
133
+
134
+ it "does not have REVISION" do
135
+ expect(target_exists?('REVISION')).to eq false
136
+ expect(target_exists?('sub/REVISION')).to eq true
137
+ end
138
+
139
+ it "does not have ~files" do
140
+ expect(target_exists?('~file')).to eq false
141
+ expect(target_exists?('sub/~file')).to eq true
142
+ end
143
+
144
+ it "does not have #files" do
145
+ expect(target_exists?('#file')).to eq false
146
+ expect(target_exists?('sub/#file')).to eq true
147
+ end
148
+ end
149
+
150
+ shared_examples "gitignored files are present" do
151
+ it "leaves regular files" do
152
+ expect(target_exists?('gitignored.foo')).to eq true
153
+ end
154
+
155
+ it "leaves directories" do
156
+ expect(target_exists?('gitdirectory')).to eq true
157
+ end
158
+
159
+ it "leaves files in directories" do
160
+ expect(target_exists?('gitdirectory/gitartifact')).to eq true
161
+ end
162
+
163
+ it "leaves exceptional files" do
164
+ expect(target_exists?('gitdirectory/gitimportantfile')).to eq true
165
+ end
166
+
167
+ it "leaves subdirectories" do
168
+ expect(target_exists?('gitdirectory/sub')).to eq true
169
+ end
170
+
171
+ it "leaves files in subdirectories" do
172
+ expect(target_exists?('gitdirectory/sub/artifact')).to eq true
173
+ end
174
+ end
175
+
176
+ shared_examples "gitignored files are not present" do
177
+ it "ignores regular files" do
178
+ expect(target_exists?('gitignored.foo')).to eq false
179
+ end
180
+
181
+ it "ignores directories" do
182
+ expect(target_exists?('gitdirectory')).to eq true
183
+ end
184
+
185
+ it "ignores files in directories" do
186
+ expect(target_exists?('gitdirectory/gitartifact')).to eq false
187
+ end
188
+
189
+ it "copies exceptional files" do
190
+ expect(target_exists?('gitdirectory/gitimportantfile')).to eq true
191
+ end
192
+
193
+ it "ignores subdirectories" do
194
+ expect(target_exists?('gitdirectory/sub')).to eq false
195
+ end
196
+
197
+ it "ignores files in subdirectories" do
198
+ expect(target_exists?('gitdirectory/sub/artifact')).to eq false
199
+ end
200
+ end
201
+
202
+ shared_examples "pmtignored files are present" do
203
+ it "leaves regular files" do
204
+ expect(target_exists?('pmtignored.foo')).to eq true
205
+ end
206
+
207
+ it "leaves directories" do
208
+ expect(target_exists?('pmtdirectory')).to eq true
209
+ end
210
+
211
+ it "ignores files in directories" do
212
+ expect(target_exists?('pmtdirectory/pmtartifact')).to eq true
213
+ end
214
+
215
+ it "leaves exceptional files" do
216
+ expect(target_exists?('pmtdirectory/pmtimportantfile')).to eq true
217
+ end
218
+
219
+ it "leaves subdirectories" do
220
+ expect(target_exists?('pmtdirectory/sub')).to eq true
221
+ end
222
+
223
+ it "leaves files in subdirectories" do
224
+ expect(target_exists?('pmtdirectory/sub/artifact')).to eq true
225
+ end
226
+ end
227
+
228
+ shared_examples "pmtignored files are not present" do
229
+ it "ignores regular files" do
230
+ expect(target_exists?('pmtignored.foo')).to eq false
231
+ end
232
+
233
+ it "ignores directories" do
234
+ expect(target_exists?('pmtdirectory')).to eq true
235
+ end
236
+
237
+ it "copies exceptional files" do
238
+ expect(target_exists?('pmtdirectory/pmtimportantfile')).to eq true
239
+ end
240
+
241
+ it "ignores files in directories" do
242
+ expect(target_exists?('pmtdirectory/pmtartifact')).to eq false
243
+ end
244
+
245
+ it "ignores subdirectories" do
246
+ expect(target_exists?('pmtdirectory/sub')).to eq false
247
+ end
248
+
249
+ it "ignores files in subdirectories" do
250
+ expect(target_exists?('pmtdirectory/sub/artifact')).to eq false
251
+ end
252
+ end
253
+
254
+ context "with no ignore files" do
255
+ before :each do
256
+ create_regular_files
257
+ create_ignored_files
258
+
259
+ build
260
+ end
261
+
262
+ it_behaves_like "regular files are present"
263
+ it_behaves_like "default artifacts are removed in module dir but not in subdirs"
264
+ it_behaves_like "pmtignored files are present"
265
+ it_behaves_like "gitignored files are present"
266
+ end
267
+
268
+ context "with .gitignore file" do
269
+ before :each do
270
+ create_regular_files
271
+ create_ignored_files
272
+ create_gitignore_file
273
+
274
+ build
275
+ end
276
+
277
+ it_behaves_like "regular files are present"
278
+ it_behaves_like "default artifacts are removed in module dir but not in subdirs"
279
+ it_behaves_like "pmtignored files are present"
280
+ it_behaves_like "gitignored files are not present"
281
+ end
282
+
283
+ context "with .pmtignore file" do
284
+ before :each do
285
+ create_regular_files
286
+ create_ignored_files
287
+ create_pmtignore_file
288
+
289
+ build
290
+ end
291
+
292
+ it_behaves_like "regular files are present"
293
+ it_behaves_like "default artifacts are removed in module dir but not in subdirs"
294
+ it_behaves_like "gitignored files are present"
295
+ it_behaves_like "pmtignored files are not present"
296
+ end
297
+
298
+ context "with .pmtignore and .gitignore file" do
299
+ before :each do
300
+ create_regular_files
301
+ create_ignored_files
302
+ create_pmtignore_file
303
+ create_gitignore_file
304
+
305
+ build
306
+ end
307
+
308
+ it_behaves_like "regular files are present"
309
+ it_behaves_like "default artifacts are removed in module dir but not in subdirs"
310
+ it_behaves_like "gitignored files are present"
311
+ it_behaves_like "pmtignored files are not present"
312
+ end
313
+
314
+ context "with unignored symlinks", :if => Puppet.features.manages_symlinks? do
315
+ before :each do
316
+ create_regular_files
317
+ create_symlinks
318
+ create_ignored_files
319
+ end
320
+
321
+ it "give an error about symlinks" do
322
+ expect { builder.run }.to raise_error
323
+ end
324
+ end
325
+
326
+ context "with .gitignore file and ignored symlinks", :if => Puppet.features.manages_symlinks? do
327
+ before :each do
328
+ create_regular_files
329
+ create_symlinks
330
+ create_ignored_files
331
+ create_symlink_gitignore_file
332
+ end
333
+
334
+ it "does not give an error about symlinks" do
335
+ expect { build }.not_to raise_error
336
+ end
337
+ end
338
+ end
339
+
15
340
  context 'with metadata.json' do
16
341
  before :each do
17
342
  File.open(File.join(path, 'metadata.json'), 'w') do |f|
@@ -28,16 +353,48 @@ describe Puppet::ModuleTool::Applications::Builder do
28
353
  end
29
354
  end
30
355
 
31
- it "packages the module in a tarball named after the module" do
32
- tarrer = mock('tarrer')
33
- Puppet::ModuleTool::Tar.expects(:instance).returns(tarrer)
34
- Dir.expects(:chdir).with(File.join(path, 'pkg')).yields
35
- tarrer.expects(:pack).with(release_name, tarball)
356
+ it_behaves_like "a packagable module"
36
357
 
37
- builder.run
358
+ it "does not package with a symlink", :if => Puppet.features.manages_symlinks? do
359
+ FileUtils.touch(File.join(path, 'tempfile'))
360
+ Puppet::FileSystem.symlink(File.join(path, 'tempfile'), File.join(path, 'tempfile2'))
361
+
362
+ expect {
363
+ builder.run
364
+ }.to raise_error Puppet::ModuleTool::Errors::ModuleToolError, /symlinks/i
365
+ end
366
+
367
+ it "does not package with a symlink in a subdir", :if => Puppet.features.manages_symlinks? do
368
+ FileUtils.mkdir(File.join(path, 'manifests'))
369
+ FileUtils.touch(File.join(path, 'manifests/tempfile.pp'))
370
+ Puppet::FileSystem.symlink(File.join(path, 'manifests/tempfile.pp'), File.join(path, 'manifests/tempfile2.pp'))
371
+
372
+ expect {
373
+ builder.run
374
+ }.to raise_error Puppet::ModuleTool::Errors::ModuleToolError, /symlinks/i
38
375
  end
39
376
  end
40
377
 
378
+ context 'with metadata.json containing checksums' do
379
+ before :each do
380
+ File.open(File.join(path, 'metadata.json'), 'w') do |f|
381
+ f.puts({
382
+ "name" => "#{module_name}",
383
+ "version" => "#{version}",
384
+ "source" => "http://github.com/testing/#{module_name}",
385
+ "author" => "testing",
386
+ "license" => "Apache License Version 2.0",
387
+ "summary" => "Puppet testing module",
388
+ "description" => "This module can be used for basic testing",
389
+ "project_page" => "http://github.com/testing/#{module_name}",
390
+ "checksums" => {"README.md" => "deadbeef"}
391
+ }.to_json)
392
+ end
393
+ end
394
+
395
+ it_behaves_like "a packagable module"
396
+ end
397
+
41
398
  context 'with Modulefile' do
42
399
  before :each do
43
400
  File.open(File.join(path, 'Modulefile'), 'w') do |f|
@@ -54,13 +411,6 @@ MODULEFILE
54
411
  end
55
412
  end
56
413
 
57
- it "packages the module in a tarball named after the module" do
58
- tarrer = mock('tarrer')
59
- Puppet::ModuleTool::Tar.expects(:instance).returns(tarrer)
60
- Dir.expects(:chdir).with(File.join(path, 'pkg')).yields
61
- tarrer.expects(:pack).with(release_name, tarball)
62
-
63
- builder.run
64
- end
414
+ it_behaves_like "a packagable module"
65
415
  end
66
416
  end