puppet 3.1.1 → 3.2.0.rc1

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 (477) hide show
  1. data/CONTRIBUTING.md +2 -2
  2. data/Gemfile +32 -19
  3. data/README_DEVELOPER.md +332 -14
  4. data/Rakefile +9 -5
  5. data/ext/build_defaults.yaml +2 -3
  6. data/ext/debian/changelog.erb +6 -0
  7. data/ext/debian/control +6 -6
  8. data/ext/envpuppet +4 -4
  9. data/ext/project_data.yaml +1 -0
  10. data/ext/puppet-nm-dispatcher +13 -0
  11. data/ext/redhat/puppet.spec.erb +17 -0
  12. data/ext/suse/client.init +1 -1
  13. data/ext/systemd/puppetagent.service +2 -2
  14. data/ext/systemd/puppetmaster.service +2 -2
  15. data/lib/hiera/scope.rb +29 -11
  16. data/lib/hiera_puppet.rb +1 -3
  17. data/lib/puppet/agent.rb +3 -3
  18. data/lib/puppet/application.rb +2 -2
  19. data/lib/puppet/application/agent.rb +27 -12
  20. data/lib/puppet/application/apply.rb +11 -1
  21. data/lib/puppet/application/describe.rb +1 -1
  22. data/lib/puppet/application/doc.rb +13 -9
  23. data/lib/puppet/application/filebucket.rb +0 -1
  24. data/lib/puppet/application/kick.rb +1 -0
  25. data/lib/puppet/application/master.rb +16 -8
  26. data/lib/puppet/daemon.rb +19 -64
  27. data/lib/puppet/defaults.rb +61 -5
  28. data/lib/puppet/error.rb +15 -4
  29. data/lib/puppet/external/nagios/grammar.ry +1 -1
  30. data/lib/puppet/external/nagios/makefile +1 -1
  31. data/lib/puppet/external/nagios/parser.rb +185 -618
  32. data/lib/puppet/external/pson/pure/parser.rb +47 -1
  33. data/lib/puppet/face/certificate.rb +3 -3
  34. data/lib/puppet/face/module.rb +1 -1
  35. data/lib/puppet/face/module/changes.rb +3 -1
  36. data/lib/puppet/face/module/uninstall.rb +1 -1
  37. data/lib/puppet/face/node/clean.rb +5 -5
  38. data/lib/puppet/feature/base.rb +3 -1
  39. data/lib/puppet/feature/libuser.rb +8 -0
  40. data/lib/puppet/file_serving/fileset.rb +9 -1
  41. data/lib/puppet/forge.rb +28 -5
  42. data/lib/puppet/forge/errors.rb +34 -0
  43. data/lib/puppet/forge/repository.rb +1 -1
  44. data/lib/puppet/indirector.rb +4 -1
  45. data/lib/puppet/indirector/catalog/compiler.rb +37 -30
  46. data/lib/puppet/indirector/facts/inventory_active_record.rb +1 -0
  47. data/lib/puppet/indirector/indirection.rb +28 -15
  48. data/lib/puppet/indirector/rest.rb +18 -10
  49. data/lib/puppet/interface.rb +11 -4
  50. data/lib/puppet/interface/action.rb +1 -3
  51. data/lib/puppet/interface/action_builder.rb +0 -3
  52. data/lib/puppet/interface/action_manager.rb +0 -3
  53. data/lib/puppet/interface/face_collection.rb +0 -2
  54. data/lib/puppet/interface/option.rb +0 -2
  55. data/lib/puppet/interface/option_builder.rb +0 -2
  56. data/lib/puppet/interface/option_manager.rb +0 -2
  57. data/lib/puppet/metatype/manager.rb +1 -1
  58. data/lib/puppet/module_tool.rb +1 -0
  59. data/lib/puppet/module_tool/applications/application.rb +0 -3
  60. data/lib/puppet/module_tool/applications/builder.rb +8 -20
  61. data/lib/puppet/module_tool/applications/checksummer.rb +1 -1
  62. data/lib/puppet/module_tool/applications/installer.rb +1 -0
  63. data/lib/puppet/module_tool/applications/unpacker.rb +3 -11
  64. data/lib/puppet/module_tool/checksums.rb +1 -1
  65. data/lib/puppet/module_tool/errors/installer.rb +18 -1
  66. data/lib/puppet/module_tool/modulefile.rb +2 -2
  67. data/lib/puppet/module_tool/skeleton/templates/generator/Modulefile.erb +1 -1
  68. data/lib/puppet/module_tool/tar.rb +17 -0
  69. data/lib/puppet/module_tool/tar/gnu.rb +9 -0
  70. data/lib/puppet/module_tool/tar/mini.rb +39 -0
  71. data/lib/puppet/module_tool/tar/solaris.rb +5 -0
  72. data/lib/puppet/network/http.rb +1 -0
  73. data/lib/puppet/network/http/connection.rb +9 -23
  74. data/lib/puppet/network/http/handler.rb +38 -7
  75. data/lib/puppet/network/http/rack/rest.rb +14 -3
  76. data/lib/puppet/network/http/webrick.rb +3 -1
  77. data/lib/puppet/network/http/webrick/rest.rb +11 -2
  78. data/lib/puppet/node/environment.rb +3 -1
  79. data/lib/puppet/parameter.rb +32 -29
  80. data/lib/puppet/parameter/package_options.rb +1 -1
  81. data/lib/puppet/parameter/path.rb +1 -1
  82. data/lib/puppet/parameter/value.rb +1 -1
  83. data/lib/puppet/parameter/value_collection.rb +7 -3
  84. data/lib/puppet/parser/ast.rb +3 -1
  85. data/lib/puppet/parser/ast/arithmetic_operator.rb +56 -12
  86. data/lib/puppet/parser/ast/astarray.rb +1 -1
  87. data/lib/puppet/parser/ast/block_expression.rb +41 -0
  88. data/lib/puppet/parser/ast/function.rb +13 -2
  89. data/lib/puppet/parser/ast/lambda.rb +107 -0
  90. data/lib/puppet/parser/ast/leaf.rb +1 -2
  91. data/lib/puppet/parser/ast/method_call.rb +77 -0
  92. data/lib/puppet/parser/ast/vardef.rb +7 -0
  93. data/lib/puppet/parser/compiler.rb +27 -16
  94. data/lib/puppet/parser/e_parser_adapter.rb +120 -0
  95. data/lib/puppet/parser/files.rb +7 -6
  96. data/lib/puppet/parser/functions.rb +10 -8
  97. data/lib/puppet/parser/functions/collect.rb +43 -0
  98. data/lib/puppet/parser/functions/each.rb +96 -0
  99. data/lib/puppet/parser/functions/foreach.rb +96 -0
  100. data/lib/puppet/parser/functions/fqdn_rand.rb +2 -2
  101. data/lib/puppet/parser/functions/hiera.rb +20 -2
  102. data/lib/puppet/parser/functions/hiera_array.rb +21 -2
  103. data/lib/puppet/parser/functions/hiera_hash.rb +23 -2
  104. data/lib/puppet/parser/functions/hiera_include.rb +33 -2
  105. data/lib/puppet/parser/functions/inline_template.rb +4 -4
  106. data/lib/puppet/parser/functions/reduce.rb +74 -0
  107. data/lib/puppet/parser/functions/reject.rb +46 -0
  108. data/lib/puppet/parser/functions/select.rb +46 -0
  109. data/lib/puppet/parser/functions/slice.rb +96 -0
  110. data/lib/puppet/parser/functions/template.rb +2 -2
  111. data/lib/puppet/parser/grammar.ra +7 -4
  112. data/lib/puppet/parser/lexer.rb +10 -0
  113. data/lib/puppet/parser/methods.rb +69 -0
  114. data/lib/puppet/parser/parser.rb +855 -808
  115. data/lib/puppet/parser/parser_factory.rb +62 -0
  116. data/lib/puppet/parser/parser_support.rb +8 -2
  117. data/lib/puppet/parser/scope.rb +153 -47
  118. data/lib/puppet/parser/templatewrapper.rb +28 -21
  119. data/lib/puppet/parser/type_loader.rb +3 -1
  120. data/lib/puppet/pops.rb +40 -0
  121. data/lib/puppet/pops/adaptable.rb +190 -0
  122. data/lib/puppet/pops/adapters.rb +65 -0
  123. data/lib/puppet/pops/containment.rb +37 -0
  124. data/lib/puppet/pops/issues.rb +258 -0
  125. data/lib/puppet/pops/label_provider.rb +71 -0
  126. data/lib/puppet/pops/model/ast_transformer.rb +636 -0
  127. data/lib/puppet/pops/model/ast_tree_dumper.rb +378 -0
  128. data/lib/puppet/pops/model/factory.rb +804 -0
  129. data/lib/puppet/pops/model/model.rb +567 -0
  130. data/lib/puppet/pops/model/model_label_provider.rb +75 -0
  131. data/lib/puppet/pops/model/model_tree_dumper.rb +352 -0
  132. data/lib/puppet/pops/model/tree_dumper.rb +59 -0
  133. data/lib/puppet/pops/parser/egrammar.ra +723 -0
  134. data/lib/puppet/pops/parser/eparser.rb +2300 -0
  135. data/lib/puppet/pops/parser/grammar.ra +746 -0
  136. data/lib/puppet/pops/parser/lexer.rb +842 -0
  137. data/lib/puppet/pops/parser/makefile +13 -0
  138. data/lib/puppet/pops/parser/parser_support.rb +203 -0
  139. data/lib/puppet/pops/patterns.rb +35 -0
  140. data/lib/puppet/pops/utils.rb +104 -0
  141. data/lib/puppet/pops/validation.rb +297 -0
  142. data/lib/puppet/pops/validation/checker3_1.rb +551 -0
  143. data/lib/puppet/pops/validation/validator_factory_3_1.rb +41 -0
  144. data/lib/puppet/pops/visitable.rb +6 -0
  145. data/lib/puppet/pops/visitor.rb +50 -0
  146. data/lib/puppet/property.rb +37 -28
  147. data/lib/puppet/property/ensure.rb +2 -2
  148. data/lib/puppet/property/ordered_list.rb +1 -1
  149. data/lib/puppet/provider.rb +26 -30
  150. data/lib/puppet/provider/aixobject.rb +45 -44
  151. data/lib/puppet/provider/augeas/augeas.rb +0 -1
  152. data/lib/puppet/provider/confiner.rb +1 -1
  153. data/lib/puppet/provider/cron/crontab.rb +107 -67
  154. data/lib/puppet/provider/group/groupadd.rb +59 -3
  155. data/lib/puppet/provider/interface/cisco.rb +4 -4
  156. data/lib/puppet/provider/mount/parsed.rb +1 -1
  157. data/lib/puppet/provider/nameservice.rb +22 -6
  158. data/lib/puppet/provider/nameservice/pw.rb +1 -1
  159. data/lib/puppet/provider/package/aix.rb +28 -4
  160. data/lib/puppet/provider/package/gem.rb +0 -2
  161. data/lib/puppet/provider/package/macports.rb +1 -1
  162. data/lib/puppet/provider/package/nim.rb +249 -4
  163. data/lib/puppet/provider/package/opkg.rb +77 -0
  164. data/lib/puppet/provider/package/pacman.rb +2 -2
  165. data/lib/puppet/provider/package/rpm.rb +30 -16
  166. data/lib/puppet/provider/package/yum.rb +3 -3
  167. data/lib/puppet/provider/parsedfile.rb +80 -3
  168. data/lib/puppet/provider/selmodule/semodule.rb +2 -2
  169. data/lib/puppet/provider/service/debian.rb +0 -4
  170. data/lib/puppet/provider/service/freebsd.rb +2 -2
  171. data/lib/puppet/provider/service/gentoo.rb +0 -9
  172. data/lib/puppet/provider/service/init.rb +27 -2
  173. data/lib/puppet/provider/service/launchd.rb +1 -1
  174. data/lib/puppet/provider/service/openwrt.rb +36 -0
  175. data/lib/puppet/provider/service/redhat.rb +0 -9
  176. data/lib/puppet/provider/service/src.rb +38 -4
  177. data/lib/puppet/provider/service/systemd.rb +2 -2
  178. data/lib/puppet/provider/service/upstart.rb +1 -8
  179. data/lib/puppet/provider/user/aix.rb +4 -10
  180. data/lib/puppet/provider/user/pw.rb +6 -10
  181. data/lib/puppet/provider/user/useradd.rb +129 -31
  182. data/lib/puppet/provider/vlan/cisco.rb +4 -4
  183. data/lib/puppet/reference/function.rb +2 -2
  184. data/lib/puppet/reference/indirection.rb +46 -5
  185. data/lib/puppet/reference/metaparameter.rb +2 -2
  186. data/lib/puppet/reports.rb +5 -5
  187. data/lib/puppet/reports/rrdgraph.rb +4 -4
  188. data/lib/puppet/reports/tagmail.rb +1 -1
  189. data/lib/puppet/resource.rb +1 -1
  190. data/lib/puppet/resource/type.rb +13 -11
  191. data/lib/puppet/scheduler.rb +16 -0
  192. data/lib/puppet/scheduler/job.rb +53 -0
  193. data/lib/puppet/scheduler/scheduler.rb +45 -0
  194. data/lib/puppet/scheduler/splay_job.rb +32 -0
  195. data/lib/puppet/scheduler/timer.rb +13 -0
  196. data/lib/puppet/settings/base_setting.rb +1 -1
  197. data/lib/puppet/simple_graph.rb +4 -4
  198. data/lib/puppet/ssl/base.rb +12 -2
  199. data/lib/puppet/ssl/certificate.rb +4 -1
  200. data/lib/puppet/ssl/certificate_request.rb +4 -1
  201. data/lib/puppet/ssl/certificate_revocation_list.rb +4 -1
  202. data/lib/puppet/ssl/configuration.rb +32 -0
  203. data/lib/puppet/ssl/host.rb +18 -21
  204. data/lib/puppet/ssl/key.rb +4 -1
  205. data/lib/puppet/ssl/validator.rb +116 -0
  206. data/lib/puppet/transaction.rb +1 -1
  207. data/lib/puppet/transaction/event.rb +3 -10
  208. data/lib/puppet/transaction/event_manager.rb +8 -1
  209. data/lib/puppet/transaction/report.rb +17 -16
  210. data/lib/puppet/type.rb +77 -69
  211. data/lib/puppet/type/cron.rb +20 -8
  212. data/lib/puppet/type/exec.rb +9 -3
  213. data/lib/puppet/type/file.rb +95 -21
  214. data/lib/puppet/type/file/content.rb +1 -1
  215. data/lib/puppet/type/file/mode.rb +7 -1
  216. data/lib/puppet/type/file/source.rb +2 -2
  217. data/lib/puppet/type/group.rb +11 -0
  218. data/lib/puppet/type/scheduled_task.rb +5 -1
  219. data/lib/puppet/type/service.rb +1 -1
  220. data/lib/puppet/type/ssh_authorized_key.rb +2 -2
  221. data/lib/puppet/type/user.rb +24 -6
  222. data/lib/puppet/util.rb +12 -2
  223. data/lib/puppet/util/classgen.rb +4 -4
  224. data/lib/puppet/util/colors.rb +55 -0
  225. data/lib/puppet/util/command_line/trollop.rb +4 -4
  226. data/lib/puppet/util/errors.rb +39 -3
  227. data/lib/puppet/util/fileparsing.rb +5 -0
  228. data/lib/puppet/util/filetype.rb +11 -9
  229. data/lib/puppet/util/instrumentation/instrumentable.rb +2 -2
  230. data/lib/puppet/util/libuser.conf +15 -0
  231. data/lib/puppet/util/libuser.rb +12 -0
  232. data/lib/puppet/util/monkey_patches.rb +48 -0
  233. data/lib/puppet/util/network_device.rb +1 -1
  234. data/lib/puppet/util/network_device/base.rb +2 -2
  235. data/lib/puppet/util/network_device/cisco/device.rb +29 -19
  236. data/lib/puppet/util/network_device/config.rb +5 -2
  237. data/lib/puppet/util/network_device/ipcalc.rb +1 -1
  238. data/lib/puppet/util/network_device/transport/ssh.rb +4 -3
  239. data/lib/puppet/util/network_device/transport/telnet.rb +4 -2
  240. data/lib/puppet/util/plugins.rb +4 -4
  241. data/lib/puppet/util/posix.rb +1 -1
  242. data/lib/puppet/util/profiler.rb +28 -0
  243. data/lib/puppet/util/profiler/logging.rb +47 -0
  244. data/lib/puppet/util/profiler/none.rb +8 -0
  245. data/lib/puppet/util/profiler/object_counts.rb +17 -0
  246. data/lib/puppet/util/profiler/wall_clock.rb +34 -0
  247. data/lib/puppet/util/provider_features.rb +1 -1
  248. data/lib/puppet/util/rdoc/parser.rb +5 -5
  249. data/lib/puppet/util/ssl.rb +38 -0
  250. data/lib/puppet/util/subclass_loader.rb +1 -5
  251. data/lib/puppet/util/windows.rb +1 -0
  252. data/lib/puppet/util/windows/process.rb +3 -0
  253. data/lib/puppet/util/windows/root_certs.rb +86 -0
  254. data/lib/puppet/util/windows/security.rb +1 -0
  255. data/lib/puppet/version.rb +1 -1
  256. data/spec/fixtures/integration/provider/cron/crontab/create_normal_entry +19 -0
  257. data/spec/fixtures/integration/provider/cron/crontab/create_special_entry +18 -0
  258. data/spec/fixtures/integration/provider/cron/crontab/crontab_user1 +15 -0
  259. data/spec/fixtures/integration/provider/cron/crontab/crontab_user2 +4 -0
  260. data/spec/fixtures/integration/provider/cron/crontab/modify_entry +13 -0
  261. data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input1 +15 -0
  262. data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input2 +6 -0
  263. data/spec/fixtures/integration/provider/cron/crontab/remove_named_resource +12 -0
  264. data/spec/fixtures/integration/provider/cron/crontab/remove_unnamed_resource +14 -0
  265. data/spec/fixtures/unit/pops/parser/lexer/aliastest.pp +16 -0
  266. data/spec/fixtures/unit/pops/parser/lexer/append.pp +11 -0
  267. data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +14 -0
  268. data/spec/fixtures/unit/pops/parser/lexer/arithmetic_expression.pp +8 -0
  269. data/spec/fixtures/unit/pops/parser/lexer/arraytrailingcomma.pp +3 -0
  270. data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +65 -0
  271. data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +15 -0
  272. data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +17 -0
  273. data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +11 -0
  274. data/spec/fixtures/unit/pops/parser/lexer/collection.pp +10 -0
  275. data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +8 -0
  276. data/spec/fixtures/unit/pops/parser/lexer/collection_within_virtual_definitions.pp +20 -0
  277. data/spec/fixtures/unit/pops/parser/lexer/componentmetaparams.pp +11 -0
  278. data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +8 -0
  279. data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +23 -0
  280. data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +17 -0
  281. data/spec/fixtures/unit/pops/parser/lexer/emptyclass.pp +9 -0
  282. data/spec/fixtures/unit/pops/parser/lexer/emptyexec.pp +3 -0
  283. data/spec/fixtures/unit/pops/parser/lexer/emptyifelse.pp +9 -0
  284. data/spec/fixtures/unit/pops/parser/lexer/falsevalues.pp +3 -0
  285. data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +11 -0
  286. data/spec/fixtures/unit/pops/parser/lexer/fqdefinition.pp +5 -0
  287. data/spec/fixtures/unit/pops/parser/lexer/fqparents.pp +11 -0
  288. data/spec/fixtures/unit/pops/parser/lexer/funccomma.pp +5 -0
  289. data/spec/fixtures/unit/pops/parser/lexer/hash.pp +33 -0
  290. data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +12 -0
  291. data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +15 -0
  292. data/spec/fixtures/unit/pops/parser/lexer/multilinecomments.pp +10 -0
  293. data/spec/fixtures/unit/pops/parser/lexer/multipleclass.pp +9 -0
  294. data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +7 -0
  295. data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +13 -0
  296. data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +9 -0
  297. data/spec/fixtures/unit/pops/parser/lexer/scopetest.pp +13 -0
  298. data/spec/fixtures/unit/pops/parser/lexer/selectorvalues.pp +49 -0
  299. data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +5 -0
  300. data/spec/fixtures/unit/pops/parser/lexer/simpleselector.pp +38 -0
  301. data/spec/fixtures/unit/pops/parser/lexer/singleary.pp +19 -0
  302. data/spec/fixtures/unit/pops/parser/lexer/singlequote.pp +11 -0
  303. data/spec/fixtures/unit/pops/parser/lexer/singleselector.pp +22 -0
  304. data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +11 -0
  305. data/spec/fixtures/unit/pops/parser/lexer/tag.pp +9 -0
  306. data/spec/fixtures/unit/pops/parser/lexer/tagged.pp +35 -0
  307. data/spec/fixtures/unit/pops/parser/lexer/virtualresources.pp +14 -0
  308. data/spec/fixtures/unit/provider/cron/crontab/single_line.yaml +4 -4
  309. data/spec/fixtures/unit/provider/cron/crontab/vixie_header.txt +3 -0
  310. data/spec/fixtures/unit/provider/cron/parsed/managed +6 -0
  311. data/spec/fixtures/unit/provider/cron/parsed/simple +9 -0
  312. data/spec/fixtures/unit/provider/parsedfile/simple.txt +4 -0
  313. data/spec/fixtures/unit/provider/service/systemd/list_units +18 -0
  314. data/spec/integration/parser/collector_spec.rb +1 -1
  315. data/spec/integration/parser/compiler_spec.rb +252 -227
  316. data/spec/integration/parser/parser_spec.rb +171 -53
  317. data/spec/integration/parser/scope_spec.rb +1 -1
  318. data/spec/integration/provider/cron/crontab_spec.rb +187 -0
  319. data/spec/integration/provider/service/systemd_spec.rb +20 -0
  320. data/spec/integration/type/file_spec.rb +21 -21
  321. data/spec/integration/type/package_spec.rb +1 -1
  322. data/spec/lib/puppet_spec/database.rb +2 -5
  323. data/spec/spec_helper.rb +6 -1
  324. data/spec/unit/application/apply_spec.rb +16 -1
  325. data/spec/unit/application/describe_spec.rb +1 -1
  326. data/spec/unit/application/doc_spec.rb +55 -32
  327. data/spec/unit/application/kick_spec.rb +8 -6
  328. data/spec/unit/application/master_spec.rb +4 -4
  329. data/spec/unit/daemon_spec.rb +1 -1
  330. data/spec/unit/forge/errors_spec.rb +40 -0
  331. data/spec/unit/forge/repository_spec.rb +11 -1
  332. data/spec/unit/forge_spec.rb +13 -3
  333. data/spec/unit/hiera/backend/puppet_backend_spec.rb +1 -0
  334. data/spec/unit/hiera/scope_spec.rb +48 -25
  335. data/spec/unit/indirector/catalog/active_record_spec.rb +6 -3
  336. data/spec/unit/indirector/catalog/compiler_spec.rb +3 -28
  337. data/spec/unit/indirector/catalog/static_compiler_spec.rb +1 -1
  338. data/spec/unit/indirector/facts/inventory_active_record_spec.rb +154 -150
  339. data/spec/unit/indirector/indirection_spec.rb +5 -0
  340. data/spec/unit/indirector/resource/active_record_spec.rb +5 -22
  341. data/spec/unit/indirector_spec.rb +7 -1
  342. data/spec/unit/interface/action_builder_spec.rb +1 -1
  343. data/spec/unit/interface/action_manager_spec.rb +0 -2
  344. data/spec/unit/interface/action_spec.rb +1 -1
  345. data/spec/unit/interface/documentation_spec.rb +0 -2
  346. data/spec/unit/interface/face_collection_spec.rb +1 -1
  347. data/spec/unit/interface/option_builder_spec.rb +1 -1
  348. data/spec/unit/interface/option_spec.rb +0 -1
  349. data/spec/unit/module_spec.rb +17 -19
  350. data/spec/unit/module_tool/application_spec.rb +1 -3
  351. data/spec/unit/module_tool/applications/builder_spec.rb +38 -0
  352. data/spec/unit/module_tool/applications/checksummer_spec.rb +134 -0
  353. data/spec/unit/module_tool/applications/installer_spec.rb +71 -91
  354. data/spec/unit/module_tool/applications/searcher_spec.rb +1 -3
  355. data/spec/unit/module_tool/applications/uninstaller_spec.rb +18 -26
  356. data/spec/unit/module_tool/applications/unpacker_spec.rb +19 -52
  357. data/spec/unit/module_tool/tar/gnu_spec.rb +19 -0
  358. data/spec/unit/module_tool/tar/mini_spec.rb +59 -0
  359. data/spec/unit/module_tool/tar/solaris_spec.rb +19 -0
  360. data/spec/unit/network/http/connection_spec.rb +17 -2
  361. data/spec/unit/network/http/handler_spec.rb +195 -167
  362. data/spec/unit/network/http/rack/rest_spec.rb +26 -4
  363. data/spec/unit/network/http/webrick/rest_spec.rb +28 -1
  364. data/spec/unit/network/http/webrick_spec.rb +12 -3
  365. data/spec/unit/node/environment_spec.rb +421 -404
  366. data/spec/unit/parser/ast/arithmetic_operator_spec.rb +98 -2
  367. data/spec/unit/parser/collector_spec.rb +4 -4
  368. data/spec/unit/parser/compiler_spec.rb +13 -13
  369. data/spec/unit/parser/eparser_adapter_spec.rb +407 -0
  370. data/spec/unit/parser/functions/extlookup_spec.rb +20 -17
  371. data/spec/unit/parser/functions/fqdn_rand_spec.rb +5 -0
  372. data/spec/unit/parser/functions/hiera_include_spec.rb +0 -2
  373. data/spec/unit/parser/functions/hiera_spec.rb +0 -2
  374. data/spec/unit/parser/functions_spec.rb +27 -15
  375. data/spec/unit/parser/methods/collect_spec.rb +110 -0
  376. data/spec/unit/parser/methods/each_spec.rb +91 -0
  377. data/spec/unit/parser/methods/foreach_spec.rb +91 -0
  378. data/spec/unit/parser/methods/reduce_spec.rb +67 -0
  379. data/spec/unit/parser/methods/reject_spec.rb +73 -0
  380. data/spec/unit/parser/methods/select_spec.rb +79 -0
  381. data/spec/unit/parser/methods/shared.rb +61 -0
  382. data/spec/unit/parser/methods/slice_spec.rb +97 -0
  383. data/spec/unit/parser/parser_spec.rb +2 -2
  384. data/spec/unit/parser/scope_spec.rb +39 -16
  385. data/spec/unit/parser/templatewrapper_spec.rb +6 -5
  386. data/spec/unit/parser/type_loader_spec.rb +191 -165
  387. data/spec/unit/pops/adaptable_spec.rb +143 -0
  388. data/spec/unit/pops/containment_spec.rb +25 -0
  389. data/spec/unit/pops/factory_rspec_helper.rb +77 -0
  390. data/spec/unit/pops/factory_spec.rb +329 -0
  391. data/spec/unit/pops/issues_spec.rb +26 -0
  392. data/spec/unit/pops/label_provider_spec.rb +42 -0
  393. data/spec/unit/pops/model/ast_transformer_spec.rb +65 -0
  394. data/spec/unit/pops/model/model_spec.rb +37 -0
  395. data/spec/unit/pops/parser/lexer_spec.rb +884 -0
  396. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +248 -0
  397. data/spec/unit/pops/parser/parse_calls_spec.rb +93 -0
  398. data/spec/unit/pops/parser/parse_conditionals_spec.rb +159 -0
  399. data/spec/unit/pops/parser/parse_containers_spec.rb +175 -0
  400. data/spec/unit/pops/parser/parse_resource_spec.rb +228 -0
  401. data/spec/unit/pops/parser/parser_rspec_helper.rb +11 -0
  402. data/spec/unit/pops/parser/parser_spec.rb +15 -0
  403. data/spec/unit/pops/parser/rgen_sanitycheck_spec.rb +16 -0
  404. data/spec/unit/pops/transformer/transform_basic_expressions_spec.rb +243 -0
  405. data/spec/unit/pops/transformer/transform_calls_spec.rb +80 -0
  406. data/spec/unit/pops/transformer/transform_conditionals_spec.rb +132 -0
  407. data/spec/unit/pops/transformer/transform_containers_spec.rb +182 -0
  408. data/spec/unit/pops/transformer/transform_resource_spec.rb +185 -0
  409. data/spec/unit/pops/transformer/transformer_rspec_helper.rb +27 -0
  410. data/spec/unit/pops/visitor_spec.rb +94 -0
  411. data/spec/unit/property_spec.rb +11 -0
  412. data/spec/unit/provider/augeas/augeas_spec.rb +3 -0
  413. data/spec/unit/provider/cron/crontab_spec.rb +97 -7
  414. data/spec/unit/provider/cron/parsed_spec.rb +325 -0
  415. data/spec/unit/provider/exec/posix_spec.rb +1 -1
  416. data/spec/unit/provider/group/groupadd_spec.rb +33 -3
  417. data/spec/unit/provider/group/pw_spec.rb +5 -5
  418. data/spec/unit/provider/nameservice_spec.rb +304 -0
  419. data/spec/unit/provider/package/aix_spec.rb +53 -11
  420. data/spec/unit/provider/package/aptrpm_spec.rb +6 -0
  421. data/spec/unit/provider/package/gem_spec.rb +6 -11
  422. data/spec/unit/provider/package/nim_spec.rb +216 -7
  423. data/spec/unit/provider/package/opkg_spec.rb +180 -0
  424. data/spec/unit/provider/package/rpm_spec.rb +149 -3
  425. data/spec/unit/provider/package/yum_spec.rb +6 -5
  426. data/spec/unit/provider/parsedfile_spec.rb +122 -28
  427. data/spec/unit/provider/service/freebsd_spec.rb +18 -0
  428. data/spec/unit/provider/service/init_spec.rb +108 -87
  429. data/spec/unit/provider/service/launchd_spec.rb +2 -2
  430. data/spec/unit/provider/service/openwrt_spec.rb +109 -0
  431. data/spec/unit/provider/service/src_spec.rb +117 -41
  432. data/spec/unit/provider/service/systemd_spec.rb +125 -17
  433. data/spec/unit/provider/service/upstart_spec.rb +1 -1
  434. data/spec/unit/provider/user/aix_spec.rb +42 -0
  435. data/spec/unit/provider/user/directoryservice_spec.rb +1 -0
  436. data/spec/unit/provider/user/pw_spec.rb +24 -12
  437. data/spec/unit/provider/user/user_role_add_spec.rb +1 -1
  438. data/spec/unit/provider/user/useradd_spec.rb +179 -15
  439. data/spec/unit/resource/type_spec.rb +3 -3
  440. data/spec/unit/scheduler/job_spec.rb +79 -0
  441. data/spec/unit/scheduler/scheduler_spec.rb +129 -0
  442. data/spec/unit/scheduler/splay_job_spec.rb +35 -0
  443. data/spec/unit/ssl/base_spec.rb +3 -9
  444. data/spec/unit/ssl/certificate_authority_spec.rb +1 -0
  445. data/spec/unit/ssl/certificate_request_spec.rb +3 -1
  446. data/spec/unit/ssl/certificate_spec.rb +3 -1
  447. data/spec/unit/ssl/configuration_spec.rb +74 -0
  448. data/spec/unit/ssl/host_spec.rb +28 -7
  449. data/spec/unit/ssl/validator_spec.rb +311 -0
  450. data/spec/unit/transaction/event_manager_spec.rb +49 -0
  451. data/spec/unit/transaction/event_spec.rb +20 -5
  452. data/spec/unit/transaction/report_spec.rb +8 -0
  453. data/spec/unit/type/cron_spec.rb +9 -0
  454. data/spec/unit/type/exec_spec.rb +11 -0
  455. data/spec/unit/type/file/content_spec.rb +20 -20
  456. data/spec/unit/type/file/mode_spec.rb +6 -0
  457. data/spec/unit/type/file/source_spec.rb +9 -7
  458. data/spec/unit/type/file_spec.rb +22 -3
  459. data/spec/unit/type/service_spec.rb +34 -21
  460. data/spec/unit/type_spec.rb +46 -1
  461. data/spec/unit/util/backups_spec.rb +2 -2
  462. data/spec/unit/util/execution_spec.rb +4 -1
  463. data/spec/unit/util/filetype_spec.rb +6 -0
  464. data/spec/unit/util/monkey_patches_spec.rb +18 -0
  465. data/spec/unit/util/network_device/cisco/device_spec.rb +37 -0
  466. data/spec/unit/util/network_device/config_spec.rb +14 -0
  467. data/spec/unit/util/network_device_spec.rb +3 -3
  468. data/spec/unit/util/profiler/logging_spec.rb +81 -0
  469. data/spec/unit/util/profiler/none_spec.rb +12 -0
  470. data/spec/unit/util/profiler/object_counts_spec.rb +14 -0
  471. data/spec/unit/util/profiler/wall_clock_spec.rb +13 -0
  472. data/spec/unit/util/pson_spec.rb +5 -0
  473. data/spec/unit/util/ssl_spec.rb +51 -0
  474. data/spec/unit/util/windows/root_certs_spec.rb +15 -0
  475. data/spec/unit/util_spec.rb +28 -0
  476. metadata +2593 -2307
  477. data/spec/unit/module_tool/applications/application_spec.rb +0 -19
