bundler-prehistoric 1.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (284) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +100 -0
  5. data/CHANGELOG.md +1640 -0
  6. data/CONTRIBUTING.md +32 -0
  7. data/DEVELOPMENT.md +117 -0
  8. data/Gemfile +3 -0
  9. data/ISSUES.md +96 -0
  10. data/LICENSE.md +23 -0
  11. data/README.md +46 -0
  12. data/Rakefile +256 -0
  13. data/UPGRADING.md +103 -0
  14. data/bin/bundle +21 -0
  15. data/bin/bundle_ruby +56 -0
  16. data/bin/bundler +21 -0
  17. data/bundler.gemspec +33 -0
  18. data/lib/bundler.rb +442 -0
  19. data/lib/bundler/backports/time.rb +7 -0
  20. data/lib/bundler/capistrano.rb +16 -0
  21. data/lib/bundler/cli.rb +395 -0
  22. data/lib/bundler/cli/binstubs.rb +38 -0
  23. data/lib/bundler/cli/cache.rb +34 -0
  24. data/lib/bundler/cli/check.rb +35 -0
  25. data/lib/bundler/cli/clean.rb +19 -0
  26. data/lib/bundler/cli/common.rb +54 -0
  27. data/lib/bundler/cli/config.rb +84 -0
  28. data/lib/bundler/cli/console.rb +39 -0
  29. data/lib/bundler/cli/exec.rb +37 -0
  30. data/lib/bundler/cli/gem.rb +101 -0
  31. data/lib/bundler/cli/init.rb +33 -0
  32. data/lib/bundler/cli/inject.rb +33 -0
  33. data/lib/bundler/cli/install.rb +133 -0
  34. data/lib/bundler/cli/open.rb +23 -0
  35. data/lib/bundler/cli/outdated.rb +80 -0
  36. data/lib/bundler/cli/package.rb +36 -0
  37. data/lib/bundler/cli/platform.rb +43 -0
  38. data/lib/bundler/cli/show.rb +48 -0
  39. data/lib/bundler/cli/update.rb +73 -0
  40. data/lib/bundler/cli/viz.rb +27 -0
  41. data/lib/bundler/constants.rb +5 -0
  42. data/lib/bundler/current_ruby.rb +155 -0
  43. data/lib/bundler/definition.rb +604 -0
  44. data/lib/bundler/dep_proxy.rb +43 -0
  45. data/lib/bundler/dependency.rb +106 -0
  46. data/lib/bundler/deployment.rb +59 -0
  47. data/lib/bundler/deprecate.rb +15 -0
  48. data/lib/bundler/dsl.rb +305 -0
  49. data/lib/bundler/endpoint_specification.rb +76 -0
  50. data/lib/bundler/env.rb +56 -0
  51. data/lib/bundler/environment.rb +42 -0
  52. data/lib/bundler/fetcher.rb +396 -0
  53. data/lib/bundler/friendly_errors.rb +42 -0
  54. data/lib/bundler/gem_helper.rb +169 -0
  55. data/lib/bundler/gem_helpers.rb +25 -0
  56. data/lib/bundler/gem_installer.rb +9 -0
  57. data/lib/bundler/gem_path_manipulation.rb +8 -0
  58. data/lib/bundler/gem_tasks.rb +2 -0
  59. data/lib/bundler/graph.rb +169 -0
  60. data/lib/bundler/index.rb +184 -0
  61. data/lib/bundler/injector.rb +64 -0
  62. data/lib/bundler/installer.rb +332 -0
  63. data/lib/bundler/lazy_specification.rb +83 -0
  64. data/lib/bundler/lockfile_parser.rb +146 -0
  65. data/lib/bundler/match_platform.rb +13 -0
  66. data/lib/bundler/parallel_workers.rb +18 -0
  67. data/lib/bundler/parallel_workers/thread_worker.rb +30 -0
  68. data/lib/bundler/parallel_workers/unix_worker.rb +101 -0
  69. data/lib/bundler/parallel_workers/worker.rb +69 -0
  70. data/lib/bundler/psyched_yaml.rb +26 -0
  71. data/lib/bundler/remote_specification.rb +57 -0
  72. data/lib/bundler/resolver.rb +534 -0
  73. data/lib/bundler/retry.rb +60 -0
  74. data/lib/bundler/ruby_dsl.rb +11 -0
  75. data/lib/bundler/ruby_version.rb +117 -0
  76. data/lib/bundler/rubygems_ext.rb +171 -0
  77. data/lib/bundler/rubygems_integration.rb +578 -0
  78. data/lib/bundler/runtime.rb +310 -0
  79. data/lib/bundler/settings.rb +176 -0
  80. data/lib/bundler/setup.rb +23 -0
  81. data/lib/bundler/shared_helpers.rb +110 -0
  82. data/lib/bundler/similarity_detector.rb +63 -0
  83. data/lib/bundler/source.rb +29 -0
  84. data/lib/bundler/source/git.rb +289 -0
  85. data/lib/bundler/source/git/git_proxy.rb +158 -0
  86. data/lib/bundler/source/path.rb +225 -0
  87. data/lib/bundler/source/path/installer.rb +38 -0
  88. data/lib/bundler/source/rubygems.rb +334 -0
  89. data/lib/bundler/source/svn.rb +260 -0
  90. data/lib/bundler/source/svn/svn_proxy.rb +110 -0
  91. data/lib/bundler/spec_set.rb +154 -0
  92. data/lib/bundler/ssl_certs/.document +1 -0
  93. data/lib/bundler/ssl_certs/Class3PublicPrimaryCertificationAuthority.pem +14 -0
  94. data/lib/bundler/ssl_certs/DigiCertHighAssuranceEVRootCA.pem +23 -0
  95. data/lib/bundler/ssl_certs/EntrustnetSecureServerCertificationAuthority.pem +28 -0
  96. data/lib/bundler/ssl_certs/GeoTrustGlobalCA.pem +20 -0
  97. data/lib/bundler/ssl_certs/certificate_manager.rb +41 -0
  98. data/lib/bundler/templates/Executable +16 -0
  99. data/lib/bundler/templates/Executable.standalone +12 -0
  100. data/lib/bundler/templates/Gemfile +4 -0
  101. data/lib/bundler/templates/newgem/.travis.yml.tt +3 -0
  102. data/lib/bundler/templates/newgem/Gemfile.tt +4 -0
  103. data/lib/bundler/templates/newgem/LICENSE.txt.tt +22 -0
  104. data/lib/bundler/templates/newgem/README.md.tt +31 -0
  105. data/lib/bundler/templates/newgem/Rakefile.tt +26 -0
  106. data/lib/bundler/templates/newgem/bin/newgem.tt +3 -0
  107. data/lib/bundler/templates/newgem/consolerc.tt +3 -0
  108. data/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +3 -0
  109. data/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +9 -0
  110. data/lib/bundler/templates/newgem/ext/newgem/newgem.h.tt +6 -0
  111. data/lib/bundler/templates/newgem/gitignore.tt +16 -0
  112. data/lib/bundler/templates/newgem/lib/newgem.rb.tt +12 -0
  113. data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +7 -0
  114. data/lib/bundler/templates/newgem/newgem.gemspec.tt +38 -0
  115. data/lib/bundler/templates/newgem/rspec.tt +2 -0
  116. data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +11 -0
  117. data/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -0
  118. data/lib/bundler/templates/newgem/test/minitest_helper.rb.tt +4 -0
  119. data/lib/bundler/templates/newgem/test/test_newgem.rb.tt +11 -0
  120. data/lib/bundler/ui.rb +7 -0
  121. data/lib/bundler/ui/rg_proxy.rb +21 -0
  122. data/lib/bundler/ui/shell.rb +98 -0
  123. data/lib/bundler/ui/silent.rb +44 -0
  124. data/lib/bundler/vendor/.document +0 -0
  125. data/lib/bundler/vendor/net/http/faster.rb +26 -0
  126. data/lib/bundler/vendor/net/http/persistent.rb +1230 -0
  127. data/lib/bundler/vendor/net/http/persistent/ssl_reuse.rb +128 -0
  128. data/lib/bundler/vendor/thor.rb +480 -0
  129. data/lib/bundler/vendor/thor/actions.rb +319 -0
  130. data/lib/bundler/vendor/thor/actions/create_file.rb +103 -0
  131. data/lib/bundler/vendor/thor/actions/create_link.rb +59 -0
  132. data/lib/bundler/vendor/thor/actions/directory.rb +118 -0
  133. data/lib/bundler/vendor/thor/actions/empty_directory.rb +135 -0
  134. data/lib/bundler/vendor/thor/actions/file_manipulation.rb +316 -0
  135. data/lib/bundler/vendor/thor/actions/inject_into_file.rb +107 -0
  136. data/lib/bundler/vendor/thor/base.rb +656 -0
  137. data/lib/bundler/vendor/thor/command.rb +133 -0
  138. data/lib/bundler/vendor/thor/core_ext/hash_with_indifferent_access.rb +77 -0
  139. data/lib/bundler/vendor/thor/core_ext/io_binary_read.rb +10 -0
  140. data/lib/bundler/vendor/thor/core_ext/ordered_hash.rb +98 -0
  141. data/lib/bundler/vendor/thor/error.rb +32 -0
  142. data/lib/bundler/vendor/thor/group.rb +281 -0
  143. data/lib/bundler/vendor/thor/invocation.rb +173 -0
  144. data/lib/bundler/vendor/thor/line_editor.rb +17 -0
  145. data/lib/bundler/vendor/thor/line_editor/basic.rb +35 -0
  146. data/lib/bundler/vendor/thor/line_editor/readline.rb +88 -0
  147. data/lib/bundler/vendor/thor/parser.rb +4 -0
  148. data/lib/bundler/vendor/thor/parser/argument.rb +73 -0
  149. data/lib/bundler/vendor/thor/parser/arguments.rb +175 -0
  150. data/lib/bundler/vendor/thor/parser/option.rb +121 -0
  151. data/lib/bundler/vendor/thor/parser/options.rb +218 -0
  152. data/lib/bundler/vendor/thor/rake_compat.rb +71 -0
  153. data/lib/bundler/vendor/thor/runner.rb +322 -0
  154. data/lib/bundler/vendor/thor/shell.rb +81 -0
  155. data/lib/bundler/vendor/thor/shell/basic.rb +420 -0
  156. data/lib/bundler/vendor/thor/shell/color.rb +149 -0
  157. data/lib/bundler/vendor/thor/shell/html.rb +126 -0
  158. data/lib/bundler/vendor/thor/util.rb +267 -0
  159. data/lib/bundler/vendor/thor/version.rb +3 -0
  160. data/lib/bundler/vendored_persistent.rb +3 -0
  161. data/lib/bundler/vendored_thor.rb +8 -0
  162. data/lib/bundler/version.rb +6 -0
  163. data/lib/bundler/vlad.rb +11 -0
  164. data/man/bundle-config.ronn +155 -0
  165. data/man/bundle-exec.ronn +136 -0
  166. data/man/bundle-install.ronn +372 -0
  167. data/man/bundle-package.ronn +59 -0
  168. data/man/bundle-platform.ronn +42 -0
  169. data/man/bundle-update.ronn +179 -0
  170. data/man/bundle.ronn +92 -0
  171. data/man/gemfile.5.ronn +369 -0
  172. data/man/index.txt +7 -0
  173. data/spec/bundler/bundler_spec.rb +74 -0
  174. data/spec/bundler/cli_spec.rb +16 -0
  175. data/spec/bundler/definition_spec.rb +21 -0
  176. data/spec/bundler/dsl_spec.rb +108 -0
  177. data/spec/bundler/friendly_errors_spec.rb +13 -0
  178. data/spec/bundler/gem_helper_spec.rb +225 -0
  179. data/spec/bundler/psyched_yaml_spec.rb +8 -0
  180. data/spec/bundler/retry_spec.rb +59 -0
  181. data/spec/bundler/settings_spec.rb +13 -0
  182. data/spec/bundler/source_spec.rb +25 -0
  183. data/spec/cache/gems_spec.rb +316 -0
  184. data/spec/cache/git_spec.rb +188 -0
  185. data/spec/cache/path_spec.rb +121 -0
  186. data/spec/cache/platform_spec.rb +53 -0
  187. data/spec/cache/svn_spec.rb +82 -0
  188. data/spec/commands/binstubs_spec.rb +246 -0
  189. data/spec/commands/check_spec.rb +278 -0
  190. data/spec/commands/clean_spec.rb +652 -0
  191. data/spec/commands/config_spec.rb +227 -0
  192. data/spec/commands/console_spec.rb +102 -0
  193. data/spec/commands/exec_spec.rb +367 -0
  194. data/spec/commands/help_spec.rb +39 -0
  195. data/spec/commands/init_spec.rb +39 -0
  196. data/spec/commands/inject_spec.rb +78 -0
  197. data/spec/commands/licenses_spec.rb +31 -0
  198. data/spec/commands/newgem_spec.rb +451 -0
  199. data/spec/commands/open_spec.rb +80 -0
  200. data/spec/commands/outdated_spec.rb +168 -0
  201. data/spec/commands/package_spec.rb +128 -0
  202. data/spec/commands/show_spec.rb +152 -0
  203. data/spec/install/binstubs_spec.rb +24 -0
  204. data/spec/install/bundler_spec.rb +146 -0
  205. data/spec/install/deploy_spec.rb +237 -0
  206. data/spec/install/gemfile/gemspec_spec.rb +170 -0
  207. data/spec/install/gemfile/git_spec.rb +967 -0
  208. data/spec/install/gemfile/path_spec.rb +480 -0
  209. data/spec/install/gemfile/svn_spec.rb +582 -0
  210. data/spec/install/gemfile_spec.rb +44 -0
  211. data/spec/install/gems/c_ext_spec.rb +48 -0
  212. data/spec/install/gems/dependency_api_spec.rb +580 -0
  213. data/spec/install/gems/env_spec.rb +107 -0
  214. data/spec/install/gems/flex_spec.rb +314 -0
  215. data/spec/install/gems/groups_spec.rb +308 -0
  216. data/spec/install/gems/mirror_spec.rb +39 -0
  217. data/spec/install/gems/platform_spec.rb +221 -0
  218. data/spec/install/gems/post_install_spec.rb +121 -0
  219. data/spec/install/gems/resolving_spec.rb +124 -0
  220. data/spec/install/gems/simple_case_spec.rb +386 -0
  221. data/spec/install/gems/standalone_spec.rb +260 -0
  222. data/spec/install/gems/sudo_spec.rb +136 -0
  223. data/spec/install/gems/win32_spec.rb +26 -0
  224. data/spec/install/gemspecs_spec.rb +50 -0
  225. data/spec/install/path_spec.rb +150 -0
  226. data/spec/install/post_bundle_message_spec.rb +142 -0
  227. data/spec/install/prereleases_spec.rb +43 -0
  228. data/spec/install/security_policy_spec.rb +77 -0
  229. data/spec/install/upgrade_spec.rb +26 -0
  230. data/spec/lock/git_spec.rb +34 -0
  231. data/spec/lock/lockfile_spec.rb +912 -0
  232. data/spec/lock/svn_spec.rb +35 -0
  233. data/spec/other/bundle_ruby_spec.rb +142 -0
  234. data/spec/other/cli_dispatch_spec.rb +21 -0
  235. data/spec/other/ext_spec.rb +60 -0
  236. data/spec/other/platform_spec.rb +1285 -0
  237. data/spec/other/ssl_cert_spec.rb +10 -0
  238. data/spec/quality_spec.rb +88 -0
  239. data/spec/realworld/dependency_api_spec.rb +60 -0
  240. data/spec/realworld/edgecases_spec.rb +177 -0
  241. data/spec/realworld/parallel_spec.rb +69 -0
  242. data/spec/resolver/basic_spec.rb +66 -0
  243. data/spec/resolver/platform_spec.rb +88 -0
  244. data/spec/runtime/executable_spec.rb +149 -0
  245. data/spec/runtime/load_spec.rb +107 -0
  246. data/spec/runtime/platform_spec.rb +90 -0
  247. data/spec/runtime/require_spec.rb +332 -0
  248. data/spec/runtime/setup_spec.rb +856 -0
  249. data/spec/runtime/with_clean_env_spec.rb +91 -0
  250. data/spec/spec_helper.rb +114 -0
  251. data/spec/support/artifice/endopint_marshal_fail_basic_authentication.rb +13 -0
  252. data/spec/support/artifice/endpoint.rb +71 -0
  253. data/spec/support/artifice/endpoint_500.rb +37 -0
  254. data/spec/support/artifice/endpoint_api_missing.rb +16 -0
  255. data/spec/support/artifice/endpoint_basic_authentication.rb +13 -0
  256. data/spec/support/artifice/endpoint_creds_diff_host.rb +38 -0
  257. data/spec/support/artifice/endpoint_extra.rb +31 -0
  258. data/spec/support/artifice/endpoint_extra_missing.rb +15 -0
  259. data/spec/support/artifice/endpoint_fallback.rb +17 -0
  260. data/spec/support/artifice/endpoint_host_redirect.rb +15 -0
  261. data/spec/support/artifice/endpoint_marshal_fail.rb +11 -0
  262. data/spec/support/artifice/endpoint_redirect.rb +15 -0
  263. data/spec/support/artifice/endpoint_strict_basic_authentication.rb +18 -0
  264. data/spec/support/artifice/endpoint_timeout.rb +13 -0
  265. data/spec/support/builders.rb +748 -0
  266. data/spec/support/fakeweb/rack-1.0.0.marshal +2 -0
  267. data/spec/support/fakeweb/windows.rb +23 -0
  268. data/spec/support/hax.rb +22 -0
  269. data/spec/support/helpers.rb +348 -0
  270. data/spec/support/indexes.rb +280 -0
  271. data/spec/support/less_than_proc.rb +14 -0
  272. data/spec/support/matchers.rb +77 -0
  273. data/spec/support/path.rb +81 -0
  274. data/spec/support/permissions.rb +10 -0
  275. data/spec/support/platforms.rb +94 -0
  276. data/spec/support/ruby_ext.rb +20 -0
  277. data/spec/support/rubygems_ext.rb +39 -0
  278. data/spec/support/streams.rb +13 -0
  279. data/spec/support/sudo.rb +16 -0
  280. data/spec/update/gems_spec.rb +201 -0
  281. data/spec/update/git_spec.rb +236 -0
  282. data/spec/update/source_spec.rb +63 -0
  283. data/spec/update/svn_spec.rb +100 -0
  284. metadata +486 -0
