vagrant-unbundled 2.0.0.1 → 2.0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (351) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -2
  3. data/CHANGELOG.md +34 -0
  4. data/Gemfile.lock +10 -10
  5. data/README.md +2 -2
  6. data/contrib/sudoers/linux-suse +6 -7
  7. data/lib/vagrant/plugin/v2/command.rb +3 -0
  8. data/lib/vagrant/plugin/v2/communicator.rb +1 -1
  9. data/lib/vagrant/registry.rb +1 -1
  10. data/lib/vagrant/util/downloader.rb +1 -2
  11. data/lib/vagrant/util/is_port_open.rb +2 -1
  12. data/lib/vagrant/util/keypair.rb +1 -1
  13. data/lib/vagrant/util/platform.rb +39 -23
  14. data/plugins/commands/destroy/command.rb +31 -10
  15. data/plugins/communicators/ssh/communicator.rb +1 -0
  16. data/plugins/communicators/winrm/helper.rb +6 -1
  17. data/plugins/guests/solaris11/cap/change_host_name.rb +0 -2
  18. data/plugins/guests/solaris11/cap/configure_networks.rb +1 -7
  19. data/plugins/guests/solaris11/plugin.rb +5 -35
  20. data/plugins/guests/windows/cap/public_key.rb +2 -0
  21. data/plugins/guests/windows/guest_network.rb +3 -3
  22. data/plugins/guests/windows/scripts/reboot_detect.ps1 +5 -0
  23. data/plugins/providers/docker/driver.rb +1 -1
  24. data/plugins/providers/docker/executor/local.rb +4 -0
  25. data/plugins/providers/docker/executor/vagrant.rb +4 -0
  26. data/plugins/providers/hyperv/scripts/import_vm_vmcx.ps1 +1 -1
  27. data/plugins/providers/virtualbox/driver/meta.rb +1 -0
  28. data/plugins/providers/virtualbox/driver/version_5_2.rb +16 -0
  29. data/plugins/providers/virtualbox/plugin.rb +1 -0
  30. data/plugins/providers/virtualbox/synced_folder.rb +1 -1
  31. data/plugins/provisioners/chef/provisioner/chef_client.rb +30 -23
  32. data/plugins/provisioners/chef/provisioner/chef_solo.rb +26 -19
  33. data/plugins/provisioners/chef/provisioner/chef_zero.rb +29 -22
  34. data/plugins/provisioners/puppet/provisioner/puppet.rb +23 -4
  35. data/plugins/provisioners/salt/bootstrap-salt.ps1 +15 -3
  36. data/plugins/provisioners/salt/bootstrap-salt.sh +2 -0
  37. data/plugins/provisioners/salt/config.rb +11 -0
  38. data/plugins/provisioners/salt/provisioner.rb +10 -7
  39. data/plugins/provisioners/shell/provisioner.rb +1 -1
  40. data/templates/locales/en.yml +5 -0
  41. data/test/unit/base.rb +2 -0
  42. data/test/unit/plugins/commands/destroy/command_test.rb +155 -0
  43. data/test/unit/plugins/communicators/winrm/helper_test.rb +33 -0
  44. data/test/unit/plugins/guests/solaris11/cap/change_host_name_test.rb +36 -0
  45. data/test/unit/plugins/guests/solaris11/cap/configure_networks_test.rb +56 -0
  46. data/test/unit/plugins/providers/virtualbox/synced_folder_test.rb +26 -0
  47. data/test/unit/plugins/provisioners/salt/config_test.rb +42 -0
  48. data/test/unit/plugins/provisioners/salt/provisioner_test.rb +16 -1
  49. data/test/unit/plugins/provisioners/shell/config_test.rb +3 -3
  50. data/test/unit/plugins/pushes/local-exec/config_test.rb +2 -2
  51. data/test/unit/vagrant/util/downloader_test.rb +28 -0
  52. data/test/unit/vagrant/util/platform_test.rb +58 -0
  53. data/vagrant.gemspec +1 -1
  54. data/vendor/bundle/ruby/2.4.0/bin/rwinrmcp +5 -0
  55. data/vendor/bundle/ruby/2.4.0/bin/vagrant +5 -0
  56. data/vendor/bundle/ruby/2.4.0/bin/vagrant-spec +5 -0
  57. data/vendor/bundle/ruby/2.4.0/bundler/gems/vagrant-spec-af86757912f7/vagrant-spec.gemspec +3 -3
  58. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/CHANGELOG.md +216 -0
  59. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/Gemfile +32 -0
  60. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/LICENSE.txt +202 -0
  61. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/README.md +121 -0
  62. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/Rakefile +32 -0
  63. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/data/unicode.data +0 -0
  64. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/lib/addressable/idna/native.rb +59 -0
  65. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/lib/addressable/idna/pure.rb +677 -0
  66. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/lib/addressable/idna.rb +25 -0
  67. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/lib/addressable/template.rb +1065 -0
  68. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/lib/addressable/uri.rb +2492 -0
  69. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/lib/addressable/version.rb +30 -0
  70. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/lib/addressable.rb +2 -0
  71. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/spec/addressable/idna_spec.rb +298 -0
  72. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/spec/addressable/net_http_compat_spec.rb +28 -0
  73. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/spec/addressable/rack_mount_compat_spec.rb +104 -0
  74. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/spec/addressable/security_spec.rb +57 -0
  75. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/spec/addressable/template_spec.rb +1419 -0
  76. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/spec/addressable/uri_spec.rb +6468 -0
  77. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/spec/spec_helper.rb +21 -0
  78. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/tasks/clobber.rake +2 -0
  79. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/tasks/gem.rake +91 -0
  80. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/tasks/git.rake +45 -0
  81. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/tasks/metrics.rake +22 -0
  82. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/tasks/rspec.rake +21 -0
  83. data/vendor/bundle/ruby/2.4.0/gems/addressable-2.5.2/tasks/yard.rake +27 -0
  84. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/.gitignore +15 -0
  85. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/.rspec +1 -0
  86. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/.travis.yml +13 -0
  87. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/.yardopts +1 -0
  88. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/Gemfile +6 -0
  89. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/LICENSE +19 -0
  90. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/README.md +265 -0
  91. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/Rakefile +13 -0
  92. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/changelog.md +72 -0
  93. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/hashdiff.gemspec +25 -0
  94. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/lib/hashdiff/diff.rb +232 -0
  95. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/lib/hashdiff/lcs.rb +69 -0
  96. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/lib/hashdiff/linear_compare_array.rb +155 -0
  97. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/lib/hashdiff/patch.rb +88 -0
  98. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/lib/hashdiff/util.rb +146 -0
  99. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/lib/hashdiff/version.rb +3 -0
  100. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/lib/hashdiff.rb +6 -0
  101. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/spec/hashdiff/best_diff_spec.rb +74 -0
  102. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/spec/hashdiff/diff_array_spec.rb +60 -0
  103. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/spec/hashdiff/diff_spec.rb +339 -0
  104. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/spec/hashdiff/lcs_spec.rb +75 -0
  105. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/spec/hashdiff/linear_compare_array_spec.rb +48 -0
  106. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/spec/hashdiff/patch_spec.rb +183 -0
  107. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/spec/hashdiff/util_spec.rb +78 -0
  108. data/vendor/bundle/ruby/2.4.0/gems/hashdiff-0.3.7/spec/spec_helper.rb +13 -0
  109. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/CHANGELOG.md +250 -0
  110. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/CONTRIBUTING.md +46 -0
  111. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/LICENSE.md +20 -0
  112. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/README.md +122 -0
  113. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapter.rb +49 -0
  114. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapter_error.rb +15 -0
  115. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapters/gson.rb +20 -0
  116. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapters/jr_jackson.rb +25 -0
  117. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapters/json_common.rb +23 -0
  118. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapters/json_gem.rb +11 -0
  119. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapters/json_pure.rb +11 -0
  120. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapters/nsjsonserialization.rb +32 -0
  121. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapters/oj.rb +25 -0
  122. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapters/ok_json.rb +23 -0
  123. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/adapters/yajl.rb +19 -0
  124. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/convertible_hash_keys.rb +43 -0
  125. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/options.rb +39 -0
  126. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/options_cache.rb +29 -0
  127. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/parse_error.rb +17 -0
  128. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/vendor/okjson.rb +606 -0
  129. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json/version.rb +17 -0
  130. data/vendor/bundle/ruby/2.4.0/gems/multi_json-1.12.2/lib/multi_json.rb +161 -0
  131. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/.gitignore +11 -0
  132. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/.rubocop.yml +32 -0
  133. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/.rubocop_defaults.yml +177 -0
  134. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/.travis.yml +24 -0
  135. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/.yardopts +1 -0
  136. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/2.0-Upgrade.md +52 -0
  137. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/CHANGELOG.md +330 -0
  138. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/Gemfile +10 -0
  139. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/LICENSE.txt +22 -0
  140. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/README.md +202 -0
  141. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/Rakefile +49 -0
  142. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/bin/console +14 -0
  143. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/data/list.txt +12288 -0
  144. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/lib/public_suffix/domain.rb +235 -0
  145. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/lib/public_suffix/errors.rb +39 -0
  146. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/lib/public_suffix/list.rb +243 -0
  147. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/lib/public_suffix/rule.rb +348 -0
  148. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/lib/public_suffix/version.rb +10 -0
  149. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/lib/public_suffix.rb +175 -0
  150. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/public_suffix.gemspec +25 -0
  151. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/.empty +2 -0
  152. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/acceptance_test.rb +127 -0
  153. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/benchmarks/bm_find.rb +66 -0
  154. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/benchmarks/bm_find_all.rb +102 -0
  155. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/benchmarks/bm_names.rb +91 -0
  156. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/benchmarks/bm_select.rb +26 -0
  157. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/benchmarks/bm_select_incremental.rb +25 -0
  158. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/benchmarks/bm_valid.rb +101 -0
  159. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/profilers/domain_profiler.rb +12 -0
  160. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/profilers/find_profiler.rb +12 -0
  161. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/profilers/find_profiler_jp.rb +12 -0
  162. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/profilers/initialization_profiler.rb +11 -0
  163. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/profilers/list_profsize.rb +11 -0
  164. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/profilers/object_binsize.rb +57 -0
  165. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/psl_test.rb +49 -0
  166. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/test_helper.rb +13 -0
  167. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/tests.txt +98 -0
  168. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/unit/domain_test.rb +104 -0
  169. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/unit/errors_test.rb +23 -0
  170. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/unit/list_test.rb +239 -0
  171. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/unit/public_suffix_test.rb +186 -0
  172. data/vendor/bundle/ruby/2.4.0/gems/public_suffix-3.0.1/test/unit/rule_test.rb +220 -0
  173. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/.gemtest +0 -0
  174. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/.gitignore +34 -0
  175. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/.rspec-tm +2 -0
  176. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/.travis.yml +24 -0
  177. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/CHANGELOG.md +1460 -0
  178. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/Gemfile +9 -0
  179. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/LICENSE +20 -0
  180. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/README.md +1045 -0
  181. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/Rakefile +30 -0
  182. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/api.rb +97 -0
  183. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/assertion_failure.rb +11 -0
  184. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/callback_registry.rb +35 -0
  185. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/config.rb +18 -0
  186. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/cucumber.rb +10 -0
  187. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/deprecation.rb +9 -0
  188. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/errors.rb +17 -0
  189. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/curb_adapter.rb +337 -0
  190. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/em_http_request_adapter.rb +228 -0
  191. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/excon_adapter.rb +162 -0
  192. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/http_lib_adapter.rb +7 -0
  193. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/http_lib_adapter_registry.rb +19 -0
  194. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/http_rb/client.rb +14 -0
  195. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/http_rb/request.rb +10 -0
  196. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/http_rb/response.rb +43 -0
  197. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/http_rb/streamer.rb +25 -0
  198. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/http_rb/webmock.rb +68 -0
  199. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/http_rb_adapter.rb +37 -0
  200. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/httpclient_adapter.rb +240 -0
  201. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/manticore_adapter.rb +127 -0
  202. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/net_http.rb +362 -0
  203. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/net_http_response.rb +34 -0
  204. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/patron_adapter.rb +130 -0
  205. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb +174 -0
  206. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/matchers/hash_including_matcher.rb +36 -0
  207. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/minitest.rb +41 -0
  208. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/rack_response.rb +69 -0
  209. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/request_body_diff.rb +64 -0
  210. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/request_execution_verifier.rb +78 -0
  211. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/request_pattern.rb +343 -0
  212. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/request_registry.rb +35 -0
  213. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/request_signature.rb +54 -0
  214. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/request_signature_snippet.rb +61 -0
  215. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/request_stub.rb +100 -0
  216. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/response.rb +153 -0
  217. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/responses_sequence.rb +40 -0
  218. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/rspec/matchers/request_pattern_matcher.rb +78 -0
  219. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/rspec/matchers/webmock_matcher.rb +52 -0
  220. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/rspec/matchers.rb +27 -0
  221. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/rspec.rb +35 -0
  222. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/stub_registry.rb +67 -0
  223. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/stub_request_snippet.rb +34 -0
  224. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/test_unit.rb +22 -0
  225. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/util/hash_counter.rb +32 -0
  226. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/util/hash_keys_stringifier.rb +25 -0
  227. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/util/hash_validator.rb +17 -0
  228. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/util/headers.rb +49 -0
  229. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/util/json.rb +78 -0
  230. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/util/query_mapper.rb +279 -0
  231. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/util/uri.rb +111 -0
  232. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/util/version_checker.rb +111 -0
  233. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/version.rb +3 -0
  234. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock/webmock.rb +156 -0
  235. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/lib/webmock.rb +54 -0
  236. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/minitest/test_helper.rb +34 -0
  237. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/minitest/test_webmock.rb +9 -0
  238. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/minitest/webmock_spec.rb +60 -0
  239. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/curb/curb_spec.rb +466 -0
  240. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/curb/curb_spec_helper.rb +147 -0
  241. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/em_http_request/em_http_request_spec.rb +406 -0
  242. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/em_http_request/em_http_request_spec_helper.rb +77 -0
  243. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/excon/excon_spec.rb +75 -0
  244. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/excon/excon_spec_helper.rb +50 -0
  245. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/http_rb/http_rb_spec.rb +73 -0
  246. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/http_rb/http_rb_spec_helper.rb +51 -0
  247. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/httpclient/httpclient_spec.rb +209 -0
  248. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/httpclient/httpclient_spec_helper.rb +57 -0
  249. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/manticore/manticore_spec.rb +56 -0
  250. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/manticore/manticore_spec_helper.rb +35 -0
  251. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/net_http/net_http_shared.rb +142 -0
  252. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/net_http/net_http_spec.rb +317 -0
  253. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/net_http/net_http_spec_helper.rb +64 -0
  254. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/net_http/real_net_http_spec.rb +20 -0
  255. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/patron/patron_spec.rb +118 -0
  256. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/patron/patron_spec_helper.rb +54 -0
  257. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/shared/allowing_and_disabling_net_connect.rb +313 -0
  258. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/shared/callbacks.rb +147 -0
  259. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/shared/complex_cross_concern_behaviors.rb +36 -0
  260. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/shared/enabling_and_disabling_webmock.rb +95 -0
  261. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/shared/precedence_of_stubs.rb +15 -0
  262. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/shared/request_expectations.rb +916 -0
  263. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/shared/returning_declared_responses.rb +388 -0
  264. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/shared/stubbing_requests.rb +583 -0
  265. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/typhoeus/typhoeus_hydra_spec.rb +135 -0
  266. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/typhoeus/typhoeus_hydra_spec_helper.rb +60 -0
  267. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/acceptance/webmock_shared.rb +41 -0
  268. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/fixtures/test.txt +1 -0
  269. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/quality_spec.rb +84 -0
  270. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/spec_helper.rb +48 -0
  271. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/support/example_curl_output.txt +22 -0
  272. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/support/failures.rb +9 -0
  273. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/support/my_rack_app.rb +53 -0
  274. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/support/network_connection.rb +19 -0
  275. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/support/webmock_server.rb +69 -0
  276. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/api_spec.rb +75 -0
  277. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/errors_spec.rb +129 -0
  278. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/http_lib_adapters/http_lib_adapter_registry_spec.rb +17 -0
  279. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/http_lib_adapters/http_lib_adapter_spec.rb +12 -0
  280. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/matchers/hash_including_matcher_spec.rb +87 -0
  281. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/rack_response_spec.rb +112 -0
  282. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/request_body_diff_spec.rb +90 -0
  283. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/request_execution_verifier_spec.rb +208 -0
  284. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/request_pattern_spec.rb +590 -0
  285. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/request_registry_spec.rb +76 -0
  286. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/request_signature_snippet_spec.rb +89 -0
  287. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/request_signature_spec.rb +155 -0
  288. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/request_stub_spec.rb +199 -0
  289. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/response_spec.rb +282 -0
  290. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/stub_registry_spec.rb +103 -0
  291. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/stub_request_snippet_spec.rb +95 -0
  292. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/util/hash_counter_spec.rb +39 -0
  293. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/util/hash_keys_stringifier_spec.rb +27 -0
  294. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/util/headers_spec.rb +28 -0
  295. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/util/json_spec.rb +33 -0
  296. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/util/query_mapper_spec.rb +138 -0
  297. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/util/uri_spec.rb +299 -0
  298. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/util/version_checker_spec.rb +65 -0
  299. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/spec/unit/webmock_spec.rb +11 -0
  300. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/test/http_request.rb +24 -0
  301. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/test/shared_test.rb +95 -0
  302. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/test/test_helper.rb +23 -0
  303. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/test/test_webmock.rb +6 -0
  304. data/vendor/bundle/ruby/2.4.0/gems/webmock-2.3.2/webmock.gemspec +46 -0
  305. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/.gitignore +11 -0
  306. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/.rspec +3 -0
  307. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/.rubocop.yml +9 -0
  308. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/.travis.yml +9 -0
  309. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/Gemfile +5 -0
  310. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/LICENSE +202 -0
  311. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/README.md +79 -0
  312. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/Rakefile +28 -0
  313. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/VERSION +1 -0
  314. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/Vagrantfile +9 -0
  315. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/appveyor.yml +38 -0
  316. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/bin/rwinrmcp +86 -0
  317. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/changelog.md +60 -0
  318. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/core/file_transporter.rb +527 -0
  319. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/core/tmp_zip.rb +177 -0
  320. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/exceptions.rb +28 -0
  321. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/file_manager.rb +118 -0
  322. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/scripts/check_files.ps1.erb +49 -0
  323. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/scripts/checksum.ps1.erb +13 -0
  324. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/scripts/create_dir.ps1.erb +6 -0
  325. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/scripts/delete.ps1.erb +6 -0
  326. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/scripts/download.ps1.erb +8 -0
  327. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/scripts/exists.ps1.erb +10 -0
  328. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/scripts/extract_files.ps1.erb +52 -0
  329. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs/scripts/scripts.rb +31 -0
  330. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/lib/winrm-fs.rb +28 -0
  331. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/spec/config-example.yml +3 -0
  332. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/spec/integration/file_manager_spec.rb +224 -0
  333. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/spec/integration/tmp_zip_spec.rb +26 -0
  334. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/spec/matchers.rb +58 -0
  335. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/spec/spec_helper.rb +71 -0
  336. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/spec/unit/tmp_zip_spec.rb +79 -0
  337. data/vendor/bundle/ruby/2.4.0/gems/winrm-fs-1.1.1/winrm-fs.gemspec +37 -0
  338. data/vendor/bundle/ruby/2.4.0/specifications/addressable-2.5.2.gemspec +39 -0
  339. data/vendor/bundle/ruby/2.4.0/specifications/hashdiff-0.3.7.gemspec +39 -0
  340. data/vendor/bundle/ruby/2.4.0/specifications/multi_json-1.12.2.gemspec +33 -0
  341. data/vendor/bundle/ruby/2.4.0/specifications/public_suffix-3.0.1.gemspec +41 -0
  342. data/vendor/bundle/ruby/2.4.0/specifications/webmock-2.3.2.gemspec +79 -0
  343. data/vendor/bundle/ruby/2.4.0/specifications/winrm-fs-1.1.1.gemspec +57 -0
  344. data/version.txt +1 -1
  345. metadata +295 -11
  346. data/plugins/guests/solaris11/cap/halt.rb +0 -26
  347. data/plugins/guests/solaris11/cap/insert_public_key.rb +0 -21
  348. data/plugins/guests/solaris11/cap/mount_virtualbox_shared_folder.rb +0 -45
  349. data/plugins/guests/solaris11/cap/remove_public_key.rb +0 -21
  350. data/plugins/guests/solaris11/cap/rsync.rb +0 -29
  351. data/test/unit/plugins/guests/solaris11/cap/halt_test.rb +0 -44