@@ -229,6 +229,11 @@ describe Puppet::Indirector::Indirection do
229
229
  @indirection.find("me").should equal(@instance)
230
230
  end
231
231
 
232
+ it "should return false if the instance is false" do
233
+ @terminus.expects(:find).returns(false)
234
+ @indirection.find("me").should equal(false)
235
+ end
236
+
232
237
  it "should set the expiration date on any instances without one set" do
233
238
  @terminus.stubs(:find).returns(@instance)
234
239
 
@@ -1,40 +1,27 @@
1
1
  #! /usr/bin/env ruby
2
2
  require 'spec_helper'
3
- require 'puppet/rails'
4
3
  require 'puppet/node/facts'
5
4
 
6
5
  describe "Puppet::Resource::ActiveRecord", :if => can_use_scratch_database? do
7
6
  include PuppetSpec::Files
8
7
 
9
8
  before :each do
9
+ require 'puppet/indirector/resource/active_record'
10
10
  setup_scratch_database
11
- Puppet[:storeconfigs] = true
12
11
  end
13
12
 
14
- subject {
15
- require 'puppet/indirector/resource/active_record'
16
- Puppet::Resource.indirection.terminus(:active_record)
17
- }
18
-
19
- it "should automatically initialize Rails" do
20
- # Other tests in the suite may have established the connection, which will
21
- # linger; the assertion is just to enforce our assumption about the call,
22
- # not because I *really* want to test ActiveRecord works. Better to have
23
- # an early failure than wonder why the test overall doesn't DTRT.
24
- ActiveRecord::Base.remove_connection
25
- ActiveRecord::Base.should_not be_connected
26
- subject.should be
27
- ActiveRecord::Base.should be_connected
13
+ after :each do
14
+ Puppet::Rails.teardown
28
15
  end
