teabag 0.7.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. data/README.md +40 -13
  2. data/app/assets/javascripts/teabag-jasmine.js +75 -38
  3. data/lib/generators/teabag/install/templates/env.rb +3 -2
  4. data/lib/teabag/command_line.rb +4 -0
  5. data/lib/teabag/configuration.rb +3 -2
  6. data/lib/teabag/formatters/base_formatter.rb +6 -1
  7. data/lib/teabag/formatters/tap_formatter.rb +47 -0
  8. data/lib/teabag/instrumentation.rb +1 -1
  9. data/lib/teabag/runner.rb +11 -1
  10. data/lib/teabag/server.rb +2 -1
  11. data/lib/teabag/version.rb +1 -1
  12. data/spec/dummy/log/development.log +11151 -0
  13. data/spec/dummy/log/test.log +1359 -0
  14. data/spec/dummy/tmp/cache/assets/C35/A30/sprockets%2F29906bf540f7d2e081088494b2554989 +0 -0
  15. data/spec/dummy/tmp/cache/assets/C4E/9B0/sprockets%2Fa807397434c9262c3d62da3e91152184 +0 -0
  16. data/spec/dummy/tmp/cache/assets/C59/250/sprockets%2Fa80d3fe493d2476e58c4323996064512 +0 -0
  17. data/spec/dummy/tmp/cache/assets/C75/D50/sprockets%2F5302968a40e08d2c011aa38666d273f6 +0 -0
  18. data/spec/dummy/tmp/cache/assets/C78/F80/sprockets%2F9161622ddd251097a4ab816b8220984c +0 -0
  19. data/spec/dummy/tmp/cache/assets/C7A/EC0/sprockets%2F5c16e4214f5662e1b27932a57c43491b +0 -0
  20. data/spec/dummy/tmp/cache/assets/C89/700/sprockets%2F259935a7704fef0069303ea63fa89408 +0 -0
  21. data/spec/dummy/tmp/cache/assets/C8A/460/sprockets%2F77bffd9959420103906722b404ae8d59 +0 -0
  22. data/spec/dummy/tmp/cache/assets/C91/FA0/sprockets%2F2eb81283f5789ae91a69344552db3856 +0 -0
  23. data/spec/dummy/tmp/cache/assets/C9D/E90/sprockets%2F3045c9533f179d3e1c805d163ed002a0 +0 -0
  24. data/spec/dummy/tmp/cache/assets/CA6/DF0/sprockets%2F7da83747ce56e49393b6b8726587f846 +0 -0
  25. data/spec/dummy/tmp/cache/assets/CA9/C40/sprockets%2F932b7e2cd1e067289ab51190800814df +0 -0
  26. data/spec/dummy/tmp/cache/assets/CAA/0C0/sprockets%2F057b0ce384f16d9202ae84473436cc35 +0 -0
  27. data/spec/dummy/tmp/cache/assets/CAD/410/sprockets%2F651414e5c7e86f05c5108dc71626b25c +0 -0
  28. data/spec/dummy/tmp/cache/assets/CAF/0F0/sprockets%2F6000e67cf3f2377f860c24da7c819701 +0 -0
  29. data/spec/dummy/tmp/cache/assets/CB0/700/sprockets%2F006af6bf0f6b55777b03c4615c853881 +0 -0
  30. data/spec/dummy/tmp/cache/assets/CB1/B50/sprockets%2F44b5b96ee7652d66a217a1756431c4a8 +0 -0
  31. data/spec/dummy/tmp/cache/assets/CB5/E60/sprockets%2Ff0f2b623b42840839e37f5ed055f5482 +0 -0
  32. data/spec/dummy/tmp/cache/assets/CBB/FA0/sprockets%2F74922109263bdc965b2e9567eec6d154 +0 -0
  33. data/spec/dummy/tmp/cache/assets/CBD/AF0/sprockets%2Fd687ec33822256e9444e8cd04f1b4873 +0 -0
  34. data/spec/dummy/tmp/cache/assets/CBF/630/sprockets%2F707d2db81468088470d476abff35388d +0 -0
  35. data/spec/dummy/tmp/cache/assets/CC2/EC0/sprockets%2F76bf80cb571ca530357f78db78167866 +0 -0
  36. data/spec/dummy/tmp/cache/assets/CCE/C50/sprockets%2Fe12774c2fea852112414bb379a71f31a +0 -0
  37. data/spec/dummy/tmp/cache/assets/CD3/460/sprockets%2F7f3f6802b0b309ed142d0b671c9640c4 +0 -0
  38. data/spec/dummy/tmp/cache/assets/CD7/A40/sprockets%2Fa1c29a904e41680053e79b63a14cfa58 +0 -0
  39. data/spec/dummy/tmp/cache/assets/CD9/DD0/sprockets%2Fe5774759168a731da1c1149ecf0e1b03 +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/CF4/6C0/sprockets%2F087d4a99adae6d6972937a2e57e93504 +0 -0
  49. data/spec/dummy/tmp/cache/assets/CF4/6F0/sprockets%2Fed96f92571224b862b84d7078b86ded3 +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/CFC/380/sprockets%2Fa7443cbd671446a589867dd5f4a4f989 +0 -0
  53. data/spec/dummy/tmp/cache/assets/D00/110/sprockets%2F6a6353b7723a8b21708e0fbfe04bd422 +0 -0
  54. data/spec/dummy/tmp/cache/assets/D03/630/sprockets%2F5d8da32dba6a7be70426a1d554773701 +0 -0
  55. data/spec/dummy/tmp/cache/assets/D04/170/sprockets%2F76ab1dc02e6c7618852708a1e05a2df3 +0 -0
  56. data/spec/dummy/tmp/cache/assets/D04/480/sprockets%2F8bd8f10500b21d2f9d94e4cd1401c936 +0 -0
  57. data/spec/dummy/tmp/cache/assets/D05/8D0/sprockets%2F319f8f235f452343f1ebf03cb262d23d +0 -0
  58. data/spec/dummy/tmp/cache/assets/D09/BF0/sprockets%2F9e6bca5d26f50d9484385d51ba04312c +0 -0
  59. data/spec/dummy/tmp/cache/assets/D0E/570/sprockets%2F90fe371bf8091e88a712124d9cdae260 +0 -0
  60. data/spec/dummy/tmp/cache/assets/D15/750/sprockets%2F8effdd3e668a4036260a3e370f3b6657 +0 -0
  61. data/spec/dummy/tmp/cache/assets/D17/710/sprockets%2Ffa49fb6823d466e79a195e0cd71340c5 +0 -0
  62. data/spec/dummy/tmp/cache/assets/D1A/D30/sprockets%2F815a5177e9edba0c5c996182ef1b3675 +0 -0
  63. data/spec/dummy/tmp/cache/assets/D1D/560/sprockets%2F1ca784ee7ba1922465147e7f8963eae5 +0 -0
  64. data/spec/dummy/tmp/cache/assets/D1E/AA0/sprockets%2F5c8741a556bc955cd36e61c88582b6dc +0 -0
  65. data/spec/dummy/tmp/cache/assets/D31/9C0/sprockets%2Fbd102a4f5a4985c3519dd6ab0295a1c6 +0 -0
  66. data/spec/dummy/tmp/cache/assets/D35/7C0/sprockets%2Ff536a2606eaf7d542c0985104cb62baf +0 -0
  67. data/spec/dummy/tmp/cache/assets/D37/FF0/sprockets%2F96841ca4cfae32c515077f3f5fc303b2 +0 -0
  68. data/spec/dummy/tmp/cache/assets/D3C/840/sprockets%2Fc6202ec91d567a85bd3d46dc43ea9108 +0 -0
  69. data/spec/dummy/tmp/cache/assets/D44/E90/sprockets%2F05cfc0bf7c9938963d1d1c63248db80d +0 -0
  70. data/spec/dummy/tmp/cache/assets/D45/C30/sprockets%2Fcc744877558178a3adb77c441cadce70 +0 -0
  71. data/spec/dummy/tmp/cache/assets/D47/A90/sprockets%2Fe7ca382b607c595ea6505853f7fb63da +0 -0
  72. data/spec/dummy/tmp/cache/assets/D49/1F0/sprockets%2F773b56f87127c6605e7d1d3faf2b6af6 +0 -0
  73. data/spec/dummy/tmp/cache/assets/D49/A10/sprockets%2Fc4656bd995a6f297c26d19b13aadb963 +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/D5E/FA0/sprockets%2Fc81c371ae2d61a6aa1708262fba79e0d +0 -0
  79. data/spec/dummy/tmp/cache/assets/D61/1F0/sprockets%2F0c7a6176d2fc4db00bb9a74d36380fe1 +0 -0
  80. data/spec/dummy/tmp/cache/assets/D67/BC0/sprockets%2F35d2c2b45981ade5a2db2a9c7f37a615 +0 -0
  81. data/spec/dummy/tmp/cache/assets/D69/F90/sprockets%2F6a0795b7b38bd7e6142cd1b88211dade +0 -0
  82. data/spec/dummy/tmp/cache/assets/D6A/950/sprockets%2F429b1806cb7580ebf29f9a12c33cbea6 +0 -0
  83. data/spec/dummy/tmp/cache/assets/D6B/890/sprockets%2Fe1317822fdcc5580f1e50c9b91c6e5bb +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/D7E/C10/sprockets%2F747c98c3cc7494a62dd882752adffb2b +0 -0
  88. data/spec/dummy/tmp/cache/assets/D8C/520/sprockets%2F221cd58a042baac534d27e4cfedc1188 +0 -0
  89. data/spec/dummy/tmp/cache/assets/D93/BD0/sprockets%2Ff5e1b60201e08e3ddf8d3de5211f3d5e +0 -0
  90. data/spec/dummy/tmp/cache/assets/DA0/330/sprockets%2Fcbbb4de706387d50f48a72ee6c9c1b80 +0 -0
  91. data/spec/dummy/tmp/cache/assets/DA4/320/sprockets%2F7fd0ad444f4a16b359bdbfe0977bb874 +0 -0
  92. data/spec/dummy/tmp/cache/assets/DA5/0A0/sprockets%2F7a4b5928cec69ab65afff309a04d6b47 +0 -0
  93. data/spec/dummy/tmp/cache/assets/DAD/1F0/sprockets%2Fdf7609630657aee0ebe5ed61e929d5dd +0 -0
  94. data/spec/dummy/tmp/cache/assets/DAE/6C0/sprockets%2F77c7a8676aeefa73156c55dfcf51cc46 +0 -0
  95. data/spec/dummy/tmp/cache/assets/DBC/A20/sprockets%2Fec46fb30cecc002128c61fb49cf30da8 +0 -0
  96. data/spec/dummy/tmp/cache/assets/DC4/CA0/sprockets%2Fdbcd5b5132f1ec3ff0e7e7db19190f03 +0 -0
  97. data/spec/dummy/tmp/cache/assets/DC7/A10/sprockets%2F84a8af0fcbf401864e1ae5bf092cba94 +0 -0
  98. data/spec/dummy/tmp/cache/assets/DE4/140/sprockets%2F139e4ab85d1aacb22c115fa136afdc8a +0 -0
  99. data/spec/dummy/tmp/cache/assets/DEB/110/sprockets%2F2dbdab0ce5babca645cdb5780004f875 +0 -0
  100. data/spec/dummy/tmp/cache/assets/DF7/E10/sprockets%2F25e4253aba9a9adcefb72552fb1ff0c8 +0 -0
  101. data/spec/dummy/tmp/cache/assets/DFC/C20/sprockets%2Fd9178ad7e3b401c9fceafd64ea2b50d6 +0 -0
  102. data/spec/dummy/tmp/cache/assets/DFC/C30/sprockets%2Fb50a07cb30b0bd0eec8e98e5de79d65d +0 -0
  103. data/spec/dummy/tmp/cache/assets/E02/6E0/sprockets%2F63d6a5cdb8cefa64ef76b5c6e0fd3720 +0 -0
  104. data/spec/dummy/tmp/cache/assets/E08/BB0/sprockets%2Fefac99af1af28543aef6fb607faa4973 +0 -0
  105. data/spec/dummy/tmp/cache/assets/E08/F20/sprockets%2F4fc5cdcd6974efe7adfe809b30bd6513 +0 -0
  106. data/spec/dummy/tmp/cache/assets/E16/D30/sprockets%2Fd69469e6e7439baacd8df989c0fdacc2 +0 -0
  107. data/spec/dummy/tmp/cache/assets/E17/EF0/sprockets%2Fa291ad64a26afd055dfadabbdf03f154 +0 -0
  108. data/spec/dummy/tmp/cache/assets/E2F/790/sprockets%2F7fac280deaa7ef20a77d5c9b5b9cfc34 +0 -0
  109. data/spec/dummy/tmp/cache/assets/E36/A40/sprockets%2Ff3477eebd69a4f1b8fbdd3f9ef2ba242 +0 -0
  110. data/spec/dummy/tmp/cache/assets/E41/250/sprockets%2F97cf8fe3d7ffaff076f655aefb36da03 +0 -0
  111. data/spec/dummy/tmp/cache/assets/E64/1E0/sprockets%2F81ab4c863fbbdec8dd66afc97ebf034d +0 -0
  112. data/spec/dummy/tmp/cache/assets/E6E/260/sprockets%2Fd9f8ab8b91ef582cc6c99a3ba0dedfe6 +0 -0
  113. data/spec/dummy/tmp/cache/assets/F79/360/sprockets%2F0ce035fefee5ebdabc8efabfbdbd6ee4 +0 -0
  114. data/spec/spec_helper.rb +2 -2
  115. data/spec/teabag/configuration_spec.rb +4 -0
  116. data/spec/teabag/formatters/base_formatter_spec.rb +1 -1
  117. data/spec/teabag/formatters/tap_formatter_spec.rb +124 -0
  118. data/spec/teabag/instrumentation_spec.rb +7 -4
  119. data/spec/teabag/runner_spec.rb +27 -3
  120. data/spec/teabag/server_spec.rb +20 -0
  121. metadata +11 -4
