vagrant-unbundled 1.9.7.1 → 1.9.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (280) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +36 -0
  3. data/Gemfile.lock +10 -6
  4. data/contrib/bash/completion.sh +1 -1
  5. data/contrib/sudoers/linux-ubuntu +3 -4
  6. data/lib/vagrant/errors.rb +8 -0
  7. data/lib/vagrant/machine.rb +2 -0
  8. data/lib/vagrant/util/platform.rb +1 -1
  9. data/lib/vagrant/util/powershell.rb +42 -13
  10. data/lib/vagrant/util/safe_exec.rb +13 -2
  11. data/lib/vagrant/util/ssh.rb +11 -1
  12. data/plugins/commands/box/command/update.rb +12 -7
  13. data/plugins/commands/login/client.rb +15 -6
  14. data/plugins/commands/login/command.rb +13 -3
  15. data/plugins/commands/up/command.rb +9 -0
  16. data/plugins/commands/validate/command.rb +4 -4
  17. data/plugins/guests/darwin/cap/shell_expand_guest_path.rb +2 -2
  18. data/plugins/guests/freebsd/cap/configure_networks.rb +1 -1
  19. data/plugins/guests/freebsd/cap/shell_expand_guest_path.rb +2 -2
  20. data/plugins/guests/linux/cap/shell_expand_guest_path.rb +2 -2
  21. data/plugins/guests/netbsd/cap/shell_expand_guest_path.rb +2 -2
  22. data/plugins/guests/openbsd/cap/shell_expand_guest_path.rb +2 -2
  23. data/plugins/guests/windows/cap/public_key.rb +21 -45
  24. data/plugins/kernel_v2/config/ssh_connect.rb +3 -0
  25. data/plugins/providers/docker/config.rb +4 -0
  26. data/plugins/providers/docker/driver/compose.rb +11 -4
  27. data/plugins/providers/hyperv/action/wait_for_ip_address.rb +15 -11
  28. data/plugins/providers/hyperv/scripts/get_network_config.ps1 +24 -9
  29. data/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +18 -0
  30. data/plugins/provisioners/ansible/provisioner/host.rb +1 -1
  31. data/plugins/provisioners/chef/cap/debian/chef_install.rb +2 -2
  32. data/plugins/provisioners/chef/cap/freebsd/chef_install.rb +2 -2
  33. data/plugins/provisioners/chef/cap/omnios/chef_install.rb +2 -2
  34. data/plugins/provisioners/chef/cap/redhat/chef_install.rb +2 -2
  35. data/plugins/provisioners/chef/cap/suse/chef_install.rb +2 -2
  36. data/plugins/provisioners/chef/cap/windows/chef_install.rb +2 -2
  37. data/plugins/provisioners/chef/config/base.rb +17 -0
  38. data/plugins/provisioners/chef/config/chef_zero.rb +7 -0
  39. data/plugins/provisioners/chef/installer.rb +8 -7
  40. data/plugins/provisioners/chef/omnibus.rb +4 -6
  41. data/plugins/provisioners/chef/provisioner/base.rb +1 -0
  42. data/plugins/provisioners/chef/provisioner/chef_solo.rb +2 -1
  43. data/plugins/provisioners/file/provisioner.rb +18 -2
  44. data/plugins/provisioners/puppet/provisioner/puppet.rb +0 -2
  45. data/plugins/provisioners/salt/bootstrap-salt.sh +9 -5
  46. data/plugins/provisioners/shell/provisioner.rb +1 -1
  47. data/plugins/synced_folders/rsync/command/rsync_auto.rb +6 -1
  48. data/plugins/synced_folders/rsync/helper.rb +10 -0
  49. data/templates/locales/en.yml +27 -1
  50. data/templates/locales/providers_docker.yml +2 -0
  51. data/test/unit/base.rb +1 -3
  52. data/test/unit/plugins/commands/box/command/add_test.rb +3 -3
  53. data/test/unit/plugins/commands/box/command/remove_test.rb +6 -6
  54. data/test/unit/plugins/commands/box/command/repackage_test.rb +2 -4
  55. data/test/unit/plugins/commands/box/command/update_test.rb +36 -14
  56. data/test/unit/plugins/commands/init/command_test.rb +1 -1
  57. data/test/unit/plugins/commands/list-commands/command_test.rb +2 -2
  58. data/test/unit/plugins/commands/login/client_test.rb +5 -1
  59. data/test/unit/plugins/commands/package/command_test.rb +1 -1
  60. data/test/unit/plugins/commands/plugin/action/expunge_plugins_test.rb +1 -1
  61. data/test/unit/plugins/commands/plugin/action/install_gem_test.rb +3 -3
  62. data/test/unit/plugins/commands/plugin/action/plugin_exists_check_test.rb +3 -3
  63. data/test/unit/plugins/commands/plugin/action/uninstall_plugin_test.rb +1 -1
  64. data/test/unit/plugins/commands/plugin/action/update_gems_test.rb +2 -2
  65. data/test/unit/plugins/commands/port/command_test.rb +3 -3
  66. data/test/unit/plugins/commands/push/command_test.rb +1 -1
  67. data/test/unit/plugins/commands/snapshot/command/list_test.rb +2 -3
  68. data/test/unit/plugins/commands/ssh_config/command_test.rb +1 -1
  69. data/test/unit/plugins/commands/up/command_test.rb +69 -2
  70. data/test/unit/plugins/commands/validate/command_test.rb +47 -1
  71. data/test/unit/plugins/communicators/ssh/communicator_test.rb +5 -5
  72. data/test/unit/plugins/communicators/winrm/communicator_test.rb +6 -6
  73. data/test/unit/plugins/communicators/winrm/helper_test.rb +24 -23
  74. data/test/unit/plugins/communicators/winssh/communicator_test.rb +5 -5
  75. data/test/unit/plugins/guests/darwin/cap/shell_expand_guest_path_test.rb +43 -0
  76. data/test/unit/plugins/guests/freebsd/cap/configure_networks_test.rb +1 -1
  77. data/test/unit/plugins/guests/freebsd/cap/shell_expand_guest_path_test.rb +44 -0
  78. data/test/unit/plugins/guests/linux/cap/shell_expand_guest_path_test.rb +43 -0
  79. data/test/unit/plugins/guests/netbsd/cap/shell_expand_guest_path_test.rb +43 -0
  80. data/test/unit/plugins/guests/omnios/cap/mount_nfs_folder_test.rb +1 -3
  81. data/test/unit/plugins/guests/openbsd/cap/shell_expand_guest_path_test.rb +43 -0
  82. data/test/unit/plugins/guests/smartos/cap/change_host_name_test.rb +2 -2
  83. data/test/unit/plugins/guests/smartos/cap/configure_networks_test.rb +2 -2
  84. data/test/unit/plugins/guests/smartos/cap/halt_test.rb +2 -2
  85. data/test/unit/plugins/guests/smartos/cap/insert_public_key_test.rb +1 -1
  86. data/test/unit/plugins/guests/smartos/cap/mount_nfs_test.rb +2 -2
  87. data/test/unit/plugins/guests/smartos/cap/rsync_test.rb +2 -2
  88. data/test/unit/plugins/guests/windows/cap/insert_public_key_test.rb +2 -2
  89. data/test/unit/plugins/guests/windows/cap/remove_public_key_test.rb +4 -3
  90. data/test/unit/plugins/guests/windows/config_test.rb +1 -1
  91. data/test/unit/plugins/guests/windows/guest_network_test.rb +2 -2
  92. data/test/unit/plugins/hosts/linux/cap/nfs_test.rb +2 -0
  93. data/test/unit/plugins/kernel_v2/config/push_test.rb +1 -1
  94. data/test/unit/plugins/kernel_v2/config/vm_test.rb +7 -7
  95. data/test/unit/plugins/providers/docker/action/create_test.rb +1 -1
  96. data/test/unit/plugins/providers/docker/command/exec_test.rb +1 -1
  97. data/test/unit/plugins/providers/docker/config_test.rb +23 -4
  98. data/test/unit/plugins/providers/docker/driver_compose_test.rb +60 -30
  99. data/test/unit/plugins/providers/docker/driver_test.rb +31 -31
  100. data/test/unit/plugins/providers/docker/synced_folder_test.rb +3 -3
  101. data/test/unit/plugins/providers/hyperv/provider_test.rb +19 -19
  102. data/test/unit/plugins/providers/virtualbox/action/network_fix_ipv6_test.rb +2 -2
  103. data/test/unit/plugins/providers/virtualbox/action/network_test.rb +1 -1
  104. data/test/unit/plugins/providers/virtualbox/action/prepare_nfs_settings_test.rb +34 -8
  105. data/test/unit/plugins/providers/virtualbox/action/prepare_nfs_valid_ids_test.rb +3 -3
  106. data/test/unit/plugins/providers/virtualbox/cap_test.rb +2 -2
  107. data/test/unit/plugins/providers/virtualbox/config_test.rb +6 -6
  108. data/test/unit/plugins/providers/virtualbox/synced_folder_test.rb +6 -8
  109. data/test/unit/plugins/provisioners/ansible/config/guest_test.rb +1 -1
  110. data/test/unit/plugins/provisioners/ansible/config/host_test.rb +4 -4
  111. data/test/unit/plugins/provisioners/ansible/config/shared.rb +2 -2
  112. data/test/unit/plugins/provisioners/ansible/provisioner_test.rb +165 -157
  113. data/test/unit/plugins/provisioners/chef/command_builder_test.rb +2 -2
  114. data/test/unit/plugins/provisioners/chef/config/base_test.rb +13 -0
  115. data/test/unit/plugins/provisioners/chef/config/chef_zero_test.rb +11 -0
  116. data/test/unit/plugins/provisioners/chef/omnibus_test.rb +17 -7
  117. data/test/unit/plugins/provisioners/docker/config_test.rb +2 -1
  118. data/test/unit/plugins/provisioners/docker/provisioner_test.rb +13 -13
  119. data/test/unit/plugins/provisioners/file/provisioner_test.rb +32 -14
  120. data/test/unit/plugins/provisioners/puppet/provisioner/puppet_test.rb +51 -0
  121. data/test/unit/plugins/provisioners/salt/provisioner_test.rb +5 -5
  122. data/test/unit/plugins/provisioners/shell/provisioner_test.rb +35 -4
  123. data/test/unit/plugins/pushes/ftp/adapter_test.rb +1 -0
  124. data/test/unit/plugins/synced_folders/nfs/action_cleanup_test.rb +1 -1
  125. data/test/unit/plugins/synced_folders/nfs/config_test.rb +1 -1
  126. data/test/unit/plugins/synced_folders/rsync/command/rsync_auto_test.rb +44 -12
  127. data/test/unit/plugins/synced_folders/rsync/command/rsync_test.rb +5 -5
  128. data/test/unit/plugins/synced_folders/rsync/helper_test.rb +47 -29
  129. data/test/unit/plugins/synced_folders/rsync/synced_folder_test.rb +5 -5
  130. data/test/unit/vagrant/action/builtin/box_add_test.rb +27 -27
  131. data/test/unit/vagrant/action/builtin/box_check_outdated_test.rb +10 -10
  132. data/test/unit/vagrant/action/builtin/box_remove_test.rb +15 -15
  133. data/test/unit/vagrant/action/builtin/confirm_test.rb +1 -1
  134. data/test/unit/vagrant/action/builtin/graceful_halt_test.rb +2 -2
  135. data/test/unit/vagrant/action/builtin/handle_box_test.rb +8 -8
  136. data/test/unit/vagrant/action/builtin/handle_forwarded_port_collisions_test.rb +1 -1
  137. data/test/unit/vagrant/action/builtin/is_env_set_test.rb +2 -2
  138. data/test/unit/vagrant/action/builtin/is_state_test.rb +6 -6
  139. data/test/unit/vagrant/action/builtin/mixin_synced_folders_test.rb +6 -6
  140. data/test/unit/vagrant/action/builtin/provision_test.rb +1 -1
  141. data/test/unit/vagrant/action/builtin/provisioner_cleanup_test.rb +1 -1
  142. data/test/unit/vagrant/action/builtin/synced_folder_cleanup_test.rb +6 -6
  143. data/test/unit/vagrant/action/builtin/synced_folders_test.rb +3 -3
  144. data/test/unit/vagrant/batch_action_test.rb +2 -2
  145. data/test/unit/vagrant/box_collection_test.rb +1 -1
  146. data/test/unit/vagrant/box_test.rb +6 -6
  147. data/test/unit/vagrant/capability_host_test.rb +3 -3
  148. data/test/unit/vagrant/cli_test.rb +3 -3
  149. data/test/unit/vagrant/environment_test.rb +21 -20
  150. data/test/unit/vagrant/guest_test.rb +7 -7
  151. data/test/unit/vagrant/machine_index_test.rb +4 -4
  152. data/test/unit/vagrant/machine_test.rb +28 -17
  153. data/test/unit/vagrant/plugin/manager_test.rb +12 -12
  154. data/test/unit/vagrant/plugin/state_file_test.rb +2 -2
  155. data/test/unit/vagrant/plugin/v1/command_test.rb +9 -8
  156. data/test/unit/vagrant/plugin/v2/command_test.rb +54 -43
  157. data/test/unit/vagrant/plugin/v2/plugin_test.rb +4 -3
  158. data/test/unit/vagrant/plugin/v2/provider_test.rb +3 -3
  159. data/test/unit/vagrant/shared_helpers_test.rb +6 -6
  160. data/test/unit/vagrant/ui_test.rb +21 -21
  161. data/test/unit/vagrant/util/downloader_test.rb +7 -7
  162. data/test/unit/vagrant/util/ssh_test.rb +41 -5
  163. data/test/unit/vagrant/util/subprocess_test.rb +7 -7
  164. data/test/unit/vagrant_test.rb +9 -9
  165. data/vagrant.gemspec +3 -2
  166. data/vendor/bundle/ruby/2.4.0/bundler/gems/vagrant-spec-af86757912f7/vagrant-spec.gemspec +1 -1
  167. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/.gitignore +7 -0
  168. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/.rspec +2 -0
  169. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/.travis.yml +5 -0
  170. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/CONTRIBUTORS.md +19 -0
  171. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/Gemfile +12 -0
  172. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/Gemfile.lock +44 -0
  173. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/Guardfile +10 -0
  174. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/README.md +134 -0
  175. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/Rakefile +10 -0
  176. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/fake_ftp.gemspec +22 -0
  177. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/lib/fake_ftp.rb +5 -0
  178. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/lib/fake_ftp/file.rb +34 -0
  179. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/lib/fake_ftp/server.rb +340 -0
  180. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/lib/fake_ftp/version.rb +3 -0
  181. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/spec/fixtures/invisible_bike.jpg +0 -0
  182. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/spec/fixtures/text_file.txt +1 -0
  183. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/spec/functional/server_spec.rb +468 -0
  184. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/spec/integration/server_spec.rb +81 -0
  185. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/spec/models/fake_ftp/file_spec.rb +102 -0
  186. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/spec/models/fake_ftp/server_spec.rb +76 -0
  187. data/vendor/bundle/ruby/2.4.0/gems/fake_ftp-0.1.1/spec/spec_helper.rb +18 -0
  188. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/.gitignore +14 -0
  189. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/.rubocop.yml +57 -0
  190. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/.travis.yml +21 -0
  191. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/CONTRIBUTING.rdoc +36 -0
  192. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/Gemfile +3 -0
  193. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/History.rdoc +2247 -0
  194. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/MIT-LICENSE +21 -0
  195. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/README.rdoc +156 -0
  196. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/Rakefile +38 -0
  197. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/appveyor.yml +21 -0
  198. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/bin/console +7 -0
  199. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/bin/setup +6 -0
  200. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/command_line_usage.rdoc +158 -0
  201. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/example/Rakefile1 +38 -0
  202. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/example/Rakefile2 +35 -0
  203. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/example/a.c +6 -0
  204. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/example/b.c +6 -0
  205. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/example/main.c +11 -0
  206. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/glossary.rdoc +42 -0
  207. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/jamis.rb +591 -0
  208. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/proto_rake.rdoc +127 -0
  209. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/rake.1 +156 -0
  210. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/rakefile.rdoc +622 -0
  211. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/doc/rational.rdoc +151 -0
  212. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/exe/rake +27 -0
  213. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake.rb +70 -0
  214. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/application.rb +785 -0
  215. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/backtrace.rb +23 -0
  216. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/clean.rb +77 -0
  217. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/cloneable.rb +16 -0
  218. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/cpu_counter.rb +106 -0
  219. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/default_loader.rb +14 -0
  220. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/dsl_definition.rb +194 -0
  221. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/early_time.rb +21 -0
  222. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/ext/core.rb +25 -0
  223. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/ext/string.rb +175 -0
  224. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/file_creation_task.rb +24 -0
  225. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/file_list.rb +434 -0
  226. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/file_task.rb +46 -0
  227. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/file_utils.rb +136 -0
  228. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/file_utils_ext.rb +144 -0
  229. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/invocation_chain.rb +56 -0
  230. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/invocation_exception_mixin.rb +16 -0
  231. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/late_time.rb +17 -0
  232. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/linked_list.rb +111 -0
  233. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/loaders/makefile.rb +53 -0
  234. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/multi_task.rb +49 -0
  235. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/name_space.rb +37 -0
  236. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/packagetask.rb +210 -0
  237. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/phony.rb +15 -0
  238. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/private_reader.rb +20 -0
  239. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/promise.rb +99 -0
  240. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/pseudo_status.rb +29 -0
  241. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/rake_module.rb +38 -0
  242. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/rake_test_loader.rb +21 -0
  243. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/rule_recursion_overflow_error.rb +19 -0
  244. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/scope.rb +42 -0
  245. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/task.rb +390 -0
  246. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/task_argument_error.rb +7 -0
  247. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/task_arguments.rb +108 -0
  248. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/task_manager.rb +303 -0
  249. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/tasklib.rb +11 -0
  250. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/testtask.rb +222 -0
  251. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/thread_history_display.rb +48 -0
  252. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/thread_pool.rb +162 -0
  253. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/trace_output.rb +22 -0
  254. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/version.rb +9 -0
  255. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/lib/rake/win32.rb +50 -0
  256. data/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/rake.gemspec +39 -0
  257. data/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/.gitignore +19 -0
  258. data/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/.rspec +3 -0
  259. data/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/.travis.yml +24 -0
  260. data/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/Changelog.md +49 -0
  261. data/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/Gemfile +26 -0
  262. data/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/LICENSE.txt +27 -0
  263. data/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/README.md +72 -0
  264. data/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/Rakefile +16 -0
  265. data/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/cucumber.yml +2 -0
  266. data/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/features/its.feature +125 -0
  267. data/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/features/step_definitions/additional_cli_steps.rb +21 -0
  268. data/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/features/support/env.rb +23 -0
  269. data/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/lib/rspec/its.rb +149 -0
  270. data/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/lib/rspec/its/version.rb +5 -0
  271. data/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/rspec-its.gemspec +28 -0
  272. data/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/script/test_all +20 -0
  273. data/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/spec/rspec/its_spec.rb +237 -0
  274. data/vendor/bundle/ruby/2.4.0/gems/rspec-its-1.2.0/spec/spec_helper.rb +15 -0
  275. data/vendor/bundle/ruby/2.4.0/specifications/fake_ftp-0.1.1.gemspec +20 -0
  276. data/vendor/bundle/ruby/2.4.0/specifications/rake-12.0.0.gemspec +43 -0
  277. data/vendor/bundle/ruby/2.4.0/specifications/rspec-its-1.2.0.gemspec +47 -0
  278. data/version.txt +1 -1
  279. metadata +137 -7
  280. data/2.14.0 +0 -5
