teabag 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/javascripts/teabag-jasmine.js +30 -15
- data/app/assets/javascripts/teabag-mocha.js +30 -14
- data/app/assets/javascripts/teabag-qunit.js +31 -15
- data/app/assets/javascripts/teabag-teabag.js +53 -0
- data/app/assets/javascripts/teabag/base/reporters/html.coffee +23 -49
- data/app/assets/javascripts/teabag/base/reporters/html/template.coffee +41 -0
- data/app/assets/javascripts/teabag/base/runner.coffee +1 -1
- data/app/assets/javascripts/teabag/jasmine.coffee +0 -1
- data/app/assets/javascripts/teabag/mocha.coffee +0 -1
- data/app/assets/javascripts/teabag/mocha/reporters/html.coffee +0 -1
- data/app/assets/javascripts/teabag/qunit.coffee +1 -2
- data/app/assets/javascripts/teabag/teabag.coffee +32 -0
- data/app/assets/stylesheets/teabag.css +94 -26
- data/app/controllers/teabag/spec_controller.rb +5 -1
- data/app/views/teabag/spec/{index.html.erb → runner.html.erb} +0 -0
- data/app/views/teabag/spec/suites.html.erb +40 -0
- data/config/routes.rb +3 -2
- data/lib/teabag/console.rb +2 -2
- data/lib/teabag/drivers/phantomjs/runner.coffee +1 -0
- data/lib/teabag/suite.rb +26 -16
- data/lib/teabag/version.rb +1 -1
- data/spec/dummy/app/assets/javascripts/integration/integration_spec.coffee +1 -1
- data/spec/dummy/config/application.rb +1 -27
- data/spec/dummy/config/boot.rb +5 -8
- data/spec/dummy/config/routes.rb +0 -1
- data/spec/dummy/log/development.log +67702 -0
- data/spec/dummy/log/test.log +1488 -0
- data/spec/dummy/tmp/cache/assets/BE1/2F0/sprockets%2F5d1a10a753437053978b5661a7513600 +0 -0
- data/spec/dummy/tmp/cache/assets/C13/B50/sprockets%2F431452d41e5087d2211162d23c63789b +0 -0
- data/spec/dummy/tmp/cache/assets/C35/A30/sprockets%2F29906bf540f7d2e081088494b2554989 +0 -0
- data/spec/dummy/tmp/cache/assets/C4E/9B0/sprockets%2Fa807397434c9262c3d62da3e91152184 +0 -0
- data/spec/dummy/tmp/cache/assets/C59/250/sprockets%2Fa80d3fe493d2476e58c4323996064512 +0 -0
- data/spec/dummy/tmp/cache/assets/C72/150/sprockets%2F4194031b4b51b6422c14ac697e3455e5 +0 -0
- data/spec/dummy/tmp/cache/assets/C75/D50/sprockets%2F5302968a40e08d2c011aa38666d273f6 +0 -0
- data/spec/dummy/tmp/cache/assets/C78/F80/sprockets%2F9161622ddd251097a4ab816b8220984c +0 -0
- data/spec/dummy/tmp/cache/assets/C7A/EC0/sprockets%2F5c16e4214f5662e1b27932a57c43491b +0 -0
- data/spec/dummy/tmp/cache/assets/C83/E90/sprockets%2F8be0bf09618c38257464f07790a4163b +0 -0
- data/spec/dummy/tmp/cache/assets/C89/700/sprockets%2F259935a7704fef0069303ea63fa89408 +0 -0
- data/spec/dummy/tmp/cache/assets/C8A/460/sprockets%2F77bffd9959420103906722b404ae8d59 +0 -0
- data/spec/dummy/tmp/cache/assets/C91/FA0/sprockets%2F2eb81283f5789ae91a69344552db3856 +0 -0
- data/spec/dummy/tmp/cache/assets/C9D/E90/sprockets%2F3045c9533f179d3e1c805d163ed002a0 +0 -0
- data/spec/dummy/tmp/cache/assets/CA6/2F0/sprockets%2F20040c18b672e4c4d2731a2a929d8b97 +0 -0
- data/spec/dummy/tmp/cache/assets/CA6/DF0/sprockets%2F7da83747ce56e49393b6b8726587f846 +0 -0
- data/spec/dummy/tmp/cache/assets/CA9/C40/sprockets%2F932b7e2cd1e067289ab51190800814df +0 -0
- data/spec/dummy/tmp/cache/assets/CAA/0C0/sprockets%2F057b0ce384f16d9202ae84473436cc35 +0 -0
- data/spec/dummy/tmp/cache/assets/CAD/410/sprockets%2F651414e5c7e86f05c5108dc71626b25c +0 -0
- data/spec/dummy/tmp/cache/assets/CAF/0F0/sprockets%2F6000e67cf3f2377f860c24da7c819701 +0 -0
- data/spec/dummy/tmp/cache/assets/CB0/700/sprockets%2F006af6bf0f6b55777b03c4615c853881 +0 -0
- data/spec/dummy/tmp/cache/assets/CB5/E60/sprockets%2Ff0f2b623b42840839e37f5ed055f5482 +0 -0
- data/spec/dummy/tmp/cache/assets/CBB/FA0/sprockets%2F74922109263bdc965b2e9567eec6d154 +0 -0
- data/spec/dummy/tmp/cache/assets/CBD/AF0/sprockets%2Fd687ec33822256e9444e8cd04f1b4873 +0 -0
- data/spec/dummy/tmp/cache/assets/CBF/630/sprockets%2F707d2db81468088470d476abff35388d +0 -0
- data/spec/dummy/tmp/cache/assets/CC2/EC0/sprockets%2F76bf80cb571ca530357f78db78167866 +0 -0
- data/spec/dummy/tmp/cache/assets/CC3/BA0/sprockets%2Fa717665e3657e376fa8d788940d6a22a +0 -0
- data/spec/dummy/tmp/cache/assets/CCC/DB0/sprockets%2F3998958d61cda73452466f5652ed81ef +0 -0
- data/spec/dummy/tmp/cache/assets/CCE/C50/sprockets%2Fe12774c2fea852112414bb379a71f31a +0 -0
- data/spec/dummy/tmp/cache/assets/CD1/620/sprockets%2F06a3eb05fcb4175a679d6084a06026a6 +0 -0
- data/spec/dummy/tmp/cache/assets/CD3/460/sprockets%2F7f3f6802b0b309ed142d0b671c9640c4 +0 -0
- data/spec/dummy/tmp/cache/assets/CD6/DD0/sprockets%2F301bd3b0e19eb866905681d03a891be3 +0 -0
- data/spec/dummy/tmp/cache/assets/CD9/9B0/sprockets%2Fdc1f0447e4c5c2f990750b2f722c5900 +0 -0
- data/spec/dummy/tmp/cache/assets/CD9/DD0/sprockets%2Fe5774759168a731da1c1149ecf0e1b03 +0 -0
- data/spec/dummy/tmp/cache/assets/CE0/090/sprockets%2F48d5d35ae87d0723318b8bc257fa2237 +0 -0
- data/spec/dummy/tmp/cache/assets/CE3/1F0/sprockets%2Fe69a515d3a9d14c669be8871012a7d07 +0 -0
- data/spec/dummy/tmp/cache/assets/CE4/190/sprockets%2F36c9ee4181433e33e07eb9748d218ae2 +0 -0
- data/spec/dummy/tmp/cache/assets/CE6/270/sprockets%2F2c98152560d18470fec8cf4c6829b4d0 +0 -0
- data/spec/dummy/tmp/cache/assets/CE6/7C0/sprockets%2Fa03a2c86ce6724be8542295e1cf24798 +0 -0
- data/spec/dummy/tmp/cache/assets/CE7/A60/sprockets%2Ff58eee249aa167d23f8220087bb46684 +0 -0
- data/spec/dummy/tmp/cache/assets/CE9/9E0/sprockets%2F135480d497ed7e4884462dc0ef0b80d7 +0 -0
- data/spec/dummy/tmp/cache/assets/CEB/090/sprockets%2F55dcd7ace406b77208c380d496e37864 +0 -0
- data/spec/dummy/tmp/cache/assets/CEB/680/sprockets%2F67f0794ef8c0576d5c7da34f4437305a +0 -0
- data/spec/dummy/tmp/cache/assets/CEB/B40/sprockets%2F1150bf8d912aa100a132251eefaf6045 +0 -0
- data/spec/dummy/tmp/cache/assets/CF1/C50/sprockets%2F57bd9ac92067ea01882feef075582758 +0 -0
- data/spec/dummy/tmp/cache/assets/CF3/3A0/sprockets%2F6571249b82eb52e7c7e035c692df9b69 +0 -0
- data/spec/dummy/tmp/cache/assets/CF4/6C0/sprockets%2F087d4a99adae6d6972937a2e57e93504 +0 -0
- data/spec/dummy/tmp/cache/assets/CF4/6F0/sprockets%2Fed96f92571224b862b84d7078b86ded3 +0 -0
- data/spec/dummy/tmp/cache/assets/CF7/F10/sprockets%2F8c45854ebd195b52cc42bf3f99996336 +0 -0
- data/spec/dummy/tmp/cache/assets/CF8/780/sprockets%2F8845b81ff27cdb57c835836c9f91a265 +0 -0
- data/spec/dummy/tmp/cache/assets/CFA/D20/sprockets%2Fb26796b39b3c5d6ed70be7989637a493 +0 -0
- data/spec/dummy/tmp/cache/assets/CFC/380/sprockets%2Fa7443cbd671446a589867dd5f4a4f989 +0 -0
- data/spec/dummy/tmp/cache/assets/D00/110/sprockets%2F6a6353b7723a8b21708e0fbfe04bd422 +0 -0
- data/spec/dummy/tmp/cache/assets/D00/F60/sprockets%2F42e279b52511c47d26c0adb125fd04e8 +0 -0
- data/spec/dummy/tmp/cache/assets/D03/630/sprockets%2F5d8da32dba6a7be70426a1d554773701 +0 -0
- data/spec/dummy/tmp/cache/assets/D04/170/sprockets%2F76ab1dc02e6c7618852708a1e05a2df3 +0 -0
- data/spec/dummy/tmp/cache/assets/D04/480/sprockets%2F8bd8f10500b21d2f9d94e4cd1401c936 +0 -0
- data/spec/dummy/tmp/cache/assets/D04/580/sprockets%2F18748d128c062c8eab0e22d35d41b19e +0 -0
- data/spec/dummy/tmp/cache/assets/D05/8D0/sprockets%2F319f8f235f452343f1ebf03cb262d23d +0 -0
- data/spec/dummy/tmp/cache/assets/D09/BF0/sprockets%2F9e6bca5d26f50d9484385d51ba04312c +0 -0
- data/spec/dummy/tmp/cache/assets/D0B/210/sprockets%2Fb95ce127097fba0e4019f633e91b730d +0 -0
- data/spec/dummy/tmp/cache/assets/D0E/570/sprockets%2F90fe371bf8091e88a712124d9cdae260 +0 -0
- data/spec/dummy/tmp/cache/assets/D15/750/sprockets%2F8effdd3e668a4036260a3e370f3b6657 +0 -0
- data/spec/dummy/tmp/cache/assets/D17/710/sprockets%2Ffa49fb6823d466e79a195e0cd71340c5 +0 -0
- data/spec/dummy/tmp/cache/assets/D1A/D30/sprockets%2F815a5177e9edba0c5c996182ef1b3675 +0 -0
- data/spec/dummy/tmp/cache/assets/D1B/730/sprockets%2Fcf6ce779d043d29aae915f599a413380 +0 -0
- data/spec/dummy/tmp/cache/assets/D1D/560/sprockets%2F1ca784ee7ba1922465147e7f8963eae5 +0 -0
- data/spec/dummy/tmp/cache/assets/D1E/AA0/sprockets%2F5c8741a556bc955cd36e61c88582b6dc +0 -0
- data/spec/dummy/tmp/cache/assets/D23/E70/sprockets%2F0c6d23a1282deab18acb51022a74489a +0 -0
- data/spec/dummy/tmp/cache/assets/D2D/060/sprockets%2F545ec7a363badb5e7106e5112b53b26d +0 -0
- data/spec/dummy/tmp/cache/assets/D2F/520/sprockets%2Fea2308e8add6880c1c4d47040ab710d7 +0 -0
- data/spec/dummy/tmp/cache/assets/D31/9C0/sprockets%2Fbd102a4f5a4985c3519dd6ab0295a1c6 +0 -0
- data/spec/dummy/tmp/cache/assets/D32/500/sprockets%2F6927df5a24d91c75d001e2b5600ab8be +0 -0
- data/spec/dummy/tmp/cache/assets/D35/7C0/sprockets%2Ff536a2606eaf7d542c0985104cb62baf +0 -0
- data/spec/dummy/tmp/cache/assets/D37/300/sprockets%2F2d0e503e6a7c7c7fdc9912501b2f6b43 +0 -0
- data/spec/dummy/tmp/cache/assets/D37/FF0/sprockets%2F96841ca4cfae32c515077f3f5fc303b2 +0 -0
- data/spec/dummy/tmp/cache/assets/D3C/840/sprockets%2Fc6202ec91d567a85bd3d46dc43ea9108 +0 -0
- data/spec/dummy/tmp/cache/assets/D44/E90/sprockets%2F05cfc0bf7c9938963d1d1c63248db80d +0 -0
- data/spec/dummy/tmp/cache/assets/D45/C30/sprockets%2Fcc744877558178a3adb77c441cadce70 +0 -0
- data/spec/dummy/tmp/cache/assets/D47/A90/sprockets%2Fe7ca382b607c595ea6505853f7fb63da +0 -0
- data/spec/dummy/tmp/cache/assets/D49/1F0/sprockets%2F773b56f87127c6605e7d1d3faf2b6af6 +0 -0
- data/spec/dummy/tmp/cache/assets/D49/A10/sprockets%2Fc4656bd995a6f297c26d19b13aadb963 +0 -0
- data/spec/dummy/tmp/cache/assets/D4A/580/sprockets%2F19b8d8a9a57850de79b6c099fb2d010e +0 -0
- data/spec/dummy/tmp/cache/assets/D50/D70/sprockets%2Fe2a3e6c95b11e0801a4eebae3a026026 +0 -0
- data/spec/dummy/tmp/cache/assets/D51/400/sprockets%2Ff5e433d8a31e80985b75ce598de236be +0 -0
- data/spec/dummy/tmp/cache/assets/D54/D80/sprockets%2F631327e25ec20edc723046cdec3bb1c0 +0 -0
- data/spec/dummy/tmp/cache/assets/D58/870/sprockets%2F3cef1ff075a050004b74ffa13c8c4f02 +0 -0
- data/spec/dummy/tmp/cache/assets/D5C/710/sprockets%2F9427d05cee2caa721241a25a9af1d08f +0 -0
- data/spec/dummy/tmp/cache/assets/D5C/CC0/sprockets%2Faa8bf6de211f2765b0a26f112b971f0c +0 -0
- data/spec/dummy/tmp/cache/assets/D5E/FA0/sprockets%2Fc81c371ae2d61a6aa1708262fba79e0d +0 -0
- data/spec/dummy/tmp/cache/assets/D61/1F0/sprockets%2F0c7a6176d2fc4db00bb9a74d36380fe1 +0 -0
- data/spec/dummy/tmp/cache/assets/D61/E60/sprockets%2F301aede3913de3c54c91b65cf2bd3381 +0 -0
- data/spec/dummy/tmp/cache/assets/D67/030/sprockets%2Fb8b36ba6104c8dbe6297b4e61e6d33b1 +0 -0
- data/spec/dummy/tmp/cache/assets/D67/BC0/sprockets%2F35d2c2b45981ade5a2db2a9c7f37a615 +0 -0
- data/spec/dummy/tmp/cache/assets/D67/C20/sprockets%2F0d30bf27e5f74bbd85f313cb8d3c4623 +0 -0
- data/spec/dummy/tmp/cache/assets/D69/F90/sprockets%2F6a0795b7b38bd7e6142cd1b88211dade +0 -0
- data/spec/dummy/tmp/cache/assets/D6A/7E0/sprockets%2F3a3b155b775b7d32b25abc8cb6bf9727 +0 -0
- data/spec/dummy/tmp/cache/assets/D6A/950/sprockets%2F429b1806cb7580ebf29f9a12c33cbea6 +0 -0
- data/spec/dummy/tmp/cache/assets/D6D/DA0/sprockets%2Fac936bf40b42227a2bf9d474ae9ec149 +0 -0
- data/spec/dummy/tmp/cache/assets/D6F/5B0/sprockets%2F5dcc801a7a6c340c5baf525839f9b8b6 +0 -0
- data/spec/dummy/tmp/cache/assets/D73/C00/sprockets%2F9cf4bfb486e4ab461e3f275a3d974c30 +0 -0
- data/spec/dummy/tmp/cache/assets/D77/B30/sprockets%2F946cf2f17c7eb41037f9ee08ad67ec40 +0 -0
- data/spec/dummy/tmp/cache/assets/D78/2F0/sprockets%2F3c61f8915b8f717b1de788e6ecad122c +0 -0
- data/spec/dummy/tmp/cache/assets/D78/870/sprockets%2F8f3a7d4fcd104fa8e47f552f6630a49e +0 -0
- data/spec/dummy/tmp/cache/assets/D78/F10/sprockets%2Fa2d995664d1a9bf976c1bfbbb90f8710 +0 -0
- data/spec/dummy/tmp/cache/assets/D79/B60/sprockets%2F5e6fb36a01166982ae9a59eced0a4f88 +0 -0
- data/spec/dummy/tmp/cache/assets/D7E/C10/sprockets%2F747c98c3cc7494a62dd882752adffb2b +0 -0
- data/spec/dummy/tmp/cache/assets/D80/390/sprockets%2Fe44158f578d9ffade083a07f54eab729 +0 -0
- data/spec/dummy/tmp/cache/assets/D93/BD0/sprockets%2Ff5e1b60201e08e3ddf8d3de5211f3d5e +0 -0
- data/spec/dummy/tmp/cache/assets/D9A/540/sprockets%2F60ad172ea82631ca9c666cfd4d95f1ab +0 -0
- data/spec/dummy/tmp/cache/assets/DA0/330/sprockets%2Fcbbb4de706387d50f48a72ee6c9c1b80 +0 -0
- data/spec/dummy/tmp/cache/assets/DA5/0A0/sprockets%2F7a4b5928cec69ab65afff309a04d6b47 +0 -0
- data/spec/dummy/tmp/cache/assets/DA8/C50/sprockets%2F0810627fddce930a399fc60d3be97fed +0 -0
- data/spec/dummy/tmp/cache/assets/DA9/BF0/sprockets%2Fc59f8f7bf494fe030610bc86bb7cc5e5 +0 -0
- data/spec/dummy/tmp/cache/assets/DAD/1F0/sprockets%2Fdf7609630657aee0ebe5ed61e929d5dd +0 -0
- data/spec/dummy/tmp/cache/assets/DAE/6C0/sprockets%2F77c7a8676aeefa73156c55dfcf51cc46 +0 -0
- data/spec/dummy/tmp/cache/assets/DB3/5D0/sprockets%2Fce1d4d75832c9bdeafd869f6f7b61725 +0 -0
- data/spec/dummy/tmp/cache/assets/DB3/D70/sprockets%2Fcc2f5e1f6eeb99c33881848cb1cde758 +0 -0
- data/spec/dummy/tmp/cache/assets/DB5/040/sprockets%2F9a9da5df88713663b9fbc945facca891 +0 -0
- data/spec/dummy/tmp/cache/assets/DB9/220/sprockets%2Fd2dc4f59e70e73984997ffca8ad7f4a0 +0 -0
- data/spec/dummy/tmp/cache/assets/DBC/A20/sprockets%2Fec46fb30cecc002128c61fb49cf30da8 +0 -0
- data/spec/dummy/tmp/cache/assets/DC4/860/sprockets%2Fa01a3cf460ff15daae0f928d0f85f52e +0 -0
- data/spec/dummy/tmp/cache/assets/DC4/CA0/sprockets%2Fdbcd5b5132f1ec3ff0e7e7db19190f03 +0 -0
- data/spec/dummy/tmp/cache/assets/DC7/A10/sprockets%2F84a8af0fcbf401864e1ae5bf092cba94 +0 -0
- data/spec/dummy/tmp/cache/assets/DD7/630/sprockets%2Ffa5eec4483c5be83deee04f5a5654a58 +0 -0
- data/spec/dummy/tmp/cache/assets/DDB/520/sprockets%2Faa365f7b98350c85b6acb09d5e9cbf9e +0 -0
- data/spec/dummy/tmp/cache/assets/DDD/A60/sprockets%2Fff948b6ffe44a3cc3d2d109a39f548fd +0 -0
- data/spec/dummy/tmp/cache/assets/DE4/140/sprockets%2F139e4ab85d1aacb22c115fa136afdc8a +0 -0
- data/spec/dummy/tmp/cache/assets/DF6/0E0/sprockets%2F85b10db6e1afe643aba6d396abdd77f0 +0 -0
- data/spec/dummy/tmp/cache/assets/DF7/E10/sprockets%2F25e4253aba9a9adcefb72552fb1ff0c8 +0 -0
- data/spec/dummy/tmp/cache/assets/DFC/C20/sprockets%2Fd9178ad7e3b401c9fceafd64ea2b50d6 +0 -0
- data/spec/dummy/tmp/cache/assets/DFC/C30/sprockets%2Fb50a07cb30b0bd0eec8e98e5de79d65d +0 -0
- data/spec/dummy/tmp/cache/assets/E02/6E0/sprockets%2F63d6a5cdb8cefa64ef76b5c6e0fd3720 +0 -0
- data/spec/dummy/tmp/cache/assets/E08/BB0/sprockets%2Fefac99af1af28543aef6fb607faa4973 +0 -0
- data/spec/dummy/tmp/cache/assets/E08/F20/sprockets%2F4fc5cdcd6974efe7adfe809b30bd6513 +0 -0
- data/spec/dummy/tmp/cache/assets/E0D/070/sprockets%2F0e7ef9a5978dcc6b1abce678ef836c0a +0 -0
- data/spec/dummy/tmp/cache/assets/E14/8E0/sprockets%2Fb8d902ffcf8758fde63d0fa579ba6d4e +0 -0
- data/spec/dummy/tmp/cache/assets/E16/D30/sprockets%2Fd69469e6e7439baacd8df989c0fdacc2 +0 -0
- data/spec/dummy/tmp/cache/assets/E2F/790/sprockets%2F7fac280deaa7ef20a77d5c9b5b9cfc34 +0 -0
- data/spec/dummy/tmp/cache/assets/E36/A40/sprockets%2Ff3477eebd69a4f1b8fbdd3f9ef2ba242 +0 -0
- data/spec/dummy/tmp/cache/assets/E41/250/sprockets%2F97cf8fe3d7ffaff076f655aefb36da03 +0 -0
- data/spec/dummy/tmp/cache/assets/E64/1E0/sprockets%2F81ab4c863fbbdec8dd66afc97ebf034d +0 -0
- data/spec/dummy/tmp/cache/assets/E6E/260/sprockets%2Fd9f8ab8b91ef582cc6c99a3ba0dedfe6 +0 -0
- data/spec/dummy/tmp/cache/assets/E89/4C0/sprockets%2F68b2eedb3cde6fc01d50fead7caf8a18 +0 -0
- data/spec/dummy/tmp/cache/assets/F79/360/sprockets%2F0ce035fefee5ebdabc8efabfbdbd6ee4 +0 -0
- data/spec/features/console_reporter_spec.rb +1 -0
- data/spec/javascripts/teabag/base/reporters/html/failure_view_spec.coffee +27 -0
- data/spec/javascripts/teabag/base/reporters/html_spec.coffee +25 -9
- data/spec/javascripts/teabag/base/runner_spec.coffee +2 -0
- data/spec/javascripts/teabag/jasmine/fixture_jspec.coffee +13 -0
- data/spec/javascripts/teabag/jasmine/runner_jspec.coffee +0 -7
- data/spec/javascripts/teabag/mocha/fixture_mspec.coffee +12 -0
- data/spec/javascripts/teabag/mocha/models_mspec.coffee +7 -9
- data/spec/javascripts/teabag/mocha/reporters/html_mspec.coffee +0 -4
- data/spec/teabag/console_spec.rb +3 -3
- data/spec/teabag/suite_spec.rb +45 -16
- data/test/javascripts/teabag/qunit/{qunit_test.coffee → fixture_test.coffee} +0 -33
- data/test/javascripts/teabag/qunit/runner_test.coffee +0 -2
- metadata +57 -11
- data/spec/javascripts/teabag/jasmine/jasmine_jspec.coffee +0 -60
- data/spec/javascripts/teabag/mocha/mocha_mspec.coffee +0 -60
@@ -0,0 +1,41 @@
|
|
1
|
+
Teabag.Reporters.HTML.template = """
|
2
|
+
<div id="teabag-interface">
|
3
|
+
<div class="teabag-clearfix">
|
4
|
+
<div id="teabag-title">
|
5
|
+
<h1>Teabag</h1>
|
6
|
+
<ul>
|
7
|
+
<li>version: <b id="teabag-version"></b></li>
|
8
|
+
<li id="teabag-env-info"></li>
|
9
|
+
</ul>
|
10
|
+
</div>
|
11
|
+
<div id="teabag-progress"></div>
|
12
|
+
<ul id="teabag-stats">
|
13
|
+
<li>passes: <b id="teabag-stats-passes">0</b></li>
|
14
|
+
<li>failures: <b id="teabag-stats-failures">0</b></li>
|
15
|
+
<li>skipped: <b id="teabag-stats-skipped">0</b></li>
|
16
|
+
<li>duration: <b id="teabag-stats-duration">∞</b></li>
|
17
|
+
</ul>
|
18
|
+
</div>
|
19
|
+
|
20
|
+
<div id="teabag-controls" class="teabag-clearfix">
|
21
|
+
<div id="teabag-toggles">
|
22
|
+
<button id="teabag-use-catch" title="Toggle using try/catch wrappers when possible">Try/Catch</button>
|
23
|
+
<button id="teabag-build-full-report" title="Toggle building the full report">Full Report</button>
|
24
|
+
<button id="teabag-display-progress" title="Toggle displaying progress as tests run">Progress</button>
|
25
|
+
</div>
|
26
|
+
<div id="teabag-suites"></div>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<hr/>
|
30
|
+
|
31
|
+
<div id="teabag-filter">
|
32
|
+
<h1>Filtering</h1>
|
33
|
+
<ul id="teabag-filter-list"></ul>
|
34
|
+
</div>
|
35
|
+
|
36
|
+
<div id="teabag-report">
|
37
|
+
<ol id="teabag-report-failures"></ol>
|
38
|
+
<ol id="teabag-report-all"></ol>
|
39
|
+
</div>
|
40
|
+
</div>
|
41
|
+
"""
|
@@ -0,0 +1,32 @@
|
|
1
|
+
class TeabagInterface
|
2
|
+
|
3
|
+
constructor: ->
|
4
|
+
@files = $u("#teabag-suite-list .file a")
|
5
|
+
@input = $u("#teabag-filter-input")[0]
|
6
|
+
@input.value = ""
|
7
|
+
@input.onkeyup = @filter
|
8
|
+
|
9
|
+
|
10
|
+
filter: =>
|
11
|
+
for file in @files
|
12
|
+
if LiquidMetal.score(file.innerHTML, @input.value) > 0
|
13
|
+
file.parentNode.style.display = "block"
|
14
|
+
else
|
15
|
+
file.parentNode.style.display = "none"
|
16
|
+
|
17
|
+
|
18
|
+
window.onload = -> new TeabagInterface()
|
19
|
+
|
20
|
+
`
|
21
|
+
/*!
|
22
|
+
* LiquidMetal
|
23
|
+
* Copyright (c) 2009, Ryan McGeary (ryanonjavascript -[at]- mcgeary [*dot*] org)
|
24
|
+
*/
|
25
|
+
var LiquidMetal=function(){var l=0.0;var m=1.0;var n=0.8;var o=0.9;var p=0.85;return{score:function(a,b){if(b.length==0)return n;if(b.length>a.length)return l;var c=this.buildScoreArray(a,b);var d=0.0;for(var i=0;i<c.length;i++){d+=c[i]}return(d/c.length)},buildScoreArray:function(a,b){var d=new Array(a.length);var e=a.toLowerCase();var f=b.toLowerCase().split("");var g=-1;var h=false;for(var i=0;i<f.length;i++){var c=f[i];var j=e.indexOf(c,g+1);if(j<0)return fillArray(d,l);if(j==0)h=true;if(isNewWord(a,j)){d[j-1]=1;fillArray(d,p,g+1,j-1)}else if(isUpperCase(a,j)){fillArray(d,p,g+1,j)}else{fillArray(d,l,g+1,j)}d[j]=m;g=j}var k=h?o:n;fillArray(d,k,g+1);return d}};function isUpperCase(a,b){var c=a.charAt(b);return("A"<=c&&c<="Z")}function isNewWord(a,b){var c=a.charAt(b-1);return(c==" "||c=="\t")}function fillArray(a,b,c,d){c=Math.max(c||0,0);d=Math.min(d||a.length,a.length);for(var i=c;i<d;i++){a[i]=b}return a}}();
|
26
|
+
|
27
|
+
/*!
|
28
|
+
* uSelector
|
29
|
+
* author: Fabio Miranda Costa | github: fabiomcosta | twitter: @fabiomiranda | license: MIT-style license
|
30
|
+
*/
|
31
|
+
(function(h,i){var f,c,j,k,m={},e,l,q=/^\s+|\s+$/g,r=!!i.querySelectorAll,g=function(d,b,a){f=a||[];e=b||g.context;if(r)try{n(e.querySelectorAll(d));return f}catch(v){}l=e.ownerDocument||e;d=d.replace(q,"");for(c={};d=d.replace(/([#.:])?([^#.:]*)/,s););d=(b=c.id)&&c.tag||c.classes||c.pseudos||!b&&(c.classes||c.pseudos)?t:o;if(b){if(a=b=l.getElementById(b))if(!(a=l===e))a:{a=b;do if(a===e){a=true;break a}while(a=a.parentNode);a=false}a&&d([b])}else d(e.getElementsByTagName(c.tag||"*"));return f},u=function(d){if(c.tag){var b=d.nodeName.toUpperCase();if(c.tag=="*"){if(b<"@")return false}else if(b!=c.tag)return false}if(c.id&&d.getAttribute("id")!=c.id)return false;if(j=c.classes){var a=" "+d.className+" ";for(b=j.length;b--;)if(a.indexOf(" "+j[b]+" ")<0)return false}if(k=c.pseudos)for(b=k.length;b--;){a=m[k[b]];if(!(a&&a.call(g,d)))return false}return true},s=function(d,b,a){if(b)if(b=="#")c.id=a;else if(b==".")if(c.classes)c.classes.push(a);else c.classes=[a];else{if(b==":")if(c.pseudos)c.pseudos.push(a);else c.pseudos=[a]}else c.tag=a.toUpperCase();return""},p=Array.prototype.slice,n=function(d){f=p.call(d,0)},o=function(d){for(var b=0,a;a=d[b++];)f.push(a)};try{p.call(i.documentElement.childNodes,0)}catch(w){n=o}var t=function(d){for(var b=0,a;a=d[b++];)u(a)&&f.push(a)};g.pseudos=m;g.context=i;h.uSelector=g;h.$u||(h.$u=g)})(this,document);
|
32
|
+
`
|
@@ -7,19 +7,19 @@ body {
|
|
7
7
|
|
8
8
|
/* Base Reporter
|
9
9
|
*---------------------------------------------------------------------------*/
|
10
|
-
#teabag-
|
10
|
+
#teabag-interface {
|
11
11
|
padding: 45px 50px 0;
|
12
|
-
min-width:
|
12
|
+
min-width: 430px;
|
13
13
|
border-top: 3px solid #18c2e8;
|
14
14
|
color: #000;
|
15
15
|
}
|
16
|
-
#teabag-
|
16
|
+
#teabag-interface hr {
|
17
17
|
border: 0;
|
18
18
|
background: #cfc8c4;
|
19
19
|
height: 1px;
|
20
20
|
margin: 20px 0;
|
21
21
|
}
|
22
|
-
#teabag-
|
22
|
+
#teabag-interface .teabag-clearfix:after {
|
23
23
|
content: ".";
|
24
24
|
display: block;
|
25
25
|
clear: both;
|
@@ -27,10 +27,10 @@ body {
|
|
27
27
|
line-height: 0;
|
28
28
|
height: 0;
|
29
29
|
}
|
30
|
-
html[xmlns] #teabag-
|
30
|
+
html[xmlns] #teabag-interface .teabag-clearfix {
|
31
31
|
display: block;
|
32
32
|
}
|
33
|
-
* html #teabag-
|
33
|
+
* html #teabag-interface .teabag-clearfix {
|
34
34
|
height: 1%;
|
35
35
|
}
|
36
36
|
|
@@ -58,6 +58,13 @@ html[xmlns] #teabag-html-reporter .teabag-clearfix {
|
|
58
58
|
#teabag-title b {
|
59
59
|
font-weight: 400;
|
60
60
|
}
|
61
|
+
#teabag-title a {
|
62
|
+
text-decoration: none;
|
63
|
+
color: #000;
|
64
|
+
}
|
65
|
+
#teabag-title a:hover {
|
66
|
+
text-decoration: underline;
|
67
|
+
}
|
61
68
|
|
62
69
|
/* Progress indicator
|
63
70
|
*---------------------------------------------------------------------------*/
|
@@ -195,26 +202,23 @@ html[xmlns] #teabag-html-reporter .teabag-clearfix {
|
|
195
202
|
position: relative;
|
196
203
|
top: -1px;
|
197
204
|
height: 21px;
|
198
|
-
max-width:
|
205
|
+
max-width: 150px;
|
199
206
|
margin: 0;
|
200
207
|
border: 1px solid #B3B3B3;
|
201
208
|
outline: none;
|
202
209
|
}
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
font-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
visibility: hidden;
|
214
|
-
}
|
215
|
-
#teabag-controls #teabag-filter.teabag-filtered button {
|
216
|
-
visibility: visible;
|
210
|
+
#teabag-controls input {
|
211
|
+
margin: 0;
|
212
|
+
padding: 2px 8px;
|
213
|
+
zoom: 1;
|
214
|
+
border: 1px solid #B3B3B3;
|
215
|
+
outline: none;
|
216
|
+
font-size: 12px;
|
217
|
+
border-radius: 0.4em;
|
218
|
+
background-color: #fff;
|
219
|
+
width: 100%;
|
217
220
|
}
|
221
|
+
|
218
222
|
#teabag-controls #teabag-toggles {
|
219
223
|
float: right;
|
220
224
|
}
|
@@ -233,6 +237,41 @@ html[xmlns] #teabag-html-reporter .teabag-clearfix {
|
|
233
237
|
position: relative;
|
234
238
|
}
|
235
239
|
|
240
|
+
/* Filter
|
241
|
+
*---------------------------------------------------------------------------*/
|
242
|
+
#teabag-filter {
|
243
|
+
font-weight: 200;
|
244
|
+
display: none;
|
245
|
+
}
|
246
|
+
#teabag-filter.teabag-filtered {
|
247
|
+
display: block;
|
248
|
+
}
|
249
|
+
#teabag-filter h1 {
|
250
|
+
float: right;
|
251
|
+
height: 15px;
|
252
|
+
margin: -11px 15px 0 0;
|
253
|
+
padding: 0 4px;
|
254
|
+
background: #f4f3ee;
|
255
|
+
text-align: right;
|
256
|
+
font-size: 17px;
|
257
|
+
font-weight: 200;
|
258
|
+
color: #7b4f49;
|
259
|
+
}
|
260
|
+
#teabag-filter ul {
|
261
|
+
margin: 0;
|
262
|
+
padding: 3px 10px 6px;
|
263
|
+
list-style: none;
|
264
|
+
border: 1px solid #cfc8c4;
|
265
|
+
border-radius: 3px;
|
266
|
+
}
|
267
|
+
#teabag-filter li {
|
268
|
+
overflow: hidden;
|
269
|
+
text-overflow: ellipsis;
|
270
|
+
white-space: nowrap;
|
271
|
+
width: 100%;
|
272
|
+
}
|
273
|
+
|
274
|
+
|
236
275
|
/* Reporting
|
237
276
|
*---------------------------------------------------------------------------*/
|
238
277
|
#teabag-report a {
|
@@ -283,7 +322,6 @@ html[xmlns] #teabag-html-reporter .teabag-clearfix {
|
|
283
322
|
background: #ff3f3c;
|
284
323
|
}
|
285
324
|
|
286
|
-
|
287
325
|
#teabag-report #teabag-report-all {
|
288
326
|
margin: 0;
|
289
327
|
padding: 0;
|
@@ -325,10 +363,10 @@ html[xmlns] #teabag-html-reporter .teabag-clearfix {
|
|
325
363
|
|
326
364
|
/* State Overrides
|
327
365
|
*---------------------------------------------------------------------------*/
|
328
|
-
body.teabag-failed #teabag-
|
366
|
+
body.teabag-failed #teabag-interface {
|
329
367
|
border-top: 3px solid #ff3f3c;
|
330
368
|
}
|
331
|
-
body.teabag-passed #teabag-
|
369
|
+
body.teabag-passed #teabag-interface {
|
332
370
|
border-top: 3px solid #51e431;
|
333
371
|
}
|
334
372
|
body.teabag-failed #teabag-progress .teabag-indicator {
|
@@ -350,11 +388,41 @@ body.teabag-passed #teabag-progress .teabag-indicator {
|
|
350
388
|
background: #fff;
|
351
389
|
}
|
352
390
|
|
391
|
+
/* Suite List
|
392
|
+
*---------------------------------------------------------------------------*/
|
393
|
+
#teabag-suite-list {
|
394
|
+
list-style: none;
|
395
|
+
margin: 0;
|
396
|
+
padding: 0;
|
397
|
+
}
|
398
|
+
#teabag-suite-list ul {
|
399
|
+
margin: 0 0 20px 0;
|
400
|
+
padding: 0 0 0 20px;
|
401
|
+
/*background: rgba(200, 184, 161, 0.1);*/
|
402
|
+
}
|
403
|
+
#teabag-suite-list a {
|
404
|
+
text-decoration: none;
|
405
|
+
color: #482b25;
|
406
|
+
}
|
407
|
+
#teabag-suite-list a:hover {
|
408
|
+
text-decoration: underline;
|
409
|
+
}
|
410
|
+
#teabag-suite-list h1 {
|
411
|
+
margin: 0 0 -1px 0;
|
412
|
+
font-weight: 400;
|
413
|
+
font-size: 20px;
|
414
|
+
border-bottom: 1px dotted #cfc8c4;
|
415
|
+
}
|
416
|
+
#teabag-suite-list h4 {
|
417
|
+
margin: 0;
|
418
|
+
font-weight: 200;
|
419
|
+
}
|
420
|
+
|
353
421
|
/* Responsive
|
354
422
|
*---------------------------------------------------------------------------*/
|
355
423
|
@media (max-width: 540px) {
|
356
|
-
|
357
|
-
padding:
|
424
|
+
#teabag-interface {
|
425
|
+
padding: 15px 5px;
|
358
426
|
}
|
359
427
|
#teabag-progress {
|
360
428
|
margin-right: 15px;
|
@@ -7,7 +7,11 @@ class Teabag::SpecController < ActionController::Base
|
|
7
7
|
rescue_from Exception, with: :javascript_exception
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
10
|
+
def suites
|
11
|
+
@suites = Teabag.configuration.suites.keys.map { |suite| Teabag::Suite.new(suite: suite) }
|
12
|
+
end
|
13
|
+
|
14
|
+
def runner
|
11
15
|
@suite = Teabag::Suite.new(params)
|
12
16
|
end
|
13
17
|
|
File without changes
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<!DOCTYPE>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Teabag :: Suites</title>
|
5
|
+
<meta name="viewport" content="width=device-width, user-scalable=no">
|
6
|
+
<%= csrf_meta_tags %>
|
7
|
+
<%= stylesheet_link_tag_for_teabag *(@suites.first.present? ? @suites.first.stylesheets : "teabag") %>
|
8
|
+
<%= javascript_include_tag_for_teabag "teabag-teabag" %>
|
9
|
+
</head>
|
10
|
+
<body>
|
11
|
+
<div id="teabag-interface">
|
12
|
+
<div class="teabag-clearfix">
|
13
|
+
<div id="teabag-title">
|
14
|
+
<h1>Teabag</h1>
|
15
|
+
<ul>
|
16
|
+
<li>version: <b><%= Teabag::VERSION %></b></li>
|
17
|
+
<li><a href="http://github.com/modeset/teabag" target="blank">http://github.com/modeset/teabag</a></li>
|
18
|
+
</ul>
|
19
|
+
</div>
|
20
|
+
<div id="teabag-progress"><div class="teabag-indicator modeset-logo"></div></div>
|
21
|
+
</div>
|
22
|
+
<div id="teabag-controls" class="teabag-clearfix">
|
23
|
+
<input type="text" id="teabag-filter-input" placeholder="filter files"/>
|
24
|
+
</div>
|
25
|
+
<hr/>
|
26
|
+
<ul id="teabag-suite-list">
|
27
|
+
<% for suite in @suites %>
|
28
|
+
<li class="suite">
|
29
|
+
<h1><%= link_to suite.name, suite.link %></h1>
|
30
|
+
<ul class="file">
|
31
|
+
<% for file in suite.spec_files %>
|
32
|
+
<h4><%= link_to file[:name], suite.link(file: file[:path]) %></h4>
|
33
|
+
<% end %>
|
34
|
+
</ul>
|
35
|
+
</li>
|
36
|
+
<% end %>
|
37
|
+
</ul>
|
38
|
+
</div>
|
39
|
+
</body>
|
40
|
+
</html>
|
data/config/routes.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
Teabag::Engine.routes.draw do
|
2
|
-
get "/fixtures/*filename", to: "spec#fixtures"
|
3
|
-
get "
|
2
|
+
get "/fixtures/*filename", to: "spec#fixtures"
|
3
|
+
get "/:suite", to: "spec#runner", defaults: { suite: "default" }
|
4
|
+
root to: "spec#suites"
|
4
5
|
end
|
data/lib/teabag/console.rb
CHANGED
@@ -53,11 +53,11 @@ module Teabag
|
|
53
53
|
parts = []
|
54
54
|
parts << "grep=#{URI::encode(@options[:filter])}" if @options[:filter].present?
|
55
55
|
@files.each { |file| parts << "file[]=#{URI::encode(file)}" }
|
56
|
-
"?#{parts.join('&')}"
|
56
|
+
"?#{parts.join('&')}" if parts.present?
|
57
57
|
end
|
58
58
|
|
59
59
|
def url(suite)
|
60
|
-
["#{@server.url}#{Teabag.configuration.mount_at}", suite, filter].join("/")
|
60
|
+
["#{@server.url}#{Teabag.configuration.mount_at}", suite, filter].compact.join("/")
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
data/lib/teabag/suite.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
module Teabag
|
2
2
|
class Suite
|
3
3
|
|
4
|
-
attr_accessor :config
|
4
|
+
attr_accessor :config, :name
|
5
5
|
delegate :stylesheets, :helper, to: :config
|
6
6
|
|
7
7
|
def initialize(options = {})
|
8
8
|
@options = options
|
9
|
-
@name = @options[:suite] || :default
|
9
|
+
@name = (@options[:suite] || :default).to_s
|
10
10
|
@config = suite_configuration
|
11
11
|
end
|
12
12
|
|
@@ -22,34 +22,44 @@ module Teabag
|
|
22
22
|
[helper, specs].flatten
|
23
23
|
end
|
24
24
|
|
25
|
-
def
|
26
|
-
|
27
|
-
|
25
|
+
def suites
|
26
|
+
{all: Teabag.configuration.suites.keys, active: name}
|
27
|
+
end
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
end
|
29
|
+
def spec_files
|
30
|
+
glob.map { |file| {path: file, name: asset_from_file(file)} }
|
32
31
|
end
|
33
32
|
|
34
|
-
def
|
35
|
-
{
|
33
|
+
def link(params = {})
|
34
|
+
query = "?#{params.to_query}" if params.present?
|
35
|
+
[Teabag.configuration.mount_at, name, query].compact.join("/")
|
36
36
|
end
|
37
37
|
|
38
38
|
protected
|
39
39
|
|
40
|
-
def
|
41
|
-
|
42
|
-
|
43
|
-
|
40
|
+
def specs
|
41
|
+
files = specs_from_file
|
42
|
+
return files unless files.empty?
|
43
|
+
glob.map { |file| asset_from_file(file) }
|
44
|
+
end
|
45
|
+
|
46
|
+
def glob
|
47
|
+
Dir[config.matcher.present? ? Teabag.configuration.root.join(config.matcher) : ""]
|
44
48
|
end
|
45
49
|
|
46
50
|
def suite_configuration
|
47
|
-
config = Teabag.configuration.suites[
|
51
|
+
config = Teabag.configuration.suites[name]
|
48
52
|
raise Teabag::UnknownSuite unless config.present?
|
49
53
|
Teabag::Configuration::Suite.new(&config)
|
50
54
|
end
|
51
55
|
|
52
|
-
def
|
56
|
+
def specs_from_file
|
57
|
+
Array(@options[:file]).map do |filename|
|
58
|
+
asset_from_file(File.expand_path(Teabag.configuration.root.join(filename)))
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def asset_from_file(original)
|
53
63
|
filename = original
|
54
64
|
Rails.application.config.assets.paths.each do |path|
|
55
65
|
filename = filename.gsub(%r(^#{path}[\/|\\]), "")
|