@@ -44,4 +44,30 @@ describe VagrantPlugins::ProviderVirtualBox::SyncedFolder do
44
44
 
45
45
  it "should share the folders"
46
46
  end
47
+
48
+ describe "os_friendly_id" do
49
+ it "should not replace normal chars" do
50
+ expect(subject.send(:os_friendly_id, 'perfectly_valid0_name')).to eq('perfectly_valid0_name')
51
+ end
52
+
53
+ it "should replace spaces" do
54
+ expect(subject.send(:os_friendly_id, 'Program Files')).to eq('Program_Files')
55
+ end
56
+
57
+ it "should replace leading underscore" do
58
+ expect(subject.send(:os_friendly_id, '_vagrant')).to eq('vagrant')
59
+ end
60
+
61
+ it "should replace slash" do
62
+ expect(subject.send(:os_friendly_id, 'va/grant')).to eq('va_grant')
63
+ end
64
+
65
+ it "should replace leading underscore and slash" do
66
+ expect(subject.send(:os_friendly_id, '/vagrant')).to eq('vagrant')
67
+ end
68
+
69
+ it "should replace backslash" do
70
+ expect(subject.send(:os_friendly_id, 'foo\\bar')).to eq('foo_bar')
71
+ end
72
+ end
47
73
  end
