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
@@ -7,6 +7,11 @@ module Sprockets
7
7
  # any processing or concatenation. These are typical images and
8
8
  # other binary files.
9
9
  class StaticAsset < Asset
10
+ # Define extra attributes to be serialized.
11
+ def self.serialized_attributes
12
+ super + %w( content_type mtime length digest )
13
+ end
14
+
10
15
  def initialize(environment, logical_path, pathname, digest = nil)
11
16
  super(environment, logical_path, pathname)
12
17
  @digest = digest
@@ -22,11 +27,6 @@ module Sprockets
22
27
  # Checks if Asset is fresh by comparing the actual mtime and
23
28
  # digest to the inmemory model.
24
29
  def fresh?
25
- # Check if environment has changed first
26
- if environment.digest.hexdigest != environment_hexdigest
27
- return false
28
- end
29
-
30
30
  # Check current mtime and digest
31
31
  dependency_fresh?('path' => pathname, 'mtime' => mtime, 'hexdigest' => digest)
32
32
  end
@@ -81,7 +81,6 @@ module Sprockets
81
81
  mtime
82
82
  length
83
83
  digest
84
- environment_hexdigest
85
84
  end
86
85
  end
87
86
  end
@@ -35,10 +35,10 @@ module Sprockets
35
35
  files.each do |logical_path|
36
36
  if path.is_a?(Regexp)
37
37
  # Match path against `Regexp`
38
- next unless path.match(logical_path.to_s)
38
+ next unless path.match(logical_path)
39
39
  else
40
40
  # Otherwise use fnmatch glob syntax
41
- next unless logical_path.fnmatch(path.to_s)
41
+ next unless File.fnmatch(path.to_s, logical_path)
42
42
  end
43
43
 
44
44
  if asset = find_asset(logical_path)
@@ -59,21 +59,13 @@ module Sprockets
59
59
  end
60
60
  end
61
61
 
62
- protected
63
- def compute_digest
64
- # Add static root to environment digest
65
- super.update(static_root.to_s)
66
- end
67
-
68
62
  private
69
63
  # Get all reachable files in environment path
70
64
  def files
71
65
  files = Set.new
72
66
  paths.each do |base_path|
73
- base_pathname = Pathname.new(base_path)
74
- Dir["#{base_pathname}/**/*"].each do |filename|
75
- logical_path = Pathname.new(filename).relative_path_from(base_pathname)
76
- files << attributes_for(logical_path).without_engine_extensions
67
+ Dir["#{base_path}/**/*"].each do |filename|
68
+ files << attributes_for(filename).logical_path
77
69
  end
78
70
  end
79
71
  files
@@ -70,7 +70,8 @@ module Sprockets
70
70
  def resolve(logical_path, options = {})
71
71
  # If a block is given, preform an iterable search
72
72
  if block_given?
73
- trail.find(logical_path.to_s, attributes_for(logical_path).index_path, options) do |path|
73
+ args = attributes_for(logical_path).search_paths + [options]
74
+ trail.find(*args) do |path|
74
75
  yield Pathname.new(path)
75
76
  end
76
77
  else
@@ -0,0 +1,3 @@
1
+ body {
2
+ background-image: url(<%= asset_data_uri 'blank.gif' %>) no-repeat;
3
+ }
@@ -110,18 +110,12 @@ class StaticAssetTest < Sprockets::TestCase
110
110
  assert @asset.fresh?
111
111
  end
112
112
 
113
- test "asset is stale if its environment has changed" do
114
- assert @asset.fresh?
115
- @env.prepend_path fixture_path('default')
116
- assert @asset.stale?
117
- end
118
-
119
113
  test "asset is fresh if its mtime is changed but its contents is the same" do
120
- filename = fixture_path('asset/POW.png')
114
+ filename = fixture_path('asset/test-POW.png')
121
115
 
122
116
  sandbox filename do
123
117
  File.open(filename, 'w') { |f| f.write "a" }
124
- asset = @env['POW.png']
118
+ asset = @env['test-POW.png']
125
119
 