@@ -5,7 +5,7 @@ module VagrantPlugins
5
5
  module Cap
6
6
  module Redhat
7
7
  module ChefInstall
8
- def self.chef_install(machine, project, version, channel, options = {})
8
+ def self.chef_install(machine, project, version, channel, omnibus_url, options = {})
9
9
  machine.communicate.sudo <<-EOH.gsub(/^ {14}/, '')
10
10
  if command -v dnf; then
11
11
  dnf -y install curl
@@ -14,7 +14,7 @@ module VagrantPlugins
14
14
  fi
15
15
  EOH
16
16
 
17
- command = Omnibus.sh_command(project, version, channel, options)
17
+ command = Omnibus.sh_command(project, version, channel, omnibus_url, options)
18
18
  machine.communicate.sudo(command)
19
19
  end
20
20
  end
@@ -5,13 +5,13 @@ module VagrantPlugins
5
5
  module Cap
6
6
  module Suse
7
7
  module ChefInstall
8
- def self.chef_install(machine, project, version, channel, options = {})
8
+ def self.chef_install(machine, project, version, channel, omnibus_url, options = {})
9
9
  unless curl?(machine)
10
10
  machine.communicate.sudo("zypper -n -q update")
11
11
  machine.communicate.sudo("zypper -n -q install curl")