data/README.md CHANGED
@@ -5,9 +5,9 @@ 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
 
8
- It's objective is to be the simplest, while also being the most complete Javascript testing solution for Rails. It takes full advantage of the asset pipeline and ships with support for Jasmine, Mocha and QUnit.
8
+ It's objective is to be the simplest, while also being the most complete Javascript testing solution for Rails. It takes full advantage of the asset pipeline and ships with support for Jasmine, Mocha, QUnit, and (experiementally) Angular.
9
9
 
10
- Ok, another Javascript test runner, right? Really? Yeah, that's tough, but we're pretty confident Teabag is one of the nicest you'll find at the moment. And if you disagree, you can swing by our offices in Denver and we'll buy you a beer if you're so inclined -- and probably fix whatever it is that you didn't like.
10
+ Ok, another Javascript test runner, right? Really? Yeah, that's tough, but we're pretty confident Teabag is one of the nicest and most full featured you'll find at the moment. And if you disagree, let us know and we'll probably fix whatever it is that you didn't like.
11
11
 
12
12
  Feedback, ideas and pull requests are always welcome, or you can hit us up on Twitter [@modeset_](https://twitter.com/modeset_).
13
13
 
@@ -86,7 +86,7 @@ rake teabag suite=my_fantastic_suite
86
86
 
87
87
  ### Command Line Interface
88
88
 
89
- The command line interface requires a teabag_env.rb file that you can get by running the generator. This file is used to load the Rails environment so Teabag can run within the context of Rails.
89
+ The command line interface requires a `teabag_env.rb` file that you can get by running the generator. This file is used to load the Rails environment so Teabag can run within the context of Rails. This file can be in the spec, test, or root path -- but can be specified using the `--require` option.
90
90
 
91
91
  ```
92
92
  bundle exec teabag
@@ -135,7 +135,7 @@ describe("My great feature", function() {
135
135
  });
136
136
  ```
137
137
 
138
- Check out examples of a [Mocha Spec](https://github.com/modeset/teabag/wiki/Using-Mocha) and a [QUnit Test](https://github.com/modeset/teabag/wiki/Using-QUnit).
138
+ Check out examples of a [Mocha Spec](https://github.com/modeset/teabag/wiki/Using-Mocha), a [QUnit Test](https://github.com/modeset/teabag/wiki/Using-QUnit), and an [Angular Test](https://github.com/modeset/teabag/wiki/Using-Angular).
139
139
 
140
140
  ### Pending Specs
141
141
 
@@ -171,7 +171,7 @@ setTimeout(Teabag.execute, 1000); // defers execution for 1 second
171
171
 
172
172
  ## Fixtures
173
173
 
174
- You're free to use your own fixture library (like jasmine-jquery, which we've included as a support library), but Teabag ships with a fixture library that works with Jasmine, Mocha, and QUnit with a minimum of effort and a nice consistent API.
174
+ You're free to use your own fixture library (like jasmine-jquery, which we've included as a support library), but Teabag ships with a fixture library that works with Jasmine, Mocha, and QUnit with a minimum of effort, has a nice consistent API, and isn't dependent on jQuery.
175
175
 
176
176
  The fixture path is configurable within Teabag, and the views will be rendered by a standard controller. This allows you to use things like RABL/JBuilder if you're building JSON, or HAML if you're building markup. The element that Teabag creates is "#teabag-fixtures", in case you need to access it directly -- or you can access it via `fixture.el` after loading fixtures.
177
177
 
@@ -217,7 +217,7 @@ describe "Using fixtures", ->
217
217
  expect(@fixtures[1]).toEqual(fixture.json[0]) # the json for json fixtures is returned, and available in fixture.json
218
218
  ```
219
219
 
220
- Check out an example of using fixtures with [Mocha](https://github.com/modeset/teabag/wiki/Using-Mocha) and [QUnit](https://github.com/modeset/teabag/wiki/Using-QUnit).
220
+ Check out some example of using fixtures with [Mocha](https://github.com/modeset/teabag/wiki/Using-Mocha), [QUnit](https://github.com/modeset/teabag/wiki/Using-QUnit), and [Angular](https://github.com/modeset/teabag/wiki/Using-Angular).
221
221
 
222
222
 
223
223
  ## Coverage
@@ -249,7 +249,7 @@ All files | 93.75 | 75 | 94.12 | 93.65 |
249
249
 
250
250
  Teabag uses the concept of suites to group your tests at a high level. These suites are run in isolation from one another, and can have different configurations. You can define suites in the configuration, and for brevity `config` is the argument passed to the `Teabag.setup` block.
251
251
 
252
- When creating a suite, provide a name (optional) and a block. The following example defines a suite named "my_suite". You can focus to just this suite by browsing to `/teabag/my_suite` or running the rake task with `suite=my_suite`.
252
+ When creating a suite, provide a name (optional) and a block. The following example defines a suite named "my_suite". You can focus run this suite by browsing to `/teabag/my_suite` or running the rake task with `suite=my_suite`.
253
253
 
254
254
  ```ruby
255
255
  config.suite :my_suite do |suite|
@@ -265,11 +265,11 @@ config.suite do |suite|
265
265
  end
266
266
  ```
267
267
 
268
- **Note:** Suites don't inherit from the default suite, but instead always fall back to the defaults outlined below.
268
+ **Note:** Suites inherit from the default suite, so default configuration will propagate to all other suites.
269
269
 
270
270
  ### Manifest Style
271
271
 
272
- Teabag is happy to look for files for you, but you can disable this feature and maintain a manifest yourself. Each suite can utilize a different spec helper and you can use these to create your own manifest using the `= require` directive. This limits your abilities to run specific files from the command line interface, but it's available if you want to use it.
272
+ Teabag is happy to look for files for you, but you can disable this feature and maintain a manifest yourself. Each suite can utilize a different spec helper and you can use these to create your own manifest using the `= require` directive. This isn't recommended because it limits your abilities to run specific files from the command line interface, but it's available if you want to use it.
273
273
 
274
274
  Tell the suite that you don't want it to match any files, and then require files in your spec helper.
275
275
 
@@ -310,6 +310,8 @@ end
310
310
  <dt> stylesheets </dt><dd>
311
311
  If you want to change how Teabag looks, or include your own stylesheets you can do that here. The default is the stylesheet for the HTML reporter.<br/><br/>
312
312
 
313
+ <b>Note:</b> Spec related CSS can and should be loaded using fixtures.
314
+
313
315
  <b>default:</b> <code>["teabag"]</code>
314
316
  </dd>
315
317
 
@@ -327,7 +329,7 @@ end
327
329
 
328
330
  The best way to read about the configuration options is to generate the initializer and env, but we've included the info here as well.
329
331
 
330
- **Note:** `Teabag.setup` may not be available in all environments. The generator wraps it within a check.
332
+ **Note:** `Teabag.setup` may not be available in all environments, so the generator wraps it within a check.
331
333
 
332
334
  <dl>
333
335
 
@@ -377,6 +379,16 @@ These configuration directives are applicable only when running via the rake tas
377
379
  </ul>
378
380
  </dd>
379
381
 
382
+ <dt> server </dt><dd>
383
+ Specify a server to use with Rack (eg. thin, mongrel). If nil is provided Rack::Server is used.<br/><br/>
384
+
385
+ <b>default:</b> <code>nil</code>
386
+
387
+ <ul>
388
+ <li>CLI: --server SERVER</li>
389
+ <li>ENV: SERVER=thin</li>
390
+ </ul>
391
+ </dd>
380
392
 
381
393
  <dt> server_timeout </dt><dd>
382
394
  Timeout for starting the server in seconds. If your server is slow to start you may have to bump this, or you may want to lower this if you know it shouldn't take long to start.<br/><br/>
@@ -389,7 +401,6 @@ These configuration directives are applicable only when running via the rake tas
389
401
  </ul>
390
402
  </dd>
391
403
 
392
-
393
404
  <dt> server_port </dt><dd>
394
405
  By default Teabag will locate an open port when starting the server, but if you want to run on a specific port you can do so by providing one.<br/><br/>
395
406
 
@@ -416,7 +427,7 @@ These configuration directives are applicable only when running via the rake tas
416
427
  <dt> formatters </dt><dd>
417
428
  You can specify the formatters that Teabag will use when outputting the results.<br/><br/>
418
429
 
419
- <b>available:</b> dot, tap_y, swayze_or_oprah<br/>
430
+ <b>available:</b> dot, tap, tap_y, swayze_or_oprah<br/>
420
431
  <b>default:</b> <code>"dot"</code>
421
432
 
422
433
  <ul>
@@ -481,6 +492,8 @@ These configuration directives are applicable only when running via the rake tas
481
492
 
482
493
  [QUnit](http://qunitjs.com) We're not sure about how many people use QUnit, but we like jQuery, so we added it. Read more about [Using QUnit](https://github.com/modeset/teabag/wiki/Using-QUnit) with Teabag.
483
494
 
495
+ [Angular](http://angularjs.org/) This is an experimental addition, and feedback is needed. Read more about [Using Angular](https://github.com/modeset/teabag/wiki/Using-Angular) with Teabag.
496
+
484
497
 
485
498
  ## Support Libraries
486
499
 
@@ -490,6 +503,7 @@ We know that testing usually requires more than just the test framework, so we'v
490
503
  - [ChaiJS](http://chaijs.com/) BDD / TDD assertion library for node and the browser that can be delightfully paired with any javascript testing framework.
491
504
  - [expect.js](https://github.com/LearnBoost/expect.js) Minimalistic BDD assertion toolkit based on should.js.
492
505
  - [jasmine-jquery.js](https://github.com/velesin/jasmine-jquery) A set of custom matchers for jQuery, and an API for handling HTML fixtures in your specs.
506
+ - [angular-scenario.js](https://github.com/angular/angular.js) Angular test setup.
493
507
 
494
508
  You can require these files in your spec helper by using:
495
509
 
@@ -498,6 +512,7 @@ You can require these files in your spec helper by using:
498
512
  //=require support/chai
499
513
  //=require support/expect
500
514
  //=require support/jasmine-jquery
515
+ //=require support/angular-scenario
501
516
  ```
502
517
 
503
518
 
@@ -507,7 +522,19 @@ Teabag works great on CI setups. If you're using TravisCI it just works, but if
507
522
 
508
523
  If you want to generate reports that CI can use you can install istanbul for coverage reports -- and output the report using the cobertura format, which Hudson can read.
509
524
 
510
- Again on hudson compatibile CI setups, you can track spec failure information/rate tracking by using tapout to generate a tap report that can then be parsed by hudson.
525
+ Again on hudson compatibile CI setups, you can track spec failure information/rate tracking by using the tap formatter, which can be parsed by hudson.
526
+
527
+ A good setup:
528
+
529
+ ```
530
+ teabag -q --coverage-reports=cobertura --format=tap
531
+ ```
532
+
533
+ Or using Rake/ENV:
534
+
535
+ ```
536
+ SUPPRESS_LOG=true COVERAGE_REPORTS=cobertura FORMATTERS=tap rake
537
+ ```
511
538
 
512
539
 
513
540
  ## License
@@ -2601,9 +2601,7 @@ jasmine.version_= {
2601
2601
  "revision": 1354556913
2602
2602
  };
2603
2603
  (function() {
2604
-
2605
2604
  this.Teabag = (function() {
2606
-
2607
2605
  function Teabag() {}
2608
2606
 
2609
2607
  Teabag.defer = false;
@@ -2635,6 +2633,7 @@ jasmine.version_= {
2635
2633
 
2636
2634
  Teabag.resolveDependenciesFromParams = function(all) {
2637
2635
  var dep, deps, file, parts, path, paths, _i, _j, _len, _len1;
2636
+
2638
2637
  if (all == null) {
2639
2638
  all = [];
2640
2639
  }
@@ -2660,16 +2659,20 @@ jasmine.version_= {
2660
2659
  };
2661
2660
 
2662
2661
  Teabag.log = function() {
2662
+ var e;
2663
+
2663
2664
  this.messages.push(arguments[0]);
2664
2665
  try {
2665
2666
  return console.log.apply(console, arguments);
2666
- } catch (e) {
2667
+ } catch (_error) {
2668
+ e = _error;
2667
2669
  throw new Error("Unable to use console.log for logging");
2668
2670
  }
2669
2671
  };
2670
2672
 
2671
2673
  Teabag.getMessages = function() {
2672
2674
  var messages;
2675
+
2673
2676
  messages = this.messages;
2674
2677
  this.messages = [];
2675
2678
  return messages;
@@ -2681,9 +2684,7 @@ jasmine.version_= {
2681
2684
 
2682
2685
  }).call(this);
2683
2686
  (function() {
2684
-
2685
2687
  Teabag.Runner = (function() {
2686
-
2687
2688
  Runner.run = false;
2688
2689
 
2689
2690
  function Runner() {
@@ -2698,6 +2699,7 @@ jasmine.version_= {
2698
2699
 
2699
2700
  Runner.prototype.getParams = function() {
2700
2701
  var name, param, params, value, _i, _len, _ref, _ref1;
2702
+
2701
2703
  params = {};
2702
2704
  _ref = Teabag.location.search.substring(1).split("&");
2703
2705
  for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -2744,6 +2746,7 @@ jasmine.version_= {
2744
2746
 
2745
2747
  fixture.preload = function() {
2746
2748
  var url, urls, _i, _len, _results;
2749
+
2747
2750
  urls = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
2748
2751
  _results = [];
2749
2752
  for (_i = 0, _len = urls.length; _i < _len; _i++) {
@@ -2755,6 +2758,7 @@ jasmine.version_= {
2755
2758
 
2756
2759
  fixture.load = function() {
2757
2760
  var append, index, url, urls, _i, _j, _len, _results;
2761
+
2758
2762
  urls = 2 <= arguments.length ? __slice.call(arguments, 0, _i = arguments.length - 1) : (_i = 0, []), append = arguments[_i++];
2759
2763
  if (append == null) {
2760
2764
  append = false;
@@ -2773,6 +2777,7 @@ jasmine.version_= {
2773
2777
 
2774
2778
  fixture.set = function() {
2775
2779
  var append, html, htmls, index, _i, _j, _len, _results;
2780
+
2776
2781
  htmls = 2 <= arguments.length ? __slice.call(arguments, 0, _i = arguments.length - 1) : (_i = 0, []), append = arguments[_i++];
2777
2782
  if (append == null) {
2778
2783
  append = false;
@@ -2805,6 +2810,7 @@ jasmine.version_= {
2805
2810
 
2806
2811
  load = function(url, append, preload) {
2807
2812
  var cached, value;
2813
+
2808
2814
  if (preload == null) {
2809
2815
  preload = false;
2810
2816
  }
@@ -2866,6 +2872,7 @@ jasmine.version_= {
2866
2872
 
2867
2873
  create = function() {
2868
2874
  var _ref;
2875
+
2869
2876
  Teabag.fixture.el = document.createElement("div");
2870
2877
  if (typeof window.$ === 'function') {
2871
2878
  Teabag.fixture.$el = $(Teabag.fixture.el);
@@ -2876,6 +2883,7 @@ jasmine.version_= {
2876
2883
 
2877
2884
  cleanup = function() {
2878
2885
  var _base, _ref, _ref1;
2886
+
2879
2887
  (_base = Teabag.fixture).el || (_base.el = document.getElementById("teabag-fixtures"));
2880
2888
  if ((_ref = Teabag.fixture.el) != null) {
2881
2889
  if ((_ref1 = _ref.parentNode) != null) {
@@ -2886,16 +2894,19 @@ jasmine.version_= {
2886
2894
  };
2887
2895
 
2888
2896
  xhrRequest = function(url, callback) {
2897
+ var e;
2898
+
2889
2899
  if (window.XMLHttpRequest) {
2890
2900
  xhr = new XMLHttpRequest();
2891
2901
  } else if (window.ActiveXObject) {
2892
2902
  try {
2893
2903
  xhr = new ActiveXObject("Msxml2.XMLHTTP");
2894
- } catch (e) {
2904
+ } catch (_error) {
2905
+ e = _error;
2895
2906
  try {
2896
2907
  xhr = new ActiveXObject("Microsoft.XMLHTTP");
2897
- } catch (e) {
2898
-
2908
+ } catch (_error) {
2909
+ e = _error;
2899
2910
  }
2900
2911
  }
2901
2912
  }
@@ -2913,9 +2924,7 @@ jasmine.version_= {
2913
2924
 
2914
2925
  }).call(this);
2915
2926
  (function() {
2916
-
2917
2927
  Teabag.Reporters.BaseView = (function() {
2918
-
2919
2928
  function BaseView() {
2920
2929
  this.elements = {};
2921
2930
  this.build();
@@ -2935,6 +2944,7 @@ jasmine.version_= {
2935
2944
 
2936
2945
  BaseView.prototype.createEl = function(type, className) {
2937
2946
  var el;
2947
+
2938
2948
  if (className == null) {
2939
2949
  className = "";
2940
2950
  }
@@ -2945,18 +2955,21 @@ jasmine.version_= {
2945
2955
 
2946
2956
  BaseView.prototype.findEl = function(id) {
2947
2957
  var _base;
2958
+
2948
2959
  this.elements || (this.elements = {});
2949
2960
  return (_base = this.elements)[id] || (_base[id] = document.getElementById("teabag-" + id));
2950
2961
  };
2951
2962
 
2952
2963
  BaseView.prototype.setText = function(id, value) {
2953
2964
  var el;
2965
+
2954
2966
  el = this.findEl(id);
2955
2967
  return el.innerHTML = value;
2956
2968
  };
2957
2969
 
2958
2970
  BaseView.prototype.setHtml = function(id, value, add) {
2959
2971
  var el;
2972
+
2960
2973
  if (add == null) {
2961
2974
  add = false;
2962
2975
  }
@@ -2970,12 +2983,14 @@ jasmine.version_= {
2970
2983
 
2971
2984
  BaseView.prototype.setClass = function(id, value) {
2972
2985
  var el;
2986
+
2973
2987
  el = this.findEl(id);
2974
2988
  return el.className = value;
2975
2989
  };
2976
2990
 
2977
2991
  BaseView.prototype.htmlSafe = function(str) {
2978
2992
  var el;
2993
+
2979
2994
  el = document.createElement("div");
2980
2995
  el.appendChild(document.createTextNode(str));
2981
2996
  return el.innerHTML;
@@ -2992,14 +3007,11 @@ jasmine.version_= {
2992
3007
  __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; };
2993
3008
 
2994
3009
  Teabag.Reporters.HTML = (function(_super) {
2995
-
2996
3010
  __extends(HTML, _super);
2997
3011
 
2998
3012
  function HTML() {
2999
3013
  this.toggleConfig = __bind(this.toggleConfig, this);
3000
-
3001
- this.reportRunnerResults = __bind(this.reportRunnerResults, this);
3002
- this.start = new Teabag.Date().getTime();
3014
+ this.reportRunnerResults = __bind(this.reportRunnerResults, this); this.start = new Teabag.Date().getTime();
3003
3015
  this.config = {
3004
3016
  "use-catch": true,
3005
3017
  "build-full-report": false,
@@ -3024,6 +3036,7 @@ jasmine.version_= {
3024
3036
 
3025
3037
  HTML.prototype.build = function() {
3026
3038
  var _ref;
3039
+
3027
3040
  this.buildLayout();
3028
3041
  this.setText("env-info", this.envInfo());
3029
3042
  this.setText("version", Teabag.version);
@@ -3041,6 +3054,7 @@ jasmine.version_= {
3041
3054
 
3042
3055
  HTML.prototype.buildLayout = function() {
3043
3056
  var el;
3057
+
3044
3058
  el = this.createEl("div");
3045
3059
  el.id = "teabag-interface";
3046
3060
  el.innerHTML = Teabag.Reporters.HTML.template;
@@ -3049,6 +3063,7 @@ jasmine.version_= {
3049
3063
 
3050
3064
  HTML.prototype.buildSuiteSelect = function() {
3051
3065
  var options, suite, _i, _len, _ref;
3066
+
3052
3067
  if (Teabag.suites.all.length === 1) {
3053
3068
  return "";
3054
3069
  }
@@ -3125,6 +3140,7 @@ jasmine.version_= {
3125
3140
 
3126
3141
  HTML.prototype.updateStatus = function(spec) {
3127
3142
  var elapsed, result, _ref, _ref1;
3143
+
3128
3144
  spec = new Teabag.Spec(spec);
3129
3145
  result = spec.result();
3130
3146
  if (result.skipped || result.status === "pending") {
@@ -3153,6 +3169,7 @@ jasmine.version_= {
3153
3169
 
3154
3170
  HTML.prototype.showConfiguration = function() {
3155
3171
  var key, value, _ref, _results;
3172
+
3156
3173
  _ref = this.config;
3157
3174
  _results = [];
3158
3175
  for (key in _ref) {
@@ -3168,6 +3185,7 @@ jasmine.version_= {
3168
3185
 
3169
3186
  HTML.prototype.setFilters = function() {
3170
3187
  var link;
3188
+
3171
3189
  link = [Teabag.root, Teabag.suites.active].join('/');
3172
3190
  if (Teabag.params["file"]) {
3173
3191
  this.filters.push("<a href='" + link + "'>remove</a> by file: " + Teabag.params["file"]);
@@ -3179,6 +3197,7 @@ jasmine.version_= {
3179
3197
 
3180
3198
  HTML.prototype.readConfig = function() {
3181
3199
  var config;
3200
+
3182
3201
  if (config = this.cookie("teabag")) {
3183
3202
  return this.config = config;
3184
3203
  }
@@ -3186,6 +3205,7 @@ jasmine.version_= {
3186
3205
 
3187
3206
  HTML.prototype.toggleConfig = function(e) {
3188
3207
  var button, name;
3208
+
3189
3209
  button = e.target;
3190
3210
  if (button.tagName.toLowerCase() !== "button") {
3191
3211
  return;
@@ -3206,6 +3226,7 @@ jasmine.version_= {
3206
3226
 
3207
3227
  HTML.prototype.cookie = function(name, value) {
3208
3228
  var date, match;
3229
+
3209
3230
  if (value == null) {
3210
3231
  value = void 0;
3211
3232
  }
@@ -3226,15 +3247,16 @@ jasmine.version_= {
3226
3247
 
3227
3248
  }).call(this);
3228
3249
  (function() {
3229
- var __hasProp = {}.hasOwnProperty,
3250
+ var _ref, _ref1, _ref2,
3251
+ __hasProp = {}.hasOwnProperty,
3230
3252
  __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; };
3231
3253
 
3232
3254
  Teabag.Reporters.HTML.ProgressView = (function(_super) {
3233
-
3234
3255
  __extends(ProgressView, _super);
3235
3256
 
3236
3257
  function ProgressView() {
3237
- return ProgressView.__super__.constructor.apply(this, arguments);
3258
+ _ref = ProgressView.__super__.constructor.apply(this, arguments);
3259
+ return _ref;
3238
3260
  }
3239
3261
 
3240
3262
  ProgressView.create = function(displayProgress) {
@@ -3262,11 +3284,11 @@ jasmine.version_= {
3262
3284
  })(Teabag.Reporters.BaseView);
3263
3285
 
3264
3286
  Teabag.Reporters.HTML.SimpleProgressView = (function(_super) {
3265
-
3266
3287
  __extends(SimpleProgressView, _super);
3267
3288
 
3268
3289
  function SimpleProgressView() {
3269
- return SimpleProgressView.__super__.constructor.apply(this, arguments);
3290
+ _ref1 = SimpleProgressView.__super__.constructor.apply(this, arguments);
3291
+ return _ref1;
3270
3292
  }
3271
3293
 
3272
3294
  SimpleProgressView.prototype.build = function() {
@@ -3276,6 +3298,7 @@ jasmine.version_= {
3276
3298
 
3277
3299
  SimpleProgressView.prototype.update = function(total, run) {
3278
3300
  var percent;
3301
+
3279
3302
  percent = total ? Math.ceil((run * 100) / total) : 0;
3280
3303
  return this.setHtml("progress-percent", "" + percent + "%");
3281
3304
  };
@@ -3285,11 +3308,11 @@ jasmine.version_= {
3285
3308
  })(Teabag.Reporters.HTML.ProgressView);
3286
3309
 
3287
3310
  Teabag.Reporters.HTML.RadialProgressView = (function(_super) {
3288
-
3289
3311
  __extends(RadialProgressView, _super);
3290
3312
 
3291
3313
  function RadialProgressView() {
3292
- return RadialProgressView.__super__.constructor.apply(this, arguments);
3314
+ _ref2 = RadialProgressView.__super__.constructor.apply(this, arguments);
3315
+ return _ref2;
3293
3316
  }
3294
3317
 
3295
3318
  RadialProgressView.supported = !!document.createElement("canvas").getContext;
@@ -3300,7 +3323,8 @@ jasmine.version_= {
3300
3323
  };
3301
3324
 
3302
3325
  RadialProgressView.prototype.appendTo = function() {
3303
- var canvas;
3326
+ var canvas, e;
3327
+
3304
3328
  RadialProgressView.__super__.appendTo.apply(this, arguments);
3305
3329
  this.size = 80;
3306
3330
  try {
@@ -3309,13 +3333,14 @@ jasmine.version_= {
3309
3333
  this.ctx = canvas.getContext("2d");
3310
3334
  this.ctx.strokeStyle = "#fff";
3311
3335
  return this.ctx.lineWidth = 1.5;
3312
- } catch (e) {
3313
-
3336
+ } catch (_error) {
3337
+ e = _error;
3314
3338
  }
3315
3339
  };
3316
3340
 
3317
3341
  RadialProgressView.prototype.update = function(total, run) {
3318
3342
  var half, percent;
3343
+
3319
3344
  percent = total ? Math.ceil((run * 100) / total) : 0;
3320
3345
  this.setHtml("progress-percent", "" + percent + "%");
3321
3346
  if (!this.ctx) {
@@ -3355,6 +3380,7 @@ jasmine.version_= {
3355
3380
 
3356
3381
  SpecView.prototype.build = function() {
3357
3382
  var classes;
3383
+
3358
3384
  classes = ["spec"];
3359
3385
  if (this.spec.pending) {
3360
3386
  classes.push("state-pending");
@@ -3367,6 +3393,7 @@ jasmine.version_= {
3367
3393
 
3368
3394
  SpecView.prototype.buildParent = function() {
3369
3395
  var parent, view;
3396
+
3370
3397
  parent = this.spec.parent;
3371
3398
  if (parent.viewId) {
3372
3399
  return this.views.suites[parent.viewId];
@@ -3378,6 +3405,7 @@ jasmine.version_= {
3378
3405
 
3379
3406
  SpecView.prototype.buildErrors = function() {
3380
3407
  var div, error, html, _i, _len, _ref;
3408
+
3381
3409
  div = this.createEl("div");
3382
3410
  html = "";
3383
3411
  _ref = this.spec.errors();
@@ -3391,6 +3419,7 @@ jasmine.version_= {
3391
3419
 
3392
3420
  SpecView.prototype.updateState = function(state, elapsed) {
3393
3421
  var classes, result, _base;
3422
+
3394
3423
  result = this.spec.result();
3395
3424
  classes = ["state-" + state];
3396
3425
  if (elapsed > Teabag.slow) {
@@ -3416,7 +3445,6 @@ jasmine.version_= {
3416
3445
  __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; };
3417
3446
 
3418
3447
  Teabag.Reporters.HTML.FailureView = (function(_super) {
3419
-
3420
3448
  __extends(FailureView, _super);
3421
3449
 
3422
3450
  function FailureView(spec) {
@@ -3426,6 +3454,7 @@ jasmine.version_= {
3426
3454
 
3427
3455
  FailureView.prototype.build = function() {
3428
3456
  var error, html, _i, _len, _ref;
3457
+
3429
3458
  FailureView.__super__.build.call(this, "spec");
3430
3459
  html = "<h1 class=\"teabag-clearfix\"><a href=\"" + this.spec.link + "\">" + this.spec.fullDescription + "</a></h1>";
3431
3460
  _ref = this.spec.errors();
@@ -3471,6 +3500,7 @@ jasmine.version_= {
3471
3500
 
3472
3501
  SuiteView.prototype.buildParent = function() {
3473
3502
  var parent, view;
3503
+
3474
3504
  parent = this.suite.parent;
3475
3505
  if (!parent) {
3476
3506
  return this.reporter;
@@ -3492,6 +3522,7 @@ jasmine.version_= {
3492
3522
 
3493
3523
  SuiteView.prototype.updateState = function(state) {
3494
3524
  var _base;
3525
+
3495
3526
  if (this.state === "failed") {
3496
3527
  return;
3497
3528
  }
@@ -3508,7 +3539,6 @@ jasmine.version_= {
3508
3539
 
3509
3540
  }).call(this);
3510
3541
  (function() {
3511
-
3512
3542
  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>";
3513
3543
 
3514
3544
  }).call(this);
@@ -3516,10 +3546,8 @@ jasmine.version_= {
3516
3546
  var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
3517
3547
 
3518
3548
  Teabag.Reporters.Console = (function() {
3519
-
3520
3549
  function Console() {
3521
- this.reportRunnerResults = __bind(this.reportRunnerResults, this);
3522
- this.start = new Teabag.Date();
3550
+ this.reportRunnerResults = __bind(this.reportRunnerResults, this); this.start = new Teabag.Date();
3523
3551
  this.suites = {};
3524
3552
  }
3525
3553
 
@@ -3533,6 +3561,7 @@ jasmine.version_= {
3533
3561
 
3534
3562
  Console.prototype.reportSuites = function() {
3535
3563
  var index, suite, _i, _len, _ref, _results;
3564
+
3536
3565
  _ref = this.spec.getParents();
3537
3566
  _results = [];
3538
3567
  for (index = _i = 0, _len = _ref.length; _i < _len; index = ++_i) {
@@ -3552,6 +3581,7 @@ jasmine.version_= {
3552
3581
 
3553
3582
  Console.prototype.reportSpecResults = function(spec) {
3554
3583
  var result;
3584
+
3555
3585
  this.spec = new Teabag.Spec(spec);
3556
3586
  result = this.spec.result();
3557
3587
  if (result.skipped) {
@@ -3576,6 +3606,7 @@ jasmine.version_= {
3576
3606
 
3577
3607
  Console.prototype.trackPending = function() {
3578
3608
  var result;
3609
+
3579
3610
  result = this.spec.result();
3580
3611
  return this.log({
3581
3612
  type: "spec",
@@ -3588,6 +3619,7 @@ jasmine.version_= {
3588
3619
 
3589
3620
  Console.prototype.trackFailure = function() {
3590
3621
  var error, result, _i, _len, _ref, _results;
3622
+
3591
3623
  result = this.spec.result();
3592
3624
  _ref = this.spec.errors();
3593
3625
  _results = [];
@@ -3630,15 +3662,16 @@ jasmine.version_= {
3630
3662
 
3631
3663
  }).call(this);
3632
3664
  (function() {
3633
- var __hasProp = {}.hasOwnProperty,
3665
+ var _ref,
3666
+ __hasProp = {}.hasOwnProperty,
3634
3667
  __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; };
3635
3668
 
3636
3669
  Teabag.Reporters.HTML = (function(_super) {
3637
-
3638
3670
  __extends(HTML, _super);
3639
3671
 
3640
3672
  function HTML() {
3641
- return HTML.__super__.constructor.apply(this, arguments);
3673
+ _ref = HTML.__super__.constructor.apply(this, arguments);
3674
+ return _ref;
3642
3675
  }
3643
3676
 
3644
3677
  HTML.prototype.readConfig = function() {
@@ -3648,6 +3681,7 @@ jasmine.version_= {
3648
3681
 
3649
3682
  HTML.prototype.envInfo = function() {
3650
3683
  var ver, verString;
3684
+
3651
3685
  ver = jasmine.getEnv().version();
3652
3686
  verString = [ver.major, ver.minor, ver.build].join(".");
3653
3687
  return "jasmine " + verString + " revision " + ver.revision;
@@ -3659,12 +3693,11 @@ jasmine.version_= {
3659
3693
 
3660
3694
  }).call(this);
3661
3695
  (function() {
3662
- var env,
3696
+ var env, _ref,
3663
3697
  __hasProp = {}.hasOwnProperty,
3664
3698
  __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; };
3665
3699
 
3666
3700
  Teabag.Runner = (function(_super) {
3667
-
3668
3701
  __extends(Runner, _super);
3669
3702
 
3670
3703
  function Runner() {
@@ -3674,6 +3707,7 @@ jasmine.version_= {
3674
3707
 
3675
3708
  Runner.prototype.setup = function() {
3676
3709
  var grep, reporter;
3710
+
3677
3711
  env.updateInterval = 1000;
3678
3712
  if (grep = this.params["grep"]) {
3679
3713
  env.specFilter = function(spec) {
@@ -3700,7 +3734,6 @@ jasmine.version_= {
3700
3734
  })(Teabag.Runner);
3701
3735
 
3702
3736
  Teabag.Spec = (function() {
3703
-
3704
3737
  function Spec(spec) {
3705
3738
  this.spec = spec;
3706
3739
  this.fullDescription = this.spec.getFullName();
@@ -3714,6 +3747,7 @@ jasmine.version_= {
3714
3747
 
3715
3748
  Spec.prototype.errors = function() {
3716
3749
  var item, _i, _len, _ref, _results;
3750
+
3717
3751
  if (!this.spec.results) {
3718
3752
  return [];
3719
3753
  }
@@ -3734,6 +3768,7 @@ jasmine.version_= {
3734
3768
 
3735
3769
  Spec.prototype.getParents = function() {
3736
3770
  var parent;
3771
+
3737
3772
  if (this.parents) {
3738
3773
  return this.parents;
3739
3774
  }
@@ -3749,6 +3784,7 @@ jasmine.version_= {
3749
3784
 
3750
3785
  Spec.prototype.result = function() {
3751
3786
  var results, status;
3787
+
3752
3788
  results = this.spec.results();
3753
3789
  status = "failed";
3754
3790
  if (results.passed()) {
@@ -3768,7 +3804,6 @@ jasmine.version_= {
3768
3804
  })();
3769
3805
 
3770
3806
  Teabag.Suite = (function() {
3771
-
3772
3807
  function Suite(suite) {
3773
3808
  this.suite = suite;
3774
3809
  this.fullDescription = this.suite.getFullName();
@@ -3783,11 +3818,11 @@ jasmine.version_= {
3783
3818
  })();
3784
3819
 
3785
3820
  Teabag.fixture = (function(_super) {
3786
-
3787
3821
  __extends(fixture, _super);
3788
3822
 
3789
3823
  function fixture() {
3790
- return fixture.__super__.constructor.apply(this, arguments);
3824
+ _ref = fixture.__super__.constructor.apply(this, arguments);
3825
+ return _ref;
3791
3826
  }
3792
3827
 
3793
3828
  window.fixture = fixture;
@@ -3795,6 +3830,7 @@ jasmine.version_= {
3795
3830
  fixture.load = function() {
3796
3831
  var args,
3797
3832
  _this = this;
3833
+
3798
3834
  args = arguments;
3799
3835
  if (!(env.currentSuite || env.currentSpec)) {
3800
3836
  throw "Teabag can't load fixtures outside of describe.";
@@ -3818,6 +3854,7 @@ jasmine.version_= {
3818
3854
  fixture.set = function() {
3819
3855
  var args,
3820
3856
  _this = this;
3857
+
3821
3858
  args = arguments;
3822
3859
  if (!(env.currentSuite || env.currentSpec)) {
3823
3860
  throw "Teabag can't load fixtures outside of describe.";