126
120
  assert asset.fresh?
127
121
 
@@ -406,13 +400,6 @@ class BundledAssetTest < Sprockets::TestCase
406
400
  assert asset("application.js").fresh?
407
401
  end
408
402
 
409
- test "asset is stale if its environment has changed" do
410
- asset = asset("application.js")
411
- assert asset.fresh?
412
- @env.prepend_path fixture_path("default")
413
- assert asset.stale?
414
- end
415
-
416
403
  test "asset is stale when its contents has changed" do
417
404
  filename = fixture_path('asset/test.js')
418
405
 
@@ -464,6 +451,125 @@ class BundledAssetTest < Sprockets::TestCase
464
451
  end
465
452
  end
466
453
 
454
+ test "asset is stale when one of its dependencies is modified" do
455
+ main = fixture_path('asset/test-main.js')
456
+ dep = fixture_path('asset/test-dep.js')
457
+
458
+ sandbox main, dep do
459
+ File.open(main, 'w') { |f| f.write "//= depend_on test-dep\n" }
460
+ File.open(dep, 'w') { |f| f.write "a;" }
461
+ asset = @env['test-main.js']
462
+
463
+ assert asset.fresh?
464
+
465
+ File.open(dep, 'w') { |f| f.write "b;" }
466
+ mtime = Time.now + 1
467
+ File.utime(mtime, mtime, dep)
468
+
469
+ assert asset.stale?
470
+ end
471
+ end
472
+
473
+ test "asset is stale when one of its asset dependencies is modified" do
474
+ main = fixture_path('asset/test-main.js')
475
+ dep = fixture_path('asset/test-dep.js')
476
+
477
+ sandbox main, dep do
478
+ File.open(main, 'w') { |f| f.write "//= depend_on_asset test-dep\n" }
479
+ File.open(dep, 'w') { |f| f.write "a;" }
480
+ asset = @env['test-main.js']
481
+
482
+ assert asset.fresh?
483
+
484
+ File.open(dep, 'w') { |f| f.write "b;" }
485
+ mtime = Time.now + 1
486
+ File.utime(mtime, mtime, dep)
487
+
488
+ assert asset.stale?
489
+ end
490
+ end
491
+
492
+ test "asset is stale when one of its source files dependencies is modified" do
493
+ a = fixture_path('asset/test-a.js')
494
+ b = fixture_path('asset/test-b.js')
495
+ c = fixture_path('asset/test-c.js')
496
+
497
+ sandbox a, b, c do
498
+ File.open(a, 'w') { |f| f.write "//= require test-b\n" }
499
+ File.open(b, 'w') { |f| f.write "//= require test-c\n" }
500
+ File.open(c, 'w') { |f| f.write "c;" }
501
+ asset_a = @env['test-a.js']
502
+ asset_b = @env['test-b.js']
503
+ asset_c = @env['test-c.js']
504
+
505
+ assert asset_a.fresh?
506
+ assert asset_b.fresh?
507
+ assert asset_c.fresh?
508
+
509
+ File.open(c, 'w') { |f| f.write "x;" }
510
+ mtime = Time.now + 1
511
+ File.utime(mtime, mtime, c)
512
+
513
+ assert asset_a.stale?
514
+ assert asset_b.stale?
515
+ assert asset_c.stale?
516
+ end
517
+ end
518
+
519
+ test "asset is stale when one of its dependency dependencies is modified" do
520
+ a = fixture_path('asset/test-a.js')
521
+ b = fixture_path('asset/test-b.js')
522
+ c = fixture_path('asset/test-c.js')
523
+
524
+ sandbox a, b, c do
525
+ File.open(a, 'w') { |f| f.write "//= require test-b\n" }
526
+ File.open(b, 'w') { |f| f.write "//= depend_on test-c\n" }
527
+ File.open(c, 'w') { |f| f.write "c;" }
528
+ asset_a = @env['test-a.js']
529
+ asset_b = @env['test-b.js']
530
+ asset_c = @env['test-c.js']
531
+
532
+ assert asset_a.fresh?
533
+ assert asset_b.fresh?
534
+ assert asset_c.fresh?
535
+
536
+ File.open(c, 'w') { |f| f.write "x;" }
537
+ mtime = Time.now + 1
538
+ File.utime(mtime, mtime, c)
539
+
540
+ assert asset_a.stale?
541
+ assert asset_b.stale?
542
+ assert asset_c.stale?
543
+ end
544
+ end
545
+
546
+ test "asset is stale when one of its asset dependency dependencies is modified" do
547
+ a = fixture_path('asset/test-a.js')
548
+ b = fixture_path('asset/test-b.js')
549
+ c = fixture_path('asset/test-c.js')
550
+
551
+ sandbox a, b, c do
552
+ File.open(a, 'w') { |f| f.write "//= depend_on_asset test-b\n" }
553
+ File.open(b, 'w') { |f| f.write "//= depend_on_asset test-c\n" }
554
+ File.open(c, 'w') { |f| f.write "c;" }
555
+ asset_a = @env['test-a.js']
556
+ asset_b = @env['test-b.js']
557
+ asset_c = @env['test-c.js']
558
+
559
+ assert asset_a.fresh?
560
+ assert asset_b.fresh?
561
+ assert asset_c.fresh?
562
+
563
+ File.open(c, 'w') { |f| f.write "x;" }
564
+ mtime = Time.now + 1
565
+ File.utime(mtime, mtime, c)
566
+
567
+ assert asset_a.stale?
568
+ assert asset_b.stale?
569
+ assert asset_c.stale?
570
+ end
571
+ end
572
+
467
573
  test "asset if stale if once of its source files is removed" do