12
12
  end
13
13
 
14
- command = Omnibus.sh_command(project, version, channel, options)
14
+ command = Omnibus.sh_command(project, version, channel, omnibus_url, options)
15
15
  machine.communicate.sudo(command)
16
16
  end
17
17
 
@@ -5,8 +5,8 @@ module VagrantPlugins
5
5
  module Cap
6
6
  module Windows
7
7
  module ChefInstall
8
- def self.chef_install(machine, project, version, channel, options = {})
9
- command = Omnibus.ps_command(project, version, channel, options)
8
+ def self.chef_install(machine, project, version, channel, omnibus_url, options = {})
9
+ command = Omnibus.ps_command(project, version, channel, omnibus_url, options)
10
10
  machine.communicate.sudo(command)
11
11
  end
12
12
  end
@@ -56,6 +56,21 @@ module VagrantPlugins
56
56
  # @return [String]
57
57
  attr_accessor :version
58
58
 
59
+ # Location of Omnibus installation scripts.
60
+ # This URL specifies the location of install.sh/install.ps1 for
61
+ # Linux/Unix and Windows respectively.
62
+ #
63
+ # It defaults to https://omnitruck.chef.io/. The full URL is then:
64
+ # - Linux/Unix: https://omnitruck.chef.io/install.sh
65
+ # - Windows: https://omnitruck.chef.io/install.ps1
66
+ #
67
+ # If you want to have https://example.com/install.sh as Omnibus script
68
+ # for your Linux/Unix installations, you should set this option to
69
+ # https://example.com
70
+ #
71
+ # @return [String]
72
+ attr_accessor :omnibus_url
73
+
59
74
  # The path where the Chef installer will be downloaded to. Only valid if
