teabag 0.7.2 → 0.7.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. data/README.md +36 -2
  2. data/app/assets/javascripts/teabag-angular.js +88 -44
  3. data/app/assets/javascripts/teabag-jasmine.js +12 -0
  4. data/app/assets/javascripts/teabag-mocha.js +13 -3
  5. data/app/assets/javascripts/teabag-qunit.js +13 -3
  6. data/app/assets/javascripts/teabag/base/teabag.coffee +5 -0
  7. data/app/views/teabag/spec/runner.html.erb +39 -20
  8. data/lib/teabag.rb +2 -0
  9. data/lib/teabag/configuration.rb +2 -1
  10. data/lib/teabag/coverage.rb +1 -1
  11. data/lib/teabag/formatters/base_formatter.rb +1 -0
  12. data/lib/teabag/formatters/teamcity_formatter.rb +57 -0
  13. data/lib/teabag/instrumentation.rb +1 -1
  14. data/lib/teabag/suite.rb +12 -1
  15. data/lib/teabag/version.rb +1 -1
  16. data/spec/dummy/log/development.log +1237 -0
  17. data/spec/dummy/log/test.log +317 -0
  18. data/spec/dummy/tmp/cache/assets/C35/A30/sprockets%2F29906bf540f7d2e081088494b2554989 +0 -0
  19. data/spec/dummy/tmp/cache/assets/C4E/9B0/sprockets%2Fa807397434c9262c3d62da3e91152184 +0 -0
  20. data/spec/dummy/tmp/cache/assets/C72/150/sprockets%2F4194031b4b51b6422c14ac697e3455e5 +0 -0
  21. data/spec/dummy/tmp/cache/assets/C75/D50/sprockets%2F5302968a40e08d2c011aa38666d273f6 +0 -0
  22. data/spec/dummy/tmp/cache/assets/C78/F80/sprockets%2F9161622ddd251097a4ab816b8220984c +0 -0
  23. data/spec/dummy/tmp/cache/assets/C7D/8F0/sprockets%2Ff13d01b85f2449a4f0638ff260425906 +0 -0
  24. data/spec/dummy/tmp/cache/assets/C89/700/sprockets%2F259935a7704fef0069303ea63fa89408 +0 -0
  25. data/spec/dummy/tmp/cache/assets/C8A/460/sprockets%2F77bffd9959420103906722b404ae8d59 +0 -0
  26. data/spec/dummy/tmp/cache/assets/C91/FA0/sprockets%2F2eb81283f5789ae91a69344552db3856 +0 -0
  27. data/spec/dummy/tmp/cache/assets/C9D/E90/sprockets%2F3045c9533f179d3e1c805d163ed002a0 +0 -0
  28. data/spec/dummy/tmp/cache/assets/CA6/DF0/sprockets%2F7da83747ce56e49393b6b8726587f846 +0 -0
  29. data/spec/dummy/tmp/cache/assets/CA9/C40/sprockets%2F932b7e2cd1e067289ab51190800814df +0 -0
  30. data/spec/dummy/tmp/cache/assets/CAA/0C0/sprockets%2F057b0ce384f16d9202ae84473436cc35 +0 -0
  31. data/spec/dummy/tmp/cache/assets/CAD/410/sprockets%2F651414e5c7e86f05c5108dc71626b25c +0 -0
  32. data/spec/dummy/tmp/cache/assets/CAF/0F0/sprockets%2F6000e67cf3f2377f860c24da7c819701 +0 -0
  33. data/spec/dummy/tmp/cache/assets/CB0/700/sprockets%2F006af6bf0f6b55777b03c4615c853881 +0 -0
  34. data/spec/dummy/tmp/cache/assets/CBB/FA0/sprockets%2F74922109263bdc965b2e9567eec6d154 +0 -0
  35. data/spec/dummy/tmp/cache/assets/CBD/AF0/sprockets%2Fd687ec33822256e9444e8cd04f1b4873 +0 -0
  36. data/spec/dummy/tmp/cache/assets/CBF/630/sprockets%2F707d2db81468088470d476abff35388d +0 -0
  37. data/spec/dummy/tmp/cache/assets/CC2/EC0/sprockets%2F76bf80cb571ca530357f78db78167866 +0 -0
  38. data/spec/dummy/tmp/cache/assets/CCE/C50/sprockets%2Fe12774c2fea852112414bb379a71f31a +0 -0
  39. data/spec/dummy/tmp/cache/assets/CD3/460/sprockets%2F7f3f6802b0b309ed142d0b671c9640c4 +0 -0
  40. data/spec/dummy/tmp/cache/assets/CE0/090/sprockets%2F48d5d35ae87d0723318b8bc257fa2237 +0 -0
  41. data/spec/dummy/tmp/cache/assets/CE3/1F0/sprockets%2Fe69a515d3a9d14c669be8871012a7d07 +0 -0
  42. data/spec/dummy/tmp/cache/assets/CE6/270/sprockets%2F2c98152560d18470fec8cf4c6829b4d0 +0 -0
  43. data/spec/dummy/tmp/cache/assets/CE6/7C0/sprockets%2Fa03a2c86ce6724be8542295e1cf24798 +0 -0
  44. data/spec/dummy/tmp/cache/assets/CE7/A60/sprockets%2Ff58eee249aa167d23f8220087bb46684 +0 -0
  45. data/spec/dummy/tmp/cache/assets/CE9/9E0/sprockets%2F135480d497ed7e4884462dc0ef0b80d7 +0 -0
  46. data/spec/dummy/tmp/cache/assets/CEB/680/sprockets%2F67f0794ef8c0576d5c7da34f4437305a +0 -0
  47. data/spec/dummy/tmp/cache/assets/CEB/B40/sprockets%2F1150bf8d912aa100a132251eefaf6045 +0 -0
  48. data/spec/dummy/tmp/cache/assets/CEC/360/sprockets%2F264b79dde726b36d63fee272a0609469 +0 -0
  49. data/spec/dummy/tmp/cache/assets/CEE/3A0/sprockets%2Fb6c48f0d375946fb4038e3643c468e8a +0 -0
  50. data/spec/dummy/tmp/cache/assets/CF8/780/sprockets%2F8845b81ff27cdb57c835836c9f91a265 +0 -0
  51. data/spec/dummy/tmp/cache/assets/CFA/D20/sprockets%2Fb26796b39b3c5d6ed70be7989637a493 +0 -0
  52. data/spec/dummy/tmp/cache/assets/CFB/210/sprockets%2F9104695bfbf9a9d4b94382e6e90487a9 +0 -0
  53. data/spec/dummy/tmp/cache/assets/CFC/380/sprockets%2Fa7443cbd671446a589867dd5f4a4f989 +0 -0
  54. data/spec/dummy/tmp/cache/assets/D00/110/sprockets%2F6a6353b7723a8b21708e0fbfe04bd422 +0 -0
  55. data/spec/dummy/tmp/cache/assets/D00/F60/sprockets%2F42e279b52511c47d26c0adb125fd04e8 +0 -0
  56. data/spec/dummy/tmp/cache/assets/D03/630/sprockets%2F5d8da32dba6a7be70426a1d554773701 +0 -0
  57. data/spec/dummy/tmp/cache/assets/D04/170/sprockets%2F76ab1dc02e6c7618852708a1e05a2df3 +0 -0
  58. data/spec/dummy/tmp/cache/assets/D04/480/sprockets%2F8bd8f10500b21d2f9d94e4cd1401c936 +0 -0
  59. data/spec/dummy/tmp/cache/assets/D05/8D0/sprockets%2F319f8f235f452343f1ebf03cb262d23d +0 -0
  60. data/spec/dummy/tmp/cache/assets/D09/BF0/sprockets%2F9e6bca5d26f50d9484385d51ba04312c +0 -0
  61. data/spec/dummy/tmp/cache/assets/D0E/570/sprockets%2F90fe371bf8091e88a712124d9cdae260 +0 -0
  62. data/spec/dummy/tmp/cache/assets/D15/750/sprockets%2F8effdd3e668a4036260a3e370f3b6657 +0 -0
  63. data/spec/dummy/tmp/cache/assets/D17/710/sprockets%2Ffa49fb6823d466e79a195e0cd71340c5 +0 -0
  64. data/spec/dummy/tmp/cache/assets/D1D/560/sprockets%2F1ca784ee7ba1922465147e7f8963eae5 +0 -0
  65. data/spec/dummy/tmp/cache/assets/D1E/AA0/sprockets%2F5c8741a556bc955cd36e61c88582b6dc +0 -0
  66. data/spec/dummy/tmp/cache/assets/D31/9C0/sprockets%2Fbd102a4f5a4985c3519dd6ab0295a1c6 +0 -0
  67. data/spec/dummy/tmp/cache/assets/D35/7C0/sprockets%2Ff536a2606eaf7d542c0985104cb62baf +0 -0
  68. data/spec/dummy/tmp/cache/assets/D37/FF0/sprockets%2F96841ca4cfae32c515077f3f5fc303b2 +0 -0
  69. data/spec/dummy/tmp/cache/assets/D3C/840/sprockets%2Fc6202ec91d567a85bd3d46dc43ea9108 +0 -0
  70. data/spec/dummy/tmp/cache/assets/D44/E90/sprockets%2F05cfc0bf7c9938963d1d1c63248db80d +0 -0
  71. data/spec/dummy/tmp/cache/assets/D45/C30/sprockets%2Fcc744877558178a3adb77c441cadce70 +0 -0
  72. data/spec/dummy/tmp/cache/assets/D49/A10/sprockets%2Fc4656bd995a6f297c26d19b13aadb963 +0 -0
  73. data/spec/dummy/tmp/cache/assets/D50/D70/sprockets%2Fe2a3e6c95b11e0801a4eebae3a026026 +0 -0
  74. data/spec/dummy/tmp/cache/assets/D51/400/sprockets%2Ff5e433d8a31e80985b75ce598de236be +0 -0
  75. data/spec/dummy/tmp/cache/assets/D54/D80/sprockets%2F631327e25ec20edc723046cdec3bb1c0 +0 -0
  76. data/spec/dummy/tmp/cache/assets/D5C/710/sprockets%2F9427d05cee2caa721241a25a9af1d08f +0 -0
  77. data/spec/dummy/tmp/cache/assets/D5C/CC0/sprockets%2Faa8bf6de211f2765b0a26f112b971f0c +0 -0
  78. data/spec/dummy/tmp/cache/assets/D61/1F0/sprockets%2F0c7a6176d2fc4db00bb9a74d36380fe1 +0 -0
  79. data/spec/dummy/tmp/cache/assets/D67/BC0/sprockets%2F35d2c2b45981ade5a2db2a9c7f37a615 +0 -0
  80. data/spec/dummy/tmp/cache/assets/D69/F90/sprockets%2F6a0795b7b38bd7e6142cd1b88211dade +0 -0
  81. data/spec/dummy/tmp/cache/assets/D6A/950/sprockets%2F429b1806cb7580ebf29f9a12c33cbea6 +0 -0
  82. data/spec/dummy/tmp/cache/assets/D6A/ED0/sprockets%2F662ef351d001ba9f2a3a578d26bf9eb6 +0 -0
  83. data/spec/dummy/tmp/cache/assets/D6D/530/sprockets%2F8d52dee91bff01a8a2306d8a7c9152a9 +0 -0
  84. data/spec/dummy/tmp/cache/assets/D6D/DA0/sprockets%2Fac936bf40b42227a2bf9d474ae9ec149 +0 -0
  85. data/spec/dummy/tmp/cache/assets/D77/B30/sprockets%2F946cf2f17c7eb41037f9ee08ad67ec40 +0 -0
  86. data/spec/dummy/tmp/cache/assets/D78/2F0/sprockets%2F3c61f8915b8f717b1de788e6ecad122c +0 -0
  87. data/spec/dummy/tmp/cache/assets/D93/BD0/sprockets%2Ff5e1b60201e08e3ddf8d3de5211f3d5e +0 -0
  88. data/spec/dummy/tmp/cache/assets/DA0/330/sprockets%2Fcbbb4de706387d50f48a72ee6c9c1b80 +0 -0
  89. data/spec/dummy/tmp/cache/assets/DA5/0A0/sprockets%2F7a4b5928cec69ab65afff309a04d6b47 +0 -0
  90. data/spec/dummy/tmp/cache/assets/DAE/6C0/sprockets%2F77c7a8676aeefa73156c55dfcf51cc46 +0 -0
  91. data/spec/dummy/tmp/cache/assets/DAF/7C0/sprockets%2F8942514d59e7bffbfb33cde6fa9735c2 +0 -0
  92. data/spec/dummy/tmp/cache/assets/DB3/5D0/sprockets%2Fce1d4d75832c9bdeafd869f6f7b61725 +0 -0
  93. data/spec/dummy/tmp/cache/assets/DB5/040/sprockets%2F9a9da5df88713663b9fbc945facca891 +0 -0
  94. data/spec/dummy/tmp/cache/assets/DC3/230/sprockets%2Fdf52e72eb73be91eccc60182191aed0b +0 -0
  95. data/spec/dummy/tmp/cache/assets/DC7/A10/sprockets%2F84a8af0fcbf401864e1ae5bf092cba94 +0 -0
  96. data/spec/dummy/tmp/cache/assets/DCD/EB0/sprockets%2F4f77f509126ecbced7ea2a5ab290c8d4 +0 -0
  97. data/spec/dummy/tmp/cache/assets/DF6/0E0/sprockets%2F85b10db6e1afe643aba6d396abdd77f0 +0 -0
  98. data/spec/dummy/tmp/cache/assets/DF7/E10/sprockets%2F25e4253aba9a9adcefb72552fb1ff0c8 +0 -0
  99. data/spec/dummy/tmp/cache/assets/DF9/AD0/sprockets%2Fc700afd7cee3fe9d7ff8352b213b2c4a +0 -0
  100. data/spec/dummy/tmp/cache/assets/DFC/C20/sprockets%2Fd9178ad7e3b401c9fceafd64ea2b50d6 +0 -0
  101. data/spec/dummy/tmp/cache/assets/DFC/C30/sprockets%2Fb50a07cb30b0bd0eec8e98e5de79d65d +0 -0
  102. data/spec/dummy/tmp/cache/assets/E02/6E0/sprockets%2F63d6a5cdb8cefa64ef76b5c6e0fd3720 +0 -0
  103. data/spec/dummy/tmp/cache/assets/E08/BB0/sprockets%2Fefac99af1af28543aef6fb607faa4973 +0 -0
  104. data/spec/dummy/tmp/cache/assets/E2F/790/sprockets%2F7fac280deaa7ef20a77d5c9b5b9cfc34 +0 -0
  105. data/spec/dummy/tmp/cache/assets/E2F/9D0/sprockets%2Fafd2bbe50bf8be88e74d1dc049a7c09d +0 -0
  106. data/spec/dummy/tmp/cache/assets/E41/250/sprockets%2F97cf8fe3d7ffaff076f655aefb36da03 +0 -0
  107. data/spec/dummy/tmp/cache/assets/E64/1E0/sprockets%2F81ab4c863fbbdec8dd66afc97ebf034d +0 -0
  108. data/spec/dummy/tmp/cache/assets/E6E/260/sprockets%2Fd9f8ab8b91ef582cc6c99a3ba0dedfe6 +0 -0
  109. data/spec/dummy/tmp/cache/assets/F79/360/sprockets%2F0ce035fefee5ebdabc8efabfbdbd6ee4 +0 -0
  110. data/spec/teabag/coverage_spec.rb +4 -2
  111. data/spec/teabag/formatters/teamcity_formatter_spec.rb +91 -0
  112. data/spec/teabag/instrumentation_spec.rb +4 -2
  113. data/spec/teabag/suite_spec.rb +24 -0
  114. metadata +7 -4
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  Teabag
2
2
  ======
