bpm 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. data/.gitignore +4 -0
  2. data/.gitmodules +0 -0
  3. data/Gemfile +16 -0
  4. data/README.md +55 -0
  5. data/TODO.md +3 -0
  6. data/bin/bpm +8 -0
  7. data/bpm.gemspec +41 -0
  8. data/lib/bpm.rb +18 -0
  9. data/lib/bpm/cli.rb +6 -0
  10. data/lib/bpm/cli/base.rb +358 -0
  11. data/lib/bpm/cli/owner.rb +46 -0
  12. data/lib/bpm/credentials.rb +36 -0
  13. data/lib/bpm/default.json +9 -0
  14. data/lib/bpm/generator.rb +69 -0
  15. data/lib/bpm/init_generator.rb +43 -0
  16. data/lib/bpm/libgems_ext.rb +11 -0
  17. data/lib/bpm/libgems_ext/config_file.rb +33 -0
  18. data/lib/bpm/libgems_ext/dependency_installer.rb +150 -0
  19. data/lib/bpm/libgems_ext/installer.rb +39 -0
  20. data/lib/bpm/libgems_ext/libgems.rb +39 -0
  21. data/lib/bpm/libgems_ext/spec_fetcher.rb +11 -0
  22. data/lib/bpm/local.rb +76 -0
  23. data/lib/bpm/package.rb +277 -0
  24. data/lib/bpm/pipeline.rb +100 -0
  25. data/lib/bpm/pipeline/directive_processor.rb +47 -0
  26. data/lib/bpm/pipeline/generated_asset.rb +68 -0
  27. data/lib/bpm/pipeline/transport_processor.rb +32 -0
  28. data/lib/bpm/project.rb +427 -0
  29. data/lib/bpm/project_generator.rb +34 -0
  30. data/lib/bpm/remote.rb +104 -0
  31. data/lib/bpm/repository.rb +18 -0
  32. data/lib/bpm/server.rb +44 -0
  33. data/lib/bpm/version.rb +3 -0
  34. data/spec/cli/add_spec.rb +159 -0
  35. data/spec/cli/build_spec.rb +87 -0
  36. data/spec/cli/fetch_spec.rb +135 -0
  37. data/spec/cli/fetched_spec.rb +52 -0
  38. data/spec/cli/init_spec.rb +50 -0
  39. data/spec/cli/list_spec.rb +74 -0
  40. data/spec/cli/login_spec.rb +110 -0
  41. data/spec/cli/new_spec.rb +92 -0
  42. data/spec/cli/owner_spec.rb +114 -0
  43. data/spec/cli/push_spec.rb +73 -0
  44. data/spec/cli/remove_spec.rb +84 -0
  45. data/spec/cli/unpack_spec.rb +72 -0
  46. data/spec/cli/unyank_spec.rb +73 -0
  47. data/spec/cli/yank_spec.rb +73 -0
  48. data/spec/credentials_spec.rb +23 -0
  49. data/spec/fixtures/badrake-0.8.7.spd +0 -0
  50. data/spec/fixtures/builder-3.0.0.spd +0 -0
  51. data/spec/fixtures/bundler-1.1.pre.spd +0 -0
  52. data/spec/fixtures/coffee-1.0.1.pre.spd +0 -0
  53. data/spec/fixtures/core-test-0.4.9.spd +0 -0
  54. data/spec/fixtures/core-test/bin/cot +3 -0
  55. data/spec/fixtures/core-test/lib/main.js +1 -0
  56. data/spec/fixtures/core-test/package.json +46 -0
  57. data/spec/fixtures/core-test/resources/runner.css +1 -0
  58. data/spec/fixtures/core-test/tests/test.js +1 -0
  59. data/spec/fixtures/custom_generator-1.0.spd +0 -0
  60. data/spec/fixtures/custom_generator/lib/main.js +1 -0
  61. data/spec/fixtures/custom_generator/package.json +12 -0
  62. data/spec/fixtures/custom_generator/templates/init/project.json +19 -0
  63. data/spec/fixtures/custom_generator/templates/project/app.js +1 -0
  64. data/spec/fixtures/custom_generator/templates/project/lib/main.js +0 -0
  65. data/spec/fixtures/custom_generator/templates/project_generator.rb +20 -0
  66. data/spec/fixtures/hello_world/LICENSE +19 -0
  67. data/spec/fixtures/hello_world/README.md +21 -0
  68. data/spec/fixtures/hello_world/assets/bpm_packages.js +13 -0
  69. data/spec/fixtures/hello_world/assets/bpm_styles.css +14 -0
  70. data/spec/fixtures/hello_world/assets/papa-smurf.jpg +0 -0
  71. data/spec/fixtures/hello_world/hello_world.json +20 -0
  72. data/spec/fixtures/hello_world/lib/main.js +9 -0
  73. data/spec/fixtures/hello_world/packages/custom_package/assets/dummy.txt +1 -0
  74. data/spec/fixtures/hello_world/packages/custom_package/css/sample_styles.css +3 -0
  75. data/spec/fixtures/hello_world/packages/custom_package/custom_dir/basic-module.js +1 -0
  76. data/spec/fixtures/hello_world/packages/custom_package/lib/main.js +1 -0
  77. data/spec/fixtures/hello_world/packages/custom_package/package.json +22 -0
  78. data/spec/fixtures/hello_world/tests/main-test.js +8 -0
  79. data/spec/fixtures/highline-1.6.1.spd +0 -0
  80. data/spec/fixtures/ivory-0.0.1.spd +0 -0
  81. data/spec/fixtures/jquery-1.4.3.spd +0 -0
  82. data/spec/fixtures/optparse-1.0.1.spd +0 -0
  83. data/spec/fixtures/rake-0.8.6.spd +0 -0
  84. data/spec/fixtures/rake-0.8.7.spd +0 -0
  85. data/spec/fixtures/simple_hello/assets/bpm_packages.js +1 -0
  86. data/spec/fixtures/simple_hello/lib/main.js +1 -0
  87. data/spec/fixtures/spade-0.5.0.spd +0 -0
  88. data/spec/fixtures/src/README.txt +1 -0
  89. data/spec/fixtures/src/bundler-1.1.pre/.gitignore +22 -0
  90. data/spec/fixtures/src/bundler-1.1.pre/CHANGELOG.md +646 -0
  91. data/spec/fixtures/src/bundler-1.1.pre/ISSUES.md +47 -0
  92. data/spec/fixtures/src/bundler-1.1.pre/LICENSE +21 -0
  93. data/spec/fixtures/src/bundler-1.1.pre/README.md +29 -0
  94. data/spec/fixtures/src/bundler-1.1.pre/UPGRADING.md +103 -0
  95. data/spec/fixtures/src/bundler-1.1.pre/bin/bundle +20 -0
  96. data/spec/fixtures/src/bundler-1.1.pre/lib/bundler.js +23 -0
  97. data/spec/fixtures/src/bundler-1.1.pre/lib/bundler/definition.js +14 -0
  98. data/spec/fixtures/src/bundler-1.1.pre/lib/bundler/dependency.js +15 -0
  99. data/spec/fixtures/src/bundler-1.1.pre/lib/bundler/dsl.js +9 -0
  100. data/spec/fixtures/src/bundler-1.1.pre/lib/bundler/ui.js +6 -0
  101. data/spec/fixtures/src/bundler-1.1.pre/man/bundle-config.ronn +90 -0
  102. data/spec/fixtures/src/bundler-1.1.pre/man/bundle-exec.ronn +111 -0
  103. data/spec/fixtures/src/bundler-1.1.pre/man/bundle-install.ronn +314 -0
  104. data/spec/fixtures/src/bundler-1.1.pre/man/bundle-package.ronn +59 -0
  105. data/spec/fixtures/src/bundler-1.1.pre/man/bundle-update.ronn +176 -0
  106. data/spec/fixtures/src/bundler-1.1.pre/man/bundle.ronn +80 -0
  107. data/spec/fixtures/src/bundler-1.1.pre/man/gemfile.5.ronn +279 -0
  108. data/spec/fixtures/src/bundler-1.1.pre/man/index.txt +6 -0
  109. data/spec/fixtures/src/bundler-1.1.pre/package.json +19 -0
  110. data/spec/fixtures/src/coffee-1.0.1.pre/bin/cake +0 -0
  111. data/spec/fixtures/src/coffee-1.0.1.pre/bin/coffee +0 -0
  112. data/spec/fixtures/src/coffee-1.0.1.pre/lib/coffee.js +0 -0
  113. data/spec/fixtures/src/coffee-1.0.1.pre/lib/coffee/base.js +0 -0
  114. data/spec/fixtures/src/coffee-1.0.1.pre/lib/coffee/mocha/chai.js +0 -0
  115. data/spec/fixtures/src/coffee-1.0.1.pre/package.json +19 -0
  116. data/spec/fixtures/src/coffee-1.0.1.pre/qunit/coffee/test.js +0 -0
  117. data/spec/fixtures/src/coffee-1.0.1.pre/qunit/test.js +0 -0
  118. data/spec/fixtures/src/jquery/lib/main.js +7179 -0
  119. data/spec/fixtures/src/jquery/package.json +15 -0
  120. data/spec/fixtures/src/rake-0.8.6/CHANGES +436 -0
  121. data/spec/fixtures/src/rake-0.8.6/MIT-LICENSE +21 -0
  122. data/spec/fixtures/src/rake-0.8.6/README +196 -0
  123. data/spec/fixtures/src/rake-0.8.6/Rakefile +430 -0
  124. data/spec/fixtures/src/rake-0.8.6/TODO +20 -0
  125. data/spec/fixtures/src/rake-0.8.6/bin/rake +31 -0
  126. data/spec/fixtures/src/rake-0.8.6/doc/command_line_usage.rdoc +102 -0
  127. data/spec/fixtures/src/rake-0.8.6/doc/example/Rakefile1 +38 -0
  128. data/spec/fixtures/src/rake-0.8.6/doc/example/Rakefile2 +35 -0
  129. data/spec/fixtures/src/rake-0.8.6/doc/example/a.c +6 -0
  130. data/spec/fixtures/src/rake-0.8.6/doc/example/b.c +6 -0
  131. data/spec/fixtures/src/rake-0.8.6/doc/example/main.c +11 -0
  132. data/spec/fixtures/src/rake-0.8.6/doc/glossary.rdoc +51 -0
  133. data/spec/fixtures/src/rake-0.8.6/doc/jamis.rb +591 -0
  134. data/spec/fixtures/src/rake-0.8.6/doc/proto_rake.rdoc +127 -0
  135. data/spec/fixtures/src/rake-0.8.6/doc/rake.1.gz +0 -0
  136. data/spec/fixtures/src/rake-0.8.6/doc/rakefile.rdoc +534 -0
  137. data/spec/fixtures/src/rake-0.8.6/doc/rational.rdoc +151 -0
  138. data/spec/fixtures/src/rake-0.8.6/doc/release_notes/rake-0.4.14.rdoc +23 -0
  139. data/spec/fixtures/src/rake-0.8.6/doc/release_notes/rake-0.4.15.rdoc +35 -0
  140. data/spec/fixtures/src/rake-0.8.6/doc/release_notes/rake-0.5.0.rdoc +53 -0
  141. data/spec/fixtures/src/rake-0.8.6/doc/release_notes/rake-0.5.3.rdoc +78 -0
  142. data/spec/fixtures/src/rake-0.8.6/doc/release_notes/rake-0.5.4.rdoc +46 -0
  143. data/spec/fixtures/src/rake-0.8.6/doc/release_notes/rake-0.6.0.rdoc +141 -0
  144. data/spec/fixtures/src/rake-0.8.6/doc/release_notes/rake-0.7.0.rdoc +119 -0
  145. data/spec/fixtures/src/rake-0.8.6/doc/release_notes/rake-0.7.1.rdoc +59 -0
  146. data/spec/fixtures/src/rake-0.8.6/doc/release_notes/rake-0.7.2.rdoc +121 -0
  147. data/spec/fixtures/src/rake-0.8.6/doc/release_notes/rake-0.7.3.rdoc +47 -0
  148. data/spec/fixtures/src/rake-0.8.6/doc/release_notes/rake-0.8.0.rdoc +114 -0
  149. data/spec/fixtures/src/rake-0.8.6/doc/release_notes/rake-0.8.2.rdoc +165 -0
  150. data/spec/fixtures/src/rake-0.8.6/doc/release_notes/rake-0.8.3.rdoc +112 -0
  151. data/spec/fixtures/src/rake-0.8.6/doc/release_notes/rake-0.8.4.rdoc +147 -0
  152. data/spec/fixtures/src/rake-0.8.6/doc/release_notes/rake-0.8.5.rdoc +53 -0
  153. data/spec/fixtures/src/rake-0.8.6/doc/release_notes/rake-0.8.6.rdoc +55 -0
  154. data/spec/fixtures/src/rake-0.8.6/install.rb +88 -0
  155. data/spec/fixtures/src/rake-0.8.6/lib/rake.rb +2502 -0
  156. data/spec/fixtures/src/rake-0.8.6/lib/rake/alt_system.rb +108 -0
  157. data/spec/fixtures/src/rake-0.8.6/lib/rake/classic_namespace.rb +8 -0
  158. data/spec/fixtures/src/rake-0.8.6/lib/rake/clean.rb +33 -0
  159. data/spec/fixtures/src/rake-0.8.6/lib/rake/contrib/compositepublisher.rb +24 -0
  160. data/spec/fixtures/src/rake-0.8.6/lib/rake/contrib/ftptools.rb +153 -0
  161. data/spec/fixtures/src/rake-0.8.6/lib/rake/contrib/publisher.rb +75 -0
  162. data/spec/fixtures/src/rake-0.8.6/lib/rake/contrib/rubyforgepublisher.rb +18 -0
  163. data/spec/fixtures/src/rake-0.8.6/lib/rake/contrib/sshpublisher.rb +47 -0
  164. data/spec/fixtures/src/rake-0.8.6/lib/rake/contrib/sys.rb +209 -0
  165. data/spec/fixtures/src/rake-0.8.6/lib/rake/gempackagetask.rb +97 -0
  166. data/spec/fixtures/src/rake-0.8.6/lib/rake/loaders/makefile.rb +42 -0
  167. data/spec/fixtures/src/rake-0.8.6/lib/rake/packagetask.rb +184 -0
  168. data/spec/fixtures/src/rake-0.8.6/lib/rake/rake_test_loader.rb +5 -0
  169. data/spec/fixtures/src/rake-0.8.6/lib/rake/rdoctask.rb +209 -0
  170. data/spec/fixtures/src/rake-0.8.6/lib/rake/ruby182_test_unit_fix.rb +23 -0
  171. data/spec/fixtures/src/rake-0.8.6/lib/rake/runtest.rb +23 -0
  172. data/spec/fixtures/src/rake-0.8.6/lib/rake/tasklib.rb +23 -0
  173. data/spec/fixtures/src/rake-0.8.6/lib/rake/testtask.rb +161 -0
  174. data/spec/fixtures/src/rake-0.8.6/lib/rake/win32.rb +55 -0
  175. data/spec/fixtures/src/rake-0.8.6/package.json +18 -0
  176. data/spec/fixtures/src/rake-0.8.6/test/capture_stdout.rb +26 -0
  177. data/spec/fixtures/src/rake-0.8.7/CHANGES +440 -0
  178. data/spec/fixtures/src/rake-0.8.7/MIT-LICENSE +21 -0
  179. data/spec/fixtures/src/rake-0.8.7/README +196 -0
  180. data/spec/fixtures/src/rake-0.8.7/Rakefile +430 -0
  181. data/spec/fixtures/src/rake-0.8.7/TODO +20 -0
  182. data/spec/fixtures/src/rake-0.8.7/bin/rake +31 -0
  183. data/spec/fixtures/src/rake-0.8.7/doc/command_line_usage.rdoc +102 -0
  184. data/spec/fixtures/src/rake-0.8.7/doc/example/Rakefile1 +38 -0
  185. data/spec/fixtures/src/rake-0.8.7/doc/example/Rakefile2 +35 -0
  186. data/spec/fixtures/src/rake-0.8.7/doc/example/a.c +6 -0
  187. data/spec/fixtures/src/rake-0.8.7/doc/example/b.c +6 -0
  188. data/spec/fixtures/src/rake-0.8.7/doc/example/main.c +11 -0
  189. data/spec/fixtures/src/rake-0.8.7/doc/glossary.rdoc +51 -0
  190. data/spec/fixtures/src/rake-0.8.7/doc/jamis.rb +591 -0
  191. data/spec/fixtures/src/rake-0.8.7/doc/proto_rake.rdoc +127 -0
  192. data/spec/fixtures/src/rake-0.8.7/doc/rake.1.gz +0 -0
  193. data/spec/fixtures/src/rake-0.8.7/doc/rakefile.rdoc +534 -0
  194. data/spec/fixtures/src/rake-0.8.7/doc/rational.rdoc +151 -0
  195. data/spec/fixtures/src/rake-0.8.7/doc/release_notes/rake-0.4.14.rdoc +23 -0
  196. data/spec/fixtures/src/rake-0.8.7/doc/release_notes/rake-0.4.15.rdoc +35 -0
  197. data/spec/fixtures/src/rake-0.8.7/doc/release_notes/rake-0.5.0.rdoc +53 -0
  198. data/spec/fixtures/src/rake-0.8.7/doc/release_notes/rake-0.5.3.rdoc +78 -0
  199. data/spec/fixtures/src/rake-0.8.7/doc/release_notes/rake-0.5.4.rdoc +46 -0
  200. data/spec/fixtures/src/rake-0.8.7/doc/release_notes/rake-0.6.0.rdoc +141 -0
  201. data/spec/fixtures/src/rake-0.8.7/doc/release_notes/rake-0.7.0.rdoc +119 -0
  202. data/spec/fixtures/src/rake-0.8.7/doc/release_notes/rake-0.7.1.rdoc +59 -0
  203. data/spec/fixtures/src/rake-0.8.7/doc/release_notes/rake-0.7.2.rdoc +121 -0
  204. data/spec/fixtures/src/rake-0.8.7/doc/release_notes/rake-0.7.3.rdoc +47 -0
  205. data/spec/fixtures/src/rake-0.8.7/doc/release_notes/rake-0.8.0.rdoc +114 -0
  206. data/spec/fixtures/src/rake-0.8.7/doc/release_notes/rake-0.8.2.rdoc +165 -0
  207. data/spec/fixtures/src/rake-0.8.7/doc/release_notes/rake-0.8.3.rdoc +112 -0
  208. data/spec/fixtures/src/rake-0.8.7/doc/release_notes/rake-0.8.4.rdoc +147 -0
  209. data/spec/fixtures/src/rake-0.8.7/doc/release_notes/rake-0.8.5.rdoc +53 -0
  210. data/spec/fixtures/src/rake-0.8.7/doc/release_notes/rake-0.8.6.rdoc +55 -0
  211. data/spec/fixtures/src/rake-0.8.7/doc/release_notes/rake-0.8.7.rdoc +55 -0
  212. data/spec/fixtures/src/rake-0.8.7/install.rb +88 -0
  213. data/spec/fixtures/src/rake-0.8.7/lib/rake.rb +2506 -0
  214. data/spec/fixtures/src/rake-0.8.7/lib/rake/alt_system.rb +108 -0
  215. data/spec/fixtures/src/rake-0.8.7/lib/rake/classic_namespace.rb +8 -0
  216. data/spec/fixtures/src/rake-0.8.7/lib/rake/clean.rb +33 -0
  217. data/spec/fixtures/src/rake-0.8.7/lib/rake/contrib/compositepublisher.rb +24 -0
  218. data/spec/fixtures/src/rake-0.8.7/lib/rake/contrib/ftptools.rb +153 -0
  219. data/spec/fixtures/src/rake-0.8.7/lib/rake/contrib/publisher.rb +75 -0
  220. data/spec/fixtures/src/rake-0.8.7/lib/rake/contrib/rubyforgepublisher.rb +18 -0
  221. data/spec/fixtures/src/rake-0.8.7/lib/rake/contrib/sshpublisher.rb +47 -0
  222. data/spec/fixtures/src/rake-0.8.7/lib/rake/contrib/sys.rb +209 -0
  223. data/spec/fixtures/src/rake-0.8.7/lib/rake/gempackagetask.rb +97 -0
  224. data/spec/fixtures/src/rake-0.8.7/lib/rake/loaders/makefile.rb +42 -0
  225. data/spec/fixtures/src/rake-0.8.7/lib/rake/packagetask.rb +184 -0
  226. data/spec/fixtures/src/rake-0.8.7/lib/rake/rake_test_loader.rb +5 -0
  227. data/spec/fixtures/src/rake-0.8.7/lib/rake/rdoctask.rb +209 -0
  228. data/spec/fixtures/src/rake-0.8.7/lib/rake/ruby182_test_unit_fix.rb +23 -0
  229. data/spec/fixtures/src/rake-0.8.7/lib/rake/runtest.rb +23 -0
  230. data/spec/fixtures/src/rake-0.8.7/lib/rake/tasklib.rb +23 -0
  231. data/spec/fixtures/src/rake-0.8.7/lib/rake/testtask.rb +161 -0
  232. data/spec/fixtures/src/rake-0.8.7/lib/rake/win32.rb +55 -0
  233. data/spec/fixtures/src/rake-0.8.7/package.json +18 -0
  234. data/spec/fixtures/src/rake-0.8.7/test/capture_stdout.rb +26 -0
  235. data/spec/fixtures/src/spade/lib/main.js +1 -0
  236. data/spec/fixtures/src/spade/package.json +15 -0
  237. data/spec/fixtures/transporter/lib/main.js +3 -0
  238. data/spec/fixtures/transporter/packages/transport/lib/wrapper.js +5 -0
  239. data/spec/fixtures/transporter/packages/transport/package.json +21 -0
  240. data/spec/fixtures/transporter/transporter.json +18 -0
  241. data/spec/gauntlet_spec.rb +33 -0
  242. data/spec/package_spec.rb +319 -0
  243. data/spec/pipeline_spec.rb +213 -0
  244. data/spec/project_spec.rb +130 -0
  245. data/spec/spec_helper.rb +42 -0
  246. data/spec/support/cli.rb +93 -0
  247. data/spec/support/env.rb +18 -0
  248. data/spec/support/fake.rb +53 -0
  249. data/spec/support/fake_gem_server.rb +72 -0
  250. data/spec/support/fake_gemcutter.rb +50 -0
  251. data/spec/support/matchers.rb +32 -0
  252. data/spec/support/path.rb +63 -0
  253. data/spec/support/project.rb +43 -0
  254. data/templates/init/assets/bpm_packages.js +7 -0
  255. data/templates/init/assets/bpm_styles.css +7 -0
  256. data/templates/init/project.json +16 -0
  257. data/templates/project/LICENSE +19 -0
  258. data/templates/project/README.md +21 -0
  259. data/templates/project/app.js +1 -0
  260. data/templates/project/index.html +13 -0
  261. metadata +627 -0