@@ -114,5 +114,47 @@ describe VagrantPlugins::Salt::Config do
114
114
  expect(result[error_key]).to be_empty
115
115
  end
116
116
  end
117
+
118
+ context "python_version" do
119
+ it "is valid if is set and not missing" do
120
+ subject.python_version = "2"
121
+ subject.finalize!
122
+
123
+ result = subject.validate(machine)
124
+ expect(result[error_key]).to be_empty
125
+ end
126
+
127
+ it "can be a string" do
128
+ subject.python_version = "2"
129
+ subject.finalize!
130
+
131
+ result = subject.validate(machine)
132
+ expect(result[error_key]).to be_empty
133
+ end
134
+
135
+ it "can be an integer" do
136
+ subject.python_version = 2
137
+ subject.finalize!
138
+
139
+ result = subject.validate(machine)
140
+ expect(result[error_key]).to be_empty
141
+ end
142
+
143
+ it "is not a number that is not an integer" do
144
+ subject.python_version = 2.7
145
+ subject.finalize!
146
+
147
+ result = subject.validate(machine)
148
+ expect(result[error_key]).to_not be_empty
149
+ end
150
+
151
+ it "is not a string that does not parse to an integer" do
152
+ subject.python_version = '2.7'
153
+ subject.finalize!
154
+
155
+ result = subject.validate(machine)
156
+ expect(result[error_key]).to_not be_empty
157
+ end
158
+ end
117
159
  end
