bpm 0.1.4 → 1.0.0.beta.4

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 (341) hide show
  1. data/CHANGELOG.md +20 -0
  2. data/README.md +1 -1
  3. data/TODO.md +90 -2
  4. data/bpm.gemspec +3 -3
  5. data/lib/bpm/cli/base.rb +103 -52
  6. data/lib/bpm/errors.rb +51 -0
  7. data/lib/bpm/init_generator.rb +1 -8
  8. data/lib/bpm/libgems_ext/libgems.rb +9 -0
  9. data/lib/bpm/local.rb +6 -11
  10. data/lib/bpm/package.rb +272 -178
  11. data/lib/bpm/pipeline/generated_asset.rb +88 -28
  12. data/lib/bpm/pipeline/plugin_asset.rb +8 -2
  13. data/lib/bpm/pipeline/source_url_processor.rb +16 -0
  14. data/lib/bpm/pipeline/transport_processor.rb +5 -3
  15. data/lib/bpm/pipeline.rb +33 -23
  16. data/lib/bpm/project.rb +492 -167
  17. data/lib/bpm/project_generator.rb +14 -1
  18. data/lib/bpm/remote.rb +6 -4
  19. data/lib/bpm/server.rb +4 -15
  20. data/lib/bpm/version.rb +2 -1
  21. data/lib/bpm.rb +2 -0
  22. data/man/bpm-add.1.ronn +22 -0
  23. data/man/bpm-build.1.ronn +22 -0
  24. data/man/bpm-compile.1.ronn +23 -0
  25. data/man/bpm-config.7.ronn +21 -0
  26. data/man/bpm-fetch.1.ronn +22 -0
  27. data/man/bpm-fetched.1.ronn +22 -0
  28. data/man/bpm-init.1.ronn +22 -0
  29. data/man/bpm-list.1.ronn +22 -0
  30. data/man/bpm-login.1.ronn +22 -0
  31. data/man/bpm-new.1.ronn +22 -0
  32. data/man/bpm-owner.1.ronn +22 -0
  33. data/man/bpm-preview.1.ronn +22 -0
  34. data/man/bpm-push.1.ronn +22 -0
  35. data/man/bpm-remove.1.ronn +22 -0
  36. data/man/bpm-unpack.1.ronn +22 -0
  37. data/man/bpm-yank.1.ronn +22 -0
  38. data/man/bpm.1.ronn +31 -0
  39. data/spec/cli/add_spec.rb +26 -7
  40. data/spec/cli/fetch_spec.rb +15 -6
  41. data/spec/cli/init_spec.rb +165 -25
  42. data/spec/cli/{build_spec.rb → pack_spec.rb} +9 -10
  43. data/spec/cli/push_spec.rb +4 -4
  44. data/spec/cli/rebuild_spec.rb +181 -0
  45. data/spec/cli/remove_spec.rb +3 -4
  46. data/spec/cli/unpack_spec.rb +6 -6
  47. data/spec/fixtures/gems/core-test-0.4.9.bpkg +0 -0
  48. data/spec/fixtures/{core-test-0.4.9.bpkg → gems/uglify-js-1.0.4.bpkg} +0 -0
  49. data/spec/fixtures/packages/core-test/extras/extra_file.html +3 -0
  50. data/spec/fixtures/packages/core-test/index.html +3 -0
  51. data/spec/fixtures/{core-test → packages/core-test}/package.json +9 -3
  52. data/spec/fixtures/packages/invalid_json/package.json +3 -0
  53. data/spec/fixtures/packages/uglify-js/README.html +825 -0
  54. data/spec/fixtures/packages/uglify-js/README.org +431 -0
  55. data/spec/fixtures/packages/uglify-js/bin/uglifyjs +305 -0
  56. data/spec/fixtures/packages/uglify-js/docstyle.css +75 -0
  57. data/spec/fixtures/packages/uglify-js/lib/parse-js.js +1 -0
  58. data/spec/fixtures/packages/uglify-js/lib/process.js +1 -0
  59. data/spec/fixtures/packages/uglify-js/lib/squeeze-more.js +1 -0
  60. data/spec/fixtures/packages/uglify-js/package.json +27 -0
  61. data/spec/fixtures/packages/uglify-js/plugins/minifier.js +6 -0
  62. data/spec/fixtures/packages/uglify-js/uglify-js.js +17 -0
  63. data/spec/fixtures/projects/hello2/README.md +21 -0
  64. data/{templates/init → spec/fixtures/projects/hello2}/assets/bpm_packages.js +6 -1
  65. data/{templates/init → spec/fixtures/projects/hello2}/assets/bpm_styles.css +1 -1
  66. data/spec/fixtures/projects/hello2/hello2.json +16 -0
  67. data/spec/fixtures/projects/hello2/index.html +13 -0
  68. data/spec/fixtures/projects/hello2/packages/a/lib/main.js +2 -0
  69. data/spec/fixtures/projects/hello2/packages/a/package.json +17 -0
  70. data/spec/fixtures/projects/hello2/packages/b/lib/main.js +2 -0
  71. data/spec/fixtures/projects/hello2/packages/b/package.json +17 -0
  72. data/spec/fixtures/projects/hello2/packages/c/lib/main.js +2 -0
  73. data/spec/fixtures/projects/hello2/packages/c/package.json +16 -0
  74. data/spec/fixtures/projects/hello_dev/LICENSE +19 -0
  75. data/spec/fixtures/projects/hello_dev/README.md +21 -0
  76. data/spec/fixtures/projects/hello_dev/app/main.js +6 -0
  77. data/spec/fixtures/projects/hello_dev/assets/bpm_libs.js +5 -0
  78. data/spec/fixtures/projects/hello_dev/assets/bpm_styles.css +6 -0
  79. data/spec/fixtures/projects/hello_dev/css/main.css +1 -0
  80. data/spec/fixtures/projects/hello_dev/hello_dev.json +25 -0
  81. data/spec/fixtures/projects/hello_dev/index.html +14 -0
  82. data/spec/fixtures/projects/hello_dev/packages/style_package/css/some_style.css +3 -0
  83. data/spec/fixtures/{minitest/minitest.json → projects/hello_dev/packages/style_package/package.json} +5 -9
  84. data/spec/fixtures/projects/hello_world/LICENSE +19 -0
  85. data/spec/fixtures/projects/hello_world/assets/bpm_packages.js +1 -0
  86. data/spec/fixtures/projects/hello_world/assets/bpm_styles.css +1 -0
  87. data/spec/fixtures/projects/hello_world/custom_dir/custom.js +1 -0
  88. data/spec/fixtures/projects/hello_world/hello_world.json +41 -0
  89. data/spec/fixtures/projects/hello_world/lib/another.js +1 -0
  90. data/spec/fixtures/{hello_world → projects/hello_world}/packages/custom_package/package.json +5 -2
  91. data/spec/fixtures/projects/hello_world/vendor/lib/something.js +1 -0
  92. data/spec/fixtures/projects/init_app/assets/bpm_libs.js +6 -0
  93. data/spec/fixtures/projects/init_app/assets/bpm_styles.css +5 -0
  94. data/spec/fixtures/projects/init_app/assets/new_project/bpm_libs.js +6 -0
  95. data/spec/fixtures/projects/init_app/assets/new_project/bpm_styles.css +5 -0
  96. data/spec/fixtures/projects/init_app/new_project.json +27 -0
  97. data/spec/fixtures/projects/init_default/assets/bpm_libs.js +6 -0
  98. data/spec/fixtures/projects/init_default/assets/bpm_styles.css +5 -0
  99. data/spec/fixtures/projects/init_default/new_project.json +15 -0
  100. data/spec/fixtures/projects/minitest/minitest.json +26 -0
  101. data/spec/fixtures/{minitest → projects/minitest}/packages/uglyduck/package.json +1 -1
  102. data/spec/fixtures/projects/needs_rake/needs_rake.json +7 -0
  103. data/spec/fixtures/{transporter → projects/transporter}/packages/transport/package.json +1 -1
  104. data/spec/package_spec.rb +343 -315
  105. data/spec/pipeline_spec.rb +89 -71
  106. data/spec/plugins/minifier_spec.rb +25 -16
  107. data/spec/plugins/transport_spec.rb +1 -1
  108. data/spec/project_spec.rb +97 -34
  109. data/spec/spec_helper.rb +41 -0
  110. data/spec/support/fake_gem_server.rb +8 -4
  111. data/spec/support/path.rb +8 -0
  112. data/spec/support/project.rb +50 -17
  113. data/templates/init/project.json +12 -14
  114. data/templates/project/LICENSE +1 -1
  115. data/templates/project/app/main.js +6 -0
  116. data/templates/project/css/main.css +1 -0
  117. data/templates/project/index.html +4 -3
  118. data/vendor/sprockets/.travis.yml +3 -2
  119. data/vendor/sprockets/Gemfile +0 -6
  120. data/vendor/sprockets/lib/sprockets/asset.rb +7 -12
  121. data/vendor/sprockets/lib/sprockets/asset_attributes.rb +70 -53
  122. data/vendor/sprockets/lib/sprockets/base.rb +1 -14
  123. data/vendor/sprockets/lib/sprockets/bundled_asset.rb +72 -45
  124. data/vendor/sprockets/lib/sprockets/caching.rb +28 -23
  125. data/vendor/sprockets/lib/sprockets/context.rb +56 -26
  126. data/vendor/sprockets/lib/sprockets/directive_processor.rb +21 -4
  127. data/vendor/sprockets/lib/sprockets/eco_template.rb +3 -4
  128. data/vendor/sprockets/lib/sprockets/ejs_template.rb +3 -4
  129. data/vendor/sprockets/lib/sprockets/engines.rb +26 -1
  130. data/vendor/sprockets/lib/sprockets/environment.rb +2 -1
  131. data/vendor/sprockets/lib/sprockets/index.rb +1 -0
  132. data/vendor/sprockets/lib/sprockets/mime.rb +38 -0
  133. data/vendor/sprockets/lib/sprockets/processing.rb +4 -45
  134. data/vendor/sprockets/lib/sprockets/static_asset.rb +5 -6
  135. data/vendor/sprockets/lib/sprockets/static_compilation.rb +4 -12
  136. data/vendor/sprockets/lib/sprockets/trail.rb +2 -1
  137. data/vendor/sprockets/test/fixtures/default/blank.gif +0 -0
  138. data/vendor/sprockets/test/fixtures/default/with_data_uri.css.erb +3 -0
  139. data/vendor/sprockets/test/test_asset.rb +121 -15
  140. data/vendor/sprockets/test/test_asset_attributes.rb +85 -21
  141. data/vendor/sprockets/test/test_environment.rb +13 -36
  142. metadata +564 -444
  143. data/spec/cli/new_spec.rb +0 -118
  144. data/spec/fixtures/hello_world/assets/bpm_packages.js +0 -13
  145. data/spec/fixtures/hello_world/assets/bpm_styles.css +0 -14
  146. data/spec/fixtures/hello_world/hello_world.json +0 -20
  147. /data/spec/fixtures/{badrake-0.8.7.bpkg → gems/badrake-0.8.7.bpkg} +0 -0
  148. /data/spec/fixtures/{builder-3.0.0.bpkg → gems/builder-3.0.0.bpkg} +0 -0
  149. /data/spec/fixtures/{bundler-1.1.pre.bpkg → gems/bundler-1.1.pre.bpkg} +0 -0
  150. /data/spec/fixtures/{coffee-1.0.1.pre.bpkg → gems/coffee-1.0.1.pre.bpkg} +0 -0
  151. /data/spec/fixtures/{custom_generator-1.0.bpkg → gems/custom_generator-1.0.bpkg} +0 -0
  152. /data/spec/fixtures/{highline-1.6.1.bpkg → gems/highline-1.6.1.bpkg} +0 -0
  153. /data/spec/fixtures/{ivory-0.0.1.bpkg → gems/ivory-0.0.1.bpkg} +0 -0
  154. /data/spec/fixtures/{jquery-1.4.3.bpkg → gems/jquery-1.4.3.bpkg} +0 -0
  155. /data/spec/fixtures/{optparse-1.0.1.bpkg → gems/optparse-1.0.1.bpkg} +0 -0
  156. /data/spec/fixtures/{rake-0.8.6.bpkg → gems/rake-0.8.6.bpkg} +0 -0
  157. /data/spec/fixtures/{rake-0.8.7.bpkg → gems/rake-0.8.7.bpkg} +0 -0
  158. /data/spec/fixtures/{spade-0.5.0.bpkg → gems/spade-0.5.0.bpkg} +0 -0
  159. /data/spec/fixtures/{src → packages}/README.txt +0 -0
  160. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/.gitignore +0 -0
  161. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/CHANGELOG.md +0 -0
  162. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/ISSUES.md +0 -0
  163. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/LICENSE +0 -0
  164. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/README.md +0 -0
  165. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/UPGRADING.md +0 -0
  166. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/bin/bundle +0 -0
  167. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/lib/bundler/definition.js +0 -0
  168. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/lib/bundler/dependency.js +0 -0
  169. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/lib/bundler/dsl.js +0 -0
  170. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/lib/bundler/ui.js +0 -0
  171. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/lib/bundler.js +0 -0
  172. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/man/bundle-config.ronn +0 -0
  173. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/man/bundle-exec.ronn +0 -0
  174. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/man/bundle-install.ronn +0 -0
  175. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/man/bundle-package.ronn +0 -0
  176. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/man/bundle-update.ronn +0 -0
  177. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/man/bundle.ronn +0 -0
  178. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/man/gemfile.5.ronn +0 -0
  179. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/man/index.txt +0 -0
  180. /data/spec/fixtures/{src → packages}/bundler-1.1.pre/package.json +0 -0
  181. /data/spec/fixtures/{src → packages}/coffee-1.0.1.pre/bin/cake +0 -0
  182. /data/spec/fixtures/{src → packages}/coffee-1.0.1.pre/bin/coffee +0 -0
  183. /data/spec/fixtures/{src → packages}/coffee-1.0.1.pre/lib/coffee/base.js +0 -0
  184. /data/spec/fixtures/{src → packages}/coffee-1.0.1.pre/lib/coffee/mocha/chai.js +0 -0
  185. /data/spec/fixtures/{src → packages}/coffee-1.0.1.pre/lib/coffee.js +0 -0
  186. /data/spec/fixtures/{src → packages}/coffee-1.0.1.pre/package.json +0 -0
  187. /data/spec/fixtures/{src → packages}/coffee-1.0.1.pre/qunit/coffee/test.js +0 -0
  188. /data/spec/fixtures/{src → packages}/coffee-1.0.1.pre/qunit/test.js +0 -0
  189. /data/spec/fixtures/{core-test → packages/core-test}/bin/cot +0 -0
  190. /data/spec/fixtures/{core-test → packages/core-test}/lib/main.js +0 -0
  191. /data/spec/fixtures/{core-test → packages/core-test}/resources/runner.css +0 -0
  192. /data/spec/fixtures/{core-test → packages/core-test}/tests/test.js +0 -0
  193. /data/spec/fixtures/{custom_generator → packages/custom_generator}/lib/main.js +0 -0
  194. /data/spec/fixtures/{custom_generator → packages/custom_generator}/package.json +0 -0
  195. /data/spec/fixtures/{custom_generator → packages/custom_generator}/templates/init/project.json +0 -0
  196. /data/spec/fixtures/{custom_generator → packages/custom_generator}/templates/project/app.js +0 -0
  197. /data/spec/fixtures/{custom_generator → packages/custom_generator}/templates/project/lib/main.js +0 -0
  198. /data/spec/fixtures/{custom_generator → packages/custom_generator}/templates/project_generator.rb +0 -0
  199. /data/spec/fixtures/{src → packages}/jquery/lib/main.js +0 -0
  200. /data/spec/fixtures/{src → packages}/jquery/package.json +0 -0
  201. /data/spec/fixtures/{src → packages}/rake-0.8.6/CHANGES +0 -0
  202. /data/spec/fixtures/{src → packages}/rake-0.8.6/MIT-LICENSE +0 -0
  203. /data/spec/fixtures/{src → packages}/rake-0.8.6/README +0 -0
  204. /data/spec/fixtures/{src → packages}/rake-0.8.6/Rakefile +0 -0
  205. /data/spec/fixtures/{src → packages}/rake-0.8.6/TODO +0 -0
  206. /data/spec/fixtures/{src → packages}/rake-0.8.6/bin/rake +0 -0
  207. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/command_line_usage.rdoc +0 -0
  208. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/example/Rakefile1 +0 -0
  209. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/example/Rakefile2 +0 -0
  210. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/example/a.c +0 -0
  211. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/example/b.c +0 -0
  212. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/example/main.c +0 -0
  213. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/glossary.rdoc +0 -0
  214. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/jamis.rb +0 -0
  215. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/proto_rake.rdoc +0 -0
  216. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/rake.1.gz +0 -0
  217. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/rakefile.rdoc +0 -0
  218. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/rational.rdoc +0 -0
  219. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.4.14.rdoc +0 -0
  220. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.4.15.rdoc +0 -0
  221. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.5.0.rdoc +0 -0
  222. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.5.3.rdoc +0 -0
  223. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.5.4.rdoc +0 -0
  224. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.6.0.rdoc +0 -0
  225. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.7.0.rdoc +0 -0
  226. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.7.1.rdoc +0 -0
  227. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.7.2.rdoc +0 -0
  228. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.7.3.rdoc +0 -0
  229. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.8.0.rdoc +0 -0
  230. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.8.2.rdoc +0 -0
  231. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.8.3.rdoc +0 -0
  232. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.8.4.rdoc +0 -0
  233. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.8.5.rdoc +0 -0
  234. /data/spec/fixtures/{src → packages}/rake-0.8.6/doc/release_notes/rake-0.8.6.rdoc +0 -0
  235. /data/spec/fixtures/{src → packages}/rake-0.8.6/install.rb +0 -0
  236. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/alt_system.rb +0 -0
  237. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/classic_namespace.rb +0 -0
  238. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/clean.rb +0 -0
  239. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/contrib/compositepublisher.rb +0 -0
  240. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/contrib/ftptools.rb +0 -0
  241. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/contrib/publisher.rb +0 -0
  242. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/contrib/rubyforgepublisher.rb +0 -0
  243. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/contrib/sshpublisher.rb +0 -0
  244. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/contrib/sys.rb +0 -0
  245. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/gempackagetask.rb +0 -0
  246. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/loaders/makefile.rb +0 -0
  247. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/packagetask.rb +0 -0
  248. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/rake_test_loader.rb +0 -0
  249. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/rdoctask.rb +0 -0
  250. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/ruby182_test_unit_fix.rb +0 -0
  251. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/runtest.rb +0 -0
  252. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/tasklib.rb +0 -0
  253. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/testtask.rb +0 -0
  254. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake/win32.rb +0 -0
  255. /data/spec/fixtures/{src → packages}/rake-0.8.6/lib/rake.rb +0 -0
  256. /data/spec/fixtures/{src → packages}/rake-0.8.6/package.json +0 -0
  257. /data/spec/fixtures/{src → packages}/rake-0.8.6/test/capture_stdout.rb +0 -0
  258. /data/spec/fixtures/{src → packages}/rake-0.8.7/CHANGES +0 -0
  259. /data/spec/fixtures/{src → packages}/rake-0.8.7/MIT-LICENSE +0 -0
  260. /data/spec/fixtures/{src → packages}/rake-0.8.7/README +0 -0
  261. /data/spec/fixtures/{src → packages}/rake-0.8.7/Rakefile +0 -0
  262. /data/spec/fixtures/{src → packages}/rake-0.8.7/TODO +0 -0
  263. /data/spec/fixtures/{src → packages}/rake-0.8.7/bin/rake +0 -0
  264. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/command_line_usage.rdoc +0 -0
  265. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/example/Rakefile1 +0 -0
  266. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/example/Rakefile2 +0 -0
  267. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/example/a.c +0 -0
  268. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/example/b.c +0 -0
  269. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/example/main.c +0 -0
  270. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/glossary.rdoc +0 -0
  271. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/jamis.rb +0 -0
  272. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/proto_rake.rdoc +0 -0
  273. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/rake.1.gz +0 -0
  274. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/rakefile.rdoc +0 -0
  275. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/rational.rdoc +0 -0
  276. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.4.14.rdoc +0 -0
  277. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.4.15.rdoc +0 -0
  278. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.5.0.rdoc +0 -0
  279. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.5.3.rdoc +0 -0
  280. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.5.4.rdoc +0 -0
  281. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.6.0.rdoc +0 -0
  282. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.7.0.rdoc +0 -0
  283. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.7.1.rdoc +0 -0
  284. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.7.2.rdoc +0 -0
  285. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.7.3.rdoc +0 -0
  286. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.8.0.rdoc +0 -0
  287. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.8.2.rdoc +0 -0
  288. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.8.3.rdoc +0 -0
  289. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.8.4.rdoc +0 -0
  290. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.8.5.rdoc +0 -0
  291. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.8.6.rdoc +0 -0
  292. /data/spec/fixtures/{src → packages}/rake-0.8.7/doc/release_notes/rake-0.8.7.rdoc +0 -0
  293. /data/spec/fixtures/{src → packages}/rake-0.8.7/install.rb +0 -0
  294. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/alt_system.rb +0 -0
  295. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/classic_namespace.rb +0 -0
  296. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/clean.rb +0 -0
  297. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/contrib/compositepublisher.rb +0 -0
  298. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/contrib/ftptools.rb +0 -0
  299. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/contrib/publisher.rb +0 -0
  300. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/contrib/rubyforgepublisher.rb +0 -0
  301. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/contrib/sshpublisher.rb +0 -0
  302. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/contrib/sys.rb +0 -0
  303. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/gempackagetask.rb +0 -0
  304. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/loaders/makefile.rb +0 -0
  305. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/packagetask.rb +0 -0
  306. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/rake_test_loader.rb +0 -0
  307. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/rdoctask.rb +0 -0
  308. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/ruby182_test_unit_fix.rb +0 -0
  309. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/runtest.rb +0 -0
  310. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/tasklib.rb +0 -0
  311. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/testtask.rb +0 -0
  312. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake/win32.rb +0 -0
  313. /data/spec/fixtures/{src → packages}/rake-0.8.7/lib/rake.rb +0 -0
  314. /data/spec/fixtures/{src → packages}/rake-0.8.7/package.json +0 -0
  315. /data/spec/fixtures/{src → packages}/rake-0.8.7/test/capture_stdout.rb +0 -0
  316. /data/spec/fixtures/{src → packages}/spade/lib/main.js +0 -0
  317. /data/spec/fixtures/{src → packages}/spade/package.json +0 -0
  318. /data/spec/fixtures/{custom_name → projects/custom_name}/MyProject.json +0 -0
  319. /data/spec/fixtures/{hello_world → projects/hello2}/LICENSE +0 -0
  320. /data/{templates/project → spec/fixtures/projects/hello2}/app.js +0 -0
  321. /data/spec/fixtures/{hello_world → projects/hello_world}/README.md +0 -0
  322. /data/spec/fixtures/{hello_world → projects/hello_world}/assets/papa-smurf.jpg +0 -0
  323. /data/spec/fixtures/{hello_world → projects/hello_world}/css/dummy.css +0 -0
  324. /data/spec/fixtures/{hello_world → projects/hello_world}/lib/main.js +0 -0
  325. /data/spec/fixtures/{hello_world → projects/hello_world}/packages/custom_package/assets/dummy.txt +0 -0
  326. /data/spec/fixtures/{hello_world → projects/hello_world}/packages/custom_package/css/sample_styles.css +0 -0
  327. /data/spec/fixtures/{hello_world → projects/hello_world}/packages/custom_package/custom_dir/basic-module.js +0 -0
  328. /data/spec/fixtures/{hello_world → projects/hello_world}/packages/custom_package/lib/main.js +0 -0
  329. /data/spec/fixtures/{hello_world → projects/hello_world}/tests/main-test.js +0 -0
  330. /data/spec/fixtures/{minitest → projects/minitest}/assets/bpm_packages.js +0 -0
  331. /data/spec/fixtures/{minitest → projects/minitest}/assets/bpm_styles.css +0 -0
  332. /data/spec/fixtures/{minitest → projects/minitest}/assets/minitest/app_package.js +0 -0
  333. /data/spec/fixtures/{minitest → projects/minitest}/lib/main.js +0 -0
  334. /data/spec/fixtures/{minitest → projects/minitest}/packages/uglyduck/lib/main.js +0 -0
  335. /data/spec/fixtures/{minitest → projects/minitest}/packages/uglyduck/minifier/main.js +0 -0
  336. /data/spec/fixtures/{simple_hello/assets/bpm_packages.js → projects/simple_hello/assets/bpm_libs.js} +0 -0
  337. /data/spec/fixtures/{simple_hello → projects/simple_hello}/lib/main.js +0 -0
  338. /data/spec/fixtures/{transporter → projects/transporter}/lib/main.js +0 -0
  339. /data/spec/fixtures/{transporter → projects/transporter}/packages/transport/lib/main.js +0 -0
  340. /data/spec/fixtures/{transporter → projects/transporter}/packages/transport/transports/wrapper.js +0 -0
  341. /data/spec/fixtures/{transporter → projects/transporter}/transporter.json +0 -0