@@ -0,0 +1,114 @@
1
+ require "spec_helper"
2
+
3
+ describe "bpm owner" do
4
+ let(:api_key) { "deadbeef" }
5
+ let(:creds) { bpm_dir("credentials") }
6
+
7
+ before do
8
+ goto_home
9
+ set_host
10
+ start_fake(FakeGemcutter.new(api_key))
11
+ end
12
+
13
+ context "with a good api key" do
14
+ before do
15
+ write_api_key(api_key)
16
+ end
17
+
18
+ it "registers new owners if package is owned" do
19
+ bpm "owner", "add", "rake", "geddy@example.com"
20
+
21
+ stdout.read.should include("Owner added successfully.")
22
+ end
23
+
24
+ it "removes owners if package is owned" do
25
+ bpm "owner", "remove", "rake", "geddy@example.com"
26
+
27
+ stdout.read.should include("Owner removed successfully.")
28
+ end
29
+
30
+ it "lists owners for a gem" do
31
+ bpm "owner", "list", "rake"
32
+
33
+ stdout.read.should == <<EOF
34
+ Owners for package: rake
35
+ - geddy@example.com
36
+ - lerxst@example.com
37
+ EOF
38
+ end
39
+ end
40
+
41
+ context "with wrong api key" do
42
+ before do
43
+ write_api_key("beefbeef")
44
+ end
45
+
46
+ it "shows rejection message for add if wrong api key is supplied" do
47
+ bpm "owner", "add", "rake", "geddy@example.com"
48
+
49
+ stdout.read.should include("One cannot simply walk into Mordor!")
50
+ end
51
+
52
+ it "shows rejection message for remove if wrong api key is supplied" do
53
+ bpm "owner", "remove", "rake", "geddy@example.com"
54
+
55
+ stdout.read.should include("One cannot simply walk into Mordor!")
56
+ end
57
+
58
+ it "shows rejection message for list if wrong api key is supplied" do
59
+ bpm "owner", "list", "rake"
60
+
61
+ stdout.read.should include("One cannot simply walk into Mordor!")
62
+ end
63
+ end
64
+ end
65
+
66
+ describe "bpm owner with wrong arguments" do
67
+ before do
68
+ cd(home)
69
+ env["HOME"] = home.to_s
70
+ env["RUBYGEMS_HOST"] = "http://localhost:9292"
71
+ end
72
+
73
+ it "asks for login first if api key does not exist" do
74
+ bpm "owner", "add", "rake", "geddy@example.com", :track_stderr => true
75
+
76
+ stderr.read.should include("Please login first with `bpm login`")
77
+ end
78
+
79
+ it "asks for login first if api key does not exist" do
80
+ bpm "owner", "remove", "rake", "geddy@example.com", :track_stderr => true
81
+
82
+ stderr.read.should include("Please login first with `bpm login`")
83
+ end
84
+
85
+ it "asks for login first if api key does not exist" do
86
+ bpm "owner", "list", "rake", :track_stderr => true
87
+
88
+ stderr.read.should include("Please login first with `bpm login`")
89
+ end
90
+
91
+ it "requires a package name for add" do
92
+ bpm "owner", "add", :track_stderr => true
93
+
94
+ stderr.read.should include("called incorrectly")
95
+ end
96
+
97
+ it "requires a package name for remove" do
98
+ bpm "owner", "remove", :track_stderr => true
99
+
100
+ stderr.read.should include("called incorrectly")
101
+ end
102
+
103
+ it "requires a package name for list" do
104
+ bpm "owner", "list", :track_stderr => true
105
+
106
+ stderr.read.should include("called incorrectly")
107
+ end
108
+
109
+ it "requires a package name for list with default command" do
110
+ bpm "owner", :track_stderr => true
111
+
112
+ stderr.read.should include("called incorrectly")
113
+ end
114
+ end
@@ -0,0 +1,73 @@
1
+ require "spec_helper"
2
+
3
+ describe "bpm push" do
4
+ let(:api_key) { "deadbeef" }
5
+ let(:creds) { bpm_dir("credentials") }
6
+
7
+ before do
8
+ goto_home
9
+ set_host
10
+ start_fake(FakeGemcutter.new(api_key))
11
+ end
12
+
13
+ context "with a good api key" do
14
+ before do
15
+ write_api_key(api_key)
16
+ end
17
+
18
+ it "registers a gem when sent with the right api key" do
19
+ bpm "push", "../../spec/fixtures/rake-0.8.7.spd"
20
+
21
+ stdout.read.should include("Successfully registered rake (0.8.7)")
22
+ end
23
+ end
24
+
25
+ it "shows rejection message if wrong api key is supplied" do
26
+ write_api_key("beefbeef")
27
+
28
+ bpm "push", "../../spec/fixtures/rake-0.8.7.spd"
29
+
30
+ stdout.read.should include("One cannot simply walk into Mordor!")
31
+ end
32
+ end
33
+
34
+ describe "bpm push without api key" do
35
+ before do
36
+ cd(home)
37
+ env["HOME"] = home.to_s
38
+ env["RUBYGEMS_HOST"] = "http://localhost:9292"
39
+ write_api_key("beefbeef")
40
+ end
41
+
42
+ it "ignores files that don't exist" do
43
+ bpm "push", "rake-1.0.0.spd"
44
+
45
+ stdout.read.should include("No such file")
46
+ end
47
+
48
+ it "must push a valid gem" do
49
+ bpm "push", "../../spec/fixtures/badrake-0.8.7.spd"
50
+
51
+ stdout.read.should include("There was a problem opening your package.")
52
+ end
53
+
54
+ it "does not allow pushing of random files" do
55
+ bpm "push", "../../Rakefile"
56
+
57
+ stdout.read.should include("There was a problem opening your package.")
58
+ end
59
+ end
60
+
61
+ describe "bpm push without api key" do
62
+ before do
63
+ cd(home)
64
+ env["HOME"] = home.to_s
65
+ env["RUBYGEMS_HOST"] = "http://localhost:9292"
66
+ end
67
+
68
+ it "asks for login first if api key does not exist" do
69
+ bpm "push", "../../spec/fixtures/rake-0.8.7.spd"
70
+
71
+ stdout.read.should include("Please login first with `bpm login`")
72
+ end
73
+ end
@@ -0,0 +1,84 @@
1
+ require 'spec_helper'
2
+ require 'json'
3
+
4
+ describe 'bpm remove' do
5
+
6
+ before do
7
+ goto_home
8
+ set_host
9
+ start_fake(FakeGemServer.new)
10
+ FileUtils.cp_r(fixtures('hello_world'), '.')
11
+ cd home('hello_world')
12
+ bpm 'compile' # make sure existing packages are installed
13
+ wait
14
+ end
15
+
16
+ it "should remove direct dependency from project" do
17
+ bpm 'remove', 'spade'
18
+ wait
19
+
20
+ output = stdout.read
21
+ output.should include("Removed package 'spade'")
22
+
23
+ no_dependency 'spade'
24
+ has_dependency 'core-test', '0.4.9', '0.4.9' # did not remove other dep
25
+ end
26
+
27
+ it "should remove soft dependencies" do
28
+ bpm 'remove', 'core-test'
29
+ wait
30
+
31
+ output = stdout.read
32
+ %w(core-test:0.4.9 ivory:0.0.1 optparse:1.0.1).each do |line|
33
+ pkg_name, pkg_vers = line.split ':'
34
+ output.should include("Removed package '#{pkg_name}'")
35
+ no_dependency pkg_name
36
+ end
37
+ end
38
+
39
+ it "should remove soft dependencies only when they are no longer needed" do
40
+ bpm 'add', 'ivory', '-v', '0.0.1', '--verbose' # make a hard dep
41
+ wait
42
+
43
+ bpm 'remove', 'core-test', '--verbose'
44
+ wait
45
+
46
+ output = stdout.read
47
+ %w(core-test:0.4.9 optparse:1.0.1).each do |line|
48
+ pkg_name, pkg_vers = line.split ':'
49
+ output.should include("Removed package '#{pkg_name}'")
50
+ no_dependency pkg_name
51
+ end
52
+
53
+ has_dependency 'ivory', '0.0.1', '0.0.1'
54
+
55
+ bpm 'remove', 'ivory'
56
+ wait
57
+
58
+ no_dependency 'ivory'
59
+
60
+ end
61
+
62
+ it "should do nothing when passed a non-existant dependency" do
63
+ bpm 'remove', 'fake', :track_stderr => true
64
+ wait
65
+
66
+ output = stderr.read
67
+ output.should include("'fake' is not a dependency")
68
+ end
69
+
70
+ it "should not uninstall local packages" do
71
+ bpm 'add', 'custom_package'
72
+ wait
73
+ has_dependency 'custom_package', '2.0.0'
74
+
75
+ bpm 'remove', 'custom_package'
76
+ output = stdout.read
77
+
78
+ no_dependency 'custom_package'
79
+ File.exists?(home('hello_world', 'packages', 'custom_package', 'package.json')).should be_true
80
+ end
81
+
82
+ it "should verify working with config-less projects"
83
+
84
+ end
@@ -0,0 +1,72 @@
1
+ require "spec_helper"
2
+
3
+ describe "bpm unpack" do
4
+ before do
5
+ goto_home
6
+ end
7
+
8
+ it "builds a gem from a given package.json" do
9
+ FileUtils.cp fixtures("coffee-1.0.1.pre.spd"), "."
10
+ bpm "unpack", "coffee-1.0.1.pre.spd"
11
+
12
+ exit_status.should be_success
13
+ output = stdout.read
14
+ output.should include("Unpacked package into: #{Dir.pwd}/coffee-1.0.1.pre")
15
+
16
+ home("coffee-1.0.1.pre/bin/coffee").should exist
17
+ home("coffee-1.0.1.pre/lib/coffee.js").should exist
18
+ home("coffee-1.0.1.pre/lib/coffee/base.js").should exist
19
+ home("coffee-1.0.1.pre/lib/coffee/mocha/chai.js").should exist
20
+ home("coffee-1.0.1.pre/qunit/coffee/test.js").should exist
21
+ home("coffee-1.0.1.pre/qunit/test.js").should exist
22
+ end
23
+
24
+ it "can unpack to a different directory" do
25
+ FileUtils.cp fixtures("coffee-1.0.1.pre.spd"), "."
26
+ bpm "unpack", "coffee-1.0.1.pre.spd", "--target", "star/bucks"
27
+
28
+ exit_status.should be_success
29
+ output = stdout.read
30
+ output.should include("Unpacked package into: #{Dir.pwd}/star/bucks/coffee-1.0.1.pre")
31
+
32
+ home("star/bucks/coffee-1.0.1.pre/bin/coffee").should exist
33
+ end
34
+
35
+ it "can unpack more than one package" do
36
+ FileUtils.cp fixtures("coffee-1.0.1.pre.spd"), "."
37
+ FileUtils.cp fixtures("jquery-1.4.3.spd"), "."
38
+ bpm "unpack", "coffee-1.0.1.pre.spd", "jquery-1.4.3.spd"
39
+
40
+ exit_status.should be_success
41
+ output = stdout.read
42
+ output.should include("Unpacked package into: #{Dir.pwd}/coffee-1.0.1.pre")
43
+ output.should include("Unpacked package into: #{Dir.pwd}/jquery-1.4.3")
44
+
45
+ home("coffee-1.0.1.pre", "bin", "coffee").should exist
46
+ home("jquery-1.4.3", "lib", "main.js").should exist
47
+ end
48
+
49
+ it "shows a friendly error message if bpm can't write to the given directory" do
50
+ FileUtils.mkdir_p(home("bad"))
51
+ cd(home("bad"))
52
+ FileUtils.cp fixtures("jquery-1.4.3.spd"), "."
53
+ FileUtils.chmod 0555, "."
54
+ bpm "unpack", "jquery-1.4.3.spd", :track_stderr => true
55
+
56
+ exit_status.should_not be_success
57
+ output = stderr.read
58
+ output.should include("There was a problem unpacking jquery-1.4.3.spd:")
59
+ output.should include("Permission denied")
60
+ end
61
+
62
+ it "shows a friendly error message if bpm can't read the package" do
63
+ FileUtils.cp fixtures("jquery-1.4.3.spd"), "."
64
+ FileUtils.chmod 0000, "jquery-1.4.3.spd"
65
+ bpm "unpack", "jquery-1.4.3.spd", :track_stderr => true
66
+
67
+ exit_status.should_not be_success
68
+ output = stderr.read
69
+ output.should include("There was a problem unpacking jquery-1.4.3.spd:")
70
+ output.should include("Permission denied")
71
+ end
72
+ end
@@ -0,0 +1,73 @@
1
+ require "spec_helper"
2
+
3
+ describe "bpm unyank" do
4
+ let(:api_key) { "deadbeef" }
5
+ let(:creds) { bpm_dir("credentials") }
6
+
7
+ before do
8
+ goto_home
9
+ set_host
10
+ start_fake(FakeGemcutter.new(api_key))
11
+ end
12
+
13
+ context "with a good api key" do
14
+ before do
15
+ write_api_key(api_key)
16
+ end
17
+
18
+ it "unyanks a gem when sent with the right api key" do
19
+ bpm "yank", "core-test", "--undo", "-v", "1.4.3"
20
+
21
+ stdout.read.should include("Successfully unyanked gem: core-test (1.4.3)")
22
+ end
23
+
24
+ it "must unyank a valid gem" do
25
+ bpm "yank", "blahblah", "--undo", "-v", "0.0.1"
26
+
27
+ stdout.read.should include("This gem could not be found")
28
+ end
29
+
30
+ it "does not unyank and indexed gem" do
31
+ bpm "yank", "core-test", "--undo", "-v", "2.4.3"
32
+
33
+ stdout.read.should include("The version 2.4.3 is already indexed.")
34
+ end
35
+ end
36
+
37
+ it "shows rejection message if wrong api key is supplied" do
38
+ write_api_key("beefbeef")
39
+
40
+ bpm "yank", "core-test", "--undo", "-v", "1.4.3"
41
+
42
+ stdout.read.should include("One cannot simply walk into Mordor!")
43
+ end
44
+ end
45
+
46
+ describe "bpm unyank with invalid api key" do
47
+ before do
48
+ cd(home)
49
+ env["HOME"] = home.to_s
50
+ env["RUBYGEMS_HOST"] = "http://localhost:9292"
51
+ write_api_key("beefbeef")
52
+ end
53
+
54
+ it "must require a version" do
55
+ bpm "yank", "core-test", "--undo"
56
+
57
+ stdout.read.should include("Version required")
58
+ end
59
+ end
60
+
61
+ describe "bpm unyank without api key" do
62
+ before do
63
+ cd(home)
64
+ env["HOME"] = home.to_s
65
+ env["RUBYGEMS_HOST"] = "http://localhost:9292"
66
+ end
67
+
68
+ it "asks for login first if api key does not exist" do
69
+ bpm "yank", "core-test", "-v", "1.4.3", "--undo"
70
+
71
+ stdout.read.should include("Please login first with `bpm login`")
72
+ end
73
+ end
@@ -0,0 +1,73 @@
1
+ require "spec_helper"
2
+
3
+ describe "bpm yank" do
4
+ let(:api_key) { "deadbeef" }
5
+ let(:creds) { bpm_dir("credentials") }
6
+
7
+ before do
8
+ goto_home
9
+ set_host
10
+ start_fake(FakeGemcutter.new(api_key))
11
+ end
12
+
13
+ context "with a good api key" do
14
+ before do
15
+ write_api_key(api_key)
16
+ end
17
+
18
+ it "yanks a gem when sent with the right api key" do
19
+ bpm "yank", "core-test", "-v", "1.4.3"
20
+
21
+ stdout.read.should include("Successfully yanked gem: core-test (1.4.3)")
22
+ end
23
+
24
+ it "must yank a valid gem" do
25
+ bpm "yank", "blahblah", "-v", "0.0.1"
26
+
27
+ stdout.read.should include("This gem could not be found")
28
+ end
29
+
30
+ it "does not yank a yanked gem" do
31
+ bpm "yank", "core-test", "-v", "2.4.3"
32
+
33
+ stdout.read.should include("The version 2.4.3 has already been yanked.")
34
+ end
35
+ end
36
+
37
+ it "shows rejection message if wrong api key is supplied" do
38
+ write_api_key("beefbeef")
39
+
40
+ bpm "yank", "core-test", "-v", "1.4.3"
41
+
42
+ stdout.read.should include("One cannot simply walk into Mordor!")
43
+ end
44
+ end
45
+
46
+ describe "bpm yank without api key" do
47
+ before do
48
+ cd(home)
49
+ env["HOME"] = home.to_s
50
+ env["RUBYGEMS_HOST"] = "http://localhost:9292"
51
+ write_api_key("beefbeef")
52
+ end
53
+
54
+ it "must require a version" do
55
+ bpm "yank", "core-test"
56
+
57
+ stdout.read.should include("Version required")
58
+ end
59
+ end
60
+
61
+ describe "bpm yank without api key" do
62
+ before do
63
+ cd(home)
64
+ env["HOME"] = home.to_s
65
+ env["RUBYGEMS_HOST"] = "http://localhost:9292"
66
+ end
67
+
68
+ it "asks for login first if api key does not exist" do
69
+ bpm "yank", "core-test", "-v", "1.4.3"
70
+
71
+ stdout.read.should include("Please login first with `bpm login`")
72
+ end
73
+ end