118
160
  end
@@ -30,7 +30,22 @@ describe VagrantPlugins::Salt::Provisioner do
30
30
  end
31
31
 
32
32
  describe "#provision" do
33
-
33
+ context "minion" do
34
+ it "does not add linux-only bootstrap flags when on windows" do
35
+ additional_windows_options = "-only -these options -should -remain"
36
+ allow(config).to receive(:seed_master).and_return(true)
37
+ allow(config).to receive(:install_master).and_return(true)
38
+ allow(config).to receive(:install_syndic).and_return(true)
39
+ allow(config).to receive(:no_minion).and_return(true)
40
+ allow(config).to receive(:install_type).and_return('stable')
41
+ allow(config).to receive(:install_args).and_return('develop')
42
+ allow(config).to receive(:verbose).and_return(true)
43
+ allow(machine.config.vm).to receive(:communicator).and_return(:winrm)
44
+ allow(config).to receive(:bootstrap_options).and_return(additional_windows_options)
45
+ result = subject.bootstrap_options(true, true, "C:\\salttmp")
46
+ expect(result.strip).to eq(additional_windows_options)
47
+ end
48
+ end
34
49
  end
35
50
 
36
51
  describe "#call_highstate" do
@@ -30,7 +30,7 @@ describe "VagrantPlugins::Shell::Config" do
30
30
  expect(result["shell provisioner"]).to eq([])
31
31
  end
32
32
 
33
- it "passes with fixnum args" do
33
+ it "passes with integer args" do
34
34
  subject.path = file_that_exists
35
35
  subject.args = 1
36
36
  subject.finalize!
@@ -112,7 +112,7 @@ describe "VagrantPlugins::Shell::Config" do
112
112
  end
113
113
 
114
114
  describe 'finalize!' do
