everqueen 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. data/README.rdoc +163 -0
  2. data/bin/everqueen +18 -0
  3. data/config/routes.rb +3 -0
  4. data/lib/everqueen.rb +66 -0
  5. data/lib/everqueen/application.rb +47 -0
  6. data/lib/everqueen/assets/elabs.png +0 -0
  7. data/lib/everqueen/assets/everqueen.scss.css +370 -0
  8. data/lib/everqueen/assets/jquery.js +152 -0
  9. data/lib/everqueen/assets/json2.js +25 -0
  10. data/lib/everqueen/assets/list.js.coffee +35 -0
  11. data/lib/everqueen/assets/run.js.coffee.erb +39 -0
  12. data/lib/everqueen/assets/start.js.coffee +6 -0
  13. data/lib/everqueen/assets/test_helper.js +3 -0
  14. data/lib/everqueen/cli.rb +29 -0
  15. data/lib/everqueen/rails.rb +14 -0
  16. data/lib/everqueen/runner.rb +151 -0
  17. data/lib/everqueen/server.rb +19 -0
  18. data/lib/everqueen/suite.rb +32 -0
  19. data/lib/everqueen/tasks.rb +10 -0
  20. data/lib/everqueen/test.rb +44 -0
  21. data/lib/everqueen/version.rb +3 -0
  22. data/lib/everqueen/views/_test_error.erb +4 -0
  23. data/lib/everqueen/views/layout.erb +17 -0
  24. data/lib/everqueen/views/list.erb +19 -0
  25. data/lib/everqueen/views/run.erb +20 -0
  26. data/lib/qunit/History.md +330 -0
  27. data/lib/qunit/README.md +37 -0
  28. data/lib/qunit/addons/canvas/README.md +16 -0
  29. data/lib/qunit/addons/canvas/canvas-test.js +76 -0
  30. data/lib/qunit/addons/canvas/canvas.html +19 -0
  31. data/lib/qunit/addons/canvas/qunit-canvas.js +6 -0
  32. data/lib/qunit/addons/close-enough/README.md +17 -0
  33. data/lib/qunit/addons/close-enough/close-enough-test.js +37 -0
  34. data/lib/qunit/addons/close-enough/close-enough.html +18 -0
  35. data/lib/qunit/addons/close-enough/qunit-close-enough.js +32 -0
  36. data/lib/qunit/addons/composite/README.md +7 -0
  37. data/lib/qunit/addons/composite/composite-demo-test.html +33 -0
  38. data/lib/qunit/addons/composite/composite-test.html +20 -0
  39. data/lib/qunit/addons/composite/composite-test.js +159 -0
  40. data/lib/qunit/addons/composite/dummy-qunit-test.html +19 -0
  41. data/lib/qunit/addons/composite/dummy-same-test.html +19 -0
  42. data/lib/qunit/addons/composite/index.html +35 -0
  43. data/lib/qunit/addons/composite/qunit-composite.css +13 -0
  44. data/lib/qunit/addons/composite/qunit-composite.js +82 -0
  45. data/lib/qunit/addons/step/README.md +18 -0
  46. data/lib/qunit/addons/step/qunit-step.js +25 -0
  47. data/lib/qunit/addons/step/step-test.js +13 -0
  48. data/lib/qunit/addons/step/step.html +19 -0
  49. data/lib/qunit/package.json +28 -0
  50. data/lib/qunit/qunit/qunit.css +226 -0
  51. data/lib/qunit/qunit/qunit.js +1597 -0
  52. data/lib/qunit/test/headless.html +24 -0
  53. data/lib/qunit/test/index.html +21 -0
  54. data/lib/qunit/test/logs.html +17 -0
  55. data/lib/qunit/test/logs.js +153 -0
  56. data/lib/qunit/test/same.js +1432 -0
  57. data/lib/qunit/test/swarminject.js +9 -0
  58. data/lib/qunit/test/test.js +524 -0
  59. data/lib/tasks/everqueen.rake +8 -0
  60. data/spec/everqueen_spec.rb +52 -0
  61. data/spec/meta_spec.rb +40 -0
  62. data/spec/runner_spec.rb +32 -0
  63. data/spec/spec_helper.rb +49 -0
  64. data/spec/suite1/public/jquery.js +152 -0
  65. data/spec/suite1/public/styles.css +3 -0
  66. data/spec/suite1/test/javascripts/bar_test.js +0 -0
  67. data/spec/suite1/test/javascripts/coffeescript_test.coffee +7 -0
  68. data/spec/suite1/test/javascripts/failing_test.js +9 -0
  69. data/spec/suite1/test/javascripts/foo_test.js +0 -0
  70. data/spec/suite1/test/javascripts/libs/lucid_test.js +0 -0
  71. data/spec/suite1/test/javascripts/models/game_test.js +0 -0
  72. data/spec/suite1/test/javascripts/slow_test.coffee +8 -0
  73. data/spec/suite1/test/javascripts/test_helper.js +1 -0
  74. data/spec/suite1/test/javascripts/testing_test.js +9 -0
  75. data/spec/suite1/test/javascripts/transactions_test.js +10 -0
  76. data/spec/suite1/test/javascripts/with_helper_test.js +4 -0
  77. data/spec/suite2/config/everqueen.rb +4 -0
  78. data/spec/suite2/public_html/foo.js +1 -0
  79. data/spec/suite2/test/awesome_test.js +7 -0
  80. data/spec/suite2/test/failing_test.js +4 -0
  81. data/spec/suite_spec.rb +19 -0
  82. data/spec/test_spec.rb +21 -0
  83. metadata +295 -0