29
16
 
17
+ subject { Puppet::Resource.indirection.terminus(:active_record) }
18
+
30
19
  it "should issue a deprecation warning" do
31
20
  Puppet.expects(:deprecation_warning).with() { |msg| msg =~ /ActiveRecord-based storeconfigs and inventory are deprecated/ }
32
21
  Puppet::Resource::ActiveRecord.new
33
22
  end
34
23
 
35
24
  describe "#search" do
36
- before :each do Puppet::Rails.init end
37
-
38
25
  def search(type, host = 'default.local', filter = nil)
39
26
  args = { :host => host, :filter => filter }
40
27
  subject.search(Puppet::Resource.indirection.request(:search, type, nil, args))
@@ -79,10 +66,6 @@ describe "Puppet::Resource::ActiveRecord", :if => can_use_scratch_database? do
79
66
  end
80
67
 
81
68
  describe "#build_active_record_query" do
82
- before :each do
83
- Puppet::Rails.init
84
- end
85
-
86
69
  let :type do 'Notify' end
87
70
 
88
71
  def query(type, host, filter = nil)
@@ -79,6 +79,12 @@ describe Puppet::Indirector, "when registering an indirection" do
79
79
  before do
80
80
  @thingie = Class.new do
81
81
  extend Puppet::Indirector