115
- it 'changes fixnum args into strings' do
115
+ it 'changes integer args into strings' do
116
116
  subject.path = file_that_exists
117
117
  subject.args = 1
118
118
  subject.finalize!
@@ -120,7 +120,7 @@ describe "VagrantPlugins::Shell::Config" do
120
120
  expect(subject.args).to eq '1'
121
121
  end
122
122
 
123
- it 'changes fixnum args in arrays into strings' do
123
+ it 'changes integer args in arrays into strings' do
124
124
  subject.path = file_that_exists
125
125
  subject.args = ["string", 1, 2]
126
126
  subject.finalize!
@@ -70,7 +70,7 @@ describe VagrantPlugins::LocalExecPush::Config do
70
70
  expect(errors).to be_empty
71
71
  end
72
72
 
73
- it "passes with fixnum args" do
73
+ it "passes with integer args" do
74
74
  subject.args = 1
75
75
  expect(errors).to be_empty
76
76
  end
@@ -118,7 +118,7 @@ describe VagrantPlugins::LocalExecPush::Config do
118
118
  expect(errors).to be_empty
119
119
  end
120
120
 
121
- it "passes with fixnum args" do
121
+ it "passes with integer args" do
122
122
  subject.args = 1
123
123
  expect(errors).to be_empty
124
124
  end
@@ -210,4 +210,32 @@ describe Vagrant::Util::Downloader do
210
210
  expect(subject.head).to eq("foo")
211
211
  end
212
212
  end
213
+
214
+ describe "#options" do
215
+ describe "CURL_CA_BUNDLE" do
216
+ let(:ca_bundle){ "CUSTOM_CA_BUNDLE" }
217
+
218
+ context "when running within the installer" do
219
+ before do
220
+ allow(Vagrant).to receive(:in_installer?).and_return(true)
221
+ allow(ENV).to receive(:[]).with("CURL_CA_BUNDLE").and_return(ca_bundle)
222
+ end
223
+
224
+ it "should set custom CURL_CA_BUNDLE in subprocess ENV" do
225
+ _, subprocess_opts = subject.send(:options)
226
+ expect(subprocess_opts[:env]).not_to be_nil
227
+ expect(subprocess_opts[:env]["CURL_CA_BUNDLE"]).to eql(ca_bundle)
228
+ end
229
+ end
230
+
231
+ context "when not running within the installer" do
232
+ before{ allow(Vagrant).to receive(:installer?).and_return(false) }
233
+
234
+ it "should not set custom CURL_CA_BUNDLE in subprocess ENV" do
235
+ _, subprocess_opts = subject.send(:options)
236
+ expect(subprocess_opts[:env]).to be_nil
237
+ end
238
+ end
239
+ end
240
+ end
213
241
  end
@@ -22,10 +22,36 @@ describe Vagrant::Util::Platform do
22
22
  allow(Vagrant::Util::Which).to receive(:which).and_return("C:/msys2/cygpath")
23
23
  allow(Vagrant::Util::Subprocess).to receive(:execute).and_return(subprocess_result)
24
24
 
25
+ expect(Vagrant::Util::Subprocess).to receive(:execute).with("C:\\msys2\\cygpath", "-u", "-a", "C:\\msys2\\home\\vagrant")
26
+
25
27
  expect(subject.cygwin_path(path)).to eq("/home/vagrant")
26
28
  end
27
29
  end
28
30
 
31
+ describe "#msys_path" do
32
+ let(:updated_path) { "/home/vagrant" }
33
+ let(:subprocess_result) do
34
+ double("subprocess_result").tap do |result|
35
+ allow(result).to receive(:exit_code).and_return(0)
36
+ allow(result).to receive(:stdout).and_return(updated_path)
37
+ end
38
+ end
39
+ let(:old_path) { "/old/path/bin:/usr/local/bin:/usr/bin" }
40
+
41
+ it "takes a windows path and returns a formatted path" do
42
+ path = ENV["PATH"]
43
+ allow(Vagrant::Util::Which).to receive(:which).and_return("C:/msys2/cygpath")
44
+ allow(Vagrant::Util::Subprocess).to receive(:execute).and_return(subprocess_result)
45
+ allow(ENV).to receive(:[]).with("PATH").and_return(path)
46
+ allow(ENV).to receive(:[]).with("VAGRANT_OLD_ENV_PATH").and_return(old_path)
47
+
48
+ expect(Vagrant::Util::Subprocess).to receive(:execute).with("C:\\msys2\\cygpath", "-u", "-a", path)
49
+
50
+ expect(subject.msys_path(path)).to eq("/home/vagrant")
51
+ expect(ENV["PATH"]).to eq(path)
52
+ end
53
+ end
54
+
29
55
  describe "#cygwin?" do
30
56
  before do
31
57
  allow(subject).to receive(:platform).and_return("test")
@@ -156,4 +182,36 @@ describe Vagrant::Util::Platform do
156
182
  expect(subject.systemd?).to be_falsey
157
183
  end
158
184
  end
185
+
186
+ describe ".wsl_validate_matching_vagrant_versions!" do
187
+ let(:exe_version){ Vagrant::VERSION.to_s }
188
+
189
+ before do
190
+ allow(Vagrant::Util::Which).to receive(:which).and_return(true)
191
+ allow(Vagrant::Util::Subprocess).to receive(:execute).with("vagrant.exe", "version").
192
+ and_return(double(exit_code: 0, stdout: "Installed Version: #{exe_version}"))
193
+ end
194
+
195
+ it "should not raise an error" do
196
+ Vagrant::Util::Platform.wsl_validate_matching_vagrant_versions!
197
+ end
198
+
199
+ context "when windows vagrant.exe is not installed" do
200
+ before{ expect(Vagrant::Util::Which).to receive(:which).with("vagrant.exe").and_return(nil) }
201
+
202
+ it "should not raise an error" do
203
+ Vagrant::Util::Platform.wsl_validate_matching_vagrant_versions!
204
+ end
205
+ end
206
+
207
+ context "when versions do not match" do
208
+ let(:exe_version){ "1.9.9" }
209
+
210
+ it "should raise an error" do
211
+ expect {
212
+ Vagrant::Util::Platform.wsl_validate_matching_vagrant_versions!
213
+ }.to raise_error(Vagrant::Errors::WSLVagrantVersionMismatch)
214
+ end
215
+ end
216
+ end
159
217
  end