data/spec/package_spec.rb CHANGED
@@ -1,319 +1,347 @@
1
1
  require "spec_helper"
2
2
 
3
- describe BPM::Package do
4
- it "should have 'lib' as default lib_path'" do
5
- subject.send(:lib_path).should == 'lib'
6
- end
7
-
8
- it "should have 'tests' as default tests_path'" do
9
- subject.send(:tests_path).should == 'tests'
10
- end
11
- end
12
-
13
- describe BPM::Package, "#to_spec" do
14
- let(:email) { "user@example.com" }
15
-
16
- before do
17
- cd(home)
18
- FileUtils.mkdir_p(home("lib"))
19
- FileUtils.mkdir_p(home("resources"))
20
- FileUtils.mkdir_p(home("tests"))
21
- end
22
-
23
- subject do
24
- package = BPM::Package.new(nil, email)
25
- package.json_path = fixtures("core-test", "package.json")
26
- if spec = package.to_spec
27
- spec
28
- else
29
- puts "Errors: #{package.errors}"
30
- nil
31
- end
32
- end
33
-
34
- def expand_sort(files)
35
- files.map { |f| File.expand_path(f) }.sort
36
- end
37
-
38
- it "transforms the name" do
39
- subject.name.should == "core-test"
40
- end
41
-
42
- it "transforms the version" do
43
- subject.version.should == LibGems::Version.new("0.4.9")
44
- end
45
-
46
- it "transforms the author" do
47
- subject.authors.should == ["Charles Jolley"]
48
- end
49
-
50
- it "transforms the email" do
51
- subject.email.should == email
52
- end
53
-
54
- it "transforms the homepage" do
55
- subject.homepage.should == "https://github.com/strobecorp/core-test"
56
- end
57
-
58
- it "transforms the description" do
59
- subject.description.should == "Flexible testing library for JavaScript."
60
- end
61
-
62
- it "transforms the description" do
63
- subject.summary.should == "A fully featured asynchronous testing library for JavaScript, compatible with other frameworks."
64
- end
65
-
66
- it "transforms the dependencies" do
67
- subject.dependencies.map{|d| [d.name, d.requirement]}.should == [["ivory", "= 0.0.1"], ["optparse", "= 1.0.1"]]
68
- end
69
-
70
- it "packs metadata into requirements" do
71
- metadata = JSON.parse(subject.requirements.first)
72
- metadata["keywords"].should == %w[javascript testing]
73
- metadata["licenses"].should == [
74
- {"type" => "MIT",
75
- "url" => "https://github.com/strobecorp/core-test/raw/master/LICENSE"}
76
- ]
77
- metadata["engines"].should == ["browser", "all"]
78
- metadata["main"].should == "./lib/main"
79
- metadata["bin"].should == {"cot" => "./bin/cot"}
80
- end
81
-
82
- it "expands paths from the directories" do
83
- others = ["tmp/blah.js", "tmp/whee.txt"]
84
- files = ["bin/cot", "lib/main.js", "lib/core.js", "lib/test.js", "package.json", "resources/additions.css", "resources/runner.css"]
85
- test_files = ["tests/apis/core-test.js", "tests/system/test/assert-test.js"]
86
-
87
- FileUtils.mkdir_p(["bin/", "resources/", "lib/", "tests/apis", "tests/system/test", "tmp/"])
88
- FileUtils.touch(files + test_files + others)
89
-
90
- expand_sort(subject.files).should == expand_sort(files + test_files)
91
- expand_sort(subject.test_files).should == expand_sort(test_files)
92
- end
93
-
94
- it "hacks the file name to return .bpkg" do
95
- subject.file_name.should == "core-test-0.4.9.bpkg"
96
- end
97
-
98
- it "sets the rubyforge_project to appease older versions of rubygems" do
99
- subject.rubyforge_project.should == "bpm"
100
- end
101
- end
102
-
103
- describe BPM::Package, "#to_s" do
104
- let(:email) { "user@example.com" }
105
-
106
- subject do
107
- package = BPM::Package.new
108
- package.json_path = fixtures("core-test","package.json")
109
- package.valid?
110
- package
111
- end
112
-
113
- it "gives the name and version" do
114
- subject.to_full_name.should == "core-test-0.4.9"
115
- end
116
- end
117
-
118
- describe BPM::Package, "converting" do
119
- before do
120
- cd(home)
121
- end
122
-
123
- subject do
124
- package = BPM::Package.new
125
- package.bpkg = fixtures("core-test-0.4.9.bpkg")
126
- package.as_json
127
- end
128
-
129
- it "can recreate the same package.json from the package"
130
-
131
- # it "can recreate the same package.json from the package" do
132
- # subject.should == JSON.parse(File.read(fixtures("core-test", "package.json")))
133
- # end
134
- end
135
-
136
- describe BPM::Package, "validating" do
137
- before do
138
- cd(home)
139
- end
140
-
141
- subject { BPM::Package.new }
142
-
143
- shared_examples_for "a good parser" do
144
- it "had a problem parsing package.json" do
145
- subject.should have_error("There was a problem parsing package.json")
146
- end
147
- end
148
-
149
- context "with a blank file" do
150
- before do
151
- FileUtils.touch("package.json")
152
- subject.json_path = "package.json"
153
- end
154
- it_should_behave_like "a good parser"
155
- end
156
-
157
- context "with bad json" do
158
- before do
159
- File.open("package.json", "w") do |f|
160
- f.write "---bad json---"
161
- end
162
- subject.json_path = "package.json"
163
- end
164
- it_should_behave_like "a good parser"
165
- end
166
-
167
- context "json can't be read" do
168
- before do
169
- FileUtils.cp fixtures("core-test", "package.json"), "."
170
- FileUtils.chmod 0000, "package.json"
171
- subject.json_path = "package.json"
172
- end
173
- it_should_behave_like "a good parser"
174
- end
175
-
176
- context "json can't be found" do
177
- before do
178
- subject.json_path = "package.json"
179
- end
180
- it_should_behave_like "a good parser"
181
- end
182
-
3
+ # describe BPM::Package do
4
+ # it "should have 'lib' as default lib_path'" do
5
+ # subject.send(:lib_path).should == 'lib'
6
+ # end
7
+ #
8
+ # it "should have 'tests' as default tests_path'" do
9
+ # subject.send(:tests_path).should == 'tests'
10
+ # end
11
+ # end
12
+ #
13
+ # describe BPM::Package, "#to_spec" do
14
+ # let(:email) { "user@example.com" }
15
+ #
16
+ # before do
17
+ # cd(home)
18
+ # FileUtils.mkdir_p(home("lib"))
19
+ # FileUtils.mkdir_p(home("resources"))
20
+ # FileUtils.mkdir_p(home("tests"))
21
+ # end
22
+ #
23
+ # subject do
24
+ # package = BPM::Package.new(nil, email)
25
+ # package.json_path = package_fixture("core-test", "package.json")
26
+ # if spec = package.to_spec
27
+ # spec
28
+ # else
29
+ # puts "Errors: #{package.errors}"
30
+ # nil
31
+ # end
32
+ # end
33
+ #
34
+ # def expand_sort(files)
35
+ # files.map { |f| File.expand_path(f) }.sort
36
+ # end
37
+ #
38
+ # it "transforms the name" do
39
+ # subject.name.should == "core-test"
40
+ # end
41
+ #
42
+ # it "transforms the version" do
43
+ # subject.version.should == LibGems::Version.new("0.4.9")
44
+ # end
45
+ #
46
+ # it "transforms the author" do
47
+ # subject.authors.should == ["Charles Jolley"]
48
+ # end
49
+ #
50
+ # it "transforms the email" do
51
+ # subject.email.should == email
52
+ # end
53
+ #
54
+ # it "transforms the homepage" do
55
+ # subject.homepage.should == "https://github.com/strobecorp/core-test"
56
+ # end
57
+ #
58
+ # it "transforms the description" do
59
+ # subject.description.should == "Flexible testing library for JavaScript."
60
+ # end
61
+ #
62
+ # it "transforms the description" do
63
+ # subject.summary.should == "A fully featured asynchronous testing library for JavaScript, compatible with other frameworks."
64
+ # end
65
+ #
66
+ # it "transforms the dependencies" do
67
+ # subject.dependencies.map{|d| [d.name, d.requirement]}.should == [["ivory", "= 0.0.1"], ["optparse", "= 1.0.1"]]
68
+ # end
69
+ #
70
+ # it "packs metadata into requirements" do
71
+ # metadata = JSON.parse(subject.requirements.first)
72
+ # metadata["licenses"].should == [
73
+ # {"type" => "MIT",
74
+ # "url" => "https://github.com/strobecorp/core-test/raw/master/LICENSE"}
75
+ # ]
76
+ # metadata["engines"].should == ["browser", "all"]
77
+ # metadata["main"].should == "./lib/main"
78
+ # metadata["bin"].should == {"cot" => "./bin/cot"}
79
+ # end
80
+ #
81
+ # it "expands paths from the directories and bpm:build" do
82
+ # others = ["tmp/blah.js", "tmp/whee.txt"]
83
+ # files = ["bin/cot", "lib/main.js", "lib/core.js", "lib/test.js", "package.json", "resources/additions.css", "resources/runner.css", "index.html", "extras/extra_file.html"]
84
+ # test_files = ["tests/apis/core-test.js", "tests/system/test/assert-test.js"]
85
+ #
86
+ # FileUtils.mkdir_p(["bin/", "resources/", "lib/", "tests/apis", "tests/system/test", "tmp/", "extras/"])
87
+ # FileUtils.touch(files + test_files + others)
88
+ #
89
+ # expand_sort(subject.files).should == expand_sort(files + test_files)
90
+ # expand_sort(subject.test_files).should == expand_sort(test_files)
91
+ # end
92
+ #
93
+ # it "hacks the file name to return .bpkg" do
94
+ # subject.file_name.should == "core-test-0.4.9.bpkg"
95
+ # end
96
+ #
97
+ # it "sets the rubyforge_project to appease older versions of rubygems" do
98
+ # subject.rubyforge_project.should == "bpm"
99
+ # end
100
+ # end
101
+ #
102
+ # describe BPM::Package, "#to_s" do
103
+ # let(:email) { "user@example.com" }
104
+ #
105
+ # subject do
106
+ # package = BPM::Package.new
107
+ # package.json_path = package_fixture("core-test","package.json")
108
+ # package.valid?
109
+ # package
110
+ # end
111
+ #
112
+ # it "gives the name and version" do
113
+ # subject.full_name.should == "core-test-0.4.9"
114
+ # end
115
+ # end
116
+ #
117
+ # describe BPM::Package, "converting" do
118
+ # before do
119
+ # cd(home)
120
+ # end
121
+ #
122
+ # subject do
123
+ # package = BPM::Package.new
124
+ # package.fill_from_gemspec(fixtures('gems', "core-test-0.4.9.bpkg"))
125
+ # package.as_json
126
+ # end
127
+ #
128
+ # it "can recreate the same package.json from the package" do
129
+ # # These don't come out in the same order
130
+ # actual = Hash[subject.sort]
131
+ # expected = Hash[JSON.parse(File.read(package_fixture("core-test", "package.json"))).sort].reject{|k,v| v.empty? }
132
+ # actual.should == expected
133
+ # end
134
+ # end
135
+ #
136
+ # describe BPM::Package, "validating" do
137
+ # before do
138
+ # cd(home)
139
+ # end
140
+ #
141
+ # subject { BPM::Package.new }
142
+ #
143
+ # shared_examples_for "a good parser" do
144
+ # it "had a problem parsing package.json" do
145
+ # subject.should have_error("There was a problem parsing package.json")
146
+ # end
147
+ # end
148
+ #
149
+ # context "with a blank file" do
150
+ # before do
151
+ # FileUtils.touch("package.json")
152
+ # subject.json_path = "package.json"
153
+ # end
154
+ # it_should_behave_like "a good parser"
155
+ # end
156
+ #
157
+ # context "with bad json" do
158
+ # before do
159
+ # File.open("package.json", "w") do |f|
160
+ # f.write "---bad json---"
161
+ # end
162
+ # subject.json_path = "package.json"
163
+ # end
164
+ # it_should_behave_like "a good parser"
165
+ # end
166
+ #
167
+ # context "json can't be read" do
168
+ # before do
169
+ # FileUtils.cp package_fixture("core-test", "package.json"), "."
170
+ # FileUtils.chmod 0000, "package.json"
171
+ # subject.json_path = "package.json"
172
+ # end
173
+ # it_should_behave_like "a good parser"
174
+ # end
175
+ #
176
+ # context "json can't be found" do
177
+ # before do
178
+ # subject.json_path = "package.json"
179
+ # end
180
+ # it_should_behave_like "a good parser"
181
+ # end
182
+ #
183
+ # end
184
+ #
185
+ # describe BPM::Package, "validation errors" do
186
+ # let(:email) { "user@example.com" }
187
+ #
188
+ # before do
189
+ # cd(home)
190
+ # FileUtils.mkdir_p(home("lib"))
191
+ # FileUtils.mkdir_p(home("tests"))
192
+ # end
193
+ #
194
+ # subject do
195
+ # BPM::Package.new(nil, email)
196
+ # end
197
+ #
198
+ # def write_package
199
+ # path = home("package.json")
200
+ # package = JSON.parse(File.read(package_fixture("core-test","package.json")))
201
+ # yield package
202
+ # File.open(path, "w") do |file|
203
+ # file.write package.to_json
204
+ # end
205
+ # subject.json_path = path
206
+ # end
207
+ #
208
+ # %w[name description summary homepage author version directories].each do |field|
209
+ # it "is invalid without a #{field} field" do
210
+ # write_package do |package|
211
+ # package.delete(field)
212
+ # end
213
+ #
214
+ # subject.should have_error("Package requires a '#{field}' field")
215
+ # end
216
+ #
217
+ # it "is invalid with a blank #{field} field" do
218
+ # write_package do |package|
219
+ # package[field] = ""
220
+ # end
221
+ #
222
+ # subject.should have_error("Package requires a '#{field}' field")
223
+ # end
224
+ # end
225
+ #
226
+ # it "is invalid without a proper version number" do
227
+ # write_package do |package|
228
+ # package["version"] = "bad"
229
+ # end
230
+ #
231
+ # subject.should have_error("Malformed version number string bad")
232
+ # end
233
+ #
234
+ # it "is valid without specifying a test directory" do
235
+ # write_package do |package|
236
+ # package["directories"].delete("tests")
237
+ # end
238
+ #
239
+ # subject.should be_valid
240
+ # subject.to_spec.test_files.should == []
241
+ # end
242
+ #
243
+ # it "is valid and has files without specifying bin" do
244
+ # write_package do |package|
245
+ # package.delete("bin")
246
+ # end
247
+ #
248
+ # subject.should be_valid
249
+ # subject.to_spec.files.should == ["package.json"]
250
+ # end
251
+ #
252
+ # %w(lib tests).each do |dir|
253
+ # it "is invalid if #{dir} points to a file" do
254
+ # FileUtils.touch(home("somefile"))
255
+ # write_package do |package|
256
+ # package["directories"][dir] = "./somefile"
257
+ # end
258
+ #
259
+ # subject.should have_error("'./somefile', specified for #{dir} directory, is not a directory")
260
+ # end
261
+ #
262
+ # it "is invalid with a #{dir} directory that doesn't exist" do
263
+ # write_package do |package|
264
+ # package["directories"][dir] = "nope"
265
+ # end
266
+ #
267
+ # subject.should have_error("'nope', specified for #{dir} directory, is not a directory")
268
+ # end
269
+ #
270
+ # it "is valid with a #{dir} directory that exists" do
271
+ # FileUtils.mkdir_p(home("somewhere", "else"))
272
+ # write_package do |package|
273
+ # package["directories"][dir] = "./somewhere/else"
274
+ # end
275
+ #
276
+ # subject.should be_valid
277
+ # end
278
+ # end
279
+ #
280
+ # it "is valid with a lib directory array" do
281
+ # FileUtils.mkdir_p(home("vendor/lib"))
282
+ # write_package do |package|
283
+ # package["directories"]["lib"] = ["./lib", "./vendor/lib"]
284
+ # end
285
+ #
286
+ # subject.should be_valid
287
+ # end
288
+ #
289
+ # it "is invalid if any lib directories don't exist" do
290
+ # write_package do |package|
291
+ # package["directories"]["lib"] = ["./lib", "./fake"]
292
+ # end
293
+ #
294
+ # subject.should have_error "'./fake', specified for lib directory, is not a directory"
295
+ # end
296
+ #
297
+ # it "is invalid if the lib directory array is empty" do
298
+ # write_package do |package|
299
+ # package["directories"]["lib"] = []
300
+ # end
301
+ #
302
+ # subject.should have_error("A lib directory is required")
303
+ # end
304
+ #
305
+ # end
306
+
307
+ describe BPM::Package, 'InvalidPackageError' do
308
+
309
+ it "should raise exception when loading invalid JSON" do
310
+ package = BPM::Package.new(package_fixture('invalid_json'))
311
+ lambda {
312
+ package.load_json
313
+ }.should raise_error(BPM::InvalidPackageError)
314
+ end
315
+
316
+ it "should raise exception when loading a package with no package.json" do
317
+ FileUtils.mkdir_p home('empty_package')
318
+ package = BPM::Package.new home('empty_package')
319
+ lambda {
320
+ package.load_json
321
+ }.should raise_error(BPM::InvalidPackageError)
322
+ end
323
+
324
+ it "should raise exception when loading a package whose name does not package the one in the package.json" do
325
+ goto_home
326
+ FileUtils.cp_r package_fixture('jquery'), 'jquery2'
327
+ package = BPM::Package.new home('jquery2')
328
+ lambda {
329
+ package.load_json
330
+ }.should raise_error(BPM::InvalidPackageNameError)
331
+ end
332
+
183
333
  end