468
574
  main = fixture_path('asset/test-main.js')
469
575
  dep = fixture_path('asset/test-dep.js')
@@ -1,17 +1,63 @@
1
1
  require 'sprockets_test'
2
2
 
3
3
  class TestAssetAttributes < Sprockets::TestCase
4
- test "basename with extensions" do
5
- assert_equal "empty",
6
- pathname("empty").basename_without_extensions.to_s
7
- assert_equal "gallery",
8
- pathname("gallery.js").basename_without_extensions.to_s
9
- assert_equal "application",
10
- pathname("application.js.coffee").basename_without_extensions.to_s
11
- assert_equal "project",
12
- pathname("project.js.coffee.erb").basename_without_extensions.to_s
13
- assert_equal "gallery",
14
- pathname("gallery.css.erb").basename_without_extensions.to_s
4
+ test "expand and relativize root" do
5
+ assert_equal __FILE__,
6
+ pathname(pathname(__FILE__).relativize_root).expand_root
7
+ end
8
+
9
+ test "search paths" do
10
+ assert_equal ["index"],
11
+ pathname("index").search_paths
12
+ assert_equal ["index.html"],
13
+ pathname("index.html").search_paths
14
+ assert_equal ["index.css", "index.less", "index.sass", "index.scss"],
15
+ pathname("index.css").search_paths
16
+ assert_equal ["index.js", "index.coffee", "index.jst"],
17
+ pathname("index.js").search_paths
18
+ assert_equal ["index.coffee"], pathname("index.coffee").search_paths
19
+ assert_equal ["index.js.coffee"], pathname("index.js.coffee").search_paths
20
+
21
+ assert_equal ["foo", "foo/index"],
22
+ pathname("foo").search_paths
23
+ assert_equal ["foo.html", "foo/index.html"],
24
+ pathname("foo.html").search_paths
25
+ assert_equal ["foo.js", "foo.coffee", "foo.jst", "foo/index.js", "foo/index.coffee", "foo/index.jst"],
26
+ pathname("foo.js").search_paths
27
+ assert_equal ["foo.coffee", "foo/index.coffee"],
28
+ pathname("foo.coffee").search_paths
29
+ assert_equal ["foo.js.coffee", "foo/index.js.coffee"],
30
+ pathname("foo.js.coffee").search_paths
31
+
32
+ assert_equal ["foo/bar", "foo/bar/index"], pathname("foo/bar").search_paths
33
+ assert_equal ["foo/bar.js", "foo/bar.coffee", "foo/bar.jst", "foo/bar/index.js", "foo/bar/index.coffee", "foo/bar/index.jst"],
34
+ pathname("foo/bar.js").search_paths
35
+ assert_equal ["foo/bar.coffee", "foo/bar/index.coffee"], pathname("foo/bar.coffee").search_paths
36
+ assert_equal ["foo/bar.js.coffee", "foo/bar/index.js.coffee"], pathname("foo/bar.js.coffee").search_paths
37
+
38
+ assert_equal ["jquery.foo.coffee", "jquery/index.foo.coffee"],
39
+ pathname("jquery.foo.coffee").search_paths
40
+ assert_equal ["jquery.foo.js.coffee", "jquery/index.foo.js.coffee"],
41
+ pathname("jquery.foo.js.coffee").search_paths
42
+ assert_equal ["jquery.foo.js", "jquery.foo.coffee", "jquery.foo.jst",
43
+ "jquery/index.foo.js", "jquery/index.foo.coffee", "jquery/index.foo.jst"],
44
+ pathname("jquery.foo.js").search_paths
45
+ end
46
+
47
+ test "logical path" do
48
+ assert_equal nil, pathname(fixture_path("missing/application.js")).logical_path
49
+
50
+ assert_equal "application.js", pathname(fixture_path("default/application.js")).logical_path
51
+ assert_equal "application.css", pathname(fixture_path("default/application.css")).logical_path
52
+ assert_equal "jquery.foo.min.js", pathname(fixture_path("default/jquery.foo.min.js")).logical_path
53
+
54
+ assert_equal "application.js", pathname(fixture_path("default/application.js.erb")).logical_path
55
+ assert_equal "application.js", pathname(fixture_path("default/application.js.coffee")).logical_path
56
+ assert_equal "application.css", pathname(fixture_path("default/application.css.scss")).logical_path
57
+
58
+ assert_equal "application.js", pathname(fixture_path("default/application.coffee")).logical_path
59
+ assert_equal "application.css", pathname(fixture_path("default/application.scss")).logical_path
60
+ assert_equal "hello.js", pathname(fixture_path("default/hello.jst.ejs")).logical_path
15
61
  end
