teabag 0.3.5 → 0.3.6

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 (219) hide show
  1. data/README.md +59 -59
  2. data/app/assets/javascripts/teabag-jasmine.js +229 -190
  3. data/app/assets/javascripts/teabag-mocha.js +217 -192
  4. data/app/assets/javascripts/teabag-qunit.js +3023 -0
  5. data/app/assets/javascripts/teabag/base/reporters/console.coffee +42 -26
  6. data/app/assets/javascripts/teabag/base/reporters/html.coffee +4 -3
  7. data/app/assets/javascripts/teabag/base/reporters/html/base_view.coffee +49 -0
  8. data/app/assets/javascripts/teabag/base/reporters/html/suite_view.coffee +1 -1
  9. data/app/assets/javascripts/teabag/base/runner.coffee +10 -0
  10. data/app/assets/javascripts/teabag/base/teabag.coffee +15 -1
  11. data/app/assets/javascripts/teabag/jasmine.coffee +53 -5
  12. data/app/assets/javascripts/teabag/mocha.coffee +51 -5
  13. data/app/assets/javascripts/teabag/mocha/reporters/console.coffee +3 -2
  14. data/app/assets/javascripts/teabag/qunit.coffee +61 -0
  15. data/app/assets/javascripts/teabag/qunit/reporters/console.coffee +25 -0
  16. data/app/assets/javascripts/teabag/qunit/reporters/html.coffee +80 -0
  17. data/app/helpers/teabag/spec_helper.rb +6 -14
  18. data/lib/generators/teabag/install/templates/initializer.rb +2 -1
  19. data/lib/teabag/configuration.rb +15 -4
  20. data/lib/teabag/console.rb +5 -11
  21. data/lib/teabag/drivers/base_driver.rb +10 -0
  22. data/lib/teabag/{phantomjs → drivers/phantomjs}/runner.coffee +0 -0
  23. data/lib/teabag/drivers/phantomjs_driver.rb +25 -0
  24. data/lib/teabag/drivers/selenium_driver.rb +29 -0
  25. data/lib/teabag/formatters/base_formatter.rb +4 -2
  26. data/lib/teabag/formatters/{progress_formatter.rb → dot_formatter.rb} +5 -5
  27. data/lib/teabag/formatters/swayze_or_oprah_formatter.rb +1 -1
  28. data/lib/teabag/formatters/tap_y_formatter.rb +85 -0
  29. data/lib/teabag/result.rb +18 -29
  30. data/lib/teabag/runner.rb +2 -2
  31. data/lib/teabag/version.rb +1 -1
  32. data/spec/dummy/config/initializers/teabag.rb +6 -0
  33. data/spec/dummy/log/development.log +87684 -0
  34. data/spec/dummy/log/test.log +556 -0
  35. data/spec/dummy/tmp/cache/assets/C13/B50/sprockets%2F431452d41e5087d2211162d23c63789b +0 -0
  36. data/spec/dummy/tmp/cache/assets/C18/F90/sprockets%2F369a3f720404378b4162541fd432742d +0 -0
  37. data/spec/dummy/tmp/cache/assets/C2B/5D0/sprockets%2F98606f6051a5fc71379af24236793353 +0 -0
  38. data/spec/dummy/tmp/cache/assets/C4E/9B0/sprockets%2Fa807397434c9262c3d62da3e91152184 +0 -0
  39. data/spec/dummy/tmp/cache/assets/C59/250/sprockets%2Fa80d3fe493d2476e58c4323996064512 +0 -0
  40. data/spec/dummy/tmp/cache/assets/C72/150/sprockets%2F4194031b4b51b6422c14ac697e3455e5 +0 -0
  41. data/spec/dummy/tmp/cache/assets/C75/D50/sprockets%2F5302968a40e08d2c011aa38666d273f6 +0 -0
  42. data/spec/dummy/tmp/cache/assets/C78/6B0/sprockets%2F173640f631a07f48c900a9c2923c825b +0 -0
  43. data/spec/dummy/tmp/cache/assets/C78/EF0/sprockets%2F65f827a4a5337d05d037845161b41ab8 +0 -0
  44. data/spec/dummy/tmp/cache/assets/C78/F80/sprockets%2F9161622ddd251097a4ab816b8220984c +0 -0
  45. data/spec/dummy/tmp/cache/assets/C7A/EC0/sprockets%2F5c16e4214f5662e1b27932a57c43491b +0 -0
  46. data/spec/dummy/tmp/cache/assets/C7C/AC0/sprockets%2F29124be1160817c61bb4878894b2ba55 +0 -0
  47. data/spec/dummy/tmp/cache/assets/C80/F70/sprockets%2Fe5c9811902c221828ea647978f000be3 +0 -0
  48. data/spec/dummy/tmp/cache/assets/C87/2C0/sprockets%2F60f61c07481249fc7922664609fcae52 +0 -0
  49. data/spec/dummy/tmp/cache/assets/C89/700/sprockets%2F259935a7704fef0069303ea63fa89408 +0 -0
  50. data/spec/dummy/tmp/cache/assets/C8A/460/sprockets%2F77bffd9959420103906722b404ae8d59 +0 -0
  51. data/spec/dummy/tmp/cache/assets/C91/FA0/sprockets%2F2eb81283f5789ae91a69344552db3856 +0 -0
  52. data/spec/dummy/tmp/cache/assets/C97/430/sprockets%2Fc049582fd1c9178ff983323f75326f64 +0 -0
  53. data/spec/dummy/tmp/cache/assets/CA2/F50/sprockets%2F86094c5d1b6399d614b0771a3a0a45b0 +0 -0
  54. data/spec/dummy/tmp/cache/assets/CA6/2F0/sprockets%2F20040c18b672e4c4d2731a2a929d8b97 +0 -0
  55. data/spec/dummy/tmp/cache/assets/CA9/C40/sprockets%2F932b7e2cd1e067289ab51190800814df +0 -0
  56. data/spec/dummy/tmp/cache/assets/CAA/0C0/sprockets%2F057b0ce384f16d9202ae84473436cc35 +0 -0
  57. data/spec/dummy/tmp/cache/assets/CAD/410/sprockets%2F651414e5c7e86f05c5108dc71626b25c +0 -0
  58. data/spec/dummy/tmp/cache/assets/CB4/6A0/sprockets%2F7373c9de844b711519cb49c4f1b16822 +0 -0
  59. data/spec/dummy/tmp/cache/assets/CBB/FA0/sprockets%2F74922109263bdc965b2e9567eec6d154 +0 -0
  60. data/spec/dummy/tmp/cache/assets/CBF/630/sprockets%2F707d2db81468088470d476abff35388d +0 -0
  61. data/spec/dummy/tmp/cache/assets/CCE/C50/sprockets%2Fe12774c2fea852112414bb379a71f31a +0 -0
  62. data/spec/dummy/tmp/cache/assets/CD3/460/sprockets%2F7f3f6802b0b309ed142d0b671c9640c4 +0 -0
  63. data/spec/dummy/tmp/cache/assets/CD9/DD0/sprockets%2Fe5774759168a731da1c1149ecf0e1b03 +0 -0
  64. data/spec/dummy/tmp/cache/assets/CDB/630/sprockets%2Ffd1626fe1016c81d57217f7f80c4370a +0 -0
  65. data/spec/dummy/tmp/cache/assets/CE0/090/sprockets%2F48d5d35ae87d0723318b8bc257fa2237 +0 -0
  66. data/spec/dummy/tmp/cache/assets/CE1/250/sprockets%2Ffdc680a0d4383d37910e549ca96f5303 +0 -0
  67. data/spec/dummy/tmp/cache/assets/CE1/730/sprockets%2Fa1678837061e18d7aca0286c07acf676 +0 -0
  68. data/spec/dummy/tmp/cache/assets/CE2/190/sprockets%2F0183b0f4e9f302b8677a5e31c45c89c5 +0 -0
  69. data/spec/dummy/tmp/cache/assets/CE3/1F0/sprockets%2Fe69a515d3a9d14c669be8871012a7d07 +0 -0
  70. data/spec/dummy/tmp/cache/assets/CE6/270/sprockets%2F2c98152560d18470fec8cf4c6829b4d0 +0 -0
  71. data/spec/dummy/tmp/cache/assets/CE6/7C0/sprockets%2Fa03a2c86ce6724be8542295e1cf24798 +0 -0
  72. data/spec/dummy/tmp/cache/assets/CE7/600/sprockets%2F7656791c172a6037cfffe2a226291c9e +0 -0
  73. data/spec/dummy/tmp/cache/assets/CE7/A60/sprockets%2Ff58eee249aa167d23f8220087bb46684 +0 -0
  74. data/spec/dummy/tmp/cache/assets/CE9/9E0/sprockets%2F135480d497ed7e4884462dc0ef0b80d7 +0 -0
  75. data/spec/dummy/tmp/cache/assets/CEB/090/sprockets%2F55dcd7ace406b77208c380d496e37864 +0 -0
  76. data/spec/dummy/tmp/cache/assets/CEB/680/sprockets%2F67f0794ef8c0576d5c7da34f4437305a +0 -0
  77. data/spec/dummy/tmp/cache/assets/CEB/B40/sprockets%2F1150bf8d912aa100a132251eefaf6045 +0 -0
  78. data/spec/dummy/tmp/cache/assets/CEC/360/sprockets%2F264b79dde726b36d63fee272a0609469 +0 -0
  79. data/spec/dummy/tmp/cache/assets/CF4/6F0/sprockets%2Fed96f92571224b862b84d7078b86ded3 +0 -0
  80. data/spec/dummy/tmp/cache/assets/CF7/F10/sprockets%2F8c45854ebd195b52cc42bf3f99996336 +0 -0
  81. data/spec/dummy/tmp/cache/assets/CF8/780/sprockets%2F8845b81ff27cdb57c835836c9f91a265 +0 -0
  82. data/spec/dummy/tmp/cache/assets/CFB/210/sprockets%2F9104695bfbf9a9d4b94382e6e90487a9 +0 -0
  83. data/spec/dummy/tmp/cache/assets/CFC/380/sprockets%2Fa7443cbd671446a589867dd5f4a4f989 +0 -0
  84. data/spec/dummy/tmp/cache/assets/D00/110/sprockets%2F6a6353b7723a8b21708e0fbfe04bd422 +0 -0
  85. data/spec/dummy/tmp/cache/assets/D00/F60/sprockets%2F42e279b52511c47d26c0adb125fd04e8 +0 -0
  86. data/spec/dummy/tmp/cache/assets/D03/630/sprockets%2F5d8da32dba6a7be70426a1d554773701 +0 -0
  87. data/spec/dummy/tmp/cache/assets/D04/170/sprockets%2F76ab1dc02e6c7618852708a1e05a2df3 +0 -0
  88. data/spec/dummy/tmp/cache/assets/D04/480/sprockets%2F8bd8f10500b21d2f9d94e4cd1401c936 +0 -0
  89. data/spec/dummy/tmp/cache/assets/D05/8D0/sprockets%2F319f8f235f452343f1ebf03cb262d23d +0 -0
  90. data/spec/dummy/tmp/cache/assets/D09/BF0/sprockets%2F9e6bca5d26f50d9484385d51ba04312c +0 -0
  91. data/spec/dummy/tmp/cache/assets/D0B/740/sprockets%2F781d3a2f0449451e9f35c5b0e3e2df41 +0 -0
  92. data/spec/dummy/tmp/cache/assets/D0E/570/sprockets%2F90fe371bf8091e88a712124d9cdae260 +0 -0
  93. data/spec/dummy/tmp/cache/assets/D11/D60/sprockets%2F06d6413e059dbac9a62155639ce88d2c +0 -0
  94. data/spec/dummy/tmp/cache/assets/D11/F80/sprockets%2F48961522f6cd1a15f2fe6e25f1b37a75 +0 -0
  95. data/spec/dummy/tmp/cache/assets/D12/F40/sprockets%2Fb6f95541e256c15909e0a5a5fbf2a359 +0 -0
  96. data/spec/dummy/tmp/cache/assets/D15/750/sprockets%2F8effdd3e668a4036260a3e370f3b6657 +0 -0
  97. data/spec/dummy/tmp/cache/assets/D17/710/sprockets%2Ffa49fb6823d466e79a195e0cd71340c5 +0 -0
  98. data/spec/dummy/tmp/cache/assets/D18/AF0/sprockets%2F8f572049bd1b0a6f1eb3d27979c9544c +0 -0
  99. data/spec/dummy/tmp/cache/assets/D1A/D30/sprockets%2F815a5177e9edba0c5c996182ef1b3675 +0 -0
  100. data/spec/dummy/tmp/cache/assets/D1B/730/sprockets%2Fcf6ce779d043d29aae915f599a413380 +0 -0
  101. data/spec/dummy/tmp/cache/assets/D1D/560/sprockets%2F1ca784ee7ba1922465147e7f8963eae5 +0 -0
  102. data/spec/dummy/tmp/cache/assets/D21/AD0/sprockets%2Fd471d7f687f61341d8b19efc41f39e44 +0 -0
  103. data/spec/dummy/tmp/cache/assets/D22/D70/sprockets%2Fe86ae12aa97067ed78aa94489484ec16 +0 -0
  104. data/spec/dummy/tmp/cache/assets/D2F/810/sprockets%2F1a2674b7dac8ff403c23a570475ace04 +0 -0
  105. data/spec/dummy/tmp/cache/assets/D30/480/sprockets%2Feb011f46c64dbefb1f7e21329644c240 +0 -0
  106. data/spec/dummy/tmp/cache/assets/D31/9C0/sprockets%2Fbd102a4f5a4985c3519dd6ab0295a1c6 +0 -0
  107. data/spec/dummy/tmp/cache/assets/D34/920/sprockets%2Ff234dd736ae50902ba074c526ca8f0c8 +0 -0
  108. data/spec/dummy/tmp/cache/assets/D35/7C0/sprockets%2Ff536a2606eaf7d542c0985104cb62baf +0 -0
  109. data/spec/dummy/tmp/cache/assets/D35/F00/sprockets%2F8e7f22358123b7eb5e21d17f442ce0ac +0 -0
  110. data/spec/dummy/tmp/cache/assets/D37/810/sprockets%2F99de576ce6ad42b5c0843fc21c2025b2 +0 -0
  111. data/spec/dummy/tmp/cache/assets/D37/FF0/sprockets%2F96841ca4cfae32c515077f3f5fc303b2 +0 -0
  112. data/spec/dummy/tmp/cache/assets/D39/BE0/sprockets%2Fdb727091cf3e4b4f6126c48b6063ef0b +0 -0
  113. data/spec/dummy/tmp/cache/assets/D3C/840/sprockets%2Fc6202ec91d567a85bd3d46dc43ea9108 +0 -0
  114. data/spec/dummy/tmp/cache/assets/D3D/EC0/sprockets%2F1aa82cb99ef076aea10d472b30a58979 +0 -0
  115. data/spec/dummy/tmp/cache/assets/D3F/3A0/sprockets%2F1b3734b358a405ca6f92455db8e4b5ff +0 -0
  116. data/spec/dummy/tmp/cache/assets/D45/C30/sprockets%2Fcc744877558178a3adb77c441cadce70 +0 -0
  117. data/spec/dummy/tmp/cache/assets/D48/160/sprockets%2F32bae66fd65ce3643efb543182f2e885 +0 -0
  118. data/spec/dummy/tmp/cache/assets/D49/1F0/sprockets%2F773b56f87127c6605e7d1d3faf2b6af6 +0 -0
  119. data/spec/dummy/tmp/cache/assets/D49/A10/sprockets%2Fc4656bd995a6f297c26d19b13aadb963 +0 -0
  120. data/spec/dummy/tmp/cache/assets/D4A/A50/sprockets%2Fb95795be8b937dab770541e27ddb2e70 +0 -0
  121. data/spec/dummy/tmp/cache/assets/D4C/840/sprockets%2F7732c94884c24e764f109ce2deb2a9ed +0 -0
  122. data/spec/dummy/tmp/cache/assets/D50/D70/sprockets%2Fe2a3e6c95b11e0801a4eebae3a026026 +0 -0
  123. data/spec/dummy/tmp/cache/assets/D51/400/sprockets%2Ff5e433d8a31e80985b75ce598de236be +0 -0
  124. data/spec/dummy/tmp/cache/assets/D58/870/sprockets%2F3cef1ff075a050004b74ffa13c8c4f02 +0 -0
  125. data/spec/dummy/tmp/cache/assets/D5B/9D0/sprockets%2F9c18c0aa5bbe1b323c5022c98aa09f29 +0 -0
  126. data/spec/dummy/tmp/cache/assets/D5B/E60/sprockets%2F167c229432f74a17b4c6a07bbb19aacb +0 -0
  127. data/spec/dummy/tmp/cache/assets/D5C/710/sprockets%2F9427d05cee2caa721241a25a9af1d08f +0 -0
  128. data/spec/dummy/tmp/cache/assets/D5C/CC0/sprockets%2Faa8bf6de211f2765b0a26f112b971f0c +0 -0
  129. data/spec/dummy/tmp/cache/assets/D5E/FA0/sprockets%2Fc81c371ae2d61a6aa1708262fba79e0d +0 -0
  130. data/spec/dummy/tmp/cache/assets/D60/060/sprockets%2Fe8a6ac51dd42491eaa2f9130c1629eb2 +0 -0
  131. data/spec/dummy/tmp/cache/assets/D61/1F0/sprockets%2F0c7a6176d2fc4db00bb9a74d36380fe1 +0 -0
  132. data/spec/dummy/tmp/cache/assets/D61/BD0/sprockets%2Ff96fcad988ca7fea975e538c27188605 +0 -0
  133. data/spec/dummy/tmp/cache/assets/D65/AD0/sprockets%2Fcc53fff930eaf306c15c4568cb265c00 +0 -0
  134. data/spec/dummy/tmp/cache/assets/D67/030/sprockets%2Fb8b36ba6104c8dbe6297b4e61e6d33b1 +0 -0
  135. data/spec/dummy/tmp/cache/assets/D67/BC0/sprockets%2F35d2c2b45981ade5a2db2a9c7f37a615 +0 -0
  136. data/spec/dummy/tmp/cache/assets/D69/F90/sprockets%2F6a0795b7b38bd7e6142cd1b88211dade +0 -0
  137. data/spec/dummy/tmp/cache/assets/D6A/950/sprockets%2F429b1806cb7580ebf29f9a12c33cbea6 +0 -0
  138. data/spec/dummy/tmp/cache/assets/D6C/9C0/sprockets%2Fd66bdf546164ba223e20f56b5591ddfd +0 -0
  139. data/spec/dummy/tmp/cache/assets/D6D/530/sprockets%2F8d52dee91bff01a8a2306d8a7c9152a9 +0 -0
  140. data/spec/dummy/tmp/cache/assets/D6D/DA0/sprockets%2Fac936bf40b42227a2bf9d474ae9ec149 +0 -0
  141. data/spec/dummy/tmp/cache/assets/D6F/310/sprockets%2F624b651d37f7ec0c563c446fbf8afb32 +0 -0
  142. data/spec/dummy/tmp/cache/assets/D71/A70/sprockets%2F4f10f5dd56c8a3ff78c460bbe3723a39 +0 -0
  143. data/spec/dummy/tmp/cache/assets/D72/C10/sprockets%2Ffbdb5250837c5cb856f464eb2cb3388b +0 -0
  144. data/spec/dummy/tmp/cache/assets/D73/5D0/sprockets%2F5c8608f3e25d077fa3df8cd32b50c37f +0 -0
  145. data/spec/dummy/tmp/cache/assets/D73/C00/sprockets%2F9cf4bfb486e4ab461e3f275a3d974c30 +0 -0
  146. data/spec/dummy/tmp/cache/assets/D77/B30/sprockets%2F946cf2f17c7eb41037f9ee08ad67ec40 +0 -0
  147. data/spec/dummy/tmp/cache/assets/D78/2F0/sprockets%2F3c61f8915b8f717b1de788e6ecad122c +0 -0
  148. data/spec/dummy/tmp/cache/assets/D78/870/sprockets%2F8f3a7d4fcd104fa8e47f552f6630a49e +0 -0
  149. data/spec/dummy/tmp/cache/assets/D7E/C10/sprockets%2F747c98c3cc7494a62dd882752adffb2b +0 -0
  150. data/spec/dummy/tmp/cache/assets/D7F/6C0/sprockets%2F77fe714bfff7e409a9d838cdf126700c +0 -0
  151. data/spec/dummy/tmp/cache/assets/D84/560/sprockets%2Ff09b671d3f5f8a48d7fa28e2c59ca389 +0 -0
  152. data/spec/dummy/tmp/cache/assets/D85/5D0/sprockets%2Fde362e334a475cfca1a30fa5b713b43a +0 -0
  153. data/spec/dummy/tmp/cache/assets/D8C/520/sprockets%2F221cd58a042baac534d27e4cfedc1188 +0 -0
  154. data/spec/dummy/tmp/cache/assets/D92/C00/sprockets%2F63c8bb5e2b2d9db4a2ed16f056a234c6 +0 -0
  155. data/spec/dummy/tmp/cache/assets/D97/520/sprockets%2Fea2442ae4caddb758dfb1964c601b476 +0 -0
  156. data/spec/dummy/tmp/cache/assets/D9C/510/sprockets%2Fab9bab3574dac2d1681189debb7d8255 +0 -0
  157. data/spec/dummy/tmp/cache/assets/D9D/440/sprockets%2F869f9acc13b88cf15a31d24a0ac3f6f6 +0 -0
  158. data/spec/dummy/tmp/cache/assets/D9E/CB0/sprockets%2Ff0efe0ab6bd753a8bb4481e46243d77f +0 -0
  159. data/spec/dummy/tmp/cache/assets/DA0/330/sprockets%2Fcbbb4de706387d50f48a72ee6c9c1b80 +0 -0
  160. data/spec/dummy/tmp/cache/assets/DA5/0A0/sprockets%2F7a4b5928cec69ab65afff309a04d6b47 +0 -0
  161. data/spec/dummy/tmp/cache/assets/DA6/D80/sprockets%2F8702dce2e6b9879a6add309e92ace2f0 +0 -0
  162. data/spec/dummy/tmp/cache/assets/DA8/C50/sprockets%2F0810627fddce930a399fc60d3be97fed +0 -0
  163. data/spec/dummy/tmp/cache/assets/DAA/1E0/sprockets%2F412dd3bd3026759a3f6ffe8cf9e7b93a +0 -0
  164. data/spec/dummy/tmp/cache/assets/DAA/2B0/sprockets%2Fe0c5d93fa08d139e198bfe47cd42b99a +0 -0
  165. data/spec/dummy/tmp/cache/assets/DAE/4E0/sprockets%2F88cc3ab99c608879dd56164dbcc2ccb7 +0 -0
  166. data/spec/dummy/tmp/cache/assets/DAE/6C0/sprockets%2F77c7a8676aeefa73156c55dfcf51cc46 +0 -0
  167. data/spec/dummy/tmp/cache/assets/DAF/5B0/sprockets%2F780e81d97e4eefcce73e0b82a5b1859d +0 -0
  168. data/spec/dummy/tmp/cache/assets/DB3/5D0/sprockets%2Fce1d4d75832c9bdeafd869f6f7b61725 +0 -0
  169. data/spec/dummy/tmp/cache/assets/DB5/040/sprockets%2F9a9da5df88713663b9fbc945facca891 +0 -0
  170. data/spec/dummy/tmp/cache/assets/DB5/860/sprockets%2Facf25fab3016425a0e03c9d190fd4eac +0 -0
  171. data/spec/dummy/tmp/cache/assets/DB9/220/sprockets%2Fd2dc4f59e70e73984997ffca8ad7f4a0 +0 -0
  172. data/spec/dummy/tmp/cache/assets/DC3/230/sprockets%2Fdf52e72eb73be91eccc60182191aed0b +0 -0
  173. data/spec/dummy/tmp/cache/assets/DC3/AC0/sprockets%2Fe29911eb34fdf4b710dd0d2c2cf24bc9 +0 -0
  174. data/spec/dummy/tmp/cache/assets/DC4/860/sprockets%2Fa01a3cf460ff15daae0f928d0f85f52e +0 -0
  175. data/spec/dummy/tmp/cache/assets/DC7/A10/sprockets%2F84a8af0fcbf401864e1ae5bf092cba94 +0 -0
  176. data/spec/dummy/tmp/cache/assets/DCB/620/sprockets%2F27a68cf9fe11fb1b6326d11eba7e76cb +0 -0
  177. data/spec/dummy/tmp/cache/assets/DCD/EB0/sprockets%2F4f77f509126ecbced7ea2a5ab290c8d4 +0 -0
  178. data/spec/dummy/tmp/cache/assets/DE3/6C0/sprockets%2F51c550cc1b3b021aa9aede66a5a36aff +0 -0
  179. data/spec/dummy/tmp/cache/assets/DE4/140/sprockets%2F139e4ab85d1aacb22c115fa136afdc8a +0 -0
  180. data/spec/dummy/tmp/cache/assets/DEB/110/sprockets%2F2dbdab0ce5babca645cdb5780004f875 +0 -0
  181. data/spec/dummy/tmp/cache/assets/DF1/1B0/sprockets%2F2b1bc202f9a338942edbccb2cfef0d67 +0 -0
  182. data/spec/dummy/tmp/cache/assets/DF6/0E0/sprockets%2F85b10db6e1afe643aba6d396abdd77f0 +0 -0
  183. data/spec/dummy/tmp/cache/assets/DF7/E10/sprockets%2F25e4253aba9a9adcefb72552fb1ff0c8 +0 -0
  184. data/spec/dummy/tmp/cache/assets/DF9/AD0/sprockets%2Fc700afd7cee3fe9d7ff8352b213b2c4a +0 -0
  185. data/spec/dummy/tmp/cache/assets/DFC/C20/sprockets%2Fd9178ad7e3b401c9fceafd64ea2b50d6 +0 -0
  186. data/spec/dummy/tmp/cache/assets/DFC/C30/sprockets%2Fb50a07cb30b0bd0eec8e98e5de79d65d +0 -0
  187. data/spec/dummy/tmp/cache/assets/E02/6E0/sprockets%2F63d6a5cdb8cefa64ef76b5c6e0fd3720 +0 -0
  188. data/spec/dummy/tmp/cache/assets/E08/5A0/sprockets%2Fe7148db8eea925c3c9f1ee340d53ceff +0 -0
  189. data/spec/dummy/tmp/cache/assets/E08/BB0/sprockets%2Fefac99af1af28543aef6fb607faa4973 +0 -0
  190. data/spec/dummy/tmp/cache/assets/E08/F20/sprockets%2F4fc5cdcd6974efe7adfe809b30bd6513 +0 -0
  191. data/spec/dummy/tmp/cache/assets/E16/D30/sprockets%2Fd69469e6e7439baacd8df989c0fdacc2 +0 -0
  192. data/spec/dummy/tmp/cache/assets/E17/EF0/sprockets%2Fa291ad64a26afd055dfadabbdf03f154 +0 -0
  193. data/spec/dummy/tmp/cache/assets/E41/250/sprockets%2F97cf8fe3d7ffaff076f655aefb36da03 +0 -0
  194. data/spec/dummy/tmp/cache/assets/E6E/260/sprockets%2Fd9f8ab8b91ef582cc6c99a3ba0dedfe6 +0 -0
  195. data/spec/dummy/tmp/cache/assets/F79/360/sprockets%2F0ce035fefee5ebdabc8efabfbdbd6ee4 +0 -0
  196. data/spec/javascripts/teabag/base/reporters/console_spec.coffee +69 -42
  197. data/spec/javascripts/teabag/base/reporters/html/base_view_spec.coffee +88 -0
  198. data/spec/javascripts/teabag/base/reporters/html_spec.coffee +218 -218
  199. data/spec/javascripts/teabag/base/runner_spec.coffee +22 -0
  200. data/spec/javascripts/teabag/base/teabag_spec.coffee +1 -1
  201. data/spec/javascripts/teabag/jasmine/models_jspec.coffee +101 -0
  202. data/spec/javascripts/teabag/jasmine/runner_jspec.coffee +1 -1
  203. data/spec/javascripts/teabag/mocha/models_mspec.coffee +95 -0
  204. data/spec/javascripts/teabag/mocha/reporters/console_mspec.coffee +4 -0
  205. data/spec/javascripts/teabag/mocha/runner_mspec.coffee +7 -7
  206. data/spec/javascripts/teabag/phantomjs/runner_spec.coffee +5 -5
  207. data/spec/teabag/configuration_spec.rb +2 -2
  208. data/spec/teabag/console_spec.rb +5 -17
  209. data/spec/teabag/drivers/phantomjs_driver_spec.rb +29 -0
  210. data/spec/teabag/drivers/selenium_driver_spec.rb +60 -0
  211. data/spec/teabag/formatters/{progress_formatter_spec.rb → dot_formatter_spec.rb} +14 -14
  212. data/spec/teabag/formatters/tap_y_formatter_spec.rb +190 -0
  213. data/spec/teabag/result_spec.rb +12 -42
  214. data/spec/teabag/runner_spec.rb +12 -6
  215. data/vendor/assets/javascripts/qunit-1.10.0.MIT.LICENSE +1 -0
  216. data/vendor/assets/javascripts/qunit-1.10.0.js +1977 -0
  217. metadata +161 -11
  218. data/app/assets/javascripts/teabag/base/reporters.coffee +0 -105
  219. data/spec/javascripts/teabag/base/reporters_spec.coffee +0 -267
