teabag 0.3.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 (486) hide show
  1. data/MIT.LICENSE +22 -0
  2. data/README.md +407 -0
  3. data/app/assets/images/teabag/photo-white.jpg +0 -0
  4. data/app/assets/javascripts/teabag-jasmine.js +3488 -0
  5. data/app/assets/javascripts/teabag-mocha.js +5923 -0
  6. data/app/assets/javascripts/teabag/base/reporters.coffee +105 -0
  7. data/app/assets/javascripts/teabag/base/reporters/console.coffee +58 -0
  8. data/app/assets/javascripts/teabag/base/reporters/html.coffee +177 -0
  9. data/app/assets/javascripts/teabag/base/reporters/html/failure_view.coffee +12 -0
  10. data/app/assets/javascripts/teabag/base/reporters/html/progress_view.coffee +67 -0
  11. data/app/assets/javascripts/teabag/base/reporters/html/spec_view.coffee +46 -0
  12. data/app/assets/javascripts/teabag/base/reporters/html/suite_view.coffee +39 -0
  13. data/app/assets/javascripts/teabag/base/runner.coffee +22 -0
  14. data/app/assets/javascripts/teabag/base/teabag.coffee +18 -0
  15. data/app/assets/javascripts/teabag/jasmine.coffee +38 -0
  16. data/app/assets/javascripts/teabag/jasmine/reporters/html.coffee +11 -0
  17. data/app/assets/javascripts/teabag/mocha.coffee +21 -0
  18. data/app/assets/javascripts/teabag/mocha/reporters/console.coffee +14 -0
  19. data/app/assets/javascripts/teabag/mocha/reporters/html.coffee +27 -0
  20. data/app/assets/stylesheets/teabag.css +332 -0
  21. data/app/controllers/teabag/spec_controller.rb +25 -0
  22. data/app/views/teabag/spec/index.html.erb +18 -0
  23. data/config/routes.rb +8 -0
  24. data/lib/generators/teabag/install/POST_INSTALL +6 -0
  25. data/lib/generators/teabag/install/install_generator.rb +24 -0
  26. data/lib/generators/teabag/install/templates/initializer.rb +115 -0
  27. data/lib/generators/teabag/install/templates/spec_helper.js +31 -0
  28. data/lib/tasks/teabag.rake +5 -0
  29. data/lib/teabag.rb +6 -0
  30. data/lib/teabag/configuration.rb +68 -0
  31. data/lib/teabag/console.rb +57 -0
  32. data/lib/teabag/engine.rb +16 -0
  33. data/lib/teabag/exceptions.rb +6 -0
  34. data/lib/teabag/formatters/base_formatter.rb +32 -0
  35. data/lib/teabag/formatters/progress_formatter.rb +93 -0
  36. data/lib/teabag/phantomjs/runner.coffee +61 -0
  37. data/lib/teabag/result.rb +46 -0
  38. data/lib/teabag/runner.rb +49 -0
  39. data/lib/teabag/server.rb +64 -0
  40. data/lib/teabag/suite.rb +39 -0
  41. data/lib/teabag/version.rb +3 -0
  42. data/spec/dummy/Rakefile +7 -0
  43. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  44. data/spec/dummy/app/assets/javascripts/specs/asset_spec.js +11 -0
  45. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  46. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  47. data/spec/dummy/config.ru +15 -0
  48. data/spec/dummy/config/application.rb +54 -0
  49. data/spec/dummy/config/boot.rb +10 -0
  50. data/spec/dummy/config/environment.rb +5 -0
  51. data/spec/dummy/config/environments/development.rb +27 -0
  52. data/spec/dummy/config/environments/production.rb +67 -0
  53. data/spec/dummy/config/environments/test.rb +29 -0
  54. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  55. data/spec/dummy/config/initializers/inflections.rb +15 -0
  56. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  57. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  58. data/spec/dummy/config/initializers/session_store.rb +8 -0
  59. data/spec/dummy/config/initializers/teabag.rb +22 -0
  60. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  61. data/spec/dummy/config/locales/en.yml +5 -0
  62. data/spec/dummy/config/routes.rb +58 -0
  63. data/spec/dummy/log/development.log +308541 -0
  64. data/spec/dummy/log/production.log +402 -0
  65. data/spec/dummy/log/test.log +3459 -0
  66. data/spec/dummy/public/404.html +26 -0
  67. data/spec/dummy/public/422.html +26 -0
  68. data/spec/dummy/public/500.html +25 -0
  69. data/spec/dummy/public/favicon.ico +0 -0
  70. data/spec/dummy/script/rails +6 -0
  71. data/spec/dummy/tmp/cache/assets/C13/B50/sprockets%2F431452d41e5087d2211162d23c63789b +0 -0
  72. data/spec/dummy/tmp/cache/assets/C18/F90/sprockets%2F369a3f720404378b4162541fd432742d +0 -0
  73. data/spec/dummy/tmp/cache/assets/C28/650/sprockets%2F24278fc33d7566396414307f37b119b6 +0 -0
  74. data/spec/dummy/tmp/cache/assets/C2B/5D0/sprockets%2F98606f6051a5fc71379af24236793353 +0 -0
  75. data/spec/dummy/tmp/cache/assets/C35/510/sprockets%2Fb5f1121863a3025179f1a621e7127b10 +0 -0
  76. data/spec/dummy/tmp/cache/assets/C46/E90/sprockets%2F006527268e406896b12c930eb572f00a +0 -0
  77. data/spec/dummy/tmp/cache/assets/C4A/700/sprockets%2F233efef497080a6a0226928033c09166 +0 -0
  78. data/spec/dummy/tmp/cache/assets/C4C/5E0/sprockets%2Fcb61192e6366f0228a57c91459c00256 +0 -0
  79. data/spec/dummy/tmp/cache/assets/C4E/6A0/sprockets%2F6443716ba17b71f265656634b3b9441d +0 -0
  80. data/spec/dummy/tmp/cache/assets/C4E/9B0/sprockets%2Fa807397434c9262c3d62da3e91152184 +0 -0
  81. data/spec/dummy/tmp/cache/assets/C59/250/sprockets%2Fa80d3fe493d2476e58c4323996064512 +0 -0
  82. data/spec/dummy/tmp/cache/assets/C5C/D00/sprockets%2Fdd8fdc961143499e53f5327126721608 +0 -0
  83. data/spec/dummy/tmp/cache/assets/C64/630/sprockets%2F9435866920a6269633da595e0638ecf4 +0 -0
  84. data/spec/dummy/tmp/cache/assets/C64/740/sprockets%2Fa65d355185e6ed0699611739c38a6683 +0 -0
  85. data/spec/dummy/tmp/cache/assets/C6C/3A0/sprockets%2F35a43b3a31512a820f249c841b7b3862 +0 -0
  86. data/spec/dummy/tmp/cache/assets/C75/D50/sprockets%2F5302968a40e08d2c011aa38666d273f6 +0 -0
  87. data/spec/dummy/tmp/cache/assets/C78/EF0/sprockets%2F65f827a4a5337d05d037845161b41ab8 +0 -0
  88. data/spec/dummy/tmp/cache/assets/C78/F80/sprockets%2F9161622ddd251097a4ab816b8220984c +0 -0
  89. data/spec/dummy/tmp/cache/assets/C7D/730/sprockets%2F6c062828354bbf37032360766d652fea +0 -0
  90. data/spec/dummy/tmp/cache/assets/C80/EC0/sprockets%2F8ae4c854735563d420f90b1b236a3497 +0 -0
  91. data/spec/dummy/tmp/cache/assets/C80/F70/sprockets%2Fe5c9811902c221828ea647978f000be3 +0 -0
  92. data/spec/dummy/tmp/cache/assets/C81/630/sprockets%2F8914408137182ffb4a2f37176f2e207d +0 -0
  93. data/spec/dummy/tmp/cache/assets/C81/D20/sprockets%2F7979862b333720a8f2021a877a4af0f4 +0 -0
  94. data/spec/dummy/tmp/cache/assets/C83/C30/sprockets%2F9c8d8400390c4927ab703e2b785415d6 +0 -0
  95. data/spec/dummy/tmp/cache/assets/C85/D10/sprockets%2F01d329696710efd821850ec83292bc76 +0 -0
  96. data/spec/dummy/tmp/cache/assets/C87/850/sprockets%2F45dd8808f5c34633480a87058f025bc6 +0 -0
  97. data/spec/dummy/tmp/cache/assets/C88/720/sprockets%2F0b0cf4198eb5818ffc69908188301127 +0 -0
  98. data/spec/dummy/tmp/cache/assets/C89/700/sprockets%2F259935a7704fef0069303ea63fa89408 +0 -0
  99. data/spec/dummy/tmp/cache/assets/C8A/460/sprockets%2F77bffd9959420103906722b404ae8d59 +0 -0
  100. data/spec/dummy/tmp/cache/assets/C8D/8A0/sprockets%2F52b90ee84d6593767a35dc417b862228 +0 -0
  101. data/spec/dummy/tmp/cache/assets/C90/9D0/sprockets%2Ff8669a76788e96f11e6d8630a10113a8 +0 -0
  102. data/spec/dummy/tmp/cache/assets/C91/040/sprockets%2F8d009759ea4847ffd6171a1579f41634 +0 -0
  103. data/spec/dummy/tmp/cache/assets/C91/FA0/sprockets%2F2eb81283f5789ae91a69344552db3856 +0 -0
  104. data/spec/dummy/tmp/cache/assets/C94/7F0/sprockets%2F5511d2208b7b12aa9130a72ef07b6803 +0 -0
  105. data/spec/dummy/tmp/cache/assets/C96/A60/sprockets%2F6e220f96d15d5db885711f50876993e5 +0 -0
  106. data/spec/dummy/tmp/cache/assets/C9D/E90/sprockets%2F3045c9533f179d3e1c805d163ed002a0 +0 -0
  107. data/spec/dummy/tmp/cache/assets/CA2/7D0/sprockets%2F1f39d625b67ba277a4811d361074a2d1 +0 -0
  108. data/spec/dummy/tmp/cache/assets/CA2/F50/sprockets%2F86094c5d1b6399d614b0771a3a0a45b0 +0 -0
  109. data/spec/dummy/tmp/cache/assets/CA5/760/sprockets%2F06db38110a7245399c693831d01bcb6e +0 -0
  110. data/spec/dummy/tmp/cache/assets/CA6/2F0/sprockets%2F20040c18b672e4c4d2731a2a929d8b97 +0 -0
  111. data/spec/dummy/tmp/cache/assets/CA6/DF0/sprockets%2F7da83747ce56e49393b6b8726587f846 +0 -0
  112. data/spec/dummy/tmp/cache/assets/CA8/400/sprockets%2F7fb4801a4d3c5ed42610b9076362283f +0 -0
  113. data/spec/dummy/tmp/cache/assets/CA9/440/sprockets%2F488d156744e10731bee14b5a931a581d +0 -0
  114. data/spec/dummy/tmp/cache/assets/CAA/0C0/sprockets%2F057b0ce384f16d9202ae84473436cc35 +0 -0
  115. data/spec/dummy/tmp/cache/assets/CAD/410/sprockets%2F651414e5c7e86f05c5108dc71626b25c +0 -0
  116. data/spec/dummy/tmp/cache/assets/CB1/0D0/sprockets%2Fe3ca7997e9150f7731f50b227533d12c +0 -0
  117. data/spec/dummy/tmp/cache/assets/CB1/690/sprockets%2F7a8100c6511e848b1148287ad87cb47f +0 -0
  118. data/spec/dummy/tmp/cache/assets/CB2/640/sprockets%2Fd629e34645a3892189c1f2c052f6d2c2 +0 -0
  119. data/spec/dummy/tmp/cache/assets/CB3/240/sprockets%2Fb3935adb01833c52148cf492898db094 +0 -0
  120. data/spec/dummy/tmp/cache/assets/CB4/970/sprockets%2Fe4737223d2ba69d655f6611f0527d58b +0 -0
  121. data/spec/dummy/tmp/cache/assets/CB6/190/sprockets%2Ff18444022b08982685f9cd15b62b4dd7 +0 -0
  122. data/spec/dummy/tmp/cache/assets/CB6/C00/sprockets%2F4119946cb82f96e5a2793013a3bdd855 +0 -0
  123. data/spec/dummy/tmp/cache/assets/CB7/BF0/sprockets%2Fd56192b300ec0979b66d022e996fa079 +0 -0
  124. data/spec/dummy/tmp/cache/assets/CB8/E20/sprockets%2Fa593029687d6717431a3dc7360ca9dd9 +0 -0
  125. data/spec/dummy/tmp/cache/assets/CBB/FA0/sprockets%2F74922109263bdc965b2e9567eec6d154 +0 -0
  126. data/spec/dummy/tmp/cache/assets/CBC/E20/sprockets%2Faf708488d1178752bfbb925184f194c3 +0 -0
  127. data/spec/dummy/tmp/cache/assets/CBE/AB0/sprockets%2F3f8985f1b9c67404dd9a14f0647404c8 +0 -0
  128. data/spec/dummy/tmp/cache/assets/CBF/630/sprockets%2F707d2db81468088470d476abff35388d +0 -0
  129. data/spec/dummy/tmp/cache/assets/CC1/440/sprockets%2F17172f9f3b01ee6fc473047c76943e89 +0 -0
  130. data/spec/dummy/tmp/cache/assets/CC2/7B0/sprockets%2Ff35764dca2f5e55c5538589cf0125398 +0 -0
  131. data/spec/dummy/tmp/cache/assets/CC2/EC0/sprockets%2F76bf80cb571ca530357f78db78167866 +0 -0
  132. data/spec/dummy/tmp/cache/assets/CC4/800/sprockets%2Fdc523a6389fe6285945c07a90d58c792 +0 -0
  133. data/spec/dummy/tmp/cache/assets/CC4/CC0/sprockets%2F94470799e3269f582188fe8e5201acac +0 -0
  134. data/spec/dummy/tmp/cache/assets/CC4/D20/sprockets%2F580f5e966a053317b284bc9d99180ff9 +0 -0
  135. data/spec/dummy/tmp/cache/assets/CC6/D00/sprockets%2Fc3ad440856320f4a51301c6ecb6b6342 +0 -0
  136. data/spec/dummy/tmp/cache/assets/CCB/540/sprockets%2F304d8554d7e38ae101c47b0a027147bc +0 -0
  137. data/spec/dummy/tmp/cache/assets/CCD/560/sprockets%2Fc026ba3c1ad5675314735b56c2435ac7 +0 -0
  138. data/spec/dummy/tmp/cache/assets/CCE/960/sprockets%2F522c8e0801c33373edc7f5d3126a530c +0 -0
  139. data/spec/dummy/tmp/cache/assets/CCE/C50/sprockets%2Fe12774c2fea852112414bb379a71f31a +0 -0
  140. data/spec/dummy/tmp/cache/assets/CCF/390/sprockets%2F72dd112058cad36028c2450671ddf26d +0 -0
  141. data/spec/dummy/tmp/cache/assets/CD1/0B0/sprockets%2F5bf8f21172210208e5dce60265d40b9d +0 -0
  142. data/spec/dummy/tmp/cache/assets/CD1/620/sprockets%2F06a3eb05fcb4175a679d6084a06026a6 +0 -0
  143. data/spec/dummy/tmp/cache/assets/CD1/BD0/sprockets%2Fb2089774122944ac8c3abb32f70c23d3 +0 -0
  144. data/spec/dummy/tmp/cache/assets/CD3/460/sprockets%2F7f3f6802b0b309ed142d0b671c9640c4 +0 -0
  145. data/spec/dummy/tmp/cache/assets/CD4/050/sprockets%2F4c36a6e9e6874070516a6c40b0309daa +0 -0
  146. data/spec/dummy/tmp/cache/assets/CD4/D20/sprockets%2F40c6b1133a952429a7b8769c1d3c3dd0 +0 -0
  147. data/spec/dummy/tmp/cache/assets/CD7/B90/sprockets%2Fe3e49e4c1c68a1e32355620d1d3b7265 +0 -0
  148. data/spec/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  149. data/spec/dummy/tmp/cache/assets/CD9/880/sprockets%2F2e8e3822ab8a2ce41cf39554226230d9 +0 -0
  150. data/spec/dummy/tmp/cache/assets/CD9/9B0/sprockets%2Fdc1f0447e4c5c2f990750b2f722c5900 +0 -0
  151. data/spec/dummy/tmp/cache/assets/CD9/DD0/sprockets%2Fe5774759168a731da1c1149ecf0e1b03 +0 -0
  152. data/spec/dummy/tmp/cache/assets/CDA/2B0/sprockets%2Fc3a13686484d2cdc5b859b2300b0d489 +0 -0
  153. data/spec/dummy/tmp/cache/assets/CDA/930/sprockets%2F7dd8506d171b15d410eb245f60b99b46 +0 -0
  154. data/spec/dummy/tmp/cache/assets/CDB/170/sprockets%2Ffd3d8740748be26004cf49b130680e1e +0 -0
  155. data/spec/dummy/tmp/cache/assets/CDB/630/sprockets%2Ffd1626fe1016c81d57217f7f80c4370a +0 -0
  156. data/spec/dummy/tmp/cache/assets/CDC/EB0/sprockets%2F627ab41907f375c3efc41a44e090d961 +0 -0
  157. data/spec/dummy/tmp/cache/assets/CDD/430/sprockets%2Fe201772e6124a4c0d53de19696ac8b94 +0 -0
  158. data/spec/dummy/tmp/cache/assets/CE0/190/sprockets%2F8d6df52167f36d9e1655f989e91699c7 +0 -0
  159. data/spec/dummy/tmp/cache/assets/CE0/CF0/sprockets%2Fea163522b70cf77176d95b4caa560939 +0 -0
  160. data/spec/dummy/tmp/cache/assets/CE1/250/sprockets%2Ffdc680a0d4383d37910e549ca96f5303 +0 -0
  161. data/spec/dummy/tmp/cache/assets/CE1/730/sprockets%2Fa1678837061e18d7aca0286c07acf676 +0 -0
  162. data/spec/dummy/tmp/cache/assets/CE2/9C0/sprockets%2F24939c09b831b5f057100fe4776dccf4 +0 -0
  163. data/spec/dummy/tmp/cache/assets/CE2/DA0/sprockets%2Ff3ac0c65e27949133e0ea9b8250a3977 +0 -0
  164. data/spec/dummy/tmp/cache/assets/CE2/E90/sprockets%2F442a112b6b94b9728d6fa0bc6f474694 +0 -0
  165. data/spec/dummy/tmp/cache/assets/CE3/1F0/sprockets%2Fe69a515d3a9d14c669be8871012a7d07 +0 -0
  166. data/spec/dummy/tmp/cache/assets/CE3/B20/sprockets%2F61ccc7dcd2082970836964ac01f54b96 +0 -0
  167. data/spec/dummy/tmp/cache/assets/CE4/580/sprockets%2F2296de52158bde693192f14282b5edf1 +0 -0
  168. data/spec/dummy/tmp/cache/assets/CE4/FD0/sprockets%2F4295ee9f678aa2db21f5b1565616a319 +0 -0
  169. data/spec/dummy/tmp/cache/assets/CE6/270/sprockets%2F2c98152560d18470fec8cf4c6829b4d0 +0 -0
  170. data/spec/dummy/tmp/cache/assets/CE6/7C0/sprockets%2Fa03a2c86ce6724be8542295e1cf24798 +0 -0
  171. data/spec/dummy/tmp/cache/assets/CE6/990/sprockets%2F02e1c54cebf6319465e469269b91ab66 +0 -0
  172. data/spec/dummy/tmp/cache/assets/CE7/A60/sprockets%2Ff58eee249aa167d23f8220087bb46684 +0 -0
  173. data/spec/dummy/tmp/cache/assets/CE9/9E0/sprockets%2F135480d497ed7e4884462dc0ef0b80d7 +0 -0
  174. data/spec/dummy/tmp/cache/assets/CEA/6D0/sprockets%2Fc95345583b2c6df7850cef943c5a0375 +0 -0
  175. data/spec/dummy/tmp/cache/assets/CEB/680/sprockets%2F67f0794ef8c0576d5c7da34f4437305a +0 -0
  176. data/spec/dummy/tmp/cache/assets/CEB/B20/sprockets%2F5c3535c9b266a5cb17824f5676a775dd +0 -0
  177. data/spec/dummy/tmp/cache/assets/CEB/B40/sprockets%2F1150bf8d912aa100a132251eefaf6045 +0 -0
  178. data/spec/dummy/tmp/cache/assets/CEB/D80/sprockets%2F8992063c286f1379f2075ebef3ae21c8 +0 -0
  179. data/spec/dummy/tmp/cache/assets/CED/A20/sprockets%2F38752bc804bdd87e3823be65866a0c87 +0 -0
  180. data/spec/dummy/tmp/cache/assets/CEF/960/sprockets%2F815667b28e33482c8f0ba479b72af5e9 +0 -0
  181. data/spec/dummy/tmp/cache/assets/CF1/C50/sprockets%2F57bd9ac92067ea01882feef075582758 +0 -0
  182. data/spec/dummy/tmp/cache/assets/CF2/6A0/sprockets%2F3f295ed908e399eaa764b3a187e52663 +0 -0
  183. data/spec/dummy/tmp/cache/assets/CF3/3A0/sprockets%2F6571249b82eb52e7c7e035c692df9b69 +0 -0
  184. data/spec/dummy/tmp/cache/assets/CF4/6F0/sprockets%2Fed96f92571224b862b84d7078b86ded3 +0 -0
  185. data/spec/dummy/tmp/cache/assets/CF7/F10/sprockets%2F8c45854ebd195b52cc42bf3f99996336 +0 -0
  186. data/spec/dummy/tmp/cache/assets/CF8/780/sprockets%2F8845b81ff27cdb57c835836c9f91a265 +0 -0
  187. data/spec/dummy/tmp/cache/assets/CF9/D00/sprockets%2F9da50f3d2073a00c62f35ca6c04a9561 +0 -0
  188. data/spec/dummy/tmp/cache/assets/CFA/C00/sprockets%2F455bb7218b44a4cc162b1ec574cb4044 +0 -0
  189. data/spec/dummy/tmp/cache/assets/CFB/210/sprockets%2F9104695bfbf9a9d4b94382e6e90487a9 +0 -0
  190. data/spec/dummy/tmp/cache/assets/CFB/CA0/sprockets%2F5fd863f7896134b607496c9b0c7b6d7f +0 -0
  191. data/spec/dummy/tmp/cache/assets/CFC/380/sprockets%2Fa7443cbd671446a589867dd5f4a4f989 +0 -0
  192. data/spec/dummy/tmp/cache/assets/D00/110/sprockets%2F6a6353b7723a8b21708e0fbfe04bd422 +0 -0
  193. data/spec/dummy/tmp/cache/assets/D00/470/sprockets%2Fedd35336ed5f26cb44251532813b0c4c +0 -0
  194. data/spec/dummy/tmp/cache/assets/D00/B50/sprockets%2F3c4e003ba820ca79b7c153287a7f8a04 +0 -0
  195. data/spec/dummy/tmp/cache/assets/D03/630/sprockets%2F5d8da32dba6a7be70426a1d554773701 +0 -0
  196. data/spec/dummy/tmp/cache/assets/D03/A90/sprockets%2F4b6f4d85185cdd8027a202c7d104a65b +0 -0
  197. data/spec/dummy/tmp/cache/assets/D04/170/sprockets%2F76ab1dc02e6c7618852708a1e05a2df3 +0 -0
  198. data/spec/dummy/tmp/cache/assets/D04/480/sprockets%2F8bd8f10500b21d2f9d94e4cd1401c936 +0 -0
  199. data/spec/dummy/tmp/cache/assets/D05/8D0/sprockets%2F319f8f235f452343f1ebf03cb262d23d +0 -0
  200. data/spec/dummy/tmp/cache/assets/D07/120/sprockets%2Fe65cdfadc710ed84710627360a50a738 +0 -0
  201. data/spec/dummy/tmp/cache/assets/D07/BE0/sprockets%2F41e21b4d2cbf56b9933e8239ea0e7032 +0 -0
  202. data/spec/dummy/tmp/cache/assets/D08/BD0/sprockets%2F22c1dd6fa27601451d5cf6c840e0668e +0 -0
  203. data/spec/dummy/tmp/cache/assets/D09/BF0/sprockets%2F9e6bca5d26f50d9484385d51ba04312c +0 -0
  204. data/spec/dummy/tmp/cache/assets/D09/D00/sprockets%2F8d94b71c7c7b5e05166e15ccd0a12447 +0 -0
  205. data/spec/dummy/tmp/cache/assets/D0B/210/sprockets%2Fb95ce127097fba0e4019f633e91b730d +0 -0
  206. data/spec/dummy/tmp/cache/assets/D0C/B80/sprockets%2Fc4891b60864cf8457af101c9a211db8d +0 -0
  207. data/spec/dummy/tmp/cache/assets/D0D/060/sprockets%2F03c3bda8931e83e888ea8c95106300ae +0 -0
  208. data/spec/dummy/tmp/cache/assets/D0D/5B0/sprockets%2Fd8056958f488bbbea304151530ea4cb9 +0 -0
  209. data/spec/dummy/tmp/cache/assets/D0E/920/sprockets%2F47b207ec61677ee25b0001de3f96f84b +0 -0
  210. data/spec/dummy/tmp/cache/assets/D0E/E60/sprockets%2F4d8960a63bdca7075662239ef4b1de14 +0 -0
  211. data/spec/dummy/tmp/cache/assets/D0F/E80/sprockets%2Fb13bf7ddc4ee98083c79011ad7271275 +0 -0
  212. data/spec/dummy/tmp/cache/assets/D10/CE0/sprockets%2F602cdc3188bd940ab8ecc88e62390291 +0 -0
  213. data/spec/dummy/tmp/cache/assets/D10/EF0/sprockets%2F413d56da9f4db84a99fa73b11d196142 +0 -0
  214. data/spec/dummy/tmp/cache/assets/D11/340/sprockets%2F1fee97021c532d76bb64f4f19e8a1813 +0 -0
  215. data/spec/dummy/tmp/cache/assets/D11/B00/sprockets%2F97aa86f14ae420f87553523e340acdf8 +0 -0
  216. data/spec/dummy/tmp/cache/assets/D11/E50/sprockets%2Fe384d6dc634ba600219e284f31bf991f +0 -0
  217. data/spec/dummy/tmp/cache/assets/D11/F80/sprockets%2F48961522f6cd1a15f2fe6e25f1b37a75 +0 -0
  218. data/spec/dummy/tmp/cache/assets/D15/0A0/sprockets%2F6b913f0e2d4e3355989bbc14650ed8d4 +0 -0
  219. data/spec/dummy/tmp/cache/assets/D15/210/sprockets%2F79b3efa76951f9a0b25a1df07751d672 +0 -0
  220. data/spec/dummy/tmp/cache/assets/D15/750/sprockets%2F8effdd3e668a4036260a3e370f3b6657 +0 -0
  221. data/spec/dummy/tmp/cache/assets/D15/F10/sprockets%2Fc132f823916bcefc67d546d719dd4351 +0 -0
  222. data/spec/dummy/tmp/cache/assets/D16/790/sprockets%2F816a88991903fab936c1de6a6bd1e280 +0 -0
  223. data/spec/dummy/tmp/cache/assets/D16/F20/sprockets%2Fe3c050514d0e8c750d2ac977a97a69e9 +0 -0
  224. data/spec/dummy/tmp/cache/assets/D17/450/sprockets%2Ffac8560813729f008ca8b09f4a76e0e9 +0 -0
  225. data/spec/dummy/tmp/cache/assets/D17/710/sprockets%2Ffa49fb6823d466e79a195e0cd71340c5 +0 -0
  226. data/spec/dummy/tmp/cache/assets/D18/3D0/sprockets%2Fef037f0fc7cb0f80478b5465f564246d +0 -0
  227. data/spec/dummy/tmp/cache/assets/D1A/D30/sprockets%2F815a5177e9edba0c5c996182ef1b3675 +0 -0
  228. data/spec/dummy/tmp/cache/assets/D1C/250/sprockets%2F22f9883fa2d48e35e7cf9407a9a391b1 +0 -0
  229. data/spec/dummy/tmp/cache/assets/D1C/AE0/sprockets%2F64f4a3d1ef3f457e9117c857dab97073 +0 -0
  230. data/spec/dummy/tmp/cache/assets/D1E/AA0/sprockets%2F5c8741a556bc955cd36e61c88582b6dc +0 -0
  231. data/spec/dummy/tmp/cache/assets/D20/4E0/sprockets%2F8996e772cbbc3462a4578bed8a07880b +0 -0
  232. data/spec/dummy/tmp/cache/assets/D20/710/sprockets%2Fa6ac072e74c49f8c7f1c93313976a6e9 +0 -0
  233. data/spec/dummy/tmp/cache/assets/D20/980/sprockets%2F7245e0b92e389903ef6bb8f9b263d1e8 +0 -0
  234. data/spec/dummy/tmp/cache/assets/D20/C60/sprockets%2F0acbe1111c581802127531ef0caea7b9 +0 -0
  235. data/spec/dummy/tmp/cache/assets/D21/010/sprockets%2F8424ac59b80ac6c7f7d8534ce1935e87 +0 -0
  236. data/spec/dummy/tmp/cache/assets/D25/A40/sprockets%2F3203df91221911b0a35e3dd1f954abbd +0 -0
  237. data/spec/dummy/tmp/cache/assets/D27/350/sprockets%2Fc5cadc26988e3e7544817fa817fc8806 +0 -0
  238. data/spec/dummy/tmp/cache/assets/D27/900/sprockets%2F64be39c8e378779e3323d4925ac94eaf +0 -0
  239. data/spec/dummy/tmp/cache/assets/D27/A30/sprockets%2F1d15efb1ce5c9a479c87919d58b69571 +0 -0
  240. data/spec/dummy/tmp/cache/assets/D29/350/sprockets%2Fb8c14bbb2c24d881ba2a54d56715031f +0 -0
  241. data/spec/dummy/tmp/cache/assets/D2C/720/sprockets%2F293d8f7e19eefc1f7d397417e077467b +0 -0
  242. data/spec/dummy/tmp/cache/assets/D2D/F00/sprockets%2Fe7c0aa671a08e35e084fd1dd00330a89 +0 -0
  243. data/spec/dummy/tmp/cache/assets/D2F/520/sprockets%2Fea2308e8add6880c1c4d47040ab710d7 +0 -0
  244. data/spec/dummy/tmp/cache/assets/D2F/AD0/sprockets%2Fc8087368a419b7a2a010173ebaca8d2f +0 -0
  245. data/spec/dummy/tmp/cache/assets/D30/480/sprockets%2Feb011f46c64dbefb1f7e21329644c240 +0 -0
  246. data/spec/dummy/tmp/cache/assets/D31/9C0/sprockets%2Fbd102a4f5a4985c3519dd6ab0295a1c6 +0 -0
  247. data/spec/dummy/tmp/cache/assets/D32/500/sprockets%2F6927df5a24d91c75d001e2b5600ab8be +0 -0
  248. data/spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  249. data/spec/dummy/tmp/cache/assets/D33/910/sprockets%2F18789ea0bbe0ac29a960b15ab082638b +0 -0
  250. data/spec/dummy/tmp/cache/assets/D33/F10/sprockets%2F44e1ef2cd8b518f7d2411ce56a11440f +0 -0
  251. data/spec/dummy/tmp/cache/assets/D34/B10/sprockets%2F810a3d507db1d548a1d314c9cc59c66b +0 -0
  252. data/spec/dummy/tmp/cache/assets/D35/030/sprockets%2F30d01c0eb55160b6f97568b2bb16dfc9 +0 -0
  253. data/spec/dummy/tmp/cache/assets/D35/260/sprockets%2Fd02b5f0131a65460b9bd146dd7e98f3a +0 -0
  254. data/spec/dummy/tmp/cache/assets/D35/7C0/sprockets%2Ff536a2606eaf7d542c0985104cb62baf +0 -0
  255. data/spec/dummy/tmp/cache/assets/D35/F00/sprockets%2F8e7f22358123b7eb5e21d17f442ce0ac +0 -0
  256. data/spec/dummy/tmp/cache/assets/D36/3F0/sprockets%2F845a64b2a4fdd702bb8d325cc6715a28 +0 -0
  257. data/spec/dummy/tmp/cache/assets/D36/4C0/sprockets%2Fba10098fc535146ed4fb9744cf262a0c +0 -0
  258. data/spec/dummy/tmp/cache/assets/D36/E20/sprockets%2Fa6d48550d8c46cb4a91e2b1aa147647c +0 -0
  259. data/spec/dummy/tmp/cache/assets/D37/300/sprockets%2F2d0e503e6a7c7c7fdc9912501b2f6b43 +0 -0
  260. data/spec/dummy/tmp/cache/assets/D37/890/sprockets%2F4728d0522ff8b44c0230bc9feb46be25 +0 -0
  261. data/spec/dummy/tmp/cache/assets/D37/FF0/sprockets%2F96841ca4cfae32c515077f3f5fc303b2 +0 -0
  262. data/spec/dummy/tmp/cache/assets/D38/B00/sprockets%2F32615e65544417aa3b3f46beb86d8bab +0 -0
  263. data/spec/dummy/tmp/cache/assets/D38/EE0/sprockets%2Ff84b1f15209a63ac21fbca89354a466e +0 -0
  264. data/spec/dummy/tmp/cache/assets/D39/4A0/sprockets%2F021a93e3443aaeee934d31ace59b5298 +0 -0
  265. data/spec/dummy/tmp/cache/assets/D3B/750/sprockets%2F82e2c0b56fb8a696d2d21914ee435bb3 +0 -0
  266. data/spec/dummy/tmp/cache/assets/D3C/840/sprockets%2Fc6202ec91d567a85bd3d46dc43ea9108 +0 -0
  267. data/spec/dummy/tmp/cache/assets/D3C/DF0/sprockets%2F8c7116c8ff734a0445d01f6cc765aa2f +0 -0
  268. data/spec/dummy/tmp/cache/assets/D3D/CF0/sprockets%2F91b40ebc02b8e92d0c44af437f7a7747 +0 -0
  269. data/spec/dummy/tmp/cache/assets/D3D/EC0/sprockets%2F1aa82cb99ef076aea10d472b30a58979 +0 -0
  270. data/spec/dummy/tmp/cache/assets/D3E/6E0/sprockets%2Fe326381907f18ac9ebbbc4de4e551281 +0 -0
  271. data/spec/dummy/tmp/cache/assets/D3E/F00/sprockets%2Fc7cbb28f23435b47b55562633ebfd3e5 +0 -0
  272. data/spec/dummy/tmp/cache/assets/D40/840/sprockets%2F9fef661284bc4c706438d2629cada3b2 +0 -0
  273. data/spec/dummy/tmp/cache/assets/D40/BD0/sprockets%2Ff846b62ec1982fc9a08d8a5390bd2c11 +0 -0
  274. data/spec/dummy/tmp/cache/assets/D41/470/sprockets%2Fe3b48827fa5c8d5d6131a8632e2a6fe2 +0 -0
  275. data/spec/dummy/tmp/cache/assets/D42/240/sprockets%2Fb0a17667d30992ced7cb88ab27592e3a +0 -0
  276. data/spec/dummy/tmp/cache/assets/D43/A10/sprockets%2F8442b5fecbe0cef217a02cb732879678 +0 -0
  277. data/spec/dummy/tmp/cache/assets/D44/030/sprockets%2Fdc7a0bf839ad6259b834663cde80e522 +0 -0
  278. data/spec/dummy/tmp/cache/assets/D44/5E0/sprockets%2F68a138c150ab5c4805673fee71d7ffa8 +0 -0
  279. data/spec/dummy/tmp/cache/assets/D44/910/sprockets%2Ff64342f6e93f0fe77fb584e418ea00b0 +0 -0
  280. data/spec/dummy/tmp/cache/assets/D44/A20/sprockets%2Ff3fb7b03f18b606976ef357b5452faa4 +0 -0
  281. data/spec/dummy/tmp/cache/assets/D44/E90/sprockets%2F05cfc0bf7c9938963d1d1c63248db80d +0 -0
  282. data/spec/dummy/tmp/cache/assets/D45/C30/sprockets%2Fcc744877558178a3adb77c441cadce70 +0 -0
  283. data/spec/dummy/tmp/cache/assets/D47/A90/sprockets%2Fe7ca382b607c595ea6505853f7fb63da +0 -0
  284. data/spec/dummy/tmp/cache/assets/D47/CC0/sprockets%2F78f1463961f6712fa6a254aece0e5e6f +0 -0
  285. data/spec/dummy/tmp/cache/assets/D48/160/sprockets%2F32bae66fd65ce3643efb543182f2e885 +0 -0
  286. data/spec/dummy/tmp/cache/assets/D49/1F0/sprockets%2F773b56f87127c6605e7d1d3faf2b6af6 +0 -0
  287. data/spec/dummy/tmp/cache/assets/D49/9B0/sprockets%2F6d919ff7440d2b2a2f7e8912ddd8d640 +0 -0
  288. data/spec/dummy/tmp/cache/assets/D49/A10/sprockets%2Fc4656bd995a6f297c26d19b13aadb963 +0 -0
  289. data/spec/dummy/tmp/cache/assets/D4C/980/sprockets%2F813d8d2c9dfa2b6bb4907726dc4e9575 +0 -0
  290. data/spec/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  291. data/spec/dummy/tmp/cache/assets/D4F/EC0/sprockets%2Ffb723a95fdf3f22571f8d2a5be657973 +0 -0
  292. data/spec/dummy/tmp/cache/assets/D50/D70/sprockets%2Fe2a3e6c95b11e0801a4eebae3a026026 +0 -0
  293. data/spec/dummy/tmp/cache/assets/D51/400/sprockets%2Ff5e433d8a31e80985b75ce598de236be +0 -0
  294. data/spec/dummy/tmp/cache/assets/D53/810/sprockets%2Fcea155118675976bd5fe591de76c7d2f +0 -0
  295. data/spec/dummy/tmp/cache/assets/D55/780/sprockets%2Ff2b8306673b8de97a955ad0bf9f59f07 +0 -0
  296. data/spec/dummy/tmp/cache/assets/D55/DF0/sprockets%2F65c7453638b948fce2c5da092f8d8b9c +0 -0
  297. data/spec/dummy/tmp/cache/assets/D56/5F0/sprockets%2Fde5fb7392753dffc426572fad96298f0 +0 -0
  298. data/spec/dummy/tmp/cache/assets/D57/C80/sprockets%2Fc48670f82e2725ba8a976ef89dbd14f7 +0 -0
  299. data/spec/dummy/tmp/cache/assets/D57/E80/sprockets%2F936422a2cde24ab55b13e1b7bc0477ab +0 -0
  300. data/spec/dummy/tmp/cache/assets/D58/A60/sprockets%2Ffbd202c6ff799289e8487dc6408c3fc3 +0 -0
  301. data/spec/dummy/tmp/cache/assets/D58/EB0/sprockets%2F711fd84e41ed999c5d4c5a257e4e69c8 +0 -0
  302. data/spec/dummy/tmp/cache/assets/D59/8C0/sprockets%2F669f568485ea47c9cdc9deb9c5430e60 +0 -0
  303. data/spec/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  304. data/spec/dummy/tmp/cache/assets/D5B/040/sprockets%2F1fe2cdf73111b418f2050ffd24438cab +0 -0
  305. data/spec/dummy/tmp/cache/assets/D5C/710/sprockets%2F9427d05cee2caa721241a25a9af1d08f +0 -0
  306. data/spec/dummy/tmp/cache/assets/D5C/CC0/sprockets%2Faa8bf6de211f2765b0a26f112b971f0c +0 -0
  307. data/spec/dummy/tmp/cache/assets/D5E/000/sprockets%2Fd6ed282a19da1494e200cb546dd06fa1 +0 -0
  308. data/spec/dummy/tmp/cache/assets/D5E/2C0/sprockets%2F3bcd6824fda2af4d4271cf241064aa66 +0 -0
  309. data/spec/dummy/tmp/cache/assets/D5E/FA0/sprockets%2Fc81c371ae2d61a6aa1708262fba79e0d +0 -0
  310. data/spec/dummy/tmp/cache/assets/D5F/8D0/sprockets%2F81d09e3bf818cc04391abc11af2e551d +0 -0
  311. data/spec/dummy/tmp/cache/assets/D61/1F0/sprockets%2F0c7a6176d2fc4db00bb9a74d36380fe1 +0 -0
  312. data/spec/dummy/tmp/cache/assets/D61/E60/sprockets%2F301aede3913de3c54c91b65cf2bd3381 +0 -0
  313. data/spec/dummy/tmp/cache/assets/D65/AD0/sprockets%2Fcc53fff930eaf306c15c4568cb265c00 +0 -0
  314. data/spec/dummy/tmp/cache/assets/D67/270/sprockets%2Fd465b64d071d2bdcdfa5cb9a67941502 +0 -0
  315. data/spec/dummy/tmp/cache/assets/D67/BC0/sprockets%2F35d2c2b45981ade5a2db2a9c7f37a615 +0 -0
  316. data/spec/dummy/tmp/cache/assets/D67/C20/sprockets%2F0d30bf27e5f74bbd85f313cb8d3c4623 +0 -0
  317. data/spec/dummy/tmp/cache/assets/D68/9E0/sprockets%2F98ab9a84a3916f0db147a06dbadb7416 +0 -0
  318. data/spec/dummy/tmp/cache/assets/D68/E40/sprockets%2Fdf17b1ee801b453787c73dd6be12e04b +0 -0
  319. data/spec/dummy/tmp/cache/assets/D69/8E0/sprockets%2F843b073aacad148a35d4932bd79d16fe +0 -0
  320. data/spec/dummy/tmp/cache/assets/D69/F90/sprockets%2F6a0795b7b38bd7e6142cd1b88211dade +0 -0
  321. data/spec/dummy/tmp/cache/assets/D6A/2D0/sprockets%2F827606b3fb0bf38eda9c52bbb398421c +0 -0
  322. data/spec/dummy/tmp/cache/assets/D6A/950/sprockets%2F429b1806cb7580ebf29f9a12c33cbea6 +0 -0
  323. data/spec/dummy/tmp/cache/assets/D6C/9C0/sprockets%2Fd66bdf546164ba223e20f56b5591ddfd +0 -0
  324. data/spec/dummy/tmp/cache/assets/D6D/DA0/sprockets%2Fac936bf40b42227a2bf9d474ae9ec149 +0 -0
  325. data/spec/dummy/tmp/cache/assets/D6E/100/sprockets%2F49c09b0dc6ff93d40a75cb21fe290f63 +0 -0
  326. data/spec/dummy/tmp/cache/assets/D6E/440/sprockets%2Fea163e80716638beecfab4232ea589e2 +0 -0
  327. data/spec/dummy/tmp/cache/assets/D6F/310/sprockets%2F624b651d37f7ec0c563c446fbf8afb32 +0 -0
  328. data/spec/dummy/tmp/cache/assets/D6F/5B0/sprockets%2F5dcc801a7a6c340c5baf525839f9b8b6 +0 -0
  329. data/spec/dummy/tmp/cache/assets/D6F/6A0/sprockets%2F049e1a560dbb9e05ea8c80f819f87ab0 +0 -0
  330. data/spec/dummy/tmp/cache/assets/D70/B00/sprockets%2F268e2650ac2842bedc9589fa50dea3a7 +0 -0
  331. data/spec/dummy/tmp/cache/assets/D71/A70/sprockets%2F4f10f5dd56c8a3ff78c460bbe3723a39 +0 -0
  332. data/spec/dummy/tmp/cache/assets/D71/D90/sprockets%2F6dbe8400ecd795a5d35d88b7761e0b0c +0 -0
  333. data/spec/dummy/tmp/cache/assets/D72/0A0/sprockets%2Fea31903c67f4ba197e25387b5dadef18 +0 -0
  334. data/spec/dummy/tmp/cache/assets/D75/450/sprockets%2F255ea2d250f249ac9c01fef695e8ab69 +0 -0
  335. data/spec/dummy/tmp/cache/assets/D75/7C0/sprockets%2F6e3687d47dcb4d2d533beb13097fe0f7 +0 -0
  336. data/spec/dummy/tmp/cache/assets/D75/900/sprockets%2F74b847bd8ff90740d31a43ad3787adbf +0 -0
  337. data/spec/dummy/tmp/cache/assets/D76/570/sprockets%2Feedc30392824106dbedb037f86e56fe9 +0 -0
  338. data/spec/dummy/tmp/cache/assets/D76/E00/sprockets%2F50fed4db42859966abf7ca704efe3801 +0 -0
  339. data/spec/dummy/tmp/cache/assets/D77/B30/sprockets%2F946cf2f17c7eb41037f9ee08ad67ec40 +0 -0
  340. data/spec/dummy/tmp/cache/assets/D78/2F0/sprockets%2F3c61f8915b8f717b1de788e6ecad122c +0 -0
  341. data/spec/dummy/tmp/cache/assets/D78/A80/sprockets%2Ff318eea7f126a77324697d6c64cefc1b +0 -0
  342. data/spec/dummy/tmp/cache/assets/D78/F10/sprockets%2Fa2d995664d1a9bf976c1bfbbb90f8710 +0 -0
  343. data/spec/dummy/tmp/cache/assets/D7A/190/sprockets%2F3db76fe68ad94be075dbc7524068f73a +0 -0
  344. data/spec/dummy/tmp/cache/assets/D7B/670/sprockets%2F8d4d09ed03575bc962fc960a80daf89b +0 -0
  345. data/spec/dummy/tmp/cache/assets/D7B/A10/sprockets%2F115c6bdb61feb003b1ec5a22b650dc70 +0 -0
  346. data/spec/dummy/tmp/cache/assets/D7C/480/sprockets%2F838cc81e53dac547f4677fb51536deea +0 -0
  347. data/spec/dummy/tmp/cache/assets/D7D/300/sprockets%2F99a2d55cdabf50d15798e04ef48c268d +0 -0
  348. data/spec/dummy/tmp/cache/assets/D7E/580/sprockets%2Fc05df808e9f42954a2ac6d77f4fa37d6 +0 -0
  349. data/spec/dummy/tmp/cache/assets/D7E/7B0/sprockets%2Ff3af9cd747e409763dc5f54a287a28bd +0 -0
  350. data/spec/dummy/tmp/cache/assets/D7E/C10/sprockets%2F747c98c3cc7494a62dd882752adffb2b +0 -0
  351. data/spec/dummy/tmp/cache/assets/D7E/C30/sprockets%2F769700a5e78898ce10adfeb708dd8d3a +0 -0
  352. data/spec/dummy/tmp/cache/assets/D83/2E0/sprockets%2Fda0e7087dd71899a9190c915cfec3f7f +0 -0
  353. data/spec/dummy/tmp/cache/assets/D84/730/sprockets%2Fd1594df6eb925fad655388ed16ca3e97 +0 -0
  354. data/spec/dummy/tmp/cache/assets/D85/5D0/sprockets%2Fde362e334a475cfca1a30fa5b713b43a +0 -0
  355. data/spec/dummy/tmp/cache/assets/D8C/520/sprockets%2F221cd58a042baac534d27e4cfedc1188 +0 -0
  356. data/spec/dummy/tmp/cache/assets/D8D/330/sprockets%2Feebcc6d7139d702bbca0b9503297a40b +0 -0
  357. data/spec/dummy/tmp/cache/assets/D8E/B60/sprockets%2F4b0c2be5008d0a0cfabff66396d54e24 +0 -0
  358. data/spec/dummy/tmp/cache/assets/D8F/730/sprockets%2Fa1baa64252215c3ae8ad0f3e53a79c9f +0 -0
  359. data/spec/dummy/tmp/cache/assets/D92/3D0/sprockets%2Fbcbe263bbf11dc9214435b9fdb64661b +0 -0
  360. data/spec/dummy/tmp/cache/assets/D93/AE0/sprockets%2F2b6352ed136a4ec37bd8c052bd4cb94e +0 -0
  361. data/spec/dummy/tmp/cache/assets/D95/2A0/sprockets%2F0400dd7cb35156becbbe56d21d9be776 +0 -0
  362. data/spec/dummy/tmp/cache/assets/D96/CA0/sprockets%2F9ddd0fc49b5aa172cf27ea22f1007f93 +0 -0
  363. data/spec/dummy/tmp/cache/assets/D97/520/sprockets%2Fea2442ae4caddb758dfb1964c601b476 +0 -0
  364. data/spec/dummy/tmp/cache/assets/D97/5B0/sprockets%2F7298f2202fb3b32eb8d082e3ed5add3d +0 -0
  365. data/spec/dummy/tmp/cache/assets/D9A/1B0/sprockets%2Fcd5e53be61cba95b5b0b81865b54d1f6 +0 -0
  366. data/spec/dummy/tmp/cache/assets/D9A/610/sprockets%2F84ede7f893018d9bea835f68c8f9ff83 +0 -0
  367. data/spec/dummy/tmp/cache/assets/D9B/5F0/sprockets%2Fb6ae4b74a9de2d8e0301a3c60099f9fb +0 -0
  368. data/spec/dummy/tmp/cache/assets/D9B/860/sprockets%2Fbb235cfe35b6451f6e32ffd271657eaa +0 -0
  369. data/spec/dummy/tmp/cache/assets/D9C/240/sprockets%2F5f68fb3f496c391c16aba45eca35ac16 +0 -0
  370. data/spec/dummy/tmp/cache/assets/D9E/CB0/sprockets%2Ff0efe0ab6bd753a8bb4481e46243d77f +0 -0
  371. data/spec/dummy/tmp/cache/assets/D9F/240/sprockets%2Fb49cb72a0d3c5acc716f869b7e1b82e4 +0 -0
  372. data/spec/dummy/tmp/cache/assets/DA1/2F0/sprockets%2F38aba5d40f6c8f55628383f1bee42cce +0 -0
  373. data/spec/dummy/tmp/cache/assets/DA1/610/sprockets%2F8e1affe8d3aaf50203f38815fbfe3276 +0 -0
  374. data/spec/dummy/tmp/cache/assets/DA2/080/sprockets%2Fbd60c499c297fc4decc19c930d6a25d1 +0 -0
  375. data/spec/dummy/tmp/cache/assets/DA3/780/sprockets%2Fff91edf7359e8b136482202aa7aeb4df +0 -0
  376. data/spec/dummy/tmp/cache/assets/DA5/0A0/sprockets%2F7a4b5928cec69ab65afff309a04d6b47 +0 -0
  377. data/spec/dummy/tmp/cache/assets/DA6/440/sprockets%2F5a10f4bab16828e582e57cdeef95c9b3 +0 -0
  378. data/spec/dummy/tmp/cache/assets/DA8/9D0/sprockets%2F27f6626356c7beb5f88ae2abfd318df2 +0 -0
  379. data/spec/dummy/tmp/cache/assets/DA9/BF0/sprockets%2Fc59f8f7bf494fe030610bc86bb7cc5e5 +0 -0
  380. data/spec/dummy/tmp/cache/assets/DAB/400/sprockets%2F52eed96b338eff526fc0198c61dd09eb +0 -0
  381. data/spec/dummy/tmp/cache/assets/DAE/4E0/sprockets%2F88cc3ab99c608879dd56164dbcc2ccb7 +0 -0
  382. data/spec/dummy/tmp/cache/assets/DAF/E90/sprockets%2Fc75bc7e2c949f7cfeb89b5e422352ea6 +0 -0
  383. data/spec/dummy/tmp/cache/assets/DB0/C60/sprockets%2Fdfb9bb691a396957a05ef79dea41d8c4 +0 -0
  384. data/spec/dummy/tmp/cache/assets/DB2/D70/sprockets%2Fe03d9b5c98dae04fa8eac8fb68697390 +0 -0
  385. data/spec/dummy/tmp/cache/assets/DB5/040/sprockets%2F9a9da5df88713663b9fbc945facca891 +0 -0
  386. data/spec/dummy/tmp/cache/assets/DB5/860/sprockets%2Facf25fab3016425a0e03c9d190fd4eac +0 -0
  387. data/spec/dummy/tmp/cache/assets/DBE/320/sprockets%2Faec8daa017ce18f166a19c1771dbfb03 +0 -0
  388. data/spec/dummy/tmp/cache/assets/DBF/D20/sprockets%2F3aea2f3e237abe2a9ed20b93f11d428f +0 -0
  389. data/spec/dummy/tmp/cache/assets/DC0/7B0/sprockets%2F8cb4d6e0c80cbf4dced28b20f07137d0 +0 -0
  390. data/spec/dummy/tmp/cache/assets/DC3/230/sprockets%2Fdf52e72eb73be91eccc60182191aed0b +0 -0
  391. data/spec/dummy/tmp/cache/assets/DC3/AC0/sprockets%2Fe29911eb34fdf4b710dd0d2c2cf24bc9 +0 -0
  392. data/spec/dummy/tmp/cache/assets/DC4/090/sprockets%2F7542f412d4caefe4f471bacf0c5861ca +0 -0
  393. data/spec/dummy/tmp/cache/assets/DC4/630/sprockets%2F4e84eafec121a136fcec3546b921eb6b +0 -0
  394. data/spec/dummy/tmp/cache/assets/DC5/EF0/sprockets%2F1c21100cd8e65c7f3fdcab61c5f77b9a +0 -0
  395. data/spec/dummy/tmp/cache/assets/DC7/A10/sprockets%2F84a8af0fcbf401864e1ae5bf092cba94 +0 -0
  396. data/spec/dummy/tmp/cache/assets/DC8/110/sprockets%2Faf09fc16a29e34c256dbbfa80a44b97b +0 -0
  397. data/spec/dummy/tmp/cache/assets/DCA/AD0/sprockets%2Fc5a76d97d72e0f35cb6aa2ea3f52c9c0 +0 -0
  398. data/spec/dummy/tmp/cache/assets/DCB/630/sprockets%2F0a6fda53cef15b3241be6457ac8b79ee +0 -0
  399. data/spec/dummy/tmp/cache/assets/DCC/AD0/sprockets%2Fcc866a8b1e1e8bf0d1470dcf7a09d72d +0 -0
  400. data/spec/dummy/tmp/cache/assets/DCD/EB0/sprockets%2F4f77f509126ecbced7ea2a5ab290c8d4 +0 -0
  401. data/spec/dummy/tmp/cache/assets/DCE/070/sprockets%2Fb6ddeed67c9ebb1834d6252ef0360d1f +0 -0
  402. data/spec/dummy/tmp/cache/assets/DCF/180/sprockets%2F9b325ef8af6f3d73b2fae1ddc62e2390 +0 -0
  403. data/spec/dummy/tmp/cache/assets/DCF/470/sprockets%2F2cfb3b8dd618a3985ac031db4fff871d +0 -0
  404. data/spec/dummy/tmp/cache/assets/DCF/8E0/sprockets%2F93e5d1b5dbfb40c3ad83692be9bb4e83 +0 -0
  405. data/spec/dummy/tmp/cache/assets/DCF/EB0/sprockets%2F02b4dd6785efb5ededa709d644a41ef1 +0 -0
  406. data/spec/dummy/tmp/cache/assets/DD1/4A0/sprockets%2Fde773ef01f38c9badc18b84c8022fb9a +0 -0
  407. data/spec/dummy/tmp/cache/assets/DD2/380/sprockets%2Fb97cfae90eb6314406519cda89a8dabe +0 -0
  408. data/spec/dummy/tmp/cache/assets/DD5/800/sprockets%2Ffda6208e29dc706ed387dcf6fbd062c5 +0 -0
  409. data/spec/dummy/tmp/cache/assets/DD8/410/sprockets%2Fa02603cca05ea0be3bda36fcdd30c841 +0 -0
  410. data/spec/dummy/tmp/cache/assets/DD8/D30/sprockets%2Feceaf7dce3295f2be5122df84fc59912 +0 -0
  411. data/spec/dummy/tmp/cache/assets/DDB/310/sprockets%2Facd5ff0e0a2d8c85034e6e0ed98ec988 +0 -0
  412. data/spec/dummy/tmp/cache/assets/DDB/4D0/sprockets%2F266a8cc69e818d1ddffe2c3b08456fbf +0 -0
  413. data/spec/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  414. data/spec/dummy/tmp/cache/assets/DE1/DB0/sprockets%2F36ef78dc8a94f2c9b95babd318aa87c8 +0 -0
  415. data/spec/dummy/tmp/cache/assets/DE1/F00/sprockets%2Fb9c4dd7fc3ee2ef6c9fa0834636569cc +0 -0
  416. data/spec/dummy/tmp/cache/assets/DE4/140/sprockets%2F139e4ab85d1aacb22c115fa136afdc8a +0 -0
  417. data/spec/dummy/tmp/cache/assets/DE8/890/sprockets%2Fb5b832aab2d232dbfbf2175b43dc7e5a +0 -0
  418. data/spec/dummy/tmp/cache/assets/DEB/110/sprockets%2F2dbdab0ce5babca645cdb5780004f875 +0 -0
  419. data/spec/dummy/tmp/cache/assets/DEF/D70/sprockets%2Fd2dd8561afb084ce11c38ca7a6d0afe2 +0 -0
  420. data/spec/dummy/tmp/cache/assets/DF0/250/sprockets%2F13d5b48ac25fae3b5fbf815dbeda0624 +0 -0
  421. data/spec/dummy/tmp/cache/assets/DF1/1B0/sprockets%2F2b1bc202f9a338942edbccb2cfef0d67 +0 -0
  422. data/spec/dummy/tmp/cache/assets/DF1/DB0/sprockets%2Fdcf49a5ce11aa5e31de0cfb78c0f1905 +0 -0
  423. data/spec/dummy/tmp/cache/assets/DF2/2E0/sprockets%2F4770759c4a66e996f4fded83f6ddfddd +0 -0
  424. data/spec/dummy/tmp/cache/assets/DF4/2F0/sprockets%2F1e83ae0cfdcae29ad98466b1a66d20ac +0 -0
  425. data/spec/dummy/tmp/cache/assets/DF6/0E0/sprockets%2F85b10db6e1afe643aba6d396abdd77f0 +0 -0
  426. data/spec/dummy/tmp/cache/assets/DF6/420/sprockets%2Ff1b2c8c5be5f2d33de5d540a3e62ca8f +0 -0
  427. data/spec/dummy/tmp/cache/assets/DF8/900/sprockets%2Fd924dea4cc364aedeea287029ccda435 +0 -0
  428. data/spec/dummy/tmp/cache/assets/DF9/E10/sprockets%2Fba2ada9f607edea6b98cc72a4e70d433 +0 -0
  429. data/spec/dummy/tmp/cache/assets/DFC/C30/sprockets%2Fb50a07cb30b0bd0eec8e98e5de79d65d +0 -0
  430. data/spec/dummy/tmp/cache/assets/DFF/0D0/sprockets%2Fc3ec68c48db663fa45ab4d6fe33dcf13 +0 -0
  431. data/spec/dummy/tmp/cache/assets/E00/2B0/sprockets%2Fffeda2454f8128abad731f07d7ea88da +0 -0
  432. data/spec/dummy/tmp/cache/assets/E01/B70/sprockets%2Fd6defcb54f67eac14ccf6203f36ad954 +0 -0
  433. data/spec/dummy/tmp/cache/assets/E02/6E0/sprockets%2F63d6a5cdb8cefa64ef76b5c6e0fd3720 +0 -0
  434. data/spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  435. data/spec/dummy/tmp/cache/assets/E07/8B0/sprockets%2F426ebeaf61b095557dfab89fd2e5e4eb +0 -0
  436. data/spec/dummy/tmp/cache/assets/E08/BB0/sprockets%2Fefac99af1af28543aef6fb607faa4973 +0 -0
  437. data/spec/dummy/tmp/cache/assets/E08/F10/sprockets%2F8cc67880efb9b750c30ac8a7abe58fbf +0 -0
  438. data/spec/dummy/tmp/cache/assets/E0D/070/sprockets%2F0e7ef9a5978dcc6b1abce678ef836c0a +0 -0
  439. data/spec/dummy/tmp/cache/assets/E14/8E0/sprockets%2Fb8d902ffcf8758fde63d0fa579ba6d4e +0 -0
  440. data/spec/dummy/tmp/cache/assets/E17/EF0/sprockets%2Fa291ad64a26afd055dfadabbdf03f154 +0 -0
  441. data/spec/dummy/tmp/cache/assets/E1C/D80/sprockets%2F4b95bfa6daa08c4eb0aa541a37e4d2fe +0 -0
  442. data/spec/dummy/tmp/cache/assets/E20/980/sprockets%2Fc90a064de7a16bb06df5b9ad4c1ed8ab +0 -0
  443. data/spec/dummy/tmp/cache/assets/E38/C40/sprockets%2F98dfe383fba3e8b185bcc47a6e1ebfc5 +0 -0
  444. data/spec/dummy/tmp/cache/assets/E53/950/sprockets%2Fffd7c2c672c3f8e8f87dff7919aeccd9 +0 -0
  445. data/spec/dummy/tmp/cache/assets/E56/0F0/sprockets%2Fc8da7a5dae8a9e6b0de61b381fec0b3c +0 -0
  446. data/spec/dummy/tmp/cache/assets/E58/310/sprockets%2Fecdb86ebf64d9140f01a903fbfad8cda +0 -0
  447. data/spec/dummy/tmp/cache/assets/E63/9A0/sprockets%2F6d75fdbce8bba3e734dc5fea6f2171ef +0 -0
  448. data/spec/dummy/tmp/cache/assets/E6E/260/sprockets%2Fd9f8ab8b91ef582cc6c99a3ba0dedfe6 +0 -0
  449. data/spec/dummy/tmp/cache/assets/E85/310/sprockets%2Ffa0facaebe1ccce1bc6d1e3e713976f7 +0 -0
  450. data/spec/dummy/tmp/cache/assets/EDE/7E0/sprockets%2F468f97db5bcfefe9bd7fec5fcc7dc77c +0 -0
  451. data/spec/dummy/tmp/cache/assets/F79/360/sprockets%2F0ce035fefee5ebdabc8efabfbdbd6ee4 +0 -0
  452. data/spec/dummy/tmp/cache/sass/86d3de43d0e3ec731ffbea073a11ea4a51eb7ee4/stylesheet1.css.scssc +0 -0
  453. data/spec/dummy/tmp/cache/sass/86d3de43d0e3ec731ffbea073a11ea4a51eb7ee4/stylesheet3.css.sassc +0 -0
  454. data/spec/javascripts/fixtures/fixture.html.haml +4 -0
  455. data/spec/javascripts/jasmine_helper.coffee +3 -0
  456. data/spec/javascripts/mocha_helper.coffee +3 -0
  457. data/spec/javascripts/spec_helper.coffee +5 -0
  458. data/spec/javascripts/stylesheets/stylesheet.css.scss +0 -0
  459. data/spec/javascripts/support/support.js.coffee +0 -0
  460. data/spec/javascripts/teabag/base/reporters/console_spec.coffee +121 -0
  461. data/spec/javascripts/teabag/base/reporters/html/failure_view_spec.coffee +1 -0
  462. data/spec/javascripts/teabag/base/reporters/html/progress_view_spec.coffee +1 -0
  463. data/spec/javascripts/teabag/base/reporters/html/spec_view_spec.coffee +1 -0
  464. data/spec/javascripts/teabag/base/reporters/html/suite_view_spec.coffee +1 -0
  465. data/spec/javascripts/teabag/base/reporters/html_spec.coffee +342 -0
  466. data/spec/javascripts/teabag/base/reporters_spec.coffee +267 -0
  467. data/spec/javascripts/teabag/base/runner_spec.coffee +34 -0
  468. data/spec/javascripts/teabag/base/teabag_spec.coffee +24 -0
  469. data/spec/javascripts/teabag/jasmine/jasmine_jspec.coffee +44 -0
  470. data/spec/javascripts/teabag/jasmine/reporters/html_jspec.coffee +17 -0
  471. data/spec/javascripts/teabag/jasmine/runner_jspec.coffee +66 -0
  472. data/spec/javascripts/teabag/mocha/mocha_mspec.coffee +47 -0
  473. data/spec/javascripts/teabag/mocha/reporters/console_mspec.coffee +20 -0
  474. data/spec/javascripts/teabag/mocha/reporters/html_mspec.coffee +51 -0
  475. data/spec/javascripts/teabag/mocha/runner_mspec.coffee +23 -0
  476. data/spec/javascripts/teabag/phantomjs/runner_spec.coffee +161 -0
  477. data/spec/spec_helper.rb +16 -0
  478. data/spec/teabag/configuration_spec.rb +95 -0
  479. data/spec/teabag/console_spec.rb +71 -0
  480. data/spec/teabag/engine_spec.rb +19 -0
  481. data/spec/teabag/formatters/progress_formatter_spec.rb +124 -0
  482. data/spec/teabag/result_spec.rb +85 -0
  483. data/spec/teabag/runner_spec.rb +74 -0
  484. data/spec/teabag/server_spec.rb +99 -0
  485. data/spec/teabag/suite_spec.rb +57 -0
  486. metadata +1029 -0