16
62
 
17
63
  test "extensions" do
@@ -27,7 +73,7 @@ class TestAssetAttributes < Sprockets::TestCase
27
73
  pathname("gallery.css.erb").extensions
28
74
  end
29
75
 
30
- test "format_extension" do
76
+ test "format extension" do
31
77
  assert_equal nil, pathname("empty").format_extension
32
78
  assert_equal ".js", pathname("gallery.js").format_extension
33
79
  assert_equal ".js", pathname("application.js.coffee").format_extension
@@ -39,15 +85,17 @@ class TestAssetAttributes < Sprockets::TestCase
39
85
  assert_equal ".js", pathname("jquery.min.js").format_extension
40
86
  assert_equal ".js", pathname("jquery.tmpl.js").format_extension
41
87
  assert_equal ".js", pathname("jquery.tmpl.min.js").format_extension
88
+
89
+ env = Sprockets::Environment.new
90
+ env.register_engine '.ms', Class.new
91
+ assert_equal nil, env.attributes_for("foo.jst.ms").format_extension
42
92
  end
43
93
 
44
- test "engine_extensions" do
94
+ test "engine extensions" do
45
95
  assert_equal [], pathname("empty").engine_extensions
46
96
  assert_equal [], pathname("gallery.js").engine_extensions
47
- assert_equal [".coffee"],
48
- pathname("application.js.coffee").engine_extensions
49
- assert_equal [".coffee", ".erb"],
50
- pathname("project.js.coffee.erb").engine_extensions
97
+ assert_equal [".coffee"], pathname("application.js.coffee").engine_extensions
98
+ assert_equal [".coffee", ".erb"], pathname("project.js.coffee.erb").engine_extensions
51
99
  assert_equal [".erb"], pathname("gallery.css.erb").engine_extensions