@@ -0,0 +1,25 @@
1
+ class Teabag.Reporters.Console extends Teabag.Reporters.Console
2
+
3
+ constructor: (env) ->
4
+ super
5
+ env.log(@reportSpecResults)
6
+ env.testDone(@reportSpecResults)
7
+ env.done(@reportRunnerResults)
8
+ @reportRunnerStarting()
9
+
10
+
11
+ reportRunnerStarting: ->
12
+ @currentAssertions = []
13
+ @log
14
+ type: "runner"
15
+ total: null
16
+ start: JSON.parse(JSON.stringify(@start))
17
+
18
+
19
+ reportSpecResults: (result) =>
20
+ unless typeof(result.total) == "number"
21
+ @currentAssertions.push(result)
22
+ return
23
+ result.assertions = @currentAssertions
24
+ @currentAssertions = []
25
+ super(result)
@@ -0,0 +1,80 @@
1
+ class Teabag.Reporters.HTML extends Teabag.Reporters.HTML
2
+
3
+ constructor: (env) ->
4
+ super
5
+ env.log(@reportSpecResults)
6
+ env.testDone(@reportSpecResults)
7
+ env.done(@reportRunnerResults)
8
+ @currentAssertions = []
9
+ @reportRunnerStarting()
10
+
11
+
12
+ reportRunnerStarting: ->
13
+ @total.exist = null
14
+ @setText("stats-duration", "...")
15
+
16
+
17
+ reportSpecResults: (spec) =>
18
+ unless typeof(spec.total) == "number"
19
+ @currentAssertions.push(spec)
20
+ return
21
+ spec.assertions = @currentAssertions
22
+ @currentAssertions = []
23
+ @reportSpecStarting(spec)
24
+ super(spec)
25
+
26
+
27
+ reportRunnerResults: (result) =>
28
+ @total.exist = @total.run = result.total
29
+ super
30
+
31
+
32
+ readConfig: ->
33
+ super
34
+ QUnit.config.notrycatch = @config["use-catch"]
35
+
36
+
37
+ envInfo: ->
38
+ "qunit 1.10.0"
39
+
40
+
41
+
42
+ class Teabag.Reporters.HTML.SpecView extends Teabag.Reporters.HTML.SpecView
43
+
44
+ buildErrors: ->
45
+ div = @createEl("div")
46
+ html = ""
47
+ for error in @spec.errors()
48
+ html += """<strong>#{error.message}</strong><br/>#{@htmlSafe(error.stack || "Stack trace unavailable")}<br/>"""
49
+ div.innerHTML = html
50
+ @append(div)
51
+
52
+
53
+ buildParent: ->
54
+ parent = @spec.parent
55
+ return @reporter unless parent
56
+ if @views.suites[parent.description]
57
+ @views.suites[parent.description]
58
+ else
59
+ view = new Teabag.Reporters.HTML.SuiteView(parent, @reporter)
60
+ @views.suites[parent.description] = view
61
+
62
+
63
+
64
+ class Teabag.Reporters.HTML.FailureView extends Teabag.Reporters.HTML.FailureView
65
+
66
+ build: ->
67
+ super("spec")
68
+ html = """<h1 class="teabag-clearfix"><a href="#{@spec.link}">#{@spec.fullDescription}</a></h1>"""
69
+ for error in @spec.errors()
70
+ html += """<div><strong>#{error.message}</strong><br/>#{@htmlSafe(error.stack || "Stack trace unavailable")}</div>"""
71
+ @el.innerHTML = html
72
+
73
+
74
+
75
+ class Teabag.Reporters.HTML.SuiteView extends Teabag.Reporters.HTML.SuiteView
76
+
77
+ constructor: (@suite, @reporter) ->
78
+ @views = @reporter.views
79
+ @views.suites[@suite.description] = @
80
+ @build()
@@ -1,19 +1,11 @@
1
1
  module Teabag::SpecHelper