data/vagrant.gemspec CHANGED
@@ -42,7 +42,7 @@ Gem::Specification.new do |s|
42
42
  s.add_development_dependency "rake", "~> 12.0.0"
43
43
  s.add_development_dependency "rspec", "~> 3.5.0"
44
44
  s.add_development_dependency "rspec-its", "~> 1.2.0"
45
- s.add_development_dependency "webmock", "~> 1.20"
45
+ s.add_development_dependency "webmock", "~> 2.3.1"
46
46
  s.add_development_dependency "fake_ftp", "~> 0.1.1"
47
47
 
48
48
  # The following block of code determines the files that should be included
@@ -19,4 +19,9 @@ if ARGV.first
19
19
  end
20
20
  end
21
21
 
22
+ if Gem.respond_to?(:activate_bin_path)
22
23
  load Gem.activate_bin_path('winrm-fs', 'rwinrmcp', version)
24
+ else
25
+ gem "winrm-fs", version
26
+ load Gem.bin_path("winrm-fs", "rwinrmcp", version)
27
+ end
@@ -19,4 +19,9 @@ if ARGV.first
19
19
  end
20
20
  end
21
21
 
22
+ if Gem.respond_to?(:activate_bin_path)
22
23
  load Gem.activate_bin_path('vagrant-unbundled', 'vagrant', version)
24
+ else
25
+ gem "vagrant-unbundled", version
26
+ load Gem.bin_path("vagrant-unbundled", "vagrant", version)
27
+ end
@@ -19,4 +19,9 @@ if ARGV.first
19
19
  end
20
20
  end
21
21
 
22
+ if Gem.respond_to?(:activate_bin_path)
22
23
  load Gem.activate_bin_path('vagrant-spec', 'vagrant-spec', version)
24
+ else
25
+ gem "vagrant-spec", version
26
+ load Gem.bin_path("vagrant-spec", "vagrant-spec", version)
27
+ end
@@ -8,18 +8,18 @@ Gem::Specification.new do |s|
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
10
10
  s.authors = ["Mitchell Hashimoto".freeze]
11
- s.date = "2017-08-31"
11
+ s.date = "2017-12-07"
12
12
  s.description = "Tool and library for testing Vagrant plugins".freeze
13
13
  s.email = ["mitchell.hashimoto@gmail.com".freeze]
14
14
  s.executables = ["vagrant-spec".freeze]
15
15
  s.files = [".gitignore".freeze, ".travis.yml".freeze, "Gemfile".freeze, "LICENSE.txt".freeze, "README.md".freeze, "Rakefile".freeze, "acceptance/cli/box_spec.rb".freeze, "acceptance/cli/init_spec.rb".freeze, "acceptance/cli/plugin_spec.rb".freeze, "acceptance/cli/version_spec.rb".freeze, "acceptance/output/box_output.rb".freeze, "acceptance/output/plugin_output.rb".freeze, "acceptance/output/version_output.rb".freeze, "acceptance/provider/basic_spec.rb".freeze, "acceptance/provider/network_forwarded_port_spec.rb".freeze, "acceptance/provider/network_private_network_spec.rb".freeze, "acceptance/provider/package_spec.rb".freeze, "acceptance/provider/synced_folder_spec.rb".freeze, "acceptance/provisioner/chef_solo_spec.rb".freeze, "acceptance/provisioner/docker_spec.rb".freeze, "acceptance/provisioner/puppet_spec.rb".freeze, "acceptance/provisioner/shell_spec.rb".freeze, "acceptance/support-boxes/empty.box".freeze, "acceptance/support-boxes/empty/metadata.json".freeze, "acceptance/support-plugins/README.md".freeze, "acceptance/support-plugins/vagrant-spec-helper-basic-0.1.0.gem".freeze, "acceptance/support-plugins/vagrant-spec-helper-basic-0.2.0.gem".freeze, "acceptance/support-plugins/vagrant-spec-helper-basic-rename-0.1.0.gem".freeze, "acceptance/support-plugins/vagrant-spec-helper-basic/gem-0.1.0.gemspec".freeze, "acceptance/support-plugins/vagrant-spec-helper-basic/gem-0.2.0.gemspec".freeze, "acceptance/support-plugins/vagrant-spec-helper-basic/gem-renamed-0.1.0.gemspec".freeze, "acceptance/support-plugins/vagrant-spec-helper-basic/lib/vagrant-spec-helper-basic.rb".freeze, "acceptance/support-plugins/vagrant-spec-helper-basic/lib/vshb/command.rb".freeze, "acceptance/support-skeletons/network_forwarded_port/Vagrantfile".freeze, "acceptance/support-skeletons/network_private_network/Vagrantfile".freeze, "acceptance/support-skeletons/provisioner_chef_solo/Vagrantfile".freeze, "acceptance/support-skeletons/provisioner_chef_solo/basic-roles/cookbooks/bar/recipes/default.rb".freeze, "acceptance/support-skeletons/provisioner_chef_solo/basic-roles/roles/foo.rb".freeze, "acceptance/support-skeletons/provisioner_chef_solo/basic/cookbooks/foo/recipes/default.rb".freeze, "acceptance/support-skeletons/provisioner_docker/Vagrantfile".freeze, "acceptance/support-skeletons/provisioner_puppet/Vagrantfile".freeze, "acceptance/support-skeletons/provisioner_puppet/basic-modules/manifests/default.pp".freeze, "acceptance/support-skeletons/provisioner_puppet/basic-modules/modules/foo/manifests/init.pp".freeze, "acceptance/support-skeletons/provisioner_puppet/manifests/default.pp".freeze, "acceptance/support-skeletons/provisioner_shell/Vagrantfile".freeze, "acceptance/support-skeletons/provisioner_shell/args.sh".freeze, "acceptance/support-skeletons/provisioner_shell/path.sh".freeze, "acceptance/support-skeletons/provisioner_shell/user.sh".freeze, "acceptance/support-skeletons/provisioner_shell/user_root.sh".freeze, "acceptance/support-skeletons/synced_folder_nfs/Vagrantfile".freeze, "acceptance/support-skeletons/synced_folder_nfs/foo".freeze, "acceptance/support-skeletons/synced_folder_rsync/Vagrantfile".freeze, "acceptance/support-skeletons/synced_folder_rsync/foo".freeze, "acceptance/support-skeletons/synced_folders/Vagrantfile".freeze, "acceptance/support-skeletons/synced_folders/foo".freeze, "acceptance/synced_folder/nfs_spec.rb".freeze, "acceptance/synced_folder/rsync_spec.rb".freeze, "bin/vagrant-spec".freeze, "lib/vagrant-spec.rb".freeze, "lib/vagrant-spec/acceptance.rb".freeze, "lib/vagrant-spec/acceptance/configuration.rb".freeze, "lib/vagrant-spec/acceptance/isolated_environment.rb".freeze, "lib/vagrant-spec/acceptance/output.rb".freeze, "lib/vagrant-spec/acceptance/rspec.rb".freeze, "lib/vagrant-spec/acceptance/rspec/context.rb".freeze, "lib/vagrant-spec/acceptance/rspec/formatter.rb".freeze, "lib/vagrant-spec/acceptance/rspec/matcher_exit_with.rb".freeze, "lib/vagrant-spec/acceptance/rspec/matcher_match_output.rb".freeze, "lib/vagrant-spec/acceptance/rspec/shared_provider_synced_folder.rb".freeze, "lib/vagrant-spec/acceptance/runner.rb".freeze, "lib/vagrant-spec/cli.rb".freeze, "lib/vagrant-spec/components.rb".freeze, "lib/vagrant-spec/isolated_environment.rb".freeze, "lib/vagrant-spec/server.rb".freeze, "lib/vagrant-spec/subprocess.rb".freeze, "lib/vagrant-spec/unit.rb".freeze, "lib/vagrant-spec/unit/dummy_provider.rb".freeze, "lib/vagrant-spec/unit/isolated_environment.rb".freeze, "lib/vagrant-spec/unit/rspec.rb".freeze, "lib/vagrant-spec/unit/rspec/context.rb".freeze, "lib/vagrant-spec/vagrant-plugin/command.rb".freeze, "lib/vagrant-spec/vagrant-plugin/plugin.rb".freeze, "lib/vagrant-spec/version.rb".freeze, "lib/vagrant-spec/which.rb".freeze, "spec/acceptance/configuration_spec.rb".freeze, "spec/acceptance/isolated_environment_spec.rb".freeze, "spec/acceptance/shared/isolated_environment_spec.rb".freeze, "spec/acceptance/shared/output_spec.rb".freeze, "spec/components_spec.rb".freeze, "spec/isolated_environment_spec.rb".freeze, "spec/subprocess_spec.rb".freeze, "spec/unit/isolated_environment_spec.rb".freeze, "vagrant-spec.gemspec".freeze]