52
100
  assert_equal [".erb"], pathname("gallery.erb").engine_extensions
53
101
  assert_equal [], pathname("jquery.js").engine_extensions
@@ -55,11 +103,14 @@ class TestAssetAttributes < Sprockets::TestCase
55
103
  assert_equal [], pathname("jquery.tmpl.min.js").engine_extensions
56
104
  assert_equal [".erb"], pathname("jquery.js.erb").engine_extensions
57
105
  assert_equal [".erb"], pathname("jquery.min.js.erb").engine_extensions
58
- assert_equal [".coffee"],
59
- pathname("jquery.min.coffee").engine_extensions
106
+ assert_equal [".coffee"], pathname("jquery.min.coffee").engine_extensions
107
+
108
+ env = Sprockets::Environment.new
109
+ env.register_engine '.ms', Class.new
110
+ assert_equal [".jst", ".ms"], env.attributes_for("foo.jst.ms").engine_extensions
60
111
  end
61
112
 
62
- test "content_type" do
113
+ test "content type" do
63
114
  assert_equal "application/octet-stream",
64
115
  pathname("empty").content_type
65
116
  assert_equal "application/javascript",
@@ -79,8 +130,21 @@ class TestAssetAttributes < Sprockets::TestCase
79
130
  end
80
131
  end
81
132
 
133
+ test "get path fingerprint" do
134
+ assert_equal nil, pathname("foo.js").path_fingerprint
135
+ assert_equal "0aa2105d29558f3eb790d411d7d8fb66",
136
+ pathname("foo-0aa2105d29558f3eb790d411d7d8fb66.js").path_fingerprint
137
+ end
138
+
139
+ test "inject path fingerprint" do
140
+ assert_equal "foo-0aa2105d29558f3eb790d411d7d8fb66.js",
141
+ pathname("foo.js").path_with_fingerprint("0aa2105d29558f3eb790d411d7d8fb66")
142
+ end
143
+
82
144
  private
83
145
  def pathname(path)
84
- Sprockets::Environment.new.attributes_for(path)
146
+ env = Sprockets::Environment.new
147
+ env.append_path fixture_path("default")
148
+ env.attributes_for(path)
85
149
  end
86
150
  end
@@ -67,6 +67,12 @@ module EnvironmentTests
67
67
  assert_equal "hello: world\n", context.call("JST['hello']", :name => "world")
68
68
  end
69
69
 
70
+ test "asset_data_uri helper" do
71
+ asset = @env["with_data_uri.css"]
72
+ assert_equal "body {\n background-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAP%2F%2F%2FwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D) no-repeat;\n}\n", asset.to_s
73
+ assert asset.send(:dependency_paths).find { |dependency| dependency["path"] == fixture_path("default/blank.gif") }
74
+ end
75
+
70
76
  test "lookup mime type" do
71
77
  assert_equal "application/javascript", @env.mime_types(".js")
72
78
  assert_equal "application/javascript", @env.mime_types("js")
@@ -85,6 +91,8 @@ module EnvironmentTests
85
91
  @env.resolve("gallery.js").to_s
86
92
  assert_equal fixture_path('default/gallery.js'),
87
93
  @env.resolve(Pathname.new("gallery.js")).to_s
94
+ assert_equal fixture_path('default/coffee/foo.coffee'),
95
+ @env.resolve("coffee/foo.js").to_s
88
96
  end
89
97
 
90
98
  test "missing file raises an exception" do
@@ -101,6 +109,11 @@ module EnvironmentTests
101
109
  assert_equal "var Gallery = {};\n", @env[fixture_path("default/gallery.js")].to_s
102
110
  end
103
111
 
112
+ test "find bundled asset with implicit format" do
113
+ assert_equal "(function() {\n var foo;\n foo = 'hello';\n}).call(this);\n",
114
+ @env["coffee/foo.js"].to_s
115
+ end
116
+
104
117
  test "find static asset in environment" do