2
- def javascript_include_tag_for_teabag(*sources)
3
- options = sources.extract_options!
4
- debug = options.key?(:debug) ? options.delete(:debug) : debug_assets?
5
- body = options.key?(:body) ? options.delete(:body) : false
6
- digest = options.key?(:digest) ? options.delete(:digest) : digest_assets?
7
2
 
8
- foo = sources.collect do |source|
9
- if asset = asset_paths.asset_for(source, 'js')
10
- asset.to_a.map { |dep|
11
- javascript_include_tag(dep.pathname.to_s, { :src => path_to_asset(dep, :ext => 'js', :body => true, :digest => digest) }.merge!(options))
12
- }
13
- else
14
- javascript_include_tag(source.to_s, { :src => path_to_asset(source, :ext => 'js', :body => true, :digest => digest) }.merge!(options))
3
+ def javascript_include_tag_for_teabag(*sources)
4
+ sources.collect do |source|
5
+ asset = asset_paths.asset_for(source, "js")
6
+ asset.to_a.map do |dep|
7
+ javascript_include_tag(dep.pathname.to_s, src: path_to_asset(dep, ext: "js", body: true))
15
8
  end
16
- end
17
- foo.flatten.uniq.join("\n").html_safe
9
+ end.flatten.uniq.join("\n").html_safe
18
10
  end