60
75
  # install is true or "force". It defaults to nil, which means that the
61
76
  # omnibus installer will choose the destination and you have no control
@@ -74,6 +89,7 @@ module VagrantPlugins
74
89
  @log_level = UNSET_VALUE
75
90
  @channel = UNSET_VALUE
76
91
  @version = UNSET_VALUE
92
+ @omnibus_url = UNSET_VALUE
77
93
  @installer_download_path = UNSET_VALUE
78
94
  end
79
95
 
@@ -85,6 +101,7 @@ module VagrantPlugins
85
101
  @log_level = :info if @log_level == UNSET_VALUE
86
102
  @channel = "stable" if @channel == UNSET_VALUE
87
103
  @version = :latest if @version == UNSET_VALUE
104
+ @omnibus_url = 'https://omnitruck.chef.io' if @omnibus_url == UNSET_VALUE
88
105
  @installer_download_path = nil if @installer_download_path == UNSET_VALUE
89
106
 
90
107
  # Make sure the install is a symbol if it's not a boolean
@@ -79,6 +79,13 @@ module VagrantPlugins
79
79
 
80
80
  if !present?(Array(nodes_path))
81
81
  errors << I18n.t("vagrant.config.chef.nodes_path_empty")
82
+ else
83
+ missing_paths = Array.new
84
+ nodes_path.each { |dir| missing_paths << dir[1] if !File.exists? dir[1] }
85
+ # If it exists at least one path on disk it's ok for Chef provisioning
86
+ if missing_paths.size == nodes_path.size
87
+ errors << I18n.t("vagrant.config.chef.nodes_path_missing", path: missing_paths.to_s)
88
+ end
82
89
  end