82
+
83
+ # override Class#name, since we're not naming this ephemeral class
84
+ def self.name
85
+ 'Thingie'
86
+ end
87
+
82
88
  attr_reader :name
83
89
  def initialize(name)
84
90
  @name = name
@@ -108,7 +114,7 @@ describe Puppet::Indirector, "when registering an indirection" do
108
114
 
109
115
  it "should pass any provided options to the indirection during initialization" do
110
116
  klass = mock 'terminus class'
111
- Puppet::Indirector::Indirection.expects(:new).with(@thingie, :first, {:some => :options})
117
+ Puppet::Indirector::Indirection.expects(:new).with(@thingie, :first, {:some => :options, :indirected_class => 'Thingie'})
112
118
  @indirection = @thingie.indirects :first, :some => :options
113
119
  end
114
120
 
@@ -1,6 +1,6 @@
1
1
  #! /usr/bin/env ruby
2
2
  require 'spec_helper'
3
- require 'puppet/interface/action_builder'
3
+ require 'puppet/interface'
4
4
  require 'puppet/network/format_handler'
5
5
 
6
6
  describe Puppet::Interface::ActionBuilder do
@@ -1,9 +1,7 @@
1
1
  #! /usr/bin/env ruby
2
2
  require 'spec_helper'
3
3
 