16
16
  s.homepage = "https://github.com/mitchellh/vagrant-spec".freeze
17
17
  s.licenses = ["MPL2".freeze]
18
- s.rubygems_version = "2.6.11".freeze
18
+ s.rubygems_version = "2.6.13".freeze
19
19
  s.summary = "Tool and library for testing Vagrant plugins.".freeze
20
20
  s.test_files = ["spec/acceptance/configuration_spec.rb".freeze, "spec/acceptance/isolated_environment_spec.rb".freeze, "spec/acceptance/shared/isolated_environment_spec.rb".freeze, "spec/acceptance/shared/output_spec.rb".freeze, "spec/components_spec.rb".freeze, "spec/isolated_environment_spec.rb".freeze, "spec/subprocess_spec.rb".freeze, "spec/unit/isolated_environment_spec.rb".freeze]
21
21
 
22
- s.installed_by_version = "2.6.11" if s.respond_to? :installed_by_version
22
+ s.installed_by_version = "2.6.13" if s.respond_to? :installed_by_version
23
23
 
24
24
  if s.respond_to? :specification_version then
25
25
  s.specification_version = 4
@@ -0,0 +1,216 @@
1
+ # Addressable 2.5.2
2
+ - better support for frozen string literals
3
+ - fixed bug w/ uppercase characters in scheme
4
+ - IDNA errors w/ emoji URLs
5
+ - compatibility w/ public_suffix 3.x
6
+
7
+ # Addressable 2.5.1
8
+ - allow unicode normalization to be disabled for URI Template expansion
9
+ - removed duplicate test
10
+
11
+ # Addressable 2.5.0
12
+ - dropping support for Ruby 1.9
13
+ - adding support for Ruby 2.4 preview
14
+ - add support for public suffixes and tld; first runtime dependency
15
+ - hostname escaping should match RFC; underscores in hostnames no longer escaped
16
+ - paths beginning with // and missing an authority are now considered invalid
17
+ - validation now also takes place after setting a path
18
+ - handle backslashes in authority more like a browser for `heuristic_parse`
19
+ - unescaped backslashes in host now raise an `InvalidURIError`
20
+ - `merge!`, `join!`, `omit!` and `normalize!` don't disable deferred validation
21
+ - `heuristic_parse` now trims whitespace before parsing
22
+ - host parts longer than 63 bytes will be ignored and not passed to libidn
23
+ - normalized values always encoded as UTF-8
24
+
25
+ # Addressable 2.4.0
26
+ - support for 1.8.x dropped
27
+ - double quotes in a host now raises an error
28
+ - newlines in host will no longer get unescaped during normalization
29
+ - stricter handling of bogus scheme values
30
+ - stricter handling of encoded port values
31
+ - calling `require 'addressable'` will now load both the URI and Template files
32
+ - assigning to the `hostname` component with an `IPAddr` object is now supported
33
+ - assigning to the `origin` component is now supported
34
+ - fixed minor bug where an exception would be thrown for a missing ACE suffix
35
+ - better partial expansion of URI templates
36
+
37
+ # Addressable 2.3.8
38
+ - fix warnings
39
+ - update dependency gems
40
+ - support for 1.8.x officially deprecated
41
+
42
+ # Addressable 2.3.7
43
+ - fix scenario in which invalid URIs don't get an exception until inspected
44
+ - handle hostnames with two adjacent periods correctly
45
+ - upgrade of RSpec
46
+
47
+ # Addressable 2.3.6
48
+ - normalization drops empty query string
49
+ - better handling in template extract for missing values
50
+ - template modifier for `'?'` now treated as optional
51
+ - fixed issue where character class parameters were modified
52
+ - templates can now be tested for equality
53
+ - added `:sorted` option to normalization of query strings
54
+ - fixed issue with normalization of hosts given in `'example.com.'` form
55
+
56
+ # Addressable 2.3.5
57
+ - added Addressable::URI#empty? method
58
+ - Addressable::URI#hostname methods now strip square brackets from IPv6 hosts
59
+ - compatibility with Net::HTTP in Ruby 2.0.0
60
+ - Addressable::URI#route_from should always give relative URIs
61
+
62
+ # Addressable 2.3.4
63
+ - fixed issue with encoding altering its inputs
64
+ - query string normalization now leaves ';' characters alone
65
+ - FakeFS is detected before attempting to load unicode tables
66
+ - additional testing to ensure frozen objects don't cause problems
67
+
68
+ # Addressable 2.3.3
69
+ - fixed issue with converting common primitives during template expansion
70
+ - fixed port encoding issue
71
+ - removed a few warnings
72
+ - normalize should now ignore %2B in query strings
73
+ - the IDNA logic should now be handled by libidn in Ruby 1.9
74
+ - no template match should now result in nil instead of an empty MatchData
75
+ - added license information to gemspec
76
+
77
+ # Addressable 2.3.2
78
+ - added Addressable::URI#default_port method
79
+ - fixed issue with Marshalling Unicode data on Windows
80
+ - improved heuristic parsing to better handle IPv4 addresses
81
+
82
+ # Addressable 2.3.1
83
+ - fixed missing unicode data file
84
+
85
+ # Addressable 2.3.0
86
+ - updated Addressable::Template to use RFC 6570, level 4
87
+ - fixed compatibility problems with some versions of Ruby
88
+ - moved unicode tables into a data file for performance reasons
89
+ - removing support for multiple query value notations
90
+
91
+ # Addressable 2.2.8
92
+ - fixed issues with dot segment removal code
93
+ - form encoding can now handle multiple values per key
94
+ - updated development environment
95
+
96
+ # Addressable 2.2.7
97
+ - fixed issues related to Addressable::URI#query_values=
98
+ - the Addressable::URI.parse method is now polymorphic
99
+
100
+ # Addressable 2.2.6
101
+ - changed the way ambiguous paths are handled
102
+ - fixed bug with frozen URIs
103
+ - https supported in heuristic parsing
104
+
105
+ # Addressable 2.2.5
106
+ - 'parsing' a pre-parsed URI object is now a dup operation
107
+ - introduced conditional support for libidn
108
+ - fixed normalization issue on ampersands in query strings
109
+ - added additional tests around handling of query strings
110
+
111
+ # Addressable 2.2.4
112
+ - added origin support from draft-ietf-websec-origin-00
113
+ - resolved issue with attempting to navigate below root
114
+ - fixed bug with string splitting in query strings
115
+
116
+ # Addressable 2.2.3
117
+ - added :flat_array notation for query strings
118
+
119
+ # Addressable 2.2.2
120
+ - fixed issue with percent escaping of '+' character in query strings
121
+
122
+ # Addressable 2.2.1
123
+ - added support for application/x-www-form-urlencoded.
124
+
125
+ # Addressable 2.2.0
126
+ - added site methods
127
+ - improved documentation
128
+
129
+ # Addressable 2.1.2
130
+ - added HTTP request URI methods
131
+ - better handling of Windows file paths
132
+ - validation_deferred boolean replaced with defer_validation block
133
+ - normalization of percent-encoded paths should now be correct
134
+ - fixed issue with constructing URIs with relative paths
135
+ - fixed warnings
136
+
137
+ # Addressable 2.1.1
138
+ - more type checking changes
139
+ - fixed issue with unicode normalization
140
+ - added method to find template defaults
141
+ - symbolic keys are now allowed in template mappings
142
+ - numeric values and symbolic values are now allowed in template mappings
143
+
144
+ # Addressable 2.1.0
145
+ - refactored URI template support out into its own class
146
+ - removed extract method due to being useless and unreliable
147
+ - removed Addressable::URI.expand_template
148
+ - removed Addressable::URI#extract_mapping
149
+ - added partial template expansion
150
+ - fixed minor bugs in the parse and heuristic_parse methods
151
+ - fixed incompatibility with Ruby 1.9.1
152
+ - fixed bottleneck in Addressable::URI#hash and Addressable::URI#to_s
153
+ - fixed unicode normalization exception
154
+ - updated query_values methods to better handle subscript notation
155
+ - worked around issue with freezing URIs
156
+ - improved specs
157
+
158
+ # Addressable 2.0.2
159
+ - fixed issue with URI template expansion
160
+ - fixed issue with percent escaping characters 0-15
161
+
162
+ # Addressable 2.0.1
163
+ - fixed issue with query string assignment
164
+ - fixed issue with improperly encoded components
165
+
166
+ # Addressable 2.0.0
167
+ - the initialize method now takes an options hash as its only parameter
168
+ - added query_values method to URI class
169
+ - completely replaced IDNA implementation with pure Ruby
170
+ - renamed Addressable::ADDRESSABLE_VERSION to Addressable::VERSION
171
+ - completely reworked the Rakefile
172
+ - changed the behavior of the port method significantly
173
+ - Addressable::URI.encode_segment, Addressable::URI.unencode_segment renamed
174
+ - documentation is now in YARD format
175
+ - more rigorous type checking
176
+ - to_str method implemented, implicit conversion to Strings now allowed
177
+ - Addressable::URI#omit method added, Addressable::URI#merge method replaced
178
+ - updated URI Template code to match v 03 of the draft spec
179
+ - added a bunch of new specifications
180
+
181
+ # Addressable 1.0.4
182
+ - switched to using RSpec's pending system for specs that rely on IDN
183
+ - fixed issue with creating URIs with paths that are not prefixed with '/'
184
+
185
+ # Addressable 1.0.3
186
+ - implemented a hash method
187
+
188
+ # Addressable 1.0.2
189
+ - fixed minor bug with the extract_mapping method
190
+
191
+ # Addressable 1.0.1
192
+ - fixed minor bug with the extract_mapping method
193
+
194
+ # Addressable 1.0.0
195
+ - heuristic parse method added
196
+ - parsing is slightly more strict
197
+ - replaced to_h with to_hash
198
+ - fixed routing methods
199
+ - improved specifications
200
+ - improved heckle rake task
201
+ - no surviving heckle mutations
202
+
203
+ # Addressable 0.1.2
204
+ - improved normalization
205
+ - fixed bug in joining algorithm
206
+ - updated specifications
207
+
208
+ # Addressable 0.1.1
209
+ - updated documentation
210
+ - added URI Template variable extraction
211
+
212
+ # Addressable 0.1.0
213
+ - initial release
214
+ - implementation based on RFC 3986, 3987
215
+ - support for IRIs via libidn
216
+ - support for the URI Template draft spec