83
90
 
84
91
  if environment && environments_path.empty?
@@ -2,12 +2,13 @@ module VagrantPlugins
2
2
  module Chef
3
3
  class Installer
4
4
  def initialize(machine, options = {})
5
- @machine = machine
6
- @product = options.fetch(:product)
7
- @channel = options.fetch(:channel)
8
- @version = options.fetch(:version)
9
- @force = options.fetch(:force)
10
- @options = options.dup
5
+ @machine = machine
6
+ @product = options.fetch(:product)
7
+ @channel = options.fetch(:channel)
8
+ @version = options.fetch(:version)
9
+ @force = options.fetch(:force)
10
+ @omnibus_url = options.fetch(:omnibus_url)
11
+ @options = options.dup
11
12
  end
12
13
 
13
14
  # This handles verifying the Chef installation, installing it if it was
@@ -29,7 +30,7 @@ module VagrantPlugins
29
30
 
30
31
  @machine.ui.detail(I18n.t("vagrant.chef_installing",
31
32
  version: @version.to_s))
32
- @machine.guest.capability(:chef_install, @product, @version, @channel, @options)
33
+ @machine.guest.capability(:chef_install, @product, @version, @channel, @omnibus_url, @options)
33
34
 
34
35
  if !@machine.guest.capability(:chef_installed, @product, @version)
35
36
  raise Provisioner::Base::ChefError, :install_failed
@@ -5,10 +5,8 @@ module VagrantPlugins
5
5
  # https://docs.chef.io/install_omnibus.html
6
6
  #
7
7
  module Omnibus