184
334
 
185
- describe BPM::Package, "validation errors" do
186
- let(:email) { "user@example.com" }
187
-
188
- before do
189
- cd(home)
190
- FileUtils.mkdir_p(home("lib"))
191
- FileUtils.mkdir_p(home("tests"))
192
- end
193
-
194
- subject do
195
- BPM::Package.new(nil, email)
196
- end
197
-
198
- def write_package
199
- path = home("package.json")
200
- package = JSON.parse(File.read(fixtures("core-test","package.json")))
201
- yield package
202
- File.open(path, "w") do |file|
203
- file.write package.to_json
204
- end
205
- subject.json_path = path
206
- end
207
-
208
- %w[name description summary homepage author version directories].each do |field|
209
- it "is invalid without a #{field} field" do
210
- write_package do |package|
211
- package.delete(field)
212
- end
213
-
214
- subject.should have_error("Package requires a '#{field}' field")
215
- end
216
-
217
- it "is invalid with a blank #{field} field" do
218
- write_package do |package|
219
- package[field] = ""
220
- end
221
-
222
- subject.should have_error("Package requires a '#{field}' field")
223
- end
224
- end
225
-
226
- it "is invalid without a proper version number" do
227
- write_package do |package|
228
- package["version"] = "bad"
229
- end
230
-
231
- subject.should have_error("Malformed version number string bad")
232
- end
233
-
234
- it "is valid without specifying a test directory" do
235
- write_package do |package|
236
- package["directories"].delete("tests")
237
- end
238
-
239
- subject.should be_valid
240
- subject.to_spec.test_files.should == []
241
- end
242
-
243
- it "is valid and has files without specifying bin" do
244
- write_package do |package|
245
- package.delete("bin")
246
- end
247
-
248
- subject.should be_valid
249
- subject.to_spec.files.should == ["package.json"]
250
- end
251
-
252
- %w(lib tests).each do |dir|
253
- it "is invalid if #{dir} points to a file" do
254
- FileUtils.touch(home("somefile"))
255
- write_package do |package|
256
- package["directories"][dir] = "./somefile"
257
- end
258
-
259
- subject.should have_error("'./somefile', specified for #{dir} directory, is not a directory")
260
- end
261
-
262
- it "is invalid with a #{dir} directory that doesn't exist" do
263
- write_package do |package|
264
- package["directories"][dir] = "nope"
265
- end
266
-
267
- subject.should have_error("'nope', specified for #{dir} directory, is not a directory")
268
- end
269
-
270
- it "is valid with a #{dir} directory that exists" do
271
- FileUtils.mkdir_p(home("somewhere", "else"))
272
- write_package do |package|
273
- package["directories"][dir] = "./somewhere/else"
274
- end
275
-
276
- subject.should be_valid
277
- end
278
- end
279
-
280
- it "is valid with a lib directory array" do
281
- FileUtils.mkdir_p(home("vendor/lib"))
282
- write_package do |package|
283
- package["directories"]["lib"] = ["./lib", "./vendor/lib"]
284
- end
285
-
286
- subject.should be_valid
287
- end
288
-
289
- it "is invalid if any lib directories don't exist" do
290
- write_package do |package|
291
- package["directories"]["lib"] = ["./lib", "./fake"]
292
- end
293
-
294
- subject.should have_error "'./fake', specified for lib directory, is not a directory"
295
- end
296
-
297
- it "is invalid if the lib directory array is empty" do
298
- write_package do |package|
299
- package["directories"]["lib"] = []
300
- end
301
-
302
- subject.should have_error("A lib directory is required")
303
- end
304
-
305
- end
306
-
307
- describe BPM::Package, "templates" do
308
-
309
- subject do
310
- package = BPM::Package.new(fixtures("custom_generator"))
311
- package.load_json
312
- package
313
- end
314
-
315
- it "should have project template" do
316
- subject.template_path('project').should == fixtures("custom_generator", "templates", "project").to_s
317
- end
318
-
319
- end
335
+ # describe BPM::Package, "templates" do
336
+ #
337
+ # subject do
338
+ # package = BPM::Package.new(package_fixture("custom_generator"))
339
+ # package.load_json
340
+ # package
341
+ # end
342
+ #
343
+ # it "should have project template" do
344
+ # subject.template_path('project').should == package_fixture("custom_generator", "templates", "project").to_s
345
+ # end
346
+ #
347
+ # end