@@ -0,0 +1,25 @@
1
+ class Teabag::SpecController < ActionController::Base
2
+ helper Teabag::SpecHelper rescue nil
3
+
4
+ layout false
5
+
6
+ unless Rails.application.config.assets.debug
7
+ rescue_from Teabag::AssetNotServable, with: :javascript_exception
8
+ end
9
+
10
+ def index
11
+ @suite = Teabag::Suite.new(params[:suite])
12
+ end
13
+
14
+ def fixtures
15
+ prepend_view_path Teabag.configuration.root.join(Teabag.configuration.fixture_path)
16
+ render "/#{params[:filename]}"
17
+ end
18
+
19
+ private
20
+
21
+ def javascript_exception(exception)
22
+ err = "#{exception.class.name}: #{exception.message}"
23
+ render text: "<script>throw Error(#{err.inspect})</script>"
24
+ end
25
+ end
@@ -0,0 +1,18 @@
1
+ <!DOCTYPE>
2
+ <html>
3
+ <head>
4
+ <title>Teabag :: Javascript Test Runner</title>
5
+ <%= stylesheet_link_tag *@suite.stylesheets %>
6
+ <%= javascript_include_tag *@suite.javascripts %>
7
+ <%= csrf_meta_tags %>
8
+ </head>
9
+ <body>
10
+ <div id="teabag-fixtures"></div>
11
+
12
+ <script type="text/javascript">
13
+ Teabag.version = "<%= Teabag::VERSION %>";
14
+ Teabag.fixturePath = "<%= Teabag.configuration.mount_at %>/fixtures";
15
+ Teabag.execute()
16
+ </script>
17
+ </body>
18
+ </html>
@@ -0,0 +1,8 @@
1
+ Teabag::Engine.routes.draw do
2
+ match "/fixtures/*filename", to: "spec#fixtures"
3
+ match "/(:suite)", :to => "spec#index", defaults: { suite: nil }
4
+ end
5
+
6
+ Rails.application.routes.draw do
7
+ mount Teabag::Engine => Teabag.configuration.mount_at
8
+ end
@@ -0,0 +1,6 @@
1
+ +============================================================================+
2
+ Congratulations! Teabag was successfully installed. Documentation and more can
3
+ be found at: https://github.com/modeset/teabag
4
+
5
+ Configure Teabag by editing config/initializers/teabag.rb
6
+
@@ -0,0 +1,24 @@
1
+ module Teabag::Generators
2
+ class InstallGenerator < Rails::Generators::Base
3
+ source_root File.expand_path("../", __FILE__)
4
+
5
+ desc "Installs the Teabag initializer into your application."
6
+
7
+ def copy_initializer
8
+ copy_file "templates/initializer.rb", "config/initializers/teabag.rb"
9
+ end
10
+
11
+ def create_structure
12
+ empty_directory "spec/javascripts/support"
13
+ empty_directory "spec/javascripts/fixtures"
14
+ end
15
+
16
+ def copy_spec_helper
17
+ copy_file "templates/spec_helper.js", "spec/javascripts/spec_helper.js"
18
+ end
19
+
20
+ def display_readme
21
+ readme "POST_INSTALL" if behavior == :invoke
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,115 @@
1
+ Teabag.setup do |config|
2
+
3
+ # Mounting / Route
4
+ # This determines where the Teabag spec path will be mounted. Changing this to `"/jasmine"` would allow you to browse
5
+ # to `http://localhost:3000/jasmine` to run your specs.
6
+ #
7
+ # default: "/teabag"
8
+ config.mount_at = "/teabag"
9
+
10
+ # Root
11
+ # The root path defaults to Rails.root if left nil, but if you're testing an engine using a dummy application it's
12
+ # useful to be able to set this to your engines root.. E.g. `Teabag::Engine.root`
13
+ #
14
+ # default: nil, which forces defaulting to Rails.root
15
+ config.root = nil
16
+
17
+ # Asset paths
18
+ # These paths are appended to the rails assets paths (relative to config.root), and by default is an array that you
19
+ # can replace or add to.
20
+ #
21
+ # default: ["spec/javascripts", "spec/javascripts/stylesheets"]
22
+ config.asset_paths << "app/assets/some_other_path"
23
+
24
+ # Fixtures
25
+ # Fixtures are different than the specs, in that Rails is rendering them directly through a controller. This means you
26
+ # can use haml, erb builder, rabl, etc. to render content in the views available in this path.
27
+ #
28
+ # default: "spec/javascripts/fixtures"
29
+ config.fixture_path = "spec/javascripts/fixtures"
30
+
31
+ # Server timeout
32
+ # Timeout for starting the server in seconds. If your server is slow to start you may have to bump the timeout, or you
33
+ # may want to lower this if you know it shouldn't take long to start.
34
+ #
35
+ # default: 20
36
+ config.server_timeout = 20
37
+
38
+ # Failing Fast
39
+ # When you're running several suites it can be useful to make Teabag fail directly after any suite fails (not
40
+ # continuing on to the next suite), but in environments like CI this isn't as desirable. You can also configure this
41
+ # using the fail_fast environment variable.
42
+ #
43
+ # default: true
44
+ # Note: override this directive by running `rake teabag fail_fast=false`
45
+ config.fail_fast = true
46
+
47
+ # Suppressing Logs
48
+ # When you run Teabag from the console, it will pipe all console.log/debug/etc. calls to the console. This is useful
49
+ # to catch places where you've forgotten to remove console.log calls, but in verbose applications that use logging
50
+ # heavily this may not be desirable.
51
+ #
52
+ # default: false
53
+ # Note: override this directive by running `rake teabag suppress_log=true`
54
+ config.suppress_log = false
55
+
56
+ # Suites
57
+ # You can modify the default suite configuration or create new suites here. Suites can be entirely isolated from one
58
+ # another. When defining a suite you can provide a name and a block. If the name is left blank, :default is assumed.
59
+ # When defining suites, you can omit various directives and the defaults will be used.
60
+ #
61
+ # To run a specific suite
62
+ # - in the browser: http://localhost/teabag/[suite_name]
63
+ # - from the command line: rake teabag suite=[suite_name]
64
+ config.suite do |suite|
65
+
66
+ # File Matcher
67
+ # You can specify a file matcher for your specs, and the matching files will be automatically loaded when the suite
68
+ # is run. It's important that these files are serve-able from sprockets (aka the asset pipeline), otherwise you'll
69
+ # receive a warning about it.
70
+ #
71
+ # default: "{spec/javascripts,app/assets}/**/*_spec.{js,js.coffee,coffee}"
72
+ # Note: set to nil if you want to load your spec files using a manifest from within the spec helper file.
73
+ suite.matcher = "{spec/javascripts,app/assets}/**/*_spec.{js,js.coffee,coffee}"
74
+
75
+ # Spec Helper
76
+ # Each suite can load a different spec helper, which can in turn require additional files since this file is also
77
+ # served via the asset pipeline. This file is loaded before your specs are loaded -- so could potentially include
78
+ # all of your specs (if you set the matcher to nil).
79
+ #
80
+ # default: "spec_helper"
81
+ suite.helper = "spec_helper"
82
+
83
+ # Javascripts
84
+ # These are the core Teabag javascripts. Spec files should not go here -- but if you want to add additional support
85
+ # for jasmine matchers, switch to mocha, include expectation libraries etc., this is a good place to do that.
86
+ #
87
+ # To use mocha, you should switch this to:
88
+ # "teabag-mocha"
89
+ #
90
+ # To use the coffeescript source files:
91
+ # "teabag/jasmine" or "teabag/mocha"
92
+ #
93
+ # default: ["teabag-jasmine"]
94
+ suite.javascripts = ["teabag-jasmine"]
95
+
96
+ # Stylesheets
97
+ # If you want to change how Teabag looks, or include your own stylesheets you can do that here. The default is the
98
+ # stylesheet for the HTML reporter.
99
+ #
100
+ # default: ["teabag"]
101
+ suite.stylesheets = ["teabag"]
102
+ end
103
+
104
+ # Here's an example of creating a named suite. Since we're actually just filtering specs to files already within the
105
+ # root spec/javascripts, these files will also be run in the default suite -- but can be focused into a more specific
106
+ # suite.
107
+ #
108
+ # To run this suite
109
+ # - in the browser: http://localhost/teabag/targeted
110
+ # - from the command line: rake teabag suite=targeted
111
+ #config.suite :targeted do |suite|
112
+ # suite.matcher = "spec/javascripts/targeted/*_spec.{js,js.coffee,coffee}"
113
+ #end
114
+
115
+ end if defined?(Teabag) && Teabag.respond_to?(:setup) # let Teabag be undefined outside of development/test/asset groups
@@ -0,0 +1,31 @@
1
+ // This is your spec helper.
2
+ //
3
+ // You can require other javascript files here.
4
+ //
5
+ // Teabag includes some useful javascripts for you, and you can include them here.
6
+ // require jasmine-jquery
7
+ // require sinon
8
+ // require expect
9
+ //
10
+ // You're also able to include any of the files in support as well.
11
+ // require support/your-support-file
12
+ //
13
+ // Deferring execution
14
+ // This is useful if you're using CommonJS or RequireJS or some other asynchronous loading method. To defer test
15
+ // execution until everything has been loaded asynchronously you can tell Teabag to defer, which then allows you to call
16
+ // Teabag.execute() at a later time. Here's a simple example:
17
+ //
18
+ // Teabag.defer = true
19
+ // setTimeout(function() { Teabag.execute() }, 1000)
20
+ //
21
+ // Spec files
22
+ // By default Teabag will go looking for files that match the _spec.{js,js.coffee,.coffee} naming convention, so just
23
+ // start dropping filename_spec.js files into this, or any nested path, and they'll automatically be picked up and
24
+ // included in the default suite. If you're interested in creating custom suites, check out the configuration in
25
+ // config/initializers/teabag.rb
26
+ //
27
+ // If you'd rather just require your spec files here manually (to control order for instance) you can disable the suite
28
+ // matcher in the configuration and then use this file as a manifest.
29
+ //
30
+ // For more information:
31
+ // http://github.com/modeset/teabag
@@ -0,0 +1,5 @@
1
+ desc "Run the javascript specs"
2
+ task :teabag => :environment do
3
+ require "teabag/console"
4
+ fail if Teabag::Console.new(ENV["suite"]).execute
5
+ end
@@ -0,0 +1,6 @@
1
+ require "teabag/version"
2
+ require "teabag/exceptions"
3
+ require "teabag/configuration"
4
+ require "teabag/suite"
5
+
6
+ require "teabag/engine"
@@ -0,0 +1,68 @@
1
+ require "singleton"
2
+ require "teabag/formatters/progress_formatter"
3
+
4
+ module Teabag
5
+ class Configuration
6
+
7
+ include Singleton
8
+
9
+ cattr_accessor :root, :mount_at, :asset_paths, :fixture_path, :formatters, :server_timeout, :fail_fast, :suppress_log, :suites
10
+
11
+ @@mount_at = "/teabag"
12
+ @@root = nil # will default to Rails.root if left unset
13
+ @@asset_paths = ["spec/javascripts", "spec/javascripts/stylesheets"]
14
+ @@fixture_path = "spec/javascripts/fixtures"
15
+ @@suites = {}
16
+
17
+ # console runner specific
18
+ @@formatters = "progress"
19
+ @@default_formatter = Teabag::Formatters::ProgressFormatter
20
+ @@server_timeout = 20
21
+ @@fail_fast = true
22
+ @@suppress_log = false
23
+
24
+ def self.root=(path)
25
+ @@root = Pathname.new(path.to_s) if path.present?
26
+ end
27
+
28
+ def self.suite(name = :default, &block)
29
+ @@suites[name.to_s] = block
30
+ end
31
+
32
+ self.suite(:default) {}
33
+
34
+ class Suite
35
+ attr_accessor :matcher, :helper, :stylesheets, :javascripts
36
+
37
+ def initialize
38
+ @matcher = "{spec/javascripts,app/assets}/**/*_spec.{js,js.coffee,coffee}"
39
+ @helper = "spec_helper"
40
+ @javascripts = ["teabag-jasmine"]
41
+ @stylesheets = ["teabag"]
42
+
43
+ yield self if block_given?
44
+ end
45
+ end
46
+ end
47
+
48
+ mattr_accessor :configuration
49
+ @@configuration = Configuration
50
+
51
+ def self.setup
52
+ yield @@configuration
53
+ override_from_env
54
+ end
55
+
56
+ private
57
+
58
+ def self.override_from_env
59
+ %w(FAIL_FAST SUPPRESS_LOG).each do |directive|
60
+ next unless ENV[directive].present?
61
+ @@configuration.send("#{directive.downcase}=", ENV[directive] == "true")
62
+ end
63
+ %w(FORMATTERS).each do |directive|
64
+ next unless ENV[directive].present?
65
+ @@configuration.send("#{directive.downcase}=", ENV[directive])
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,57 @@
1
+ require "teabag/server"
2
+ require "teabag/runner"
3
+ require "phantomjs"
4
+
5
+ module Teabag
6
+ class Console
7
+
8
+ def initialize(suite_name = nil)
9
+ # force asset debugging off -- gives us nicer errors on missing files, bad coffeescript, etc
10
+ Rails.application.config.assets.debug = false
11
+
12
+ if suite_name
13
+ @suites = [suite_name]
14
+ else
15
+ @suites = Teabag.configuration.suites.keys
16
+ end
17
+ end
18
+
19
+ def execute
20
+ STDOUT.print "Starting server...\n"
21
+ start_server
22
+ failure_count = 0
23
+ @suites.each do |suite|
24
+ STDOUT.print "Teabag running #{suite} suite at #{url(suite)}...\n"
25
+ failure_count += run_specs(suite)
26
+ end
27
+ failure_count > 0
28
+ rescue Teabag::Failure
29
+ true
30
+ rescue Teabag::RunnerException
31
+ true
32
+ end
33
+
34
+ def start_server
35
+ @server = Teabag::Server.new
36
+ @server.start
37
+ end
38
+
39
+ def run_specs(suite)
40
+ runner = Teabag::Runner.new(suite)
41
+ Phantomjs.run(script, url(suite)) do |line|
42
+ runner.process(line)
43
+ end
44
+ runner.failure_count
45
+ end
46
+
47
+ protected
48
+
49
+ def script
50
+ File.expand_path("../phantomjs/runner.coffee", __FILE__)
51
+ end
52
+
53
+ def url(suite)
54
+ ["#{@server.url}#{Teabag.configuration.mount_at}", suite].join("/")
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,16 @@
1
+ module Teabag
2
+ class Engine < ::Rails::Engine
3
+
4
+ isolate_namespace Teabag
5
+
6
+ initializer :assets, :group => :all do |app|
7
+ # default the root if it's not set
8
+ Teabag.configuration.root ||= app.root
9
+
10
+ # append the asset paths from the configuration
11
+ Teabag.configuration.asset_paths.each do |path|
12
+ app.config.assets.paths << Teabag.configuration.root.join(path).to_s
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,6 @@
1
+ module Teabag
2
+ class Failure < Exception; end
3
+ class UnknownSuite < Exception; end
4
+ class RunnerException < Exception; end
5
+ class AssetNotServable < Exception; end
6
+ end
@@ -0,0 +1,32 @@
1
+ module Teabag
2
+ module Formatters
3
+ class BaseFormatter
4
+
5
+ attr_accessor :total, :passes, :pendings, :failures, :errors
6
+
7
+ def initialize
8
+ @total = 0
9
+ @passes = []
10
+ @pendings = []
11
+ @failures = []
12
+ @errors = []
13
+ end
14
+
15
+ def spec(result)
16
+ @total += 1
17
+ if result.passing?
18
+ @passes << result
19
+ elsif result.pending?
20
+ @pendings << result
21
+ else
22
+ @failures << result
23
+ end
24
+ end
25
+
26
+ # Exceptions come from startup errors in the server
27
+ def exception(exception = {})
28
+ raise Teabag::RunnerException
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,93 @@
1
+ require 'teabag/formatters/base_formatter'
2
+
3
+ module Teabag
4
+ module Formatters
5
+ class ProgressFormatter < BaseFormatter
6
+
7
+ RED = 31
8
+ GREEN = 32
9
+ YELLOW = 33
10
+ CYAN = 36
11
+
12
+ def spec(result)
13
+ super
14
+ if result.passing?
15
+ log ".", GREEN
16
+ elsif result.pending?
17
+ log "*", YELLOW
18
+ else
19
+ log "F", RED
20
+ end
21
+ end
22
+
23
+ # Errors are reported from the onError handler in Phantom, so they're not linked to a result
24
+ def error(error)
25
+ log "#{error["msg"]}\n", RED
26
+ for trace in error["trace"] || []
27
+ log " # #{filename(trace["file"])}:#{trace["line"]}#{trace["function"].present? ? " -- #{trace["function"]}" : ""}\n", CYAN
28
+ end
29
+ log "\n"
30
+ end
31
+
32
+ def results(results)
33
+ log "\n\n"
34
+ pending_log if pendings.size > 0
35
+ failure_log if failures.size > 0
36
+ status(results)
37
+ failed_examples if failures.size > 0
38
+ raise Teabag::Failure if failures.size > 0 && Teabag.configuration.fail_fast
39
+ end
40
+
41
+ private
42
+
43
+ def log(str, color_code = nil)
44
+ STDOUT.print(color_code ? colorize(str, color_code) : str)
45
+ end
46
+
47
+ def colorize(str, color_code)
48
+ "\e[#{color_code}m#{str}\e[0m"
49
+ end
50
+
51
+ def pluralize(str, value)
52
+ value == 1 ? "#{value} #{str}" : "#{value} #{str}s"
53
+ end
54
+
55
+ def filename(file)
56
+ file.gsub(%r(^http://127.0.0.1:\d+/assets/), "").gsub(/[\?|&]?body=1/, "")
57
+ end
58
+
59
+ def failure_log
60
+ log "Failures:\n"
61
+ failures.each_with_index do |failure, index|
62
+ log "\n #{index + 1}) #{failure["spec"]}\n"
63
+ log " Failure/Error: #{failure["message"]}\n", RED
64
+ end
65
+ log "\n"
66
+ end
67
+
68
+ def failed_examples
69
+ log "\nFailed examples:\n"
70
+ failures.each do |failure|
71
+ log "\n#{Teabag.configuration.mount_at}/#{failure.teabag_suite}#{failure.link}", RED
72
+ end
73
+ log "\n\n"
74
+ end
75
+
76
+ def pending_log
77
+ log "Pending:"
78
+ pendings.each do |result|
79
+ log "\n #{result.spec}\n", YELLOW
80
+ log " # Not yet implemented\n", CYAN
81
+ end
82
+ log "\n"
83
+ end
84
+
85
+ def status(results)
86
+ log "Finished in #{results["elapsed"]} seconds\n"
87
+ stats = "#{pluralize("example", total)}, #{pluralize("failure", failures.size)}"
88
+ stats << ", #{pendings.size} pending" if pendings.size > 0
89
+ log "#{stats}\n", failures.size > 0 ? RED : pendings.size > 0 ? YELLOW : GREEN
90
+ end
91
+ end
92
+ end
93
+ end