4
- # This is entirely an internal class for Interface, so we have to load it instead of our class.
5
4
  require 'puppet/interface'
6
- require 'puppet/face'
7
5
 
8
6
  class ActionManagerTester
9
7
  include Puppet::Interface::ActionManager
@@ -1,6 +1,6 @@
1
1
  #! /usr/bin/env ruby
2
2
  require 'spec_helper'
3
- require 'puppet/interface/action'
3
+ require 'puppet/interface'
4
4
 
5
5
  describe Puppet::Interface::Action do
6
6
  describe "when validating the action name" do
@@ -1,8 +1,6 @@
1
1
  #! /usr/bin/env ruby
2
2
  require 'spec_helper'
3
3
  require 'puppet/interface'
4
- require 'puppet/interface/option'
5
- require 'puppet/interface/documentation'
6
4
 
7
5
  class Puppet::Interface::TinyDocs::Test
8
6
  include Puppet::Interface::TinyDocs
@@ -2,7 +2,7 @@
2
2
  require 'spec_helper'
3
3
 
4
4
  require 'tmpdir'
5
- require 'puppet/interface/face_collection'
5
+ require 'puppet/interface'
6
6
 
7
7
  describe Puppet::Interface::FaceCollection do
8
8
  # To avoid cross-pollution we have to save and restore both the hash