@@ -0,0 +1,17 @@
1
+ require File.expand_path("../endpoint", __FILE__)
2
+
3
+ Artifice.deactivate
4
+
5
+ class EndpointFallback < Endpoint
6
+ DEPENDENCY_LIMIT = 60
7
+
8
+ get "/api/v1/dependencies" do
9
+ if params[:gems] && params[:gems].size <= DEPENDENCY_LIMIT
10
+ Marshal.dump(dependencies_for(params[:gems]))
11
+ else
12
+ halt 413, "Too many gems to resolve, please request less than #{DEPENDENCY_LIMIT} gems"
13
+ end
14
+ end
15
+ end
16
+
17
+ Artifice.activate_with(EndpointFallback)
@@ -0,0 +1,15 @@
1
+ require File.expand_path("../endpoint", __FILE__)
2
+
3
+ Artifice.deactivate
4
+
5
+ class EndpointHostRedirect < Endpoint
6
+ get "/fetch/actual/gem/:id", :host_name => 'localgemserver.test' do
7
+ redirect "http://bundler.localgemserver.test#{request.path_info}"
8
+ end
9
+
10
+ get "/api/v1/dependencies" do
11
+ status 404
12
+ end
13
+ end
14
+
15
+ Artifice.activate_with(EndpointHostRedirect)
@@ -0,0 +1,11 @@
1
+ require File.expand_path("../endpoint_fallback", __FILE__)
2
+
3
+ Artifice.deactivate
4
+
5
+ class EndpointMarshalFail < EndpointFallback
6
+ get "/api/v1/dependencies" do
7
+ "f0283y01hasf"
8
+ end
9
+ end
10
+
11
+ Artifice.activate_with(EndpointMarshalFail)
@@ -0,0 +1,15 @@
1
+ require File.expand_path("../endpoint", __FILE__)
2
+
3
+ Artifice.deactivate
4
+
5
+ class EndpointRedirect < Endpoint
6
+ get "/fetch/actual/gem/:id" do
7
+ redirect "/fetch/actual/gem/#{params[:id]}"
8
+ end
9
+
10
+ get "/api/v1/dependencies" do
11
+ status 404
12
+ end
13
+ end
14
+
15
+ Artifice.activate_with(EndpointRedirect)
@@ -0,0 +1,18 @@
1
+ require File.expand_path("../endpoint", __FILE__)
2
+
3
+ Artifice.deactivate
4
+
5
+ class EndpointStrictBasicAuthentication < Endpoint
6
+ before do
7
+ unless env["HTTP_AUTHORIZATION"]
8
+ halt 401, "Authentication info not supplied"
9
+ end
10
+
11
+ # Only accepts password == "password"
12
+ unless env["HTTP_AUTHORIZATION"] == "Basic dXNlcjpwYXNz"
13
+ halt 403, "Authentication failed"
14
+ end
15
+ end
16
+ end
17
+
18
+ Artifice.activate_with(EndpointStrictBasicAuthentication)
@@ -0,0 +1,13 @@
1
+ require File.expand_path("../endpoint_fallback", __FILE__)
2
+
3
+ Artifice.deactivate
4
+
5
+ class EndpointTimeout < EndpointFallback
6
+ SLEEP_TIMEOUT = 15
7
+
8
+ get "/api/v1/dependencies" do
9
+ sleep(SLEEP_TIMEOUT)
10
+ end
11
+ end
12
+
13
+ Artifice.activate_with(EndpointTimeout)
@@ -0,0 +1,748 @@
1
+ require 'bundler/shared_helpers'
2
+
3
+ module Spec
4
+ module Builders
5
+ def self.constantize(name)
6
+ name.gsub('-', '').upcase
7
+ end
8
+
9
+ def v(version)
10
+ Gem::Version.new(version)
11
+ end
12
+
13
+ def pl(platform)
14
+ Gem::Platform.new(platform)
15
+ end
16
+
17
+ def build_repo1
18
+ build_repo gem_repo1 do
19
+ build_gem "rack", %w(0.9.1 1.0.0) do |s|
20
+ s.executables = "rackup"
21
+ s.post_install_message = "Rack's post install message"
22
+ end
23
+
24
+ build_gem "thin" do |s|
25
+ s.add_dependency "rack"
26
+ s.post_install_message = "Thin's post install message"
27
+ end
28
+
29
+ build_gem "rack-obama" do |s|
30
+ s.add_dependency "rack"
31
+ s.post_install_message = "Rack-obama's post install message"
32
+ end
33
+
34
+ build_gem "rack_middleware", "1.0" do |s|
35
+ s.add_dependency "rack", "0.9.1"
36
+ end
37
+
38
+ build_gem "rails", "2.3.2" do |s|
39
+ s.executables = "rails"
40
+ s.add_dependency "rake", "10.0.2"
41
+ s.add_dependency "actionpack", "2.3.2"
42
+ s.add_dependency "activerecord", "2.3.2"
43
+ s.add_dependency "actionmailer", "2.3.2"
44
+ s.add_dependency "activeresource", "2.3.2"
45
+ end
46
+ build_gem "actionpack", "2.3.2" do |s|
47
+ s.add_dependency "activesupport", "2.3.2"
48
+ end
49
+ build_gem "activerecord", ["2.3.1", "2.3.2"] do |s|
50
+ s.add_dependency "activesupport", "2.3.2"
51
+ end
52
+ build_gem "actionmailer", "2.3.2" do |s|
53
+ s.add_dependency "activesupport", "2.3.2"
54
+ end
55
+ build_gem "activeresource", "2.3.2" do |s|
56
+ s.add_dependency "activesupport", "2.3.2"
57
+ end
58
+ build_gem "activesupport", %w(1.2.3 2.3.2 2.3.5)
59
+
60
+ build_gem "activemerchant" do |s|
61
+ s.add_dependency "activesupport", ">= 2.0.0"
62
+ end
63
+
64
+ build_gem "rails_fail" do |s|
65
+ s.add_dependency "activesupport", "= 1.2.3"
66
+ end
67
+
68
+ build_gem "missing_dep" do |s|
69
+ s.add_dependency "not_here"
70
+ end
71
+
72
+ build_gem "rspec", "1.2.7", :no_default => true do |s|
73
+ s.write "lib/spec.rb", "SPEC = '1.2.7'"
74
+ end
75
+
76
+ build_gem "rack-test", :no_default => true do |s|
77
+ s.write "lib/rack/test.rb", "RACK_TEST = '1.0'"
78
+ end
79
+
80
+ build_gem "platform_specific" do |s|
81
+ s.platform = Gem::Platform.local
82
+ s.write "lib/platform_specific.rb", "PLATFORM_SPECIFIC = '1.0.0 #{Gem::Platform.local}'"
83
+ end
84
+
85
+ build_gem "platform_specific" do |s|
86
+ s.platform = "java"
87
+ s.write "lib/platform_specific.rb", "PLATFORM_SPECIFIC = '1.0.0 JAVA'"
88
+ end
89
+
90
+ build_gem "platform_specific" do |s|
91
+ s.platform = "ruby"
92
+ s.write "lib/platform_specific.rb", "PLATFORM_SPECIFIC = '1.0.0 RUBY'"
93
+ end
94
+
95
+ build_gem "platform_specific" do |s|
96
+ s.platform = "x86-mswin32"
97
+ s.write "lib/platform_specific.rb", "PLATFORM_SPECIFIC = '1.0.0 MSWIN'"
98
+ end
99
+
100
+ build_gem "platform_specific" do |s|
101
+ s.platform = "x86-darwin-100"
102
+ s.write "lib/platform_specific.rb", "PLATFORM_SPECIFIC = '1.0.0 x86-darwin-100'"
103
+ end
104
+
105
+ build_gem "only_java" do |s|
106
+ s.platform = "java"
107
+ end
108
+
109
+ build_gem "nokogiri", "1.4.2"
110
+ build_gem "nokogiri", "1.4.2" do |s|
111
+ s.platform = "java"
112
+ s.write "lib/nokogiri.rb", "NOKOGIRI = '1.4.2 JAVA'"
113
+ s.add_dependency "weakling", ">= 0.0.3"
114
+ end
115
+
116
+ build_gem "weakling", "0.0.3"
117
+
118
+ build_gem "multiple_versioned_deps" do |s|
119
+ s.add_dependency "weakling", ">= 0.0.1", "< 0.1"
120
+ end
121
+
122
+ build_gem "not_released", "1.0.pre"
123
+
124
+ build_gem "has_prerelease", "1.0"
125
+ build_gem "has_prerelease", "1.1.pre"
126
+
127
+ build_gem "with_development_dependency" do |s|
128
+ s.add_development_dependency "activesupport", "= 2.3.5"
129
+ end
130
+
131
+ build_gem "with_license" do |s|
132
+ s.license = "MIT"
133
+ end
134
+
135
+ build_gem "with_implicit_rake_dep" do |s|
136
+ s.extensions << "Rakefile"
137
+ s.write "Rakefile", <<-RUBY
138
+ task :default do
139
+ path = File.expand_path("../lib", __FILE__)
140
+ FileUtils.mkdir_p(path)
141
+ File.open("\#{path}/implicit_rake_dep.rb", "w") do |f|
142
+ f.puts "IMPLICIT_RAKE_DEP = 'YES'"
143
+ end
144
+ end
145
+ RUBY
146
+ end
147
+
148
+ build_gem "another_implicit_rake_dep" do |s|
149
+ s.extensions << "Rakefile"
150
+ s.write "Rakefile", <<-RUBY
151
+ task :default do
152
+ path = File.expand_path("../lib", __FILE__)
153
+ FileUtils.mkdir_p(path)
154
+ File.open("\#{path}/another_implicit_rake_dep.rb", "w") do |f|
155
+ f.puts "ANOTHER_IMPLICIT_RAKE_DEP = 'YES'"
156
+ end
157
+ end
158
+ RUBY
159
+ end
160
+
161
+ build_gem "very_simple_binary" do |s|
162
+ s.add_c_extension
163
+ end
164
+
165
+ build_gem "bundler", "0.9" do |s|
166
+ s.executables = "bundle"
167
+ s.write "bin/bundle", "puts 'FAIL'"
168
+ end
169
+
170
+ # The bundler 0.8 gem has a rubygems plugin that always loads :(
171
+ build_gem "bundler", "0.8.1" do |s|
172
+ s.write "lib/bundler/omg.rb", ""
173
+ s.write "lib/rubygems_plugin.rb", "require 'bundler/omg' ; puts 'FAIL'"
174
+ end
175
+
176
+ build_gem "bundler_dep" do |s|
177
+ s.add_dependency "bundler"
178
+ end
179
+
180
+ # The yard gem iterates over Gem.source_index looking for plugins
181
+ build_gem "yard" do |s|
182
+ s.write "lib/yard.rb", <<-Y
183
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new("1.8.10")
184
+ specs = Gem::Specification
185
+ else
186
+ specs = Gem.source_index.find_name('')
187
+ end
188
+ specs.each do |gem|
189
+ puts gem.full_name
190
+ end
191
+ Y
192
+ end
193
+
194
+ # The rcov gem is platform mswin32, but has no arch
195
+ build_gem "rcov" do |s|
196
+ s.platform = Gem::Platform.new([nil, "mswin32", nil])
197
+ s.write "lib/rcov.rb", "RCOV = '1.0.0'"
198
+ end
199
+
200
+ build_gem "net-ssh"
201
+ build_gem "net-sftp", "1.1.1" do |s|
202
+ s.add_dependency "net-ssh", ">= 1.0.0", "< 1.99.0"
203
+ end
204
+
205
+ # Test comlicated gem dependencies for install
206
+ build_gem "net_a" do |s|
207
+ s.add_dependency "net_b"
208
+ s.add_dependency "net_build_extensions"
209
+ end
210
+
211
+ build_gem "net_b"
212
+
213
+ build_gem "net_build_extensions" do |s|
214
+ s.add_dependency "rake"
215
+ s.extensions << "Rakefile"
216
+ s.write "Rakefile", <<-RUBY
217
+ task :default do
218
+ path = File.expand_path("../lib", __FILE__)
219
+ FileUtils.mkdir_p(path)
220
+ File.open("\#{path}/net_build_extensions.rb", "w") do |f|
221
+ f.puts "NET_BUILD_EXTENSIONS = 'YES'"
222
+ end
223
+ end
224
+ RUBY
225
+ end
226
+
227
+ build_gem "net_c" do |s|
228
+ s.add_dependency "net_a"
229
+ s.add_dependency "net_d"
230
+ end
231
+
232
+ build_gem "net_d"
233
+
234
+ build_gem "net_e" do |s|
235
+ s.add_dependency "net_d"
236
+ end
237
+
238
+ # Capistrano did this (at least until version 2.5.10)
239
+ # Rubygems 2.2 doesn't allow the specifying of a dependency twice
240
+ # See https://github.com/rubygems/rubygems/commit/03dbac93a3396a80db258d9bc63500333c25bd2f
241
+ build_gem "double_deps", "1.0", :skip_validation => true do |s|
242
+ s.add_dependency "net-ssh", ">= 1.0.0"
243
+ s.add_dependency "net-ssh"
244
+ end
245
+
246
+ build_gem "foo"
247
+ end
248
+ end
249
+
250
+ def build_repo2(&blk)
251
+ FileUtils.rm_rf gem_repo2
252
+ FileUtils.cp_r gem_repo1, gem_repo2
253
+ update_repo2(&blk) if block_given?
254
+ end
255
+
256
+ def build_repo3
257
+ build_repo gem_repo3 do
258
+ build_gem "rack"
259
+ end
260
+ FileUtils.rm_rf Dir[gem_repo3("prerelease*")]
261
+ end
262
+
263
+ def update_repo2
264
+ update_repo gem_repo2 do
265
+ build_gem "rack", "1.2" do |s|
266
+ s.executables = "rackup"
267
+ end
268
+ yield if block_given?
269
+ end
270
+ end
271
+
272
+ def build_security_repo
273
+ build_repo security_repo do
274
+ build_gem "rack"
275
+
276
+ build_gem "signed_gem" do |s|
277
+ cert = 'signing-cert.pem'
278
+ pkey = 'signing-pkey.pem'
279
+ s.write cert, TEST_CERT
280
+ s.write pkey, TEST_PKEY
281
+ s.signing_key = pkey
282
+ s.cert_chain = [cert]
283
+ end
284
+ end
285
+
286
+ end
287
+
288
+ def build_repo(path, &blk)
289
+ return if File.directory?(path)
290
+ rake_path = Dir["#{Path.base_system_gems}/**/rake*.gem"].first
291
+ if rake_path
292
+ FileUtils.mkdir_p("#{path}/gems")
293
+ FileUtils.cp rake_path, "#{path}/gems/"
294
+ else
295
+ abort "You need to `rm -rf #{tmp}`"
296
+ end
297
+ update_repo(path, &blk)
298
+ end
299
+
300
+ def update_repo(path)
301
+ @_build_path = "#{path}/gems"
302
+ yield
303
+ @_build_path = nil
304
+ with_gem_path_as Path.base_system_gems do
305
+ Dir.chdir(path) { gem_command :generate_index }
306
+ end
307
+ end
308
+
309
+ def build_index(&block)
310
+ index = Bundler::Index.new
311
+ IndexBuilder.run(index, &block) if block_given?
312
+ index
313
+ end
314
+
315
+ def build_spec(name, version, platform = nil, &block)
316
+ Array(version).map do |v|
317
+ Gem::Specification.new do |s|
318
+ s.name = name
319
+ s.version = Gem::Version.new(v)
320
+ s.platform = platform
321
+ DepBuilder.run(s, &block) if block_given?
322
+ end
323
+ end
324
+ end
325
+
326
+ def build_dep(name, requirements = Gem::Requirement.default, type = :runtime)
327
+ Bundler::Dependency.new(name, :version => requirements)
328
+ end
329
+
330
+ def build_lib(name, *args, &blk)
331
+ build_with(LibBuilder, name, args, &blk)
332
+ end
333
+
334
+ def build_gem(name, *args, &blk)
335
+ build_with(GemBuilder, name, args, &blk)
336
+ end
337
+
338
+ def build_git(name, *args, &block)
339
+ opts = args.last.is_a?(Hash) ? args.last : {}
340
+ builder = opts[:bare] ? GitBareBuilder : GitBuilder
341
+ spec = build_with(builder, name, args, &block)
342
+ GitReader.new(opts[:path] || lib_path(spec.full_name))
343
+ end
344
+
345
+ def update_git(name, *args, &block)
346
+ spec = build_with(GitUpdater, name, args, &block)
347
+ GitReader.new lib_path(spec.full_name)
348
+ end
349
+
350
+ def build_svn(name, *args, &block)
351
+ opts = args.last.is_a?(Hash) ? args.last : {}
352
+ spec = build_with(SVNBuilder, name, args, &block)
353
+ SVNReader.new(opts[:path] || lib_path(spec.full_name))
354
+ end
355
+
356
+ def update_svn(name, *args, &block)
357
+ spec = build_with(SVNUpdater, name, args, &block)
358
+ SVNReader.new lib_path(spec.full_name)
359
+ end
360
+
361
+ private
362
+
363
+ def build_with(builder, name, args, &blk)
364
+ @_build_path ||= nil
365
+ options = args.last.is_a?(Hash) ? args.pop : {}
366
+ versions = args.last || "1.0"
367
+ spec = nil
368
+
369
+ options[:path] ||= @_build_path
370
+
371
+ Array(versions).each do |version|
372
+ spec = builder.new(self, name, version)
373
+ if !spec.authors or spec.authors.empty?
374
+ spec.authors = ["no one"]
375
+ end
376
+ yield spec if block_given?
377
+ spec._build(options)
378
+ end
379
+
380
+ spec
381
+ end
382
+
383
+ class IndexBuilder
384
+ include Builders
385
+
386
+ def self.run(index, &block)
387
+ new(index).run(&block)
388
+ end
389
+
390
+ def initialize(index)
391
+ @index = index
392
+ end
393
+
394
+ def run(&block)
395
+ instance_eval(&block)
396
+ end
397
+
398
+ def gem(*args, &block)
399
+ build_spec(*args, &block).each do |s|
400
+ @index << s
401
+ end
402
+ end
403
+
404
+ def platforms(platforms)
405
+ platforms.split(/\s+/).each do |platform|
406
+ platform.gsub!(/^(mswin32)$/, 'x86-\1')
407
+ yield Gem::Platform.new(platform)
408
+ end
409
+ end
410
+
411
+ def versions(versions)
412
+ versions.split(/\s+/).each { |version| yield v(version) }
413
+ end
414
+ end
415
+
416
+ class DepBuilder
417
+ include Builders
418
+
419
+ def self.run(spec, &block)
420
+ new(spec).run(&block)
421
+ end
422
+
423
+ def initialize(spec)
424
+ @spec = spec
425
+ end
426
+
427
+ def run(&block)
428
+ instance_eval(&block)
429
+ end
430
+
431
+ def runtime(name, requirements)
432
+ @spec.add_runtime_dependency(name, requirements)
433
+ end
434
+
435
+ alias dep runtime
436
+ end
437
+
438
+ class LibBuilder
439
+ def initialize(context, name, version)
440
+ @context = context
441
+ @name = name
442
+ @spec = Gem::Specification.new do |s|
443
+ s.name = name
444
+ s.version = version
445
+ s.summary = "This is just a fake gem for testing"
446
+ end
447
+ @files = {}
448
+ end
449
+
450
+ def method_missing(*args, &blk)
451
+ @spec.send(*args, &blk)
452
+ end
453
+
454
+ def write(file, source = "")
455
+ @files[file] = source
456
+ end
457
+
458
+ def executables=(val)
459
+ Array(val).each do |file|
460
+ write "#{@spec.bindir}/#{file}", "require '#{@name}' ; puts #{@name.upcase}"
461
+ end
462
+ @spec.executables = Array(val)
463
+ end
464
+
465
+ def add_c_extension
466
+ require_paths << 'ext'
467
+ extensions << "ext/extconf.rb"
468
+ write "ext/extconf.rb", <<-RUBY
469
+ require "mkmf"
470
+
471
+ # exit 1 unless with_config("simple")
472
+
473
+ extension_name = "very_simple_binary_c"
474
+ dir_config extension_name
475
+ create_makefile extension_name
476
+ RUBY
477
+ write "ext/very_simple_binary.c", <<-C
478
+ #include "ruby.h"
479
+
480
+ void Init_very_simple_binary_c() {
481
+ rb_define_module("VerySimpleBinaryInC");
482
+ }
483
+ C
484
+ end
485
+
486
+ def _build(options)
487
+ path = options[:path] || _default_path
488
+
489
+ if options[:rubygems_version]
490
+ @spec.rubygems_version = options[:rubygems_version]
491
+ def @spec.mark_version; end
492
+ def @spec.validate; end
493
+ end
494
+
495
+ case options[:gemspec]
496
+ when false
497
+ # do nothing
498
+ when :yaml
499
+ @files["#{name}.gemspec"] = @spec.to_yaml
500
+ else
501
+ @files["#{name}.gemspec"] = @spec.to_ruby
502
+ end
503
+
504
+ unless options[:no_default]
505
+ @files = _default_files.merge(@files)
506
+ end
507
+
508
+ @spec.authors = ["no one"]
509
+
510
+ @files.each do |file, source|
511
+ file = Pathname.new(path).join(file)
512
+ FileUtils.mkdir_p(file.dirname)
513
+ File.open(file, 'w') { |f| f.puts source }
514
+ end
515
+ @spec.files = @files.keys
516
+ path
517
+ end
518
+
519
+ def _default_files
520
+ @_default_files ||= { "lib/#{name}.rb" => "#{Builders.constantize(name)} = '#{version}'" }
521
+ end
522
+
523
+ def _default_path
524
+ @context.tmp('libs', @spec.full_name)
525
+ end
526
+ end
527
+
528
+ class GitBuilder < LibBuilder
529
+ def _build(options)
530
+ path = options[:path] || _default_path
531
+ super(options.merge(:path => path))
532
+ Dir.chdir(path) do
533
+ `git init`
534
+ `git add *`
535
+ `git config user.email "lol@wut.com"`
536
+ `git config user.name "lolwut"`
537
+ `git commit -m 'OMG INITIAL COMMIT'`
538
+ end
539
+ end
540
+ end
541
+
542
+ class GitBareBuilder < LibBuilder
543
+ def _build(options)
544
+ path = options[:path] || _default_path
545
+ super(options.merge(:path => path))
546
+ Dir.chdir(path) do
547
+ `git init --bare`
548
+ end
549
+ end
550
+ end
551
+
552
+ class GitUpdater < LibBuilder
553
+ def silently(str)
554
+ `#{str} 2>#{Bundler::NULL}`
555
+ end
556
+
557
+ def _build(options)
558
+ libpath = options[:path] || _default_path
559
+
560
+ Dir.chdir(libpath) do
561
+ silently "git checkout master"
562
+
563
+ if branch = options[:branch]
564
+ raise "You can't specify `master` as the branch" if branch == "master"
565
+
566
+ if `git branch | grep #{branch}`.empty?
567
+ silently("git branch #{branch}")
568
+ end
569
+
570
+ silently("git checkout #{branch}")
571
+ elsif tag = options[:tag]
572
+ `git tag #{tag}`
573
+ elsif options[:remote]
574
+ silently("git remote add origin file://#{options[:remote]}")
575
+ elsif options[:push]
576
+ silently("git push origin #{options[:push]}")
577
+ end
578
+
579
+ current_ref = `git rev-parse HEAD`.strip
580
+ _default_files.keys.each do |path|
581
+ _default_files[path] << "\n#{Builders.constantize(name)}_PREV_REF = '#{current_ref}'"
582
+ end
583
+ super(options.merge(:path => libpath, :gemspec => false))
584
+ `git add *`
585
+ `git commit -m "BUMP"`
586
+ end
587
+ end
588
+ end
589
+
590
+ class GitReader
591
+ attr_reader :path
592
+
593
+ def initialize(path)
594
+ @path = path
595
+ end
596
+
597
+ def ref_for(ref, len = nil)
598
+ ref = git "rev-parse #{ref}"
599
+ ref = ref[0..len] if len
600
+ ref
601
+ end
602
+
603
+ private
604
+
605
+ def git(cmd)
606
+ Bundler::SharedHelpers.with_clean_git_env do
607
+ Dir.chdir(@path) { `git #{cmd}`.strip }
608
+ end
609
+ end
610
+
611
+ end
612
+
613
+ class SVNBuilder < LibBuilder
614
+ def _build(options)
615
+ path = options[:path] || _default_path
616
+ checkout_path = File.join(path, '.checkout')
617
+ super(options.merge(:path => path))
618
+ Dir.chdir(path) do
619
+ `mkdir .repo_data && find . -maxdepth 1 ! \\( -name ".repo_data" -or -name "." \\) -exec mv {} \\.repo_data/ \\;`
620
+ `svnadmin create .repo`
621
+ `svn import .repo_data file://#{File.join(path, '.repo')} -m 'OMG INITIAL COMMIT'`
622
+ `mv .repo/* .`
623
+ end
624
+
625
+ `mkdir #{checkout_path}`
626
+ Dir.chdir(checkout_path) do
627
+ `svn checkout file://#{path} .`
628
+ end
629
+ end
630
+ end
631
+
632
+ class SVNUpdater < LibBuilder
633
+ def _build(options)
634
+ path = options[:path] || _default_path
635
+ checkout_path = File.join(path, '.checkout')
636
+
637
+ Dir.chdir(checkout_path) do
638
+ current_ref = `svn info --revision HEAD file://#{checkout_path} | grep \"Revision\" | awk '{print $2}'`.strip
639
+ _default_files.keys.each do |prev_ref_path|
640
+ _default_files[prev_ref_path] << "\n#{Builders.constantize(name)}_PREV_REF = '#{current_ref}'"
641
+ end
642
+ super(options.merge(:path => checkout_path, :gemspec => false))
643
+ `svn add --force *`
644
+ `svn commit -m "BUMP"`
645
+ end
646
+ end
647
+ end
648
+
649
+ class SVNReader
650
+ attr_reader :path
651
+
652
+ def initialize(path)
653
+ @path = path
654
+ end
655
+
656
+ def ref_for(ref, len = nil)
657
+ ref = svn("info --revision #{ref} file://#{path} | grep \"Revision\" | awk '{print $2}'").strip
658
+ ref = ref[0..len] if len
659
+ ref
660
+ end
661
+
662
+ private
663
+
664
+ def svn(cmd)
665
+ Dir.chdir(@path) { `svn #{cmd}`.strip }
666
+ end
667
+ end
668
+
669
+ class GemBuilder < LibBuilder
670
+
671
+ def _build(opts)
672
+ lib_path = super(opts.merge(:path => @context.tmp(".tmp/#{@spec.full_name}"), :no_default => opts[:no_default]))
673
+ Dir.chdir(lib_path) do
674
+ destination = opts[:path] || _default_path
675
+ FileUtils.mkdir_p(destination)
676
+
677
+ if !@spec.authors or @spec.authors.empty?
678
+ @spec.authors = ["that guy"]
679
+ end
680
+
681
+ Bundler.rubygems.build(@spec, opts[:skip_validation])
682
+ if opts[:to_system]
683
+ `gem install --ignore-dependencies #{@spec.full_name}.gem`
684
+ else
685
+ FileUtils.mv("#{@spec.full_name}.gem", opts[:path] || _default_path)
686
+ end
687
+ end
688
+ end
689
+
690
+ def _default_path
691
+ @context.gem_repo1('gems')
692
+ end
693
+ end
694
+
695
+ TEST_CERT=<<CERT
696
+ -----BEGIN CERTIFICATE-----
697
+ MIIDMjCCAhqgAwIBAgIBATANBgkqhkiG9w0BAQUFADAnMQwwCgYDVQQDDAN5b3Ux
698
+ FzAVBgoJkiaJk/IsZAEZFgdleGFtcGxlMB4XDTE0MDIwNTE0MTEwNloXDTE1MDIw
699
+ NTE0MTEwNlowJzEMMAoGA1UEAwwDeW91MRcwFQYKCZImiZPyLGQBGRYHZXhhbXBs
700
+ ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANlvFdpN43c4DMS9Jo06
701
+ m0a7k3bQ3HWQ1yrYhZMi77F1F73NpBknYHIzDktQpGn6hs/4QFJT4m4zNEBF47UL
702
+ jHU5nTK5rjkS3niGYUjvh3ZEzVeo9zHUlD/UwflDo4ALl3TSo2KY/KdPS/UTdLXL
703
+ ajkQvaVJtEDgBPE3DPhlj5whp+Ik3mDHej7qpV6F502leAwYaFyOtlEG/ZGNG+nZ
704
+ L0clH0j77HpP42AylHDi+vakEM3xcjo9BeWQ6Vkboic93c9RTt6CWBWxMQP7Nol1
705
+ MOebz9XOSQclxpxWteXNfPRtMdAhmRl76SMI8ywzThNPpa4EH/yz34ftebVOgKyM
706
+ nd0CAwEAAaNpMGcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFA7D
707
+ n9qo0np23qi3aOYuAAPn/5IdMBYGA1UdEQQPMA2BC3lvdUBleGFtcGxlMBYGA1Ud
708
+ EgQPMA2BC3lvdUBleGFtcGxlMA0GCSqGSIb3DQEBBQUAA4IBAQB5N+71KiNX3k0Y
709
+ FWizUHUYOqo+fEk3aBoFbOFcx+M5TXPiA91pH8mgyyD9tVzqiYgCGk7g/UrOv5Ec
710
+ NHjYqsFecNPayj8u2Po07pp2Nbc9aqt9uxoRSENZ72Dzrk3YDStgji7Sk/LZW5Kn
711
+ 4JFTeRof+B7/ZijLZWBEnMfSHSIPaQu0Ig6c19OEhiiuhGOn4WUhGFYCadciKgnj
712
+ PtaUcxKuvXMwRPG3NZqeGZivTlrhAmmf7iPV/E334qzMytvAV8zycZFj2J5hvyLk
713
+ 432zLezmbFGc0uLIUjXDu9bM5WYGy1BOTuzuApyuCs9S1greqz17f8f01J87DX3X
714
+ wJsshs4b
715
+ -----END CERTIFICATE-----
716
+ CERT
717
+
718
+ TEST_PKEY=<<PKEY
719
+ -----BEGIN RSA PRIVATE KEY-----
720
+ MIIEowIBAAKCAQEA2W8V2k3jdzgMxL0mjTqbRruTdtDcdZDXKtiFkyLvsXUXvc2k
721
+ GSdgcjMOS1CkafqGz/hAUlPibjM0QEXjtQuMdTmdMrmuORLeeIZhSO+HdkTNV6j3
722
+ MdSUP9TB+UOjgAuXdNKjYpj8p09L9RN0tctqORC9pUm0QOAE8TcM+GWPnCGn4iTe
723
+ YMd6PuqlXoXnTaV4DBhoXI62UQb9kY0b6dkvRyUfSPvsek/jYDKUcOL69qQQzfFy
724
+ Oj0F5ZDpWRuiJz3dz1FO3oJYFbExA/s2iXUw55vP1c5JByXGnFa15c189G0x0CGZ
725
+ GXvpIwjzLDNOE0+lrgQf/LPfh+15tU6ArIyd3QIDAQABAoIBACbDqz20TS1gDMa2
726
+ gj0DidNedbflHKjJHdNBru7Ad8NHgOgR1YO2hXdWquG6itVqGMbTF4SV9/R1pIcg
727
+ 7qvEV1I+50u31tvOBWOvcYCzU48+TO2n7gowQA3xPHPYHzog1uu48fAOHl0lwgD7
728
+ av9OOK3b0jO5pC08wyTOD73pPWU0NrkTh2+N364leIi1pNuI1z4V+nEuIIm7XpVd
729
+ 5V4sXidMTiEMJwE6baEDfTjHKaoRndXrrPo3ryIXmcX7Ag1SwAQwF5fBCRToCgIx
730
+ dszEZB1bJD5gA6r+eGnJLB/F60nK607az5o3EdguoB2LKa6q6krpaRCmZU5svvoF
731
+ J7xgBPECgYEA8RIzHAQ3zbaibKdnllBLIgsqGdSzebTLKheFuigRotEV3Or/z5Lg
732
+ k/nVnThWVkTOSRqXTNpJAME6a4KTdcVSxYP+SdZVO1esazHrGb7xPVb7MWSE1cqp
733
+ WEk3Yy8OUOPoPQMc4dyGzd30Mi8IBB6gnFIYOTrpUo0XtkBv8rGGhfsCgYEA5uYn
734
+ 6QgL4NqNT84IXylmMb5ia3iBt6lhxI/A28CDtQvfScl4eYK0IjBwdfG6E1vJgyzg
735
+ nJzv3xEVo9bz+Kq7CcThWpK5JQaPnsV0Q74Wjk0ShHet15txOdJuKImnh5F6lylC
736
+ GTLR9gnptytfMH/uuw4ws0Q2kcg4l5NHKOWOnAcCgYEAvAwIVkhsB0n59Wu4gCZu
737
+ FUZENxYWUk/XUyQ6KnZrG2ih90xQ8+iMyqFOIm/52R2fFKNrdoWoALC6E3ct8+ZS
738
+ pMRLrelFXx8K3it4SwMJR2H8XBEfFW4bH0UtsW7Zafv+AunUs9LETP5gKG1LgXsq
739
+ qgXX43yy2LQ61O365YPZfdUCgYBVbTvA3MhARbvYldrFEnUL3GtfZbNgdxuD9Mee
740
+ xig0eJMBIrgfBLuOlqtVB70XYnM4xAbKCso4loKSHnofO1N99siFkRlM2JOUY2tz
741
+ kMWZmmxKdFjuF0WZ5f/5oYxI/QsFGC+rUQEbbWl56mMKd5qkvEhKWudxoklF0yiV
742
+ ufC8SwKBgDWb8iWqWN5a/kfvKoxFcDM74UHk/SeKMGAL+ujKLf58F+CbweM5pX9C
743
+ EUsxeoUEraVWTiyFVNqD81rCdceus9TdBj0ZIK1vUttaRZyrMAwF0uQSfjtxsOpd
744
+ l69BkyvzjgDPkmOHVGiSZDLi3YDvypbUpo6LOy4v5rVg5U2F/A0v
745
+ -----END RSA PRIVATE KEY-----
746
+ PKEY
747
+ end
748
+ end