8
- OMNITRUCK = "https://omnitruck.chef.io".freeze
9
-
10
- def sh_command(project, version, channel, options = {})
11
- command = "curl -sL #{OMNITRUCK}/install.sh | bash"
8
+ def sh_command(project, version, channel, omnibus_url, options = {})
9
+ command = "curl -sL #{omnibus_url}/install.sh | bash"
12
10
  command << " -s -- -P \"#{project}\" -c \"#{channel}\""
13
11
 
14
12
  if version != :latest
@@ -23,8 +21,8 @@ module VagrantPlugins
23
21
  end
24
22
  module_function :sh_command
25
23
 
26
- def ps_command(project, version, channel, options = {})
27
- command = ". { iwr -useb #{OMNITRUCK}/install.ps1 } | iex; install"
24
+ def ps_command(project, version, channel, omnibus_url, options = {})
25
+ command = ". { iwr -useb #{omnibus_url}/install.ps1 } | iex; install"
28
26
  command << " -project '#{project}' -channel '#{channel}'"
29
27
 
30
28
  if version != :latest
@@ -58,6 +58,7 @@ module VagrantPlugins
58
58
  product: config.product,
59
59
  channel: config.channel,
60
60
  version: config.version,
61
+ omnibus_url: config.omnibus_url,
61
62
  force: config.install == :force,
62
63
  download_path: config.installer_download_path
63
64
  )
@@ -87,7 +87,8 @@ module VagrantPlugins
87
87
  key = Digest::MD5.hexdigest(local_path)
88
88
  remote_path = "#{guest_provisioning_path}/#{key}"
89
89
  else