@@ -1,4 +1,4 @@
1
- require 'puppet/interface/option_builder'
1
+ require 'puppet/interface'
2
2
 
3
3
  describe Puppet::Interface::OptionBuilder do
4
4
  let :face do Puppet::Interface.new(:option_builder_testing, '0.0.1') end
@@ -1,5 +1,4 @@
1
1
  require 'puppet/interface'
2
- require 'puppet/interface/option'
3
2
 
4
3
  describe Puppet::Interface::Option do
5
4
  let :face do Puppet::Interface.new(:option_testing, '0.0.1') end
@@ -592,30 +592,28 @@ describe Puppet::Module do
592
592
  end
593
593
 
594
594
  it "should be able to tell if there are local changes" do
595
- pending("porting to Windows", :if => Puppet.features.microsoft_windows?) do
596
- modpath = tmpdir('modpath')
597
- foo_checksum = 'acbd18db4cc2f85cedef654fccc4a4d8'
598
- checksummed_module = PuppetSpec::Modules.create(
599
- 'changed',
600
- modpath,
601
- :metadata => {
602
- :checksums => {
603
- "foo" => foo_checksum,
604
- }
595
+ modpath = tmpdir('modpath')
596
+ foo_checksum = 'acbd18db4cc2f85cedef654fccc4a4d8'
597
+ checksummed_module = PuppetSpec::Modules.create(
598
+ 'changed',
599
+ modpath,
600
+ :metadata => {
601
+ :checksums => {
602
+ "foo" => foo_checksum,
605
603
  }
606
- )
604
+ }
605
+ )
607
606
 
608
- foo_path = Pathname.new(File.join(checksummed_module.path, 'foo'))
607
+ foo_path = Pathname.new(File.join(checksummed_module.path, 'foo'))
609
608
 
610
- IO.binwrite(foo_path, 'notfoo')
611
- Puppet::ModuleTool::Checksums.new(foo_path).checksum(foo_path).should_not == foo_checksum
612
- checksummed_module.has_local_changes?.should be_true
609
+ IO.binwrite(foo_path, 'notfoo')
610
+ Puppet::ModuleTool::Checksums.new(foo_path).checksum(foo_path).should_not == foo_checksum
611
+ checksummed_module.has_local_changes?.should be_true
613
612
 
614
- IO.binwrite(foo_path, 'foo')
613
+ IO.binwrite(foo_path, 'foo')
615
614
 
616
- Puppet::ModuleTool::Checksums.new(foo_path).checksum(foo_path).should == foo_checksum
617
- checksummed_module.has_local_changes?.should be_false
618
- end
615
+ Puppet::ModuleTool::Checksums.new(foo_path).checksum(foo_path).should == foo_checksum
616
+ checksummed_module.has_local_changes?.should be_false
619
617
  end
620
618
 
621
619
  it "should know what other modules require it" do
@@ -12,9 +12,7 @@ describe Puppet::ModuleTool::Applications::Application do
12
12
 
13
13
  good_versions.each do |ver|
14
14
  it "should accept version string #{ver}" do
15
- pending("porting to Windows", :if => Puppet.features.microsoft_windows?) do
16
- app.parse_filename("puppetlabs-ntp-#{ver}")
17
- end
15
+ app.parse_filename("puppetlabs-ntp-#{ver}")
18
16
  end
19
17
  end
20
18
 
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+ require 'puppet/module_tool/applications'
3
+ require 'puppet_spec/modules'
4
+
5
+ describe Puppet::ModuleTool::Applications::Builder do
6
+ include PuppetSpec::Files
7
+
8
+ let(:path) { tmpdir("working_dir") }
9
+ let(:module_name) { 'myusername-mytarball' }
10
+ let(:version) { '0.0.1' }
11
+ let(:release_name) { "#{module_name}-#{version}" }
12
+ let(:tarball) { File.join(path, 'pkg', release_name) + ".tar.gz" }
13
+ let(:builder) { Puppet::ModuleTool::Applications::Builder.new(path) }
14
+
15
+ before :each do
16
+ File.open(File.join(path, 'Modulefile'), 'w') do |f|
17
+ f.write(<<EOM)
18
+ name '#{module_name}'
19
+ version '#{version}'
20
+ source 'http://github.com/testing/#{module_name}'
21
+ author 'testing'
22
+ license 'Apache License Version 2.0'
23
+ summary 'Puppet testing module'
24
+ description 'This module can be used for basic testing'
25
+ project_page 'http://github.com/testing/#{module_name}'
26
+ EOM
27
+ end
28
+ end
29
+
30
+ it "should attempt to create a module relative to the pkg directory" do
31
+ tarrer = mock('tarrer')
32
+ Puppet::ModuleTool::Tar.expects(:instance).with(module_name).returns(tarrer)
33
+ Dir.expects(:chdir).with(File.join(path, 'pkg')).yields
34
+ tarrer.expects(:pack).with(release_name, tarball)
35
+
36
+ builder.run
37
+ end
38
+ end
@@ -0,0 +1,134 @@
1
+ require 'spec_helper'
2
+ require 'puppet/module_tool/applications'
3
+
4
+ describe Puppet::ModuleTool::Applications::Checksummer, :unless => Puppet.features.microsoft_windows? do
5
+ subject {
6
+ Puppet::ModuleTool::Applications::Checksummer.new(module_install_path)
7
+ }
8
+
9
+ let(:module_install_path) { 'foo' }
10
+ let(:module_metadata_file) { 'metadata.json' }
11
+
12
+ let(:module_install_pathname) {
13
+ module_install_pathname = mock()
14
+ Pathname.expects(:new).with(module_install_path).\
15
+ returns(module_install_pathname)
16
+ module_install_pathname
17
+ }
18
+
19
+ def stub_module_file_pathname(relative_path, present)
20
+ module_file_pathname = mock() do
21
+ expects(:exist?).with().returns(present)
22
+ end
23
+
24
+ module_install_pathname.expects(:+).with(relative_path).\
25
+ returns(module_file_pathname)
26
+
27
+ module_file_pathname
28
+ end
29
+
30
+ context %q{when metadata.json doesn't exist in the specified module install path} do
31
+ before(:each) do
32
+ stub_module_file_pathname(module_metadata_file, false)
33
+ subject.expects(:metadata_file).with().\
34
+ returns(module_install_pathname + module_metadata_file)
35
+ end
36
+
37
+ it 'raises an ArgumentError exception' do
38
+ lambda {
39
+ subject.run
40
+ }.should raise_error(ArgumentError, 'No metadata.json found.')
41
+ end
42
+ end
43
+
44
+ context 'when metadata.json exists in the specified module install path' do
45
+ module_files = {
46
+ 'README' => '1',
47
+ 'CHANGELOG' => '2',
48
+ 'Modulefile' => '3',
49
+ }
50
+ let(:module_files) { module_files }
51
+ let(:checksum_computer) {
52
+ checksum_computer = mock()
53
+ Puppet::ModuleTool::Checksums.\
54
+ expects(:new).with(module_install_pathname).\
55
+ returns(checksum_computer)
56
+ checksum_computer
57
+ }
58
+ # all possible combinations (of all lengths) of the module files
59
+ module_files_combination =
60
+ 1.upto(module_files.size()).inject([]) { |module_files_combination, n|
61
+ module_files.keys.combination(n) { |combination|
62
+ module_files_combination << combination
63
+ }
64
+ module_files_combination
65
+ }
66
+
67
+ def stub_module_file_pathname_with_checksum(relative_path, checksum)
68
+ module_file_pathname =
69
+ stub_module_file_pathname(relative_path, present = !checksum.nil?)
70
+ # mock the call of Puppet::ModuleTool::Checksums#checksum
71
+ expectation = checksum_computer.\
72
+ expects(:checksum).with(module_file_pathname)
73
+ if present
74
+ # return the cheksum directly
75
+ expectation.returns(checksum)
76
+ else
77
+ # if the file is not present, then the method should not be called
78
+ expectation.times(0)
79
+ end
80
+ module_file_pathname
81
+ end
82
+
83
+ def stub_module_files(overrides = {})
84
+ overrides.reject! { |key, value|
85
+ !module_files.include?(key)
86
+ }
87
+ module_files.merge(overrides).each { |relative_path, checksum|
88
+ stub_module_file_pathname_with_checksum(relative_path, checksum)
89
+ }
90
+ end
91
+
92
+ before(:each) do
93
+ stub_module_file_pathname(module_metadata_file, true)
94
+ subject.expects(:metadata_file).with().\
95
+ returns(module_install_pathname + module_metadata_file)
96
+ subject.expects(:metadata).with().\
97
+ returns({ 'checksums' => module_files })
98
+ end
99
+
100
+ module_files_combination.each do |removed_files|
101
+ it "reports removed file(s) #{removed_files.inspect}" do
102
+ stub_module_files(
103
+ removed_files.inject({}) { |overrides, removed_file|
104
+ overrides[removed_file] = nil
105
+ overrides
106
+ }
107
+ )
108
+
109
+ subject.run.should == removed_files
110
+ end
111
+ end
112
+
113
+ module_files_combination.each do |modified_files|
114
+ it "reports modified file(s) #{modified_files.inspect}" do
115
+ stub_module_files(
116
+ modified_files.inject({}) { |overrides, modified_file|
117
+ modified_checksum = module_files[modified_file].to_s.succ
118
+ modified_checksum = ' ' if modified_checksum.empty?
119
+ overrides[modified_file] = modified_checksum
120
+ overrides
121
+ }
122
+ )
123
+
124
+ subject.run.should == modified_files
125
+ end
126
+ end
127
+
128
+ it 'does not report unmodified files' do
129
+ stub_module_files()
130
+
131
+ subject.run.should == []
132
+ end
133
+ end
134
+ end
@@ -3,7 +3,7 @@ require 'puppet/module_tool/applications'
3
3
  require 'puppet_spec/modules'
4
4
  require 'semver'
5
5
 
6
- describe Puppet::ModuleTool::Applications::Installer, :fails_on_windows => true do
6
+ describe Puppet::ModuleTool::Applications::Installer, :unless => Puppet.features.microsoft_windows? do
7
7
  include PuppetSpec::Files
8
8
 
9
9
  before do
@@ -80,18 +80,14 @@ describe Puppet::ModuleTool::Applications::Installer, :fails_on_windows => true
80
80
 
81
81
  describe "the behavior of .is_module_package?" do
82
82
  it "should return true when file is a module package" do
83
- pending("porting to Windows", :if => Puppet.features.microsoft_windows?) do
84
- installer = installer_class.new("foo", forge, install_dir, options)
85
- installer.send(:is_module_package?, stdlib_pkg).should be_true
86
- end
83
+ installer = installer_class.new("foo", forge, install_dir, options)
84
+ installer.send(:is_module_package?, stdlib_pkg).should be_true
87
85
  end
88
86
 
89
87
  it "should return false when file is not a module package" do
90
- pending("porting to Windows", :if => Puppet.features.microsoft_windows?) do
91
- installer = installer_class.new("foo", forge, install_dir, options)
92
- installer.send(:is_module_package?, "pmtacceptance-apollo-0.0.2.tar").
93
- should be_false
94
- end
88
+ installer = installer_class.new("foo", forge, install_dir, options)
89
+ installer.send(:is_module_package?, "pmtacceptance-apollo-0.0.2.tar").
90
+ should be_false
95
91
  end
96
92
  end
97
93
 
@@ -102,15 +98,13 @@ describe Puppet::ModuleTool::Applications::Installer, :fails_on_windows => true
102
98
  end
103
99
 
104
100
  it "should install the requested module" do
105
- pending("porting to Windows", :if => Puppet.features.microsoft_windows?) do
106
- Puppet::ModuleTool::Applications::Unpacker.expects(:new).
107
- with('/fake_cache/pmtacceptance-stdlib-1.0.0.tar.gz', options).
108
- returns(unpacker)
109
- results = installer_class.run('pmtacceptance-stdlib', forge, install_dir, options)
110
- results[:installed_modules].length == 1
111
- results[:installed_modules][0][:module].should == "pmtacceptance-stdlib"
112
- results[:installed_modules][0][:version][:vstring].should == "1.0.0"
113
- end
101
+ Puppet::ModuleTool::Applications::Unpacker.expects(:new).
102
+ with('/fake_cache/pmtacceptance-stdlib-1.0.0.tar.gz', options).
103
+ returns(unpacker)
104
+ results = installer_class.run('pmtacceptance-stdlib', forge, install_dir, options)
105
+ results[:installed_modules].length == 1
106
+ results[:installed_modules][0][:module].should == "pmtacceptance-stdlib"
107
+ results[:installed_modules][0][:version][:vstring].should == "1.0.0"
114
108
  end
115
109
 
116
110
  context "should check the target directory" do
@@ -129,98 +123,85 @@ describe Puppet::ModuleTool::Applications::Installer, :fails_on_windows => true
129
123
  end
130
124
 
131
125
  it "(#15202) prepares the install directory" do
132
- pending("porting to Windows", :if => Puppet.features.microsoft_windows?) do
133
- expect_normal_unpacker
134
- install_dir.expects(:prepare).with("pmtacceptance-stdlib", "latest")
126
+ expect_normal_unpacker
127
+ install_dir.expects(:prepare).with("pmtacceptance-stdlib", "latest")
135
128
 
136
- results = installer.run
129
+ results = installer.run
137
130
 
138
- results[:installed_modules].length.should eq 1
139
- results[:installed_modules][0][:module].should == "pmtacceptance-stdlib"
140
- results[:installed_modules][0][:version][:vstring].should == "1.0.0"
141
- end
131
+ results[:installed_modules].length.should eq 1
132
+ results[:installed_modules][0][:module].should == "pmtacceptance-stdlib"
133
+ results[:installed_modules][0][:version][:vstring].should == "1.0.0"
142
134
  end
143
135
 
144
136
  it "(#15202) reports an error when the install directory cannot be prepared" do
145
- pending("porting to Windows", :if => Puppet.features.microsoft_windows?) do
146
- install_dir.expects(:prepare).with("pmtacceptance-stdlib", "latest").
147
- raises(Puppet::ModuleTool::Errors::PermissionDeniedCreateInstallDirectoryError.new("original", :module => "pmtacceptance-stdlib"))
137
+ install_dir.expects(:prepare).with("pmtacceptance-stdlib", "latest").
138
+ raises(Puppet::ModuleTool::Errors::PermissionDeniedCreateInstallDirectoryError.new("original", :module => "pmtacceptance-stdlib"))
148
139
 
149
- results = installer.run
140
+ results = installer.run
150
141
 
151
- results[:result].should == :failure
152
- results[:error][:oneline].should =~ /Permission is denied/
153
- end
142
+ results[:result].should == :failure
143
+ results[:error][:oneline].should =~ /Permission is denied/
154
144
  end
155
145
  end
156
146
 
157
147
  context "when the requested module has dependencies" do
158
148
  it "should install dependencies" do
159
- pending("porting to Windows", :if => Puppet.features.microsoft_windows?) do
160
- Puppet::ModuleTool::Applications::Unpacker.expects(:new).
161
- with('/fake_cache/pmtacceptance-stdlib-1.0.0.tar.gz', options).
162
- returns(unpacker)
163
- Puppet::ModuleTool::Applications::Unpacker.expects(:new).
164
- with('/fake_cache/pmtacceptance-apollo-0.0.2.tar.gz', options).
165
- returns(unpacker)
166
- Puppet::ModuleTool::Applications::Unpacker.expects(:new).
167
- with('/fake_cache/pmtacceptance-java-1.7.1.tar.gz', options).
168
- returns(unpacker)
169
-
170
- results = installer_class.run('pmtacceptance-apollo', forge, install_dir, options)
171
- installed_dependencies = results[:installed_modules][0][:dependencies]
172
-
173
- dependencies = installed_dependencies.inject({}) do |result, dep|
174
- result[dep[:module]] = dep[:version][:vstring]
175
- result
176
- end
177
-
178
- dependencies.length.should == 2
179
- dependencies['pmtacceptance-java'].should == '1.7.1'
180
- dependencies['pmtacceptance-stdlib'].should == '1.0.0'
149
+ Puppet::ModuleTool::Applications::Unpacker.expects(:new).
150
+ with('/fake_cache/pmtacceptance-stdlib-1.0.0.tar.gz', options).
151
+ returns(unpacker)
152
+ Puppet::ModuleTool::Applications::Unpacker.expects(:new).
153
+ with('/fake_cache/pmtacceptance-apollo-0.0.2.tar.gz', options).
154
+ returns(unpacker)
155
+ Puppet::ModuleTool::Applications::Unpacker.expects(:new).
156
+ with('/fake_cache/pmtacceptance-java-1.7.1.tar.gz', options).
157
+ returns(unpacker)
158
+
159
+ results = installer_class.run('pmtacceptance-apollo', forge, install_dir, options)
160
+ installed_dependencies = results[:installed_modules][0][:dependencies]
161
+
162
+ dependencies = installed_dependencies.inject({}) do |result, dep|
163
+ result[dep[:module]] = dep[:version][:vstring]
164
+ result
181
165
  end
166
+
167
+ dependencies.length.should == 2
168
+ dependencies['pmtacceptance-java'].should == '1.7.1'
169
+ dependencies['pmtacceptance-stdlib'].should == '1.0.0'
182
170
  end
183
171
 
184
172
  it "should install requested module if the '--force' flag is used" do
185
- pending("porting to Windows", :if => Puppet.features.microsoft_windows?) do
186
- options = { :force => true, :target_dir => modpath1 }
187
- Puppet::ModuleTool::Applications::Unpacker.expects(:new).
188
- with('/fake_cache/pmtacceptance-apollo-0.0.2.tar.gz', options).
189
- returns(unpacker)
190
- results = installer_class.run('pmtacceptance-apollo', forge, install_dir, options)
191
- results[:installed_modules][0][:module].should == "pmtacceptance-apollo"
192
- end
173
+ options = { :force => true, :target_dir => modpath1 }
174
+ Puppet::ModuleTool::Applications::Unpacker.expects(:new).
175
+ with('/fake_cache/pmtacceptance-apollo-0.0.2.tar.gz', options).
176
+ returns(unpacker)
177
+ results = installer_class.run('pmtacceptance-apollo', forge, install_dir, options)
178
+ results[:installed_modules][0][:module].should == "pmtacceptance-apollo"
193
179
  end
194
180
 
195
181
  it "should not install dependencies if the '--force' flag is used" do
196
- pending("porting to Windows", :if => Puppet.features.microsoft_windows?) do
197
- options = { :force => true, :target_dir => modpath1 }
198
- Puppet::ModuleTool::Applications::Unpacker.expects(:new).
199
- with('/fake_cache/pmtacceptance-apollo-0.0.2.tar.gz', options).
200
- returns(unpacker)
201
- results = installer_class.run('pmtacceptance-apollo', forge, install_dir, options)
202
- dependencies = results[:installed_modules][0][:dependencies]
203
- dependencies.should == []
204
- end
182
+ options = { :force => true, :target_dir => modpath1 }
183
+ Puppet::ModuleTool::Applications::Unpacker.expects(:new).
184
+ with('/fake_cache/pmtacceptance-apollo-0.0.2.tar.gz', options).
185
+ returns(unpacker)
186
+ results = installer_class.run('pmtacceptance-apollo', forge, install_dir, options)
187
+ dependencies = results[:installed_modules][0][:dependencies]
188
+ dependencies.should == []
205
189
  end
206
190
 
207
191
  it "should not install dependencies if the '--ignore-dependencies' flag is used" do
208
- pending("porting to Windows", :if => Puppet.features.microsoft_windows?) do
209
- options = { :ignore_dependencies => true, :target_dir => modpath1 }
210
- Puppet::ModuleTool::Applications::Unpacker.expects(:new).
211
- with('/fake_cache/pmtacceptance-apollo-0.0.2.tar.gz', options).
212
- returns(unpacker)
213
- results = installer_class.run('pmtacceptance-apollo', forge, install_dir, options)
214
- dependencies = results[:installed_modules][0][:dependencies]
215
- dependencies.should == []
216
- end
192
+ options = { :ignore_dependencies => true, :target_dir => modpath1 }
193
+ Puppet::ModuleTool::Applications::Unpacker.expects(:new).
194
+ with('/fake_cache/pmtacceptance-apollo-0.0.2.tar.gz', options).
195
+ returns(unpacker)
196
+ results = installer_class.run('pmtacceptance-apollo', forge, install_dir, options)
197
+ dependencies = results[:installed_modules][0][:dependencies]
198
+ dependencies.should == []
217
199
  end
218
200
 
219
201
  it "should set an error if dependencies can't be resolved" do
220
- pending("porting to Windows", :if => Puppet.features.microsoft_windows?) do
221
- options = { :version => '0.0.1', :target_dir => modpath1 }
222
- oneline = "'pmtacceptance-apollo' (v0.0.1) requested; Invalid dependency cycle"
223
- multiline = <<-MSG.strip
202
+ options = { :version => '0.0.1', :target_dir => modpath1 }
203
+ oneline = "'pmtacceptance-apollo' (v0.0.1) requested; Invalid dependency cycle"
204
+ multiline = <<-MSG.strip
224
205
  Could not install module 'pmtacceptance-apollo' (v0.0.1)
225
206
  No version of 'pmtacceptance-stdlib' will satisfy dependencies
226
207
  You specified 'pmtacceptance-apollo' (v0.0.1),
@@ -229,11 +210,10 @@ Could not install module 'pmtacceptance-apollo' (v0.0.1)
229
210
  Use `puppet module install --force` to install this module anyway
230
211
  MSG
231
212
 
232
- results = installer_class.run('pmtacceptance-apollo', forge, install_dir, options)
233
- results[:result].should == :failure
234
- results[:error][:oneline].should == oneline
235
- results[:error][:multiline].should == multiline
236
- end
213
+ results = installer_class.run('pmtacceptance-apollo', forge, install_dir, options)
214
+ results[:result].should == :failure
215
+ results[:error][:oneline].should == oneline
216
+ results[:error][:multiline].should == multiline
237
217
  end
238
218
  end
239
219