@@ -0,0 +1,19 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <title>QUnit Core Test Suite</title>
6
+ <link rel="stylesheet" href="../../qunit/qunit.css" type="text/css" media="screen">
7
+ <script src="../../qunit/qunit.js"></script>
8
+
9
+ <script src="../../test/test.js"></script>
10
+ </head>
11
+ <body>
12
+ <h1 id="qunit-header">QUnit Core Test Suite</h1>
13
+ <h2 id="qunit-banner"></h2>
14
+ <div id="qunit-testrunner-toolbar"></div>
15
+ <h2 id="qunit-userAgent"></h2>
16
+ <ol id="qunit-tests"></ol>
17
+ <div id="qunit-fixture">test markup</div>
18
+ </body>
19
+ </html>
@@ -0,0 +1,19 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <title>QUnit Same Test Suite</title>
6
+ <link rel="stylesheet" href="../../qunit/qunit.css" type="text/css" media="screen">
7
+ <script src="../../qunit/qunit.js"></script>
8
+
9
+ <script src="../../test/same.js"></script>
10
+ </head>
11
+ <body>
12
+ <h1 id="qunit-header">QUnit Same Test Suite</h1>
13
+ <h2 id="qunit-banner"></h2>
14
+ <div id="qunit-testrunner-toolbar"></div>
15
+ <h2 id="qunit-userAgent"></h2>
16
+ <ol id="qunit-tests"></ol>
17
+ <div id="qunit-fixture">test markup</div>
18
+ </body>
19
+ </html>
@@ -0,0 +1,35 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <title>Composite</title>
6
+ </head>
7
+ <body>
8
+ <h1>Composite</h1>
9
+ <h3>A QUnit Addon For Running Multiple Test Files</h3>
10
+ <p>Composite is a QUnit addon that, when handed an array of
11
+ files, will open each of those files inside of an iframe, run
12
+ the tests and display the results as a single suite of QUnit
13
+ tests.</p>
14
+ <h4>Using Composite</h4>
15
+ <p>To use Composite, setup a standard QUnit html page as you
16
+ would with other QUnit tests. Remember to include composite.js
17
+ and composite.css. Then, inside of either an external js file,
18
+ or a script block call the only new method that Composite
19
+ exposes, QUnit.testSuites().</p><p>QUnit.testSuites() is
20
+ passed an array of test files to run as follows:</p>
21
+ <pre>
22
+ QUnit.testSuites([
23
+ "test-file-1.html",
24
+ "test-file-2.html",
25
+ "test-file-3.html"
26
+ ]);
27
+ </pre>
28
+ <h4>Tests</h4>
29
+ <p>Composite has tests of it's own.</p>
30
+ <p>
31
+ <a href="composite-test.html">Composite Test</a>: A suite which tests the implementation of composite.<br>
32
+ <a href="composite-demo-test.html">Composite Demo</a>: A suite which demoes how Compisite is bootstrapped and run.
33
+ </p>
34
+ </body>
35
+ </html>
@@ -0,0 +1,13 @@
1
+ iframe.qunit-subsuite{
2
+ position: fixed;
3
+ bottom: 0;
4
+ left: 0;
5
+
6
+ margin: 0;
7
+ padding: 0;
8
+ border-width: 1px 0 0;
9
+ height: 45%;
10
+ width: 100%;
11
+
12
+ background: #fff;
13
+ }
@@ -0,0 +1,82 @@
1
+ (function( QUnit ) {
2
+
3
+ var subsuiteFrame;
4
+
5
+ QUnit.extend( QUnit, {
6
+ testSuites: function( suites ) {
7
+ for ( var i = 0; i < suites.length; i++ ) {
8
+ (function( suite ) {
9
+ asyncTest( suite, function() {
10
+ QUnit.runSuite( suite );
11
+ });
12
+ }( suites[i] ) );
13
+ }
14
+ QUnit.done = function() {
15
+ subsuiteFrame.style.display = "none";
16
+ };
17
+ },
18
+
19
+ testStart: function( data ) {
20
+ // update the test status to show which test suite is running
21
+ QUnit.id( "qunit-testresult" ).innerHTML = "Running " + data.name + "...<br>&nbsp;";
22
+ },
23
+
24
+ testDone: function() {
25
+ var current = QUnit.id( this.config.current.id ),
26
+ children = current.children;
27
+
28
+ // undo the auto-expansion of failed tests
29
+ for ( var i = 0; i < children.length; i++ ) {
30
+ if ( children[i].nodeName === "OL" ) {
31
+ children[i].style.display = "none";
32
+ }
33
+ }
34
+ },
35
+
36
+ runSuite: function( suite ) {
37
+ var body = document.getElementsByTagName( "body" )[0],
38
+ iframe = subsuiteFrame = document.createElement( "iframe" ),
39
+ iframeWin;
40
+
41
+ iframe.className = "qunit-subsuite";
42
+ body.appendChild( iframe );
43
+
44
+ function onIframeLoad() {
45
+ var module, test,
46
+ count = 0;
47
+
48
+ QUnit.extend( iframeWin.QUnit, {
49
+ moduleStart: function( data ) {
50
+ // capture module name for messages
51
+ module = data.name;
52
+ },
53
+
54
+ testStart: function( data ) {
55
+ // capture test name for messages
56
+ test = data.name;
57
+ },
58
+
59
+ log: function( data ) {
60
+ // pass all test details through to the main page
61
+ var message = module + ": " + test + ": " + data.message;
62
+ expect( ++count );
63
+ QUnit.push( data.result, data.actual, data.expected, message );
64
+ },
65
+
66
+ done: function() {
67
+ // start the wrapper test from the main page
68
+ start();
69
+ }
70
+ });
71
+ }
72
+ QUnit.addEvent( iframe, "load", onIframeLoad );
73
+
74
+ iframeWin = iframe.contentWindow;
75
+ iframe.setAttribute( "src", suite );
76
+
77
+ this.runSuite = function( suite ) {
78
+ iframe.setAttribute( "src", suite );
79
+ };
80
+ }
81
+ });
82
+ }( QUnit ) );
@@ -0,0 +1,18 @@
1
+ QUnit.step() - A QUnit Addon For Testing execution in order
2
+ ============================================================
3
+
4
+ This addon for QUnit adds a step method that allows you to assert
5
+ the proper sequence in which the code should execute.
6
+
7
+ Example:
8
+
9
+ test("example test", function () {
10
+ function x() {
11
+ QUnit.step(2, "function y should be called first");
12
+ }
13
+ function y() {
14
+ QUnit.step(1);
15
+ }
16
+ y();
17
+ x();
18
+ });
@@ -0,0 +1,25 @@
1
+ QUnit.extend( QUnit, {
2
+
3
+ /**
4
+ * Check the sequence/order
5
+ *
6
+ * @example step(1); setTimeout(function () { step(3); }, 100); step(2);
7
+ * @param Number expected The excepted step within the test()
8
+ * @param String message (optional)
9
+ */
10
+ step: function (expected, message) {
11
+ this.config.current.step++; // increment internal step counter.
12
+ if (typeof message == "undefined") {
13
+ message = "step " + expected;
14
+ }
15
+ var actual = this.config.current.step;
16
+ QUnit.push(QUnit.equiv(actual, expected), actual, expected, message);
17
+ }
18
+ });
19
+
20
+ /**
21
+ * Reset the step counter for every test()
22
+ */
23
+ QUnit.testStart(function () {
24
+ this.config.current.step = 0;
25
+ });
@@ -0,0 +1,13 @@
1
+ module('Step Addon');
2
+ test("step", 3, function () {
3
+ QUnit.step(1, "step starts at 1");
4
+ setTimeout(function () {
5
+ start();
6
+ QUnit.step(3);
7
+ }, 100);
8
+ QUnit.step(2, "before the setTimeout callback is run");
9
+ stop();
10
+ });
11
+ test("step counter", 1, function () {
12
+ QUnit.step(1, "each test has its own step counter");
13
+ });
@@ -0,0 +1,19 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <title>QUnit Test Suite - Step Addon</title>
6
+ <link rel="stylesheet" href="../../qunit/qunit.css" type="text/css" media="screen">
7
+ <script type="text/javascript" src="../../qunit/qunit.js"></script>
8
+ <script type="text/javascript" src="qunit-step.js"></script>
9
+ <script type="text/javascript" src="step-test.js"></script>
10
+ </head>
11
+ <body>
12
+ <h1 id="qunit-header">QUnit Test Suite - Step Addon</h1>
13
+ <h2 id="qunit-banner"></h2>
14
+ <div id="qunit-testrunner-toolbar"></div>
15
+ <h2 id="qunit-userAgent"></h2>
16
+ <ol id="qunit-tests"></ol>
17
+ <canvas id="qunit-canvas" width="5" height="5"></canvas>
18
+ </body>
19
+ </html>
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "qunit",
3
+ "author": "The jQuery Project",
4
+ "version": "1.1.0pre",
5
+ "contributors": [
6
+ {
7
+ "name": "John Resig",
8
+ "email": "jeresig@gmail.com",
9
+ "url": "http://ejohn.org/"
10
+ },
11
+ {
12
+ "name": "Jörn Zaefferer",
13
+ "email": "joern.zaefferer@googlemail.com",
14
+ "url": "http://bassistance.de/"
15
+ }],
16
+ "url": "http://docs.jquery.com/QUnit",
17
+ "repositories" : [{
18
+ "type": "git",
19
+ "url": "https://github.com/jquery/qunit.git"
20
+ }],
21
+ "license": {
22
+ "name": "MIT",
23
+ "url": "http://www.opensource.org/licenses/mit-license.php"
24
+ },
25
+ "description": "An easy-to-use JavaScript Unit Testing framework.",
26
+ "keywords": [ "testing", "unit", "jquery" ],
27
+ "main": "qunit/qunit.js"
28
+ }
@@ -0,0 +1,226 @@
1
+ /**
2
+ * QUnit v1.2.0 - A JavaScript Unit Testing Framework
3
+ *
4
+ * http://docs.jquery.com/QUnit
5
+ *
6
+ * Copyright (c) 2011 John Resig, Jörn Zaefferer
7
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
8
+ * or GPL (GPL-LICENSE.txt) licenses.
9
+ */
10
+
11
+ /** Font Family and Sizes */
12
+
13
+ #qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
14
+ font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
15
+ }
16
+
17
+ #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
18
+ #qunit-tests { font-size: smaller; }
19
+
20
+
21
+ /** Resets */
22
+
23
+ #qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
24
+ margin: 0;
25
+ padding: 0;
26
+ }
27
+
28
+
29
+ /** Header */
30
+
31
+ #qunit-header {
32
+ padding: 0.5em 0 0.5em 1em;
33
+
34
+ color: #8699a4;
35
+ background-color: #0d3349;
36
+
37
+ font-size: 1.5em;
38
+ line-height: 1em;
39
+ font-weight: normal;
40
+
41
+ border-radius: 15px 15px 0 0;
42
+ -moz-border-radius: 15px 15px 0 0;
43
+ -webkit-border-top-right-radius: 15px;
44
+ -webkit-border-top-left-radius: 15px;
45
+ }
46
+
47
+ #qunit-header a {
48
+ text-decoration: none;
49
+ color: #c2ccd1;
50
+ }
51
+
52
+ #qunit-header a:hover,
53
+ #qunit-header a:focus {
54
+ color: #fff;
55
+ }
56
+
57
+ #qunit-banner {
58
+ height: 5px;
59
+ }
60
+
61
+ #qunit-testrunner-toolbar {
62
+ padding: 0.5em 0 0.5em 2em;
63
+ color: #5E740B;
64
+ background-color: #eee;
65
+ }
66
+
67
+ #qunit-userAgent {
68
+ padding: 0.5em 0 0.5em 2.5em;
69
+ background-color: #2b81af;
70
+ color: #fff;
71
+ text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
72
+ }
73
+
74
+
75
+ /** Tests: Pass/Fail */
76
+
77
+ #qunit-tests {
78
+ list-style-position: inside;
79
+ }
80
+
81
+ #qunit-tests li {
82
+ padding: 0.4em 0.5em 0.4em 2.5em;
83
+ border-bottom: 1px solid #fff;
84
+ list-style-position: inside;
85
+ }
86
+
87
+ #qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running {
88
+ display: none;
89
+ }
90
+
91
+ #qunit-tests li strong {
92
+ cursor: pointer;
93
+ }
94
+
95
+ #qunit-tests li a {
96
+ padding: 0.5em;
97
+ color: #c2ccd1;
98
+ text-decoration: none;
99
+ }
100
+ #qunit-tests li a:hover,
101
+ #qunit-tests li a:focus {
102
+ color: #000;
103
+ }
104
+
105
+ #qunit-tests ol {
106
+ margin-top: 0.5em;
107
+ padding: 0.5em;
108
+
109
+ background-color: #fff;
110
+
111
+ border-radius: 15px;
112
+ -moz-border-radius: 15px;
113
+ -webkit-border-radius: 15px;
114
+
115
+ box-shadow: inset 0px 2px 13px #999;
116
+ -moz-box-shadow: inset 0px 2px 13px #999;
117
+ -webkit-box-shadow: inset 0px 2px 13px #999;
118
+ }
119
+
120
+ #qunit-tests table {
121
+ border-collapse: collapse;
122
+ margin-top: .2em;
123
+ }
124
+
125
+ #qunit-tests th {
126
+ text-align: right;
127
+ vertical-align: top;
128
+ padding: 0 .5em 0 0;
129
+ }
130
+
131
+ #qunit-tests td {
132
+ vertical-align: top;
133
+ }
134
+
135
+ #qunit-tests pre {
136
+ margin: 0;
137
+ white-space: pre-wrap;
138
+ word-wrap: break-word;
139
+ }
140
+
141
+ #qunit-tests del {
142
+ background-color: #e0f2be;
143
+ color: #374e0c;
144
+ text-decoration: none;
145
+ }
146
+
147
+ #qunit-tests ins {
148
+ background-color: #ffcaca;
149
+ color: #500;
150
+ text-decoration: none;
151
+ }
152
+
153
+ /*** Test Counts */
154
+
155
+ #qunit-tests b.counts { color: black; }
156
+ #qunit-tests b.passed { color: #5E740B; }
157
+ #qunit-tests b.failed { color: #710909; }
158
+
159
+ #qunit-tests li li {
160
+ margin: 0.5em;
161
+ padding: 0.4em 0.5em 0.4em 0.5em;
162
+ background-color: #fff;
163
+ border-bottom: none;
164
+ list-style-position: inside;
165
+ }
166
+
167
+ /*** Passing Styles */
168
+
169
+ #qunit-tests li li.pass {
170
+ color: #5E740B;
171
+ background-color: #fff;
172
+ border-left: 26px solid #C6E746;
173
+ }
174
+
175
+ #qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; }
176
+ #qunit-tests .pass .test-name { color: #366097; }
177
+
178
+ #qunit-tests .pass .test-actual,
179
+ #qunit-tests .pass .test-expected { color: #999999; }
180
+
181
+ #qunit-banner.qunit-pass { background-color: #C6E746; }
182
+
183
+ /*** Failing Styles */
184
+
185
+ #qunit-tests li li.fail {
186
+ color: #710909;
187
+ background-color: #fff;
188
+ border-left: 26px solid #EE5757;
189
+ white-space: pre;
190
+ }
191
+
192
+ #qunit-tests > li:last-child {
193
+ border-radius: 0 0 15px 15px;
194
+ -moz-border-radius: 0 0 15px 15px;
195
+ -webkit-border-bottom-right-radius: 15px;
196
+ -webkit-border-bottom-left-radius: 15px;
197
+ }
198
+
199
+ #qunit-tests .fail { color: #000000; background-color: #EE5757; }
200
+ #qunit-tests .fail .test-name,
201
+ #qunit-tests .fail .module-name { color: #000000; }
202
+
203
+ #qunit-tests .fail .test-actual { color: #EE5757; }
204
+ #qunit-tests .fail .test-expected { color: green; }
205
+
206
+ #qunit-banner.qunit-fail { background-color: #EE5757; }
207
+
208
+
209
+ /** Result */
210
+
211
+ #qunit-testresult {
212
+ padding: 0.5em 0.5em 0.5em 2.5em;
213
+
214
+ color: #2b81af;
215
+ background-color: #D2E0E6;
216
+
217
+ border-bottom: 1px solid white;
218
+ }
219
+
220
+ /** Fixture */
221
+
222
+ #qunit-fixture {
223
+ position: absolute;
224
+ top: -10000px;
225
+ left: -10000px;
226
+ }