105
118
  assert_equal "Hello world\n", @env["hello.txt"].to_s
106
119
  end
@@ -295,23 +308,15 @@ class TestEnvironment < Sprockets::TestCase
295
308
  end
296
309
 
297
310
  test "register mime type" do
298
- old_digest = @env.digest
299
311
  assert !@env.mime_types("jst")
300
-
301
312
  @env.register_mime_type("application/javascript", "jst")
302
-
303
313
  assert_equal "application/javascript", @env.mime_types("jst")
304
- assert_not_equal old_digest, @env.digest
305
314
  end
306
315
 
307
316
  test "register bundle processor" do
308
- old_digest = @env.digest
309
317
  assert !@env.bundle_processors('text/css').include?(WhitespaceCompressor)
310
-
311
318
  @env.register_bundle_processor 'text/css', WhitespaceCompressor
312
-
313
319
  assert @env.bundle_processors('text/css').include?(WhitespaceCompressor)
314
- assert_not_equal old_digest, @env.digest
315
320
  end
316
321
 
317
322
  test "unregister custom block preprocessor" do
@@ -338,16 +343,6 @@ class TestEnvironment < Sprockets::TestCase
338
343
  assert_equal old_size, @env.bundle_processors('text/css').size
339
344
  end
340
345
 
341
- test "changing css compressor expires old assets" do
342
- old_digest = @env.digest
343
- assert_equal ".gallery {\n color: red;\n}\n", @env["gallery.css"].to_s
344
-
345
- @env.css_compressor = WhitespaceCompressor
346
-
347
- assert_equal ".gallery{color:red;}", @env["gallery.css"].to_s
348
- assert_not_equal old_digest, @env.digest
349
- end
350
-
351
346
  test "setting css compressor to nil clears current compressor" do
352
347
  old_digest = @env.digest
353
348
  @env.css_compressor = WhitespaceCompressor
@@ -356,16 +351,6 @@ class TestEnvironment < Sprockets::TestCase
356
351
  assert_nil @env.css_compressor
357
352
  end
358
353
 
359
- test "changing js compressor expires old assets" do
360
- old_digest = @env.digest
361
- assert_equal "var Gallery = {};\n", @env["gallery.js"].to_s
362
-
363
- @env.js_compressor = WhitespaceCompressor
364
-
365
- assert_equal "varGallery={};", @env["gallery.js"].to_s
366
- assert_not_equal old_digest, @env.digest
367
- end
368
-
369
354
  test "setting js compressor to nil clears current compressor" do
370
355
  @env.js_compressor = WhitespaceCompressor
371
356
  assert @env.js_compressor
@@ -458,7 +443,6 @@ class TestEnvironment < Sprockets::TestCase
458
443
  end
459
444
 
460
445
  test "registering engine adds to the environments extensions" do
461
- old_digest = @env.digest
462
446
  assert !@env.engines[".foo"]
463
447
  assert !@env.extensions.include?(".foo")
464
448
 
@@ -466,7 +450,6 @@ class TestEnvironment < Sprockets::TestCase
466
450
 
467
451
  assert @env.engines[".foo"]
468
452
  assert @env.extensions.include?(".foo")
469
- assert_not_equal old_digest, @env.digest
470
453
  end
471
454
 
472
455
  test "seperate engines for each instance" do
@@ -486,12 +469,6 @@ class TestEnvironment < Sprockets::TestCase
486
469
  @env.unregister_preprocessor('application/javascript', Sprockets::DirectiveProcessor)
487
470
  assert_equal "// =require \"notfound\"\n;\n", @env["missing_require.js"].to_s
488
471
  end
489
-
490
- test "changing directive preprocessor changes digest" do
491
- old_digest = @env.digest
492
- @env.unregister_preprocessor('application/javascript', Sprockets::DirectiveProcessor)
493
- assert_not_equal old_digest, @env.digest
494
- end
495
472
  end
496
473
 
497
474
  class TestIndex < Sprockets::TestCase