19
11
  end
@@ -58,7 +58,8 @@ Teabag.setup do |config|
58
58
  #end
59
59
 
60
60
  # When Teabag is run from the command line these configuration directives apply.
61
- #config.formatters = "progress"
61
+ #config.driver = "phantomjs" # or selenium
62
+ #config.formatters = "dot" # or tap_y, swayze_or_oprah
62
63
  #config.server_timeout = 20
63
64
  #config.fail_fast = true
64
65
  #config.suppress_log = false
@@ -5,16 +5,26 @@ module Teabag
5
5
 
6
6
  include Singleton
7
7
 
8
- cattr_accessor :root, :mount_at, :asset_paths, :fixture_path, :formatters, :server_timeout, :fail_fast, :suppress_log, :suites
8
+ cattr_accessor :root,
9
+ :mount_at,
10
+ :asset_paths,
11
+ :fixture_path,
12
+ :driver,
13
+ :formatters,
14
+ :server_timeout,
15
+ :fail_fast,
16
+ :suppress_log,
17
+ :suites
9
18
 
10
19
  @@mount_at = "/teabag"
11
20
  @@root = nil # will default to Rails.root if left unset
12
- @@asset_paths = ["spec/javascripts", "spec/javascripts/stylesheets"]
21
+ @@asset_paths = ["spec/javascripts", "spec/javascripts/stylesheets", "test/javascripts", "test/javascripts/stylesheets"]
13
22
  @@fixture_path = "spec/javascripts/fixtures"
14
23
  @@suites = {}
15
24
 
16
25
  # console runner specific
17
- @@formatters = "progress"
26
+ @@driver = "phantomjs"
27
+ @@formatters = "dot"
18
28
  @@server_timeout = 20
19
29
  @@fail_fast = true
20
30
  @@suppress_log = false
@@ -44,6 +54,7 @@ module Teabag
44
54
  end
45
55
 
46
56
  autoload :Formatters, "teabag/formatters/base_formatter"
57
+ autoload :Drivers, "teabag/drivers/base_driver"
47
58
 
48
59
  mattr_accessor :configuration
49
60
  @@configuration = Configuration
@@ -60,7 +71,7 @@ module Teabag
60
71
  next unless ENV[directive].present?
61
72
  @@configuration.send("#{directive.downcase}=", ENV[directive] == "true")
62
73
  end
63
- %w(FORMATTERS).each do |directive|
74
+ %w(FORMATTERS DRIVER).each do |directive|
64
75
  next unless ENV[directive].present?
65
76
  @@configuration.send("#{directive.downcase}=", ENV[directive])
66
77
  end
@@ -1,6 +1,4 @@
1
1
  require "teabag/server"
2
- require "teabag/runner"
3
- require "phantomjs"
4
2
 
5
3
  module Teabag
6
4
  class Console
@@ -17,11 +15,11 @@ module Teabag
17
15
  end
18
16
 
19
17
  def execute
20
- STDOUT.print "Starting server...\n"
18
+ STDOUT.print "Starting server...\n" unless Teabag.configuration.suppress_log
21
19
  start_server
22
20
  failure_count = 0
23
21
  @suites.each do |suite|
24
- STDOUT.print "Teabag running #{suite} suite at #{url(suite)}...\n"
22
+ STDOUT.print "Teabag running #{suite} suite at #{url(suite)}...\n" unless Teabag.configuration.suppress_log
25
23
  failure_count += run_specs(suite)
26
24
  end
27
25
  failure_count > 0
@@ -37,17 +35,13 @@ module Teabag
37
35
  end
38
36
 
39
37
  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
38
+ driver.run_specs(suite, url(suite))
45
39
  end
46
40
 
47
41
  protected
48
42
 
49
- def script
50
- File.expand_path("../phantomjs/runner.coffee", __FILE__)
43
+ def driver
44
+ @driver ||= Teabag::Drivers.const_get("#{Teabag.configuration.driver.to_s.camelize}Driver").new
51
45
  end
52
46
 
53
47
  def url(suite)
@@ -0,0 +1,10 @@
1
+ module Teabag
2
+ module Drivers
3
+
4
+ autoload :PhantomjsDriver, 'teabag/drivers/phantomjs_driver'
5
+ autoload :SeleniumDriver, 'teabag/drivers/selenium_driver'
6
+
7
+ class BaseDriver
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,25 @@
1
+ require "phantomjs"
2
+ require "teabag/runner"
3
+
4
+ module Teabag
5
+ module Drivers
6
+ class PhantomjsDriver < BaseDriver
7
+
8
+ def run_specs(suite, url)
9
+ runner = Teabag::Runner.new(suite)
10
+
11
+ Phantomjs.run(script, url) do |line|
12
+ runner.process(line)
13
+ end
14
+
15
+ runner.failure_count
16
+ end
17
+
18
+ protected
19
+
20
+ def script
21
+ File.expand_path("../phantomjs/runner.coffee", __FILE__)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,29 @@
1
+ require "selenium-webdriver"
2
+ require "teabag/runner"
3
+
4
+ module Teabag
5
+ module Drivers
6
+ class SeleniumDriver < BaseDriver
7
+
8
+ def run_specs(suite, url)
9
+ runner = Teabag::Runner.new(suite)
10
+
11
+ driver = Selenium::WebDriver.for(:firefox)
12
+ driver.navigate.to("#{url}?reporter=Console")
13
+
14
+ Selenium::WebDriver::Wait.new(timeout: 180, interval: 0.01, message: "Timed out").until do
15
+ done = driver.execute_script("return window.Teabag && window.Teabag.finished")
16
+ driver.execute_script("return Teabag.getMessages()").each do |line|
17
+ runner.process("#{line}\n")
18
+ end
19
+ done
20
+ end
21
+
22
+ runner.failure_count
23
+ ensure
24
+ driver.quit
25
+ end
26
+ end
27
+ end
28
+ end
29
+
@@ -1,14 +1,16 @@
1
1
  module Teabag
2
2
  module Formatters
3
3
 
4
- autoload :ProgressFormatter, 'teabag/formatters/progress_formatter'
4
+ autoload :DotFormatter, 'teabag/formatters/dot_formatter'
5
+ autoload :TapYFormatter, 'teabag/formatters/tap_y_formatter'
5
6
  autoload :SwayzeOrOprahFormatter, 'teabag/formatters/swayze_or_oprah_formatter'
6
7
 
7
8
  class BaseFormatter
8
9
 
9
10
  attr_accessor :total, :passes, :pendings, :failures, :errors
10
11
 
11
- def initialize
12
+ def initialize(suite_name = :default)
13
+ @suite_name = suite_name.to_s
12
14
  @total = 0
13
15
  @passes = []
14
16
  @pendings = []
@@ -2,7 +2,7 @@ require 'teabag/formatters/base_formatter'
2
2
 
3
3
  module Teabag
4
4
  module Formatters
5
- class ProgressFormatter < BaseFormatter
5
+ class DotFormatter < BaseFormatter
6
6
 
7
7
  RED = 31
8
8
  GREEN = 32
@@ -29,7 +29,7 @@ module Teabag
29
29
  log "\n"
30
30
  end
31
31
 
32
- def results(results)
32
+ def result(results)
33
33
  log "\n\n"
34
34
  pending_log if pendings.size > 0
35
35
  failure_log if failures.size > 0
@@ -59,7 +59,7 @@ module Teabag
59
59
  def failure_log
60
60
  log "Failures:\n"
61
61
  failures.each_with_index do |failure, index|
62
- log "\n #{index + 1}) #{failure.full_description}\n"
62
+ log "\n #{index + 1}) #{failure.description}\n"
63
63
  log " Failure/Error: #{failure.message}\n", RED
64
64
  end
65
65
  log "\n"
@@ -68,7 +68,7 @@ module Teabag
68
68
  def failed_examples
69
69
  log "\nFailed examples:\n"
70
70
  failures.each do |failure|
71
- log "\n#{Teabag.configuration.mount_at}/#{failure.teabag_suite}#{failure.link}", RED
71
+ log "\n#{Teabag.configuration.mount_at}/#{@suite_name}#{failure.link}", RED
72
72
  end
73
73
  log "\n\n"
74
74
  end
@@ -76,7 +76,7 @@ module Teabag
76
76
  def pending_log
77
77
  log "Pending:"
78
78
  pendings.each do |result|
79
- log "\n #{result.full_description}\n", YELLOW
79
+ log "\n #{result.description}\n", YELLOW
80
80
  log " # Not yet implemented\n", CYAN
81
81
  end
82
82
  log "\n"
@@ -2,7 +2,7 @@ module Teabag
2
2
  module Formatters
3
3
  class SwayzeOrOprahFormatter < BaseFormatter
4
4
 
5
- def results(results)
5
+ def result(results)
6
6
  quote = QUOTES[Random.rand(QUOTES.size)]
7
7
  STDOUT.print("\n#{quote.inspect} -- Oprah Winfrey or Patrick Swayze?\n")
8
8
  end
@@ -0,0 +1,85 @@
1
+ require 'teabag/formatters/base_formatter'
2
+ require 'yaml'
3
+
4
+ module Teabag
5
+ module Formatters
6
+ class TapYFormatter < BaseFormatter
7
+
8
+ def runner(result)
9
+ log "type" => "suite",
10
+ "start" => result.start,
11
+ "count" => result.total,
12
+ "seed" => 0,
13
+ "rev" => 4
14
+ end
15
+
16
+ def suite(result)
17
+ log "type" => "case",
18
+ "label" => result.label,
19
+ "level" => result.level
20
+ end
21
+
22
+ def spec(result)
23
+ super
24
+ @result = result
25
+ return passing_spec if result.passing?
26
+ return pending_spec if result.pending?
27
+ failing_spec
28
+ end
29
+
30
+ def result(result)
31
+ log "type" => "final",
32
+ "time" => result.elapsed,
33
+ "counts" => {
34
+ "total" => @total,
35
+ "pass" => @passes.size,
36
+ "fail" => @failures.size,
37
+ "error" => @errors.size,
38
+ "omit" => 0,
39
+ "todo" => @pendings.size
40
+ }
41
+ end
42
+
43
+ def error(error)
44
+ @errors << error
45
+ end
46
+
47
+ private
48
+
49
+ def passing_spec
50
+ log "type" => "test",
51
+ "status" => "pass",
52
+ "label" => @result.label
53
+ end
54
+
55
+ def pending_spec
56
+ log "type" => "test",
57
+ "status" => "pending",
58
+ "label" => @result.label,
59
+ "exception" => {
60
+ "message" => @result.message
61
+ }
62
+ end
63
+
64
+ def failing_spec
65
+ log "type" => "test",
66
+ "status" => "fail",
67
+ "label" => @result.label,
68
+ "exception" => {
69
+ "message" => @result.message,
70
+ "backtrace" => ["#{@result.link}#:0"],
71
+ "file" => "unknown",
72
+ "line" => "unknown",
73
+ "source" => "unknown",
74
+ "snippet" => {"0" => @result.link},
75
+ "class" => "Unknown"
76
+ }
77
+ end
78
+
79
+ def log(hash)
80
+ STDOUT.print(hash.to_yaml)
81
+ end
82
+
83
+ end
84
+ end
85
+ end