3
3
  [![Build Status](https://travis-ci.org/modeset/teabag.png)](https://travis-ci.org/modeset/teabag)
4
- [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/modeset/teabag)
4
+ [![Code Climate](https://codeclimate.com/github/modeset/teabag.png)](https://codeclimate.com/github/modeset/teabag)
5
5
 
6
6
  Teabag is a Javascript test runner built on top of Rails. It can run tests in the browser, or headlessly using PhantomJS or with Selenium WebDriver.
7
7
 
@@ -159,9 +159,32 @@ describe "My great feature", ->
159
159
 
160
160
  If you're using a specific framework and you want to take advantage of the things that framework provides you're free to do so. This is provided as the standard as the Teabag reporters understand the techniques above and have specs for them.
161
161
 
162
+ ### Using Require.js
163
+ If you are using require.js to get your files you can set a configuration option for your suite of "use_require".
164
+ ```ruby
165
+ Teabag.setup do |config|
166
+ config.suite do |suite|
167
+ suite.use_require = true
168
+ end
169
+ end
170
+ ```
171
+ Then in your suite spec helper, add require.js to be included, if you have not already. (Note: Teabag doesn't include require.js with it, so you will need to provide your own require.js and require the correct path.)
172
+ ```javascript
173
+ //= require require
174
+ ```
175
+
176
+ Once you've done that, when that suite is executed, Teabag will use require.js to get all the specs in the suite (or specific files). In your specs you will need to use require to pull down the dependencies as you would normally. Here is an example with mocha.
177
+ ```javascript
178
+ define(['Model'] , function (Model) {
179
+ describe('Model' , function () {
180
+ // put your tests here
181
+ });
182
+ });
183
+ ```
184
+
162
185
  ### Deferring Execution
163
186
 
164
- Teabag allows deferring execution in the cases when you're using AMD or other asynchronous libraries. This is especially useful if you're using [CommonJS](http://www.commonjs.org/) or [RequireJS](http://requirejs.org/), etc. You can tell Teabag to defer and then execute the runner yourself later -- after loading asychronously. There's a wiki article about how you can setup your specs and spec helper when using [RequireJS with Teabag](https://github.com/modeset/teabag/wiki/RequireJS-with-Teabag).
187
+ Teabag allows deferring execution in the cases when you're using AMD or other asynchronous libraries. This is especially useful if you're using [CommonJS](http://www.commonjs.org/), etc. You can tell Teabag to defer and then execute the runner yourself later -- after loading asychronously. There's a wiki article about how you can setup your specs and spec helper when using [RequireJS with Teabag](https://github.com/modeset/teabag/wiki/RequireJS-with-Teabag).
165
188
 
166
189
  ```javascript
167
190
  Teabag.defer = true;
@@ -536,6 +559,17 @@ Or using Rake/ENV:
536
559
  SUPPRESS_LOG=true COVERAGE_REPORTS=cobertura FORMATTERS=tap rake
537
560
  ```
538
561
 
562
+ There is also a TeamCity formatter:
563
+
564
+ ```
565
+ teabag -q --format=teamcity
566
+ ```
567
+
568
+ Or using Rake/ENV:
569
+
570
+ ```
571
+ SUPPRESS_LOG=true FORMATTERS=teamcity rake
572
+ ```
539
573
 
540
574
  ## License
541
575
 
@@ -26195,9 +26195,7 @@ if (config.autotest) {
26195
26195
  angular.element(document).find('head').append('<style type="text/css">@charset "UTF-8";\n\n[ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak],\n.ng-cloak, .x-ng-cloak {\n display: none;\n}\n\nng\\:form {\n display: block;\n}\n</style>');
26196
26196
  angular.element(document).find('head').append('<style type="text/css">@charset "UTF-8";\n/* CSS Document */\n\n/** Structure */\nbody {\n font-family: Arial, sans-serif;\n margin: 0;\n font-size: 14px;\n}\n\n#system-error {\n font-size: 1.5em;\n text-align: center;\n}\n\n#json, #xml {\n display: none;\n}\n\n#header {\n position: fixed;\n width: 100%;\n}\n\n#specs {\n padding-top: 50px;\n}\n\n#header .angular {\n font-family: Courier New, monospace;\n font-weight: bold;\n}\n\n#header h1 {\n font-weight: normal;\n float: left;\n font-size: 30px;\n line-height: 30px;\n margin: 0;\n padding: 10px 10px;\n height: 30px;\n}\n\n#application h2,\n#specs h2 {\n margin: 0;\n padding: 0.5em;\n font-size: 1.1em;\n}\n\n#status-legend {\n margin-top: 10px;\n margin-right: 10px;\n}\n\n#header,\n#application,\n.test-info,\n.test-actions li {\n overflow: hidden;\n}\n\n#application {\n margin: 10px;\n}\n\n#application iframe {\n width: 100%;\n height: 758px;\n}\n\n#application .popout {\n float: right;\n}\n\n#application iframe {\n border: none;\n}\n\n.tests li,\n.test-actions li,\n.test-it li,\n.test-it ol,\n.status-display {\n list-style-type: none;\n}\n\n.tests,\n.test-it ol,\n.status-display {\n margin: 0;\n padding: 0;\n}\n\n.test-info {\n margin-left: 1em;\n margin-top: 0.5em;\n border-radius: 8px 0 0 8px;\n -webkit-border-radius: 8px 0 0 8px;\n -moz-border-radius: 8px 0 0 8px;\n cursor: pointer;\n}\n\n.test-info:hover .test-name {\n text-decoration: underline;\n}\n\n.test-info .closed:before {\n content: \'\\25b8\\00A0\';\n}\n\n.test-info .open:before {\n content: \'\\25be\\00A0\';\n font-weight: bold;\n}\n\n.test-it ol {\n margin-left: 2.5em;\n}\n\n.status-display,\n.status-display li {\n float: right;\n}\n\n.status-display li {\n padding: 5px 10px;\n}\n\n.timer-result,\n.test-title {\n display: inline-block;\n margin: 0;\n padding: 4px;\n}\n\n.test-actions .test-title,\n.test-actions .test-result {\n display: table-cell;\n padding-left: 0.5em;\n padding-right: 0.5em;\n}\n\n.test-actions {\n display: table;\n}\n\n.test-actions li {\n display: table-row;\n}\n\n.timer-result {\n width: 4em;\n padding: 0 10px;\n text-align: right;\n font-family: monospace;\n}\n\n.test-it pre,\n.test-actions pre {\n clear: left;\n color: black;\n margin-left: 6em;\n}\n\n.test-describe {\n padding-bottom: 0.5em;\n}\n\n.test-describe .test-describe {\n margin: 5px 5px 10px 2em;\n}\n\n.test-actions .status-pending .test-title:before {\n content: \'\\00bb\\00A0\';\n}\n\n.scrollpane {\n max-height: 20em;\n overflow: auto;\n}\n\n/** Colors */\n\n#header {\n background-color: #F2C200;\n}\n\n#specs h2 {\n border-top: 2px solid #BABAD1;\n}\n\n#specs h2,\n#application h2 {\n background-color: #efefef;\n}\n\n#application {\n border: 1px solid #BABAD1;\n}\n\n.test-describe .test-describe {\n border-left: 1px solid #BABAD1;\n border-right: 1px solid #BABAD1;\n border-bottom: 1px solid #BABAD1;\n}\n\n.status-display {\n border: 1px solid #777;\n}\n\n.status-display .status-pending,\n.status-pending .test-info {\n background-color: #F9EEBC;\n}\n\n.status-display .status-success,\n.status-success .test-info {\n background-color: #B1D7A1;\n}\n\n.status-display .status-failure,\n.status-failure .test-info {\n background-color: #FF8286;\n}\n\n.status-display .status-error,\n.status-error .test-info {\n background-color: black;\n color: white;\n}\n\n.test-actions .status-success .test-title {\n color: #30B30A;\n}\n\n.test-actions .status-failure .test-title {\n color: #DF0000;\n}\n\n.test-actions .status-error .test-title {\n color: black;\n}\n\n.test-actions .timer-result {\n color: #888;\n}\n</style>');
26197
26197
  (function() {
26198
-
26199
26198
  this.Teabag = (function() {
26200
-
26201
26199
  function Teabag() {}
26202
26200
 
26203
26201
  Teabag.defer = false;
@@ -26227,8 +26225,21 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26227
26225
  return new Teabag.Runner();
26228
26226
  };
26229
26227
 
26228
+ Teabag.onWindowLoad = function(method) {
26229
+ var originalOnload;
26230
+
26231
+ originalOnload = window.onload;
26232
+ return window.onload = function() {
26233
+ if (originalOnload && originalOnload.call) {
26234
+ originalOnload();
26235
+ }
26236
+ return method();
26237
+ };
26238
+ };
26239
+
26230
26240
  Teabag.resolveDependenciesFromParams = function(all) {
26231
26241
  var dep, deps, file, parts, path, paths, _i, _j, _len, _len1;
26242
+
26232
26243
  if (all == null) {
26233
26244
  all = [];
26234
26245
  }
@@ -26254,16 +26265,20 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26254
26265
  };
26255
26266
 
26256
26267
  Teabag.log = function() {
26268
+ var e;
26269
+
26257
26270
  this.messages.push(arguments[0]);
26258
26271
  try {
26259
26272
  return console.log.apply(console, arguments);
26260
- } catch (e) {
26273
+ } catch (_error) {
26274
+ e = _error;
26261
26275
  throw new Error("Unable to use console.log for logging");
26262
26276
  }
26263
26277
  };
26264
26278
 
26265
26279
  Teabag.getMessages = function() {
26266
26280
  var messages;
26281
+
26267
26282
  messages = this.messages;
26268
26283
  this.messages = [];
26269
26284
  return messages;
@@ -26275,9 +26290,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26275
26290
 
26276
26291
  }).call(this);
26277
26292
  (function() {
26278
-
26279
26293
  Teabag.Runner = (function() {
26280
-
26281
26294
  Runner.run = false;
26282
26295
 
26283
26296
  function Runner() {
@@ -26292,6 +26305,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26292
26305
 
26293
26306
  Runner.prototype.getParams = function() {
26294
26307
  var name, param, params, value, _i, _len, _ref, _ref1;
26308
+
26295
26309
  params = {};
26296
26310
  _ref = Teabag.location.search.substring(1).split("&");
26297
26311
  for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -26338,6 +26352,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26338
26352
 
26339
26353
  fixture.preload = function() {
26340
26354
  var url, urls, _i, _len, _results;
26355
+
26341
26356
  urls = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
26342
26357
  _results = [];
26343
26358
  for (_i = 0, _len = urls.length; _i < _len; _i++) {
@@ -26349,6 +26364,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26349
26364
 
26350
26365
  fixture.load = function() {
26351
26366
  var append, index, url, urls, _i, _j, _len, _results;
26367
+
26352
26368
  urls = 2 <= arguments.length ? __slice.call(arguments, 0, _i = arguments.length - 1) : (_i = 0, []), append = arguments[_i++];
26353
26369
  if (append == null) {
26354
26370
  append = false;
@@ -26367,6 +26383,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26367
26383
 
26368
26384
  fixture.set = function() {
26369
26385
  var append, html, htmls, index, _i, _j, _len, _results;
26386
+
26370
26387
  htmls = 2 <= arguments.length ? __slice.call(arguments, 0, _i = arguments.length - 1) : (_i = 0, []), append = arguments[_i++];
26371
26388
  if (append == null) {
26372
26389
  append = false;
@@ -26399,6 +26416,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26399
26416
 
26400
26417
  load = function(url, append, preload) {
26401
26418
  var cached, value;
26419
+
26402
26420
  if (preload == null) {
26403
26421
  preload = false;
26404
26422
  }
@@ -26460,6 +26478,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26460
26478
 
26461
26479
  create = function() {
26462
26480
  var _ref;
26481
+
26463
26482
  Teabag.fixture.el = document.createElement("div");
26464
26483
  if (typeof window.$ === 'function') {
26465
26484
  Teabag.fixture.$el = $(Teabag.fixture.el);
@@ -26470,6 +26489,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26470
26489
 
26471
26490
  cleanup = function() {
26472
26491
  var _base, _ref, _ref1;
26492
+
26473
26493
  (_base = Teabag.fixture).el || (_base.el = document.getElementById("teabag-fixtures"));
26474
26494
  if ((_ref = Teabag.fixture.el) != null) {
26475
26495
  if ((_ref1 = _ref.parentNode) != null) {
@@ -26480,16 +26500,19 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26480
26500
  };
26481
26501
 
26482
26502
  xhrRequest = function(url, callback) {
26503
+ var e;
26504
+
26483
26505
  if (window.XMLHttpRequest) {
26484
26506
  xhr = new XMLHttpRequest();
26485
26507
  } else if (window.ActiveXObject) {
26486
26508
  try {
26487
26509
  xhr = new ActiveXObject("Msxml2.XMLHTTP");
26488
- } catch (e) {
26510
+ } catch (_error) {
26511
+ e = _error;
26489
26512
  try {
26490
26513
  xhr = new ActiveXObject("Microsoft.XMLHTTP");
26491
- } catch (e) {
26492
-
26514
+ } catch (_error) {
26515
+ e = _error;
26493
26516
  }
26494
26517
  }
26495
26518
  }
@@ -26507,9 +26530,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26507
26530
 
26508
26531
  }).call(this);
26509
26532
  (function() {
26510
-
26511
26533
  Teabag.Reporters.BaseView = (function() {
26512
-
26513
26534
  function BaseView() {
26514
26535
  this.elements = {};
26515
26536
  this.build();
@@ -26529,6 +26550,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26529
26550
 
26530
26551
  BaseView.prototype.createEl = function(type, className) {
26531
26552
  var el;
26553
+
26532
26554
  if (className == null) {
26533
26555
  className = "";
26534
26556
  }
@@ -26539,18 +26561,21 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26539
26561
 
26540
26562
  BaseView.prototype.findEl = function(id) {
26541
26563
  var _base;
26564
+
26542
26565
  this.elements || (this.elements = {});
26543
26566
  return (_base = this.elements)[id] || (_base[id] = document.getElementById("teabag-" + id));
26544
26567
  };
26545
26568
 
26546
26569
  BaseView.prototype.setText = function(id, value) {
26547
26570
  var el;
26571
+
26548
26572
  el = this.findEl(id);
26549
26573
  return el.innerHTML = value;
26550
26574
  };
26551
26575
 
26552
26576
  BaseView.prototype.setHtml = function(id, value, add) {
26553
26577
  var el;
26578
+
26554
26579
  if (add == null) {
26555
26580
  add = false;
26556
26581
  }
@@ -26564,12 +26589,14 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26564
26589
 
26565
26590
  BaseView.prototype.setClass = function(id, value) {
26566
26591
  var el;
26592
+
26567
26593
  el = this.findEl(id);
26568
26594
  return el.className = value;
26569
26595
  };
26570
26596
 
26571
26597
  BaseView.prototype.htmlSafe = function(str) {
26572
26598
  var el;
26599
+
26573
26600
  el = document.createElement("div");
26574
26601
  el.appendChild(document.createTextNode(str));
26575
26602
  return el.innerHTML;
@@ -26586,14 +26613,11 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26586
26613
  __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
26587
26614
 
26588
26615
  Teabag.Reporters.HTML = (function(_super) {
26589
-
26590
26616
  __extends(HTML, _super);
26591
26617
 
26592
26618
  function HTML() {
26593
26619
  this.toggleConfig = __bind(this.toggleConfig, this);
26594
-
26595
- this.reportRunnerResults = __bind(this.reportRunnerResults, this);
26596
- this.start = new Teabag.Date().getTime();
26620
+ this.reportRunnerResults = __bind(this.reportRunnerResults, this); this.start = new Teabag.Date().getTime();
26597
26621
  this.config = {
26598
26622
  "use-catch": true,
26599
26623
  "build-full-report": false,
@@ -26618,6 +26642,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26618
26642
 
26619
26643
  HTML.prototype.build = function() {
26620
26644
  var _ref;
26645
+
26621
26646
  this.buildLayout();
26622
26647
  this.setText("env-info", this.envInfo());
26623
26648
  this.setText("version", Teabag.version);
@@ -26635,6 +26660,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26635
26660
 
26636
26661
  HTML.prototype.buildLayout = function() {
26637
26662
  var el;
26663
+
26638
26664
  el = this.createEl("div");
26639
26665
  el.id = "teabag-interface";
26640
26666
  el.innerHTML = Teabag.Reporters.HTML.template;
@@ -26643,6 +26669,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26643
26669
 
26644
26670
  HTML.prototype.buildSuiteSelect = function() {
26645
26671
  var options, suite, _i, _len, _ref;
26672
+
26646
26673
  if (Teabag.suites.all.length === 1) {
26647
26674
  return "";
26648
26675
  }
@@ -26719,6 +26746,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26719
26746
 
26720
26747
  HTML.prototype.updateStatus = function(spec) {
26721
26748
  var elapsed, result, _ref, _ref1;
26749
+
26722
26750
  spec = new Teabag.Spec(spec);
26723
26751
  result = spec.result();
26724
26752
  if (result.skipped || result.status === "pending") {
@@ -26747,6 +26775,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26747
26775
 
26748
26776
  HTML.prototype.showConfiguration = function() {
26749
26777
  var key, value, _ref, _results;
26778
+
26750
26779
  _ref = this.config;
26751
26780
  _results = [];
26752
26781
  for (key in _ref) {
@@ -26762,6 +26791,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26762
26791
 
26763
26792
  HTML.prototype.setFilters = function() {
26764
26793
  var link;
26794
+
26765
26795
  link = [Teabag.root, Teabag.suites.active].join('/');
26766
26796
  if (Teabag.params["file"]) {
26767
26797
  this.filters.push("<a href='" + link + "'>remove</a> by file: " + Teabag.params["file"]);
@@ -26773,6 +26803,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26773
26803
 
26774
26804
  HTML.prototype.readConfig = function() {
26775
26805
  var config;
26806
+
26776
26807
  if (config = this.cookie("teabag")) {
26777
26808
  return this.config = config;
26778
26809
  }
@@ -26780,6 +26811,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26780
26811
 
26781
26812
  HTML.prototype.toggleConfig = function(e) {
26782
26813
  var button, name;
26814
+
26783
26815
  button = e.target;
26784
26816
  if (button.tagName.toLowerCase() !== "button") {
26785
26817
  return;
@@ -26800,6 +26832,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26800
26832
 
26801
26833
  HTML.prototype.cookie = function(name, value) {
26802
26834
  var date, match;
26835
+
26803
26836
  if (value == null) {
26804
26837
  value = void 0;
26805
26838
  }
@@ -26820,15 +26853,16 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26820
26853
 
26821
26854
  }).call(this);
26822
26855
  (function() {
26823
- var __hasProp = {}.hasOwnProperty,
26856
+ var _ref, _ref1, _ref2,
26857
+ __hasProp = {}.hasOwnProperty,
26824
26858
  __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
26825
26859
 
26826
26860
  Teabag.Reporters.HTML.ProgressView = (function(_super) {
26827
-
26828
26861
  __extends(ProgressView, _super);
26829
26862
 
26830
26863
  function ProgressView() {
26831
- return ProgressView.__super__.constructor.apply(this, arguments);
26864
+ _ref = ProgressView.__super__.constructor.apply(this, arguments);
26865
+ return _ref;
26832
26866
  }
26833
26867
 
26834
26868
  ProgressView.create = function(displayProgress) {
@@ -26856,11 +26890,11 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26856
26890
  })(Teabag.Reporters.BaseView);
26857
26891
 
26858
26892
  Teabag.Reporters.HTML.SimpleProgressView = (function(_super) {
26859
-
26860
26893
  __extends(SimpleProgressView, _super);
26861
26894
 
26862
26895
  function SimpleProgressView() {
26863
- return SimpleProgressView.__super__.constructor.apply(this, arguments);
26896
+ _ref1 = SimpleProgressView.__super__.constructor.apply(this, arguments);
26897
+ return _ref1;
26864
26898
  }
26865
26899
 
26866
26900
  SimpleProgressView.prototype.build = function() {
@@ -26870,6 +26904,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26870
26904
 
26871
26905
  SimpleProgressView.prototype.update = function(total, run) {
26872
26906
  var percent;
26907
+
26873
26908
  percent = total ? Math.ceil((run * 100) / total) : 0;
26874
26909
  return this.setHtml("progress-percent", "" + percent + "%");
26875
26910
  };
@@ -26879,11 +26914,11 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26879
26914
  })(Teabag.Reporters.HTML.ProgressView);
26880
26915
 
26881
26916
  Teabag.Reporters.HTML.RadialProgressView = (function(_super) {
26882
-
26883
26917
  __extends(RadialProgressView, _super);
26884
26918
 
26885
26919
  function RadialProgressView() {
26886
- return RadialProgressView.__super__.constructor.apply(this, arguments);
26920
+ _ref2 = RadialProgressView.__super__.constructor.apply(this, arguments);
26921
+ return _ref2;
26887
26922
  }
26888
26923
 
26889
26924
  RadialProgressView.supported = !!document.createElement("canvas").getContext;
@@ -26894,7 +26929,8 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26894
26929
  };
26895
26930
 
26896
26931
  RadialProgressView.prototype.appendTo = function() {
26897
- var canvas;
26932
+ var canvas, e;
26933
+
26898
26934
  RadialProgressView.__super__.appendTo.apply(this, arguments);
26899
26935
  this.size = 80;
26900
26936
  try {
@@ -26903,13 +26939,14 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26903
26939
  this.ctx = canvas.getContext("2d");
26904
26940
  this.ctx.strokeStyle = "#fff";
26905
26941
  return this.ctx.lineWidth = 1.5;
26906
- } catch (e) {
26907
-
26942
+ } catch (_error) {
26943
+ e = _error;
26908
26944
  }
26909
26945
  };
26910
26946
 
26911
26947
  RadialProgressView.prototype.update = function(total, run) {
26912
26948
  var half, percent;
26949
+
26913
26950
  percent = total ? Math.ceil((run * 100) / total) : 0;
26914
26951
  this.setHtml("progress-percent", "" + percent + "%");
26915
26952
  if (!this.ctx) {
@@ -26949,6 +26986,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26949
26986
 
26950
26987
  SpecView.prototype.build = function() {
26951
26988
  var classes;
26989
+
26952
26990
  classes = ["spec"];
26953
26991
  if (this.spec.pending) {
26954
26992
  classes.push("state-pending");
@@ -26961,6 +26999,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26961
26999
 
26962
27000
  SpecView.prototype.buildParent = function() {
26963
27001
  var parent, view;
27002
+
26964
27003
  parent = this.spec.parent;
26965
27004
  if (parent.viewId) {
26966
27005
  return this.views.suites[parent.viewId];
@@ -26972,6 +27011,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26972
27011
 
26973
27012
  SpecView.prototype.buildErrors = function() {
26974
27013
  var div, error, html, _i, _len, _ref;
27014
+
26975
27015
  div = this.createEl("div");
26976
27016
  html = "";
26977
27017
  _ref = this.spec.errors();
@@ -26985,6 +27025,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
26985
27025
 
26986
27026
  SpecView.prototype.updateState = function(state, elapsed) {
26987
27027
  var classes, result, _base;
27028
+
26988
27029
  result = this.spec.result();
26989
27030
  classes = ["state-" + state];
26990
27031
  if (elapsed > Teabag.slow) {
@@ -27010,7 +27051,6 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
27010
27051
  __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
27011
27052
 
27012
27053
  Teabag.Reporters.HTML.FailureView = (function(_super) {
27013
-
27014
27054
  __extends(FailureView, _super);
27015
27055
 
27016
27056
  function FailureView(spec) {
@@ -27020,6 +27060,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
27020
27060
 
27021
27061
  FailureView.prototype.build = function() {
27022
27062
  var error, html, _i, _len, _ref;
27063
+
27023
27064
  FailureView.__super__.build.call(this, "spec");
27024
27065
  html = "<h1 class=\"teabag-clearfix\"><a href=\"" + this.spec.link + "\">" + this.spec.fullDescription + "</a></h1>";
27025
27066
  _ref = this.spec.errors();
@@ -27065,6 +27106,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
27065
27106
 
27066
27107
  SuiteView.prototype.buildParent = function() {
27067
27108
  var parent, view;
27109
+
27068
27110
  parent = this.suite.parent;
27069
27111
  if (!parent) {
27070
27112
  return this.reporter;
@@ -27086,6 +27128,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
27086
27128
 
27087
27129
  SuiteView.prototype.updateState = function(state) {
27088
27130
  var _base;
27131
+
27089
27132
  if (this.state === "failed") {
27090
27133
  return;
27091
27134
  }
@@ -27102,7 +27145,6 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
27102
27145
 
27103
27146
  }).call(this);
27104
27147
  (function() {
27105
-
27106
27148
  Teabag.Reporters.HTML.template = "<div class=\"teabag-clearfix\">\n <div id=\"teabag-title\">\n <h1><a href=\"\" id=\"teabag-root-link\">Teabag</a></h1>\n <ul>\n <li>version: <b id=\"teabag-version\"></b></li>\n <li id=\"teabag-env-info\"></li>\n </ul>\n </div>\n <div id=\"teabag-progress\"></div>\n <ul id=\"teabag-stats\">\n <li>passes: <b id=\"teabag-stats-passes\">0</b></li>\n <li>failures: <b id=\"teabag-stats-failures\">0</b></li>\n <li>skipped: <b id=\"teabag-stats-skipped\">0</b></li>\n <li>duration: <b id=\"teabag-stats-duration\">&infin;</b></li>\n </ul>\n</div>\n\n<div id=\"teabag-controls\" class=\"teabag-clearfix\">\n <div id=\"teabag-toggles\">\n <button id=\"teabag-use-catch\" title=\"Toggle using try/catch wrappers when possible\">Try/Catch</button>\n <button id=\"teabag-build-full-report\" title=\"Toggle building the full report\">Full Report</button>\n <button id=\"teabag-display-progress\" title=\"Toggle displaying progress as tests run\">Progress</button>\n </div>\n <div id=\"teabag-suites\"></div>\n</div>\n\n<hr/>\n\n<div id=\"teabag-filter\">\n <h1>Filtering</h1>\n <ul id=\"teabag-filter-list\"></ul>\n</div>\n\n<div id=\"teabag-report\">\n <ol id=\"teabag-report-failures\"></ol>\n <ol id=\"teabag-report-all\"></ol>\n</div>";
27107
27149
 
27108
27150
  }).call(this);
@@ -27110,10 +27152,8 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
27110
27152
  var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
27111
27153
 
27112
27154
  Teabag.Reporters.Console = (function() {
27113
-
27114
27155
  function Console() {
27115
- this.reportRunnerResults = __bind(this.reportRunnerResults, this);
27116
- this.start = new Teabag.Date();
27156
+ this.reportRunnerResults = __bind(this.reportRunnerResults, this); this.start = new Teabag.Date();
27117
27157
  this.suites = {};
27118
27158
  }
27119
27159
 
@@ -27127,6 +27167,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
27127
27167
 
27128
27168
  Console.prototype.reportSuites = function() {
27129
27169
  var index, suite, _i, _len, _ref, _results;
27170
+
27130
27171
  _ref = this.spec.getParents();
27131
27172
  _results = [];
27132
27173
  for (index = _i = 0, _len = _ref.length; _i < _len; index = ++_i) {
@@ -27146,6 +27187,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
27146
27187
 
27147
27188
  Console.prototype.reportSpecResults = function(spec) {
27148
27189
  var result;
27190
+
27149
27191
  this.spec = new Teabag.Spec(spec);
27150
27192
  result = this.spec.result();
27151
27193
  if (result.skipped) {
@@ -27170,6 +27212,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
27170
27212
 
27171
27213
  Console.prototype.trackPending = function() {
27172
27214
  var result;
27215
+
27173
27216
  result = this.spec.result();
27174
27217
  return this.log({
27175
27218
  type: "spec",
@@ -27182,6 +27225,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
27182
27225
 
27183
27226
  Console.prototype.trackFailure = function() {
27184
27227
  var error, result, _i, _len, _ref, _results;
27228
+
27185
27229
  result = this.spec.result();
27186
27230
  _ref = this.spec.errors();
27187
27231
  _results = [];
@@ -27229,17 +27273,16 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
27229
27273
  __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
27230
27274
 
27231
27275
  Teabag.Reporters.Console = (function(_super) {
27232
-
27233
27276
  __extends(Console, _super);
27234
27277
 
27235
27278
  function Console() {
27236
- this.bindScenarioOutput = __bind(this.bindScenarioOutput, this);
27237
- Console.__super__.constructor.apply(this, arguments);
27279
+ this.bindScenarioOutput = __bind(this.bindScenarioOutput, this); Console.__super__.constructor.apply(this, arguments);
27238
27280
  angular.scenario.output("teabag", this.bindScenarioOutput);
27239
27281
  }
27240
27282
 
27241
27283
  Console.prototype.bindScenarioOutput = function(context, runner, model) {
27242
27284
  var _this = this;
27285
+
27243
27286
  model.on("runnerBegin", function() {
27244
27287
  return _this.reportRunnerStarting({
27245
27288
  total: angular.scenario.Describe.specId
@@ -27264,17 +27307,16 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
27264
27307
  __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
27265
27308
 
27266
27309
  Teabag.Reporters.HTML = (function(_super) {
27267
-
27268
27310
  __extends(HTML, _super);
27269
27311
 
27270
27312
  function HTML() {
27271
- this.bindScenarioOutput = __bind(this.bindScenarioOutput, this);
27272
- HTML.__super__.constructor.apply(this, arguments);
27313
+ this.bindScenarioOutput = __bind(this.bindScenarioOutput, this); HTML.__super__.constructor.apply(this, arguments);
27273
27314
  angular.scenario.output("teabag", this.bindScenarioOutput);
27274
27315
  }
27275
27316
 
27276
27317
  HTML.prototype.bindScenarioOutput = function(context, runner, model) {
27277
27318
  var _this = this;
27319
+
27278
27320
  model.on("specEnd", function(spec) {
27279
27321
  return _this.reportSpecResults(spec);
27280
27322
  });
@@ -27283,6 +27325,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
27283
27325
  });
27284
27326
  return model.on("runnerBegin", function() {
27285
27327
  var header, specs;
27328
+
27286
27329
  _this.reportRunnerStarting({
27287
27330
  total: angular.scenario.Describe.specId
27288
27331
  });
@@ -27307,15 +27350,16 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
27307
27350
 
27308
27351
  }).call(this);
27309
27352
  (function() {
27310
- var __hasProp = {}.hasOwnProperty,
27353
+ var _ref,
27354
+ __hasProp = {}.hasOwnProperty,
27311
27355
  __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
27312
27356
 
27313
27357
  Teabag.Runner = (function(_super) {
27314
-
27315
27358
  __extends(Runner, _super);
27316
27359
 
27317
27360
  function Runner() {
27318
- return Runner.__super__.constructor.apply(this, arguments);
27361
+ _ref = Runner.__super__.constructor.apply(this, arguments);
27362
+ return _ref;
27319
27363
  }
27320
27364
 
27321
27365
  Runner.prototype.setup = function() {
@@ -27330,7 +27374,6 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
27330
27374
  })(Teabag.Runner);
27331
27375
 
27332
27376
  Teabag.Spec = (function() {
27333
-
27334
27377
  function Spec(spec) {
27335
27378
  this.spec = spec;
27336
27379
  this.fullDescription = "" + this.spec.fullDefinitionName + ": " + this.spec.name;
@@ -27347,14 +27390,15 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
27347
27390
  };
27348
27391
 
27349
27392
  Spec.prototype.errors = function() {
27350
- var step, _i, _len, _ref, _results;
27393
+ var step, _i, _len, _ref1, _results;
27394
+
27351
27395
  if (!this.spec.steps) {
27352
27396
  return [];
27353
27397
  }
27354
- _ref = this.spec.steps;
27398
+ _ref1 = this.spec.steps;
27355
27399
  _results = [];
27356
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
27357
- step = _ref[_i];
27400
+ for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
27401
+ step = _ref1[_i];
27358
27402
  if (step.status === "success") {
27359
27403
  continue;
27360
27404
  }
@@ -27368,6 +27412,7 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
27368
27412
 
27369
27413
  Spec.prototype.result = function() {
27370
27414
  var status;
27415
+
27371
27416
  status = "failed";
27372
27417
  if (this.spec.status === "success") {
27373
27418
  status = "passed";
@@ -27383,7 +27428,6 @@ angular.element(document).find('head').append('<style type="text/css">@charset "
27383
27428
  })();
27384
27429
 
27385
27430
  Teabag.Suite = (function() {
27386
-
27387
27431
  function Suite(suite) {
27388
27432
  this.suite = suite;
27389
27433
  this.fullDescription = this.suite.fullDefinitionName;