90
- @machine.ui.warn(I18n.t("vagrant.provisioners.chef.cookbook_folder_not_found_warning",
90
+ appended_folder = "cookbooks" if appended_folder.nil?
91
+ @machine.ui.warn(I18n.t("vagrant.provisioners.chef.#{appended_folder}_folder_not_found_warning",
91
92
  path: local_path.to_s))
92
93
  next
93
94
  end
@@ -3,14 +3,30 @@ module VagrantPlugins
3
3
  class Provisioner < Vagrant.plugin("2", :provisioner)
4
4
  def provision
5
5
  @machine.communicate.tap do |comm|
6
+ source = File.expand_path(config.source)
6
7
  destination = expand_guest_path(config.destination)
7
8
 
9
+ # if source is a directory, make it then trim destination with dirname
8
10
  # Make sure the remote path exists
9
- command = "mkdir -p %s" % File.dirname(destination)
11
+ if File.directory?(source)
12
+ # We need to make sure the actual destination folder
13
+ # also exists before uploading, otherwise
14
+ # you will get nested folders. We also need to append
15
+ # a './' to the source folder so we copy the contents
16
+ # rather than the folder itself, in case a users destination
17
+ # folder differs from its source.
18
+ #
19
+ # https://serverfault.com/questions/538368/make-scp-always-overwrite-or-create-directory
20
+ # https://unix.stackexchange.com/questions/292641/get-scp-path-behave-like-rsync-path/292732
21
+ command = "mkdir -p \"%s\"" % destination
22
+ source << "/."
23
+ else
24
+ command = "mkdir -p \"%s\"" % File.dirname(destination)
25
+ end
10
26
  comm.execute(command)
11
27
 
12
28
  # now upload the file
13
- comm.upload(File.expand_path(config.source), destination)
29
+ comm.upload(source, destination)
14
30
  end
15
31
  end
16
32
 
@@ -199,8 +199,6 @@ module VagrantPlugins
199
199
  if config.environment_path
200
200
  options << "--environmentpath #{environments_guest_path}/"
201
201
  options << "--environment #{@config.environment}"
202
- else
203
- options << "--manifestdir #{manifests_guest_path}"
204
202
  end
205
203
 
206
204
  options << @manifest_file
@@ -2,11 +2,15 @@
2
2
 
3
3
  # We just download the bootstrap script by default and execute that.
4
4
  if [ -x /usr/bin/fetch ]; then
5
- /usr/bin/fetch -o - https://raw.githubusercontent.com/saltstack/salt-bootstrap/stable/bootstrap-salt.sh | sh -s -- "$@"
5
+ /usr/bin/fetch -o bootstrap-salt.sh https://raw.githubusercontent.com/saltstack/salt-bootstrap/stable/bootstrap-salt.sh
6
6
  elif [ -x /usr/bin/curl ]; then
7
- /usr/bin/curl -L https://raw.githubusercontent.com/saltstack/salt-bootstrap/stable/bootstrap-salt.sh | sh -s -- "$@"
7
+ /usr/bin/curl -L -O https://raw.githubusercontent.com/saltstack/salt-bootstrap/stable/bootstrap-salt.sh
8
8
  else
9
- python \
10
- -c 'import urllib; print urllib.urlopen("https://raw.githubusercontent.com/saltstack/salt-bootstrap/stable/bootstrap-salt.sh").read()' \
11
- | sh -s -- "$@"
9
+ python -c 'import urllib; urllib.urlretrieve("https://raw.githubusercontent.com/saltstack/salt-bootstrap/stable/bootstrap-salt.sh", "bootstrap-salt.sh")'
10
+ fi
11
+
12
+ if [ -e bootstrap-salt.sh ]; then
13
+ sh bootstrap-salt.sh "$@"
14
+ else
15
+ exit 1
12
16
  fi
@@ -265,7 +265,7 @@ module VagrantPlugins
265
265
  # or we're running on Windows.
266
266
  if !config.binary && @machine.config.vm.communicator != :winrm
267
267
  begin
268
- script.gsub!(/\r\n?$/, "\n")
268
+ script = script.gsub(/\r\n?$/, "\n")
269
269
  rescue ArgumentError
270
270
  script = script.force_encoding("ASCII-8BIT").gsub(/\r\n?$/, "\n")
271
271
  end
@@ -78,8 +78,13 @@ module VagrantPlugins
78
78
  # syncing all known containers with rsync to the boot2docker vm
79
79
  # and only syncs the current working dirs folders.
80
80
  sync_folders = {}
81
+ # Still sync existing synced folders from vagrantfile
82
+ config_synced_folders = machine.config.vm.synced_folders.values.map { |x| x[:hostpath] }
83
+ config_synced_folders.map! { |x| File.expand_path(x, machine.env.root_path) }
81
84
  folders.each do |id, folder_opts|
82
- if cwd != folder_opts[:hostpath]
85
+ if cwd != folder_opts[:hostpath] &&
86
+ !config_synced_folders.include?(folder_opts[:hostpath])
87
+
83
88
  machine.ui.info(I18n.t("vagrant.rsync_auto_remove_folder",
84
89
  folder: folder_opts[:hostpath]))
85
90
  else
@@ -1,3 +1,4 @@
1
+ require "ipaddr"
1
2
  require "shellwords"
2
3
 
3
4
  require "vagrant/util/platform"
@@ -147,6 +148,15 @@ module VagrantPlugins
147
148
  args << "--rsync-path"<< rsync_path
148
149
  end
149
150
 
151
+ # If the remote host is an IPv6 address reformat
152
+ begin
153
+ if IPAddr.new(host).ipv6?
154
+ host = "[#{host}]"
155
+ end
156
+ rescue IPAddr::Error
157
+ # Ignore
158
+ end
159
+
150
160
  # Build up the actual command to execute
151
161
  command = [
152
162
  "rsync",
@@ -1014,6 +1014,11 @@ en:
1014
1014
 
1015
1015
  vagrant plugin expunge --reinstall
1016
1016
 
1017
+ Or you may want to try updating the installed plugins to their latest
1018
+ versions:
1019
+
1020
+ vagrant plugin update
1021
+
1017
1022
  Error message given during initialization: %{message}
1018
1023
  plugin_load_error: |-
1019
1024
  The plugins failed to load properly. The error message given is
@@ -1046,6 +1051,17 @@ en:
1046
1051
  %{error_msg}
1047
1052
 
1048
1053
  Source: %{source}
1054
+ powershell_not_found: |-
1055
+ Failed to locate the powershell executable on the available PATH. Please
1056
+ ensure powershell is installed and available on the local PATH, then
1057
+ run the command again.
1058
+ powershell_invalid_version: |-
1059
+ The version of powershell currently installed on this host is less than
1060
+ the required minimum version. Please upgrade the installed version of
1061
+ powershell to the minimum required version and run the command again.
1062
+
1063
+ Installed version: %{installed_version}
1064
+ Minimum required version: %{minimum_version}
1049
1065
  pushes_not_defined: |-
1050
1066
  The Vagrantfile does not define any 'push' strategies. In order to use
1051
1067
  `vagrant push`, you must define at least one push strategy:
@@ -1579,6 +1595,8 @@ en:
1579
1595
  Missing required value for `chef.nodes_path'.
1580
1596
  environment_path_missing: |-
1581
1597
  Environment path not found: %{path}
1598
+ nodes_path_missing: |-
1599
+ Path specified for `nodes_path` does not exist: %{path}
1582
1600
  environment_path_required: |-
1583
1601
  When 'environment' is specified, you must provide 'environments_path'.
1584
1602
  cookbooks_path_missing: |-
@@ -2158,8 +2176,16 @@ en:
2158
2176
  The chef binary (either `chef-solo` or `chef-client`) was not found on
2159
2177
  the VM and is required for chef provisioning. Please verify that chef
2160
2178
  is installed and that the binary is available on the PATH.
2161
- cookbook_folder_not_found_warning:
2179
+ cookbooks_folder_not_found_warning:
2162
2180
  "The cookbook path '%{path}' doesn't exist. Ignoring..."
2181
+ nodes_folder_not_found_warning:
2182
+ "The node path '%{path}' doesn't exist. Ignoring..."
2183
+ data_bags_folder_not_found_warning:
2184
+ "The databag path '%{path}' doesn't exist. Ignoring..."
2185
+ roles_folder_not_found_warning:
2186
+ "The role path '%{path}' doesn't exist. Ignoring..."
2187
+ environments_folder_not_found_warning:
2188
+ "The environment path '%{path}' doesn't exist. Ignoring..."
2163
2189
  json: "Generating chef JSON and uploading..."
2164
2190
  client_key_folder: "Creating folder to hold client key..."
2165
2191
  generating_node_name: |-
@@ -145,6 +145,8 @@ en:
145
145
  One of "build_dir" or "image" must be set
146
146
  compose_configuration_hash: |-
147
147
  "compose_configuration" must be a hash
148
+ compose_force_vm: |-
149
+ Docker compose is not currently supported from within proxy VM.
148
150
  create_args_array: |-
149
151
  "create_args" must be an array
150
152
  invalid_link: |-
data/test/unit/base.rb CHANGED
@@ -3,8 +3,8 @@ require "rubygems"
3
3
 
4
4
  # Gems
5
5
  require "checkpoint"
6
- require "rspec/autorun"
7
6
  require "webmock/rspec"
7
+ require "rspec/its"
8
8
 
9
9
  # Require Vagrant itself so we can reference the proper
10
10
  # classes to test.
@@ -33,8 +33,6 @@ VAGRANT_TEST_CWD = Dir.mktmpdir("vagrant-test-cwd")
33
33
 
34
34
  # Configure RSpec
35
35
  RSpec.configure do |c|
36
- c.treat_symbols_as_metadata_keys_with_true_values = true
37
-
38
36
  if Vagrant::Util::Platform.windows?
39
37
  c.filter_run_excluding :skip_windows
40
38
  else
@@ -18,7 +18,7 @@ describe VagrantPlugins::CommandBox::Command::Add do
18
18
  let(:action_runner) { double("action_runner") }
19
19
 
20
20
  before do
21
- iso_env.stub(action_runner: action_runner)
21
+ allow(iso_env).to receive(:action_runner).and_return(action_runner)
22
22
  end
23
23
 
24
24
  context "with no arguments" do
@@ -32,7 +32,7 @@ describe VagrantPlugins::CommandBox::Command::Add do
32
32
  let(:argv) { ["foo"] }
33
33
 
34
34
  it "executes the runner with the proper actions" do
35
- expect(action_runner).to receive(:run).with { |action, **opts|
35
+ expect(action_runner).to receive(:run).with(any_args) { |action, **opts|
36
36
  expect(opts[:box_name]).to be_nil
37
37
  expect(opts[:box_url]).to eq("foo")
38
38
  true
@@ -46,7 +46,7 @@ describe VagrantPlugins::CommandBox::Command::Add do
46
46
  let(:argv) { ["foo", "bar"] }
47
47
 
48
48
  it "executes the runner with the proper actions" do
49
- expect(action_runner).to receive(:run).with { |action, **opts|
49
+ expect(action_runner).to receive(:run).with(any_args) { |action, **opts|
50
50
  expect(opts[:box_name]).to eq("foo")
51
51
  expect(opts[:box_url]).to eq("bar")
52
52
  true
@@ -18,7 +18,7 @@ describe VagrantPlugins::CommandBox::Command::Remove do
18
18
  let(:action_runner) { double("action_runner") }
19
19
 
20
20
  before do
21
- iso_env.stub(action_runner: action_runner)
21
+ allow(iso_env).to receive(:action_runner).and_return(action_runner)
22
22
  end
23
23
 
24
24
  context "with no arguments" do
@@ -32,9 +32,9 @@ describe VagrantPlugins::CommandBox::Command::Remove do
32
32
  let(:argv) { ["foo"] }
33
33
 
34
34
  it "invokes the action runner" do
35
- expect(action_runner).to receive(:run).with { |action, opts|
35
+ expect(action_runner).to receive(:run).with(any_args) { |action, opts|
36
36
  expect(opts[:box_name]).to eq("foo")
37
- expect(opts[:force_confirm_box_remove]).to be_false
37
+ expect(opts[:force_confirm_box_remove]).to be(false)
38
38
  true
39
39
  }
40
40
 
@@ -45,9 +45,9 @@ describe VagrantPlugins::CommandBox::Command::Remove do
45
45
  let(:argv) { super() + ["--force"] }
46
46
 
47
47
  it "invokes the action runner with force option" do
48
- expect(action_runner).to receive(:run).with { |action, opts|
48
+ expect(action_runner).to receive(:run).with(any_args) { |action, opts|
49
49
  expect(opts[:box_name]).to eq("foo")
50
- expect(opts[:force_confirm_box_remove]).to be_true
50
+ expect(opts[:force_confirm_box_remove]).to be(true)
51
51
  true
52
52
  }
53
53
 
@@ -60,7 +60,7 @@ describe VagrantPlugins::CommandBox::Command::Remove do
60
60
  let(:argv) { ["foo", "bar"] }
61
61
 
62
62
  it "uses the 2nd arg as a provider" do
63
- expect(action_runner).to receive(:run).with { |action, opts|
63
+ expect(action_runner).to receive(:run).with(any_args) { |action, opts|
64
64
  expect(opts[:box_name]).to eq("foo")
65
65
  expect(opts[:box_provider]).to eq("bar")
66
66
  true
@@ -18,7 +18,7 @@ describe VagrantPlugins::CommandBox::Command::Repackage do
18
18
  let(:action_runner) { double("action_runner") }
19
19
 
20
20
  before do
21
- iso_env.stub(action_runner: action_runner)
21
+ allow(iso_env).to receive(:action_runner).and_return(action_runner)
22
22
  end
23
23
 
24
24
  context "with no arguments" do
@@ -47,9 +47,7 @@ describe VagrantPlugins::CommandBox::Command::Repackage do
47
47
  end
48
48
 
49
49
  context "with three arguments" do
50
- it "repackages the box with the given provider" do
51
- pending
52
- end
50
+ it "repackages the box with the given provider"
53
51
  end
54
52
 
55
53
  context "with more than three arguments" do