evergreen 0.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +101 -3
- data/bin/evergreen +2 -2
- data/lib/evergreen.rb +14 -2
- data/lib/evergreen/evergreen.js +23 -0
- data/lib/evergreen/rails.rb +8 -0
- data/lib/evergreen/runner.rb +21 -14
- data/lib/evergreen/spec.rb +12 -33
- data/lib/evergreen/version.rb +1 -1
- data/lib/evergreen/views/list.erb +1 -1
- data/lib/evergreen/views/spec.erb +9 -22
- data/lib/jasmine/README.markdown +21 -28
- data/lib/jasmine/Rakefile +98 -68
- data/lib/jasmine/example/SpecRunner.html +27 -0
- data/lib/jasmine/example/spec/PlayerSpec.js +58 -0
- data/lib/jasmine/example/spec/SpecHelper.js +9 -0
- data/lib/jasmine/example/src/Player.js +22 -0
- data/lib/jasmine/example/src/Song.js +7 -0
- data/lib/jasmine/lib/jasmine-html.js +182 -0
- data/lib/jasmine/lib/{jasmine-0.10.4.js → jasmine.js} +127 -155
- data/lib/jasmine/spec/runner.html +4 -3
- data/lib/jasmine/spec/suites/BaseSpec.js +27 -0
- data/lib/jasmine/spec/suites/CustomMatchersSpec.js +0 -24
- data/lib/jasmine/spec/suites/EnvSpec.js +1 -1
- data/lib/jasmine/spec/suites/JsApiReporterSpec.js +16 -9
- data/lib/jasmine/spec/suites/MatchersSpec.js +49 -42
- data/lib/jasmine/spec/suites/MockClockSpec.js +4 -0
- data/lib/jasmine/spec/suites/MultiReporterSpec.js +23 -8
- data/lib/jasmine/spec/suites/PrettyPrintSpec.js +2 -2
- data/lib/jasmine/spec/suites/ReporterSpec.js +10 -14
- data/lib/jasmine/spec/suites/RunnerSpec.js +6 -6
- data/lib/jasmine/spec/suites/SpecRunningSpec.js +1 -1
- data/lib/jasmine/spec/suites/SpecSpec.js +15 -1
- data/lib/jasmine/spec/suites/SpySpec.js +3 -3
- data/lib/jasmine/spec/suites/TrivialReporterSpec.js +91 -14
- data/lib/jasmine/spec/suites/WaitsForBlockSpec.js +5 -6
- data/lib/jasmine/src/JsApiReporter.js +4 -6
- data/lib/jasmine/src/Matchers.js +19 -19
- data/lib/jasmine/src/MultiReporter.js +8 -1
- data/lib/jasmine/src/NestedResults.js +5 -5
- data/lib/jasmine/src/PrettyPrinter.js +2 -2
- data/lib/jasmine/src/Reporter.js +4 -0
- data/lib/jasmine/src/Spec.js +12 -8
- data/lib/jasmine/src/base.js +40 -44
- data/lib/jasmine/{lib → src/html}/TrivialReporter.js +17 -6
- data/lib/jasmine/src/html/jasmine.css +166 -0
- data/lib/jasmine/src/mock-timeout.js +22 -16
- data/lib/jasmine/src/version.json +2 -2
- data/lib/tasks/evergreen.rake +7 -0
- data/spec/evergreen_spec.rb +18 -0
- data/spec/fixtures/public/jquery.js +152 -0
- data/spec/fixtures/spec/javascripts/bar_spec.js +0 -0
- data/spec/fixtures/spec/javascripts/failing_spec.js +12 -0
- data/spec/fixtures/spec/javascripts/foo_spec.js +0 -0
- data/spec/fixtures/spec/javascripts/templates_spec.html +1 -0
- data/spec/fixtures/spec/javascripts/templates_spec.js +23 -0
- data/spec/fixtures/spec/javascripts/testing_spec.js +11 -0
- data/spec/fixtures/spec/javascripts/transactions_spec.js +14 -0
- data/spec/meta_spec.rb +17 -0
- data/spec/runner_spec.rb +35 -0
- data/spec/spec_helper.rb +33 -0
- data/spec/spec_spec.rb +30 -0
- metadata +64 -48
- data/lib/jasmine/doc/files.html +0 -460
- data/lib/jasmine/doc/index.html +0 -322
- data/lib/jasmine/doc/symbols/_global_.html +0 -918
- data/lib/jasmine/doc/symbols/jasmine.Block.html +0 -417
- data/lib/jasmine/doc/symbols/jasmine.Clock.html +0 -678
- data/lib/jasmine/doc/symbols/jasmine.Env.html +0 -1169
- data/lib/jasmine/doc/symbols/jasmine.JsApiReporter.html +0 -822
- data/lib/jasmine/doc/symbols/jasmine.Matchers.html +0 -1474
- data/lib/jasmine/doc/symbols/jasmine.MultiReporter.html +0 -394
- data/lib/jasmine/doc/symbols/jasmine.NestedResults.html +0 -710
- data/lib/jasmine/doc/symbols/jasmine.Reporter.html +0 -574
- data/lib/jasmine/doc/symbols/jasmine.Runner.html +0 -710
- data/lib/jasmine/doc/symbols/jasmine.Spec.html +0 -1253
- data/lib/jasmine/doc/symbols/jasmine.Spy.html +0 -855
- data/lib/jasmine/doc/symbols/jasmine.Suite.html +0 -705
- data/lib/jasmine/doc/symbols/jasmine.html +0 -1345
- data/lib/jasmine/doc/symbols/jasmine.util.html +0 -535
- data/lib/jasmine/doc/symbols/src/lib_TrivialReporter.js.html +0 -124
- data/lib/jasmine/doc/symbols/src/src_Block.js.html +0 -29
- data/lib/jasmine/doc/symbols/src/src_Env.js.html +0 -248
- data/lib/jasmine/doc/symbols/src/src_JsApiReporter.js.html +0 -111
- data/lib/jasmine/doc/symbols/src/src_Matchers.js.html +0 -344
- data/lib/jasmine/doc/symbols/src/src_MultiReporter.js.html +0 -36
- data/lib/jasmine/doc/symbols/src/src_NestedResults.js.html +0 -88
- data/lib/jasmine/doc/symbols/src/src_PrettyPrinter.js.html +0 -130
- data/lib/jasmine/doc/symbols/src/src_Queue.js.html +0 -102
- data/lib/jasmine/doc/symbols/src/src_Reporter.js.html +0 -35
- data/lib/jasmine/doc/symbols/src/src_Reporters.js.html +0 -51
- data/lib/jasmine/doc/symbols/src/src_Runner.js.html +0 -75
- data/lib/jasmine/doc/symbols/src/src_Spec.js.html +0 -214
- data/lib/jasmine/doc/symbols/src/src_Suite.js.html +0 -77
- data/lib/jasmine/doc/symbols/src/src_WaitsBlock.js.html +0 -21
- data/lib/jasmine/doc/symbols/src/src_WaitsForBlock.js.html +0 -45
- data/lib/jasmine/doc/symbols/src/src_base.js.html +0 -585
- data/lib/jasmine/doc/symbols/src/src_mock-timeout.js.html +0 -185
- data/lib/jasmine/doc/symbols/src/src_util.js.html +0 -75
- data/lib/jasmine/example/example_runner.html +0 -22
- data/lib/jasmine/example/spec/example_suite.js +0 -11
- data/lib/jasmine/spec/jasmine_helper.rb +0 -44
- data/lib/jasmine/spec/jasmine_spec.rb +0 -31
- data/lib/jasmine/spec/saucelabs.yml +0 -24
- data/lib/jasmine/src/Reporters.js +0 -43
@@ -21,8 +21,8 @@ jasmine.PrettyPrinter.prototype.format = function(value) {
|
|
21
21
|
this.emitScalar('undefined');
|
22
22
|
} else if (value === null) {
|
23
23
|
this.emitScalar('null');
|
24
|
-
} else if (value
|
25
|
-
this.emitScalar('<
|
24
|
+
} else if (value === jasmine.getGlobal()) {
|
25
|
+
this.emitScalar('<global>');
|
26
26
|
} else if (value instanceof jasmine.Matchers.Any) {
|
27
27
|
this.emitScalar(value.toString());
|
28
28
|
} else if (typeof value === 'string') {
|
data/lib/jasmine/src/Reporter.js
CHANGED
@@ -17,6 +17,10 @@ jasmine.Reporter.prototype.reportRunnerResults = function(runner) {
|
|
17
17
|
jasmine.Reporter.prototype.reportSuiteResults = function(suite) {
|
18
18
|
};
|
19
19
|
|
20
|
+
//noinspection JSUnusedLocalSymbols
|
21
|
+
jasmine.Reporter.prototype.reportSpecStarting = function(spec) {
|
22
|
+
};
|
23
|
+
|
20
24
|
//noinspection JSUnusedLocalSymbols
|
21
25
|
jasmine.Reporter.prototype.reportSpecResults = function(spec) {
|
22
26
|
};
|
data/lib/jasmine/src/Spec.js
CHANGED
@@ -37,13 +37,13 @@ jasmine.Spec.prototype.results = function() {
|
|
37
37
|
return this.results_;
|
38
38
|
};
|
39
39
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
jasmine.Spec.prototype.
|
46
|
-
return this.results_;
|
40
|
+
/**
|
41
|
+
* All parameters are pretty-printed and concatenated together, then written to the spec's output.
|
42
|
+
*
|
43
|
+
* Be careful not to leave calls to <code>jasmine.log</code> in production code.
|
44
|
+
*/
|
45
|
+
jasmine.Spec.prototype.log = function() {
|
46
|
+
return this.results_.log(arguments);
|
47
47
|
};
|
48
48
|
|
49
49
|
jasmine.Spec.prototype.runs = function (func) {
|
@@ -60,6 +60,9 @@ jasmine.Spec.prototype.addToQueue = function (block) {
|
|
60
60
|
}
|
61
61
|
};
|
62
62
|
|
63
|
+
/**
|
64
|
+
* @param {jasmine.ExpectationResult} result
|
65
|
+
*/
|
63
66
|
jasmine.Spec.prototype.addMatcherResult = function(result) {
|
64
67
|
this.results_.addResult(result);
|
65
68
|
};
|
@@ -131,7 +134,8 @@ jasmine.Spec.prototype.execute = function(onComplete) {
|
|
131
134
|
spec.finish(onComplete);
|
132
135
|
return;
|
133
136
|
}
|
134
|
-
|
137
|
+
|
138
|
+
this.env.reporter.reportSpecStarting(this);
|
135
139
|
|
136
140
|
spec.env.currentSpec = spec;
|
137
141
|
|
data/lib/jasmine/src/base.js
CHANGED
@@ -26,6 +26,14 @@ jasmine.undefined = jasmine.___undefined___;
|
|
26
26
|
*/
|
27
27
|
jasmine.DEFAULT_UPDATE_INTERVAL = 250;
|
28
28
|
|
29
|
+
jasmine.getGlobal = function() {
|
30
|
+
function getGlobal() {
|
31
|
+
return this;
|
32
|
+
}
|
33
|
+
|
34
|
+
return getGlobal();
|
35
|
+
};
|
36
|
+
|
29
37
|
/**
|
30
38
|
* Allows for bound functions to be compared. Internal use only.
|
31
39
|
*
|
@@ -42,35 +50,41 @@ jasmine.bindOriginal_ = function(base, name) {
|
|
42
50
|
};
|
43
51
|
} else {
|
44
52
|
// IE support
|
45
|
-
return
|
53
|
+
return jasmine.getGlobal()[name];
|
46
54
|
}
|
47
55
|
};
|
48
56
|
|
49
|
-
jasmine.setTimeout = jasmine.bindOriginal_(
|
50
|
-
jasmine.clearTimeout = jasmine.bindOriginal_(
|
51
|
-
jasmine.setInterval = jasmine.bindOriginal_(
|
52
|
-
jasmine.clearInterval = jasmine.bindOriginal_(
|
57
|
+
jasmine.setTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'setTimeout');
|
58
|
+
jasmine.clearTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearTimeout');
|
59
|
+
jasmine.setInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'setInterval');
|
60
|
+
jasmine.clearInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearInterval');
|
53
61
|
|
54
|
-
jasmine.MessageResult = function(
|
55
|
-
this.type = '
|
56
|
-
this.
|
62
|
+
jasmine.MessageResult = function(values) {
|
63
|
+
this.type = 'log';
|
64
|
+
this.values = values;
|
57
65
|
this.trace = new Error(); // todo: test better
|
58
66
|
};
|
59
67
|
|
60
68
|
jasmine.MessageResult.prototype.toString = function() {
|
61
|
-
|
69
|
+
var text = "";
|
70
|
+
for(var i = 0; i < this.values.length; i++) {
|
71
|
+
if (i > 0) text += " ";
|
72
|
+
if (jasmine.isString_(this.values[i])) {
|
73
|
+
text += this.values[i];
|
74
|
+
} else {
|
75
|
+
text += jasmine.pp(this.values[i]);
|
76
|
+
}
|
77
|
+
}
|
78
|
+
return text;
|
62
79
|
};
|
63
80
|
|
64
81
|
jasmine.ExpectationResult = function(params) {
|
65
|
-
this.type = '
|
82
|
+
this.type = 'expect';
|
66
83
|
this.matcherName = params.matcherName;
|
67
84
|
this.passed_ = params.passed;
|
68
85
|
this.expected = params.expected;
|
69
86
|
this.actual = params.actual;
|
70
87
|
|
71
|
-
/** @deprecated */
|
72
|
-
this.details = params.details;
|
73
|
-
|
74
88
|
this.message = this.passed_ ? 'Passed.' : params.message;
|
75
89
|
this.trace = this.passed_ ? '' : new Error(this.message);
|
76
90
|
};
|
@@ -158,7 +172,7 @@ jasmine.isDomNode = function(obj) {
|
|
158
172
|
*
|
159
173
|
* @example
|
160
174
|
* // don't care about which function is passed in, as long as it's a function
|
161
|
-
* expect(mySpy).
|
175
|
+
* expect(mySpy).toHaveBeenCalledWith(jasmine.any(Function));
|
162
176
|
*
|
163
177
|
* @param {Class} clazz
|
164
178
|
* @returns matchable object of the type clazz
|
@@ -173,7 +187,8 @@ jasmine.any = function(clazz) {
|
|
173
187
|
* Spies should be created in test setup, before expectations. They can then be checked, using the standard Jasmine
|
174
188
|
* expectation syntax. Spies can be checked if they were called or not and what the calling params were.
|
175
189
|
*
|
176
|
-
* A Spy has the following
|
190
|
+
* A Spy has the following fields: wasCalled, callCount, mostRecentCall, and argsForCall (see docs).
|
191
|
+
*
|
177
192
|
* Spies are torn down at the end of every spec.
|
178
193
|
*
|
179
194
|
* Note: Do <b>not</b> call new jasmine.Spy() directly - a spy must be created using spyOn, jasmine.createSpy or jasmine.createSpyObj.
|
@@ -203,8 +218,8 @@ jasmine.any = function(clazz) {
|
|
203
218
|
*
|
204
219
|
* // mock example
|
205
220
|
* foo.not(7 == 7);
|
206
|
-
* expect(foo.not).
|
207
|
-
* expect(foo.not).
|
221
|
+
* expect(foo.not).toHaveBeenCalled();
|
222
|
+
* expect(foo.not).toHaveBeenCalledWith(true);
|
208
223
|
*
|
209
224
|
* @constructor
|
210
225
|
* @see spyOn, jasmine.createSpy, jasmine.createSpyObj
|
@@ -395,8 +410,14 @@ jasmine.createSpyObj = function(baseName, methodNames) {
|
|
395
410
|
return obj;
|
396
411
|
};
|
397
412
|
|
398
|
-
|
399
|
-
|
413
|
+
/**
|
414
|
+
* All parameters are pretty-printed and concatenated together, then written to the current spec's output.
|
415
|
+
*
|
416
|
+
* Be careful not to leave calls to <code>jasmine.log</code> in production code.
|
417
|
+
*/
|
418
|
+
jasmine.log = function() {
|
419
|
+
var spec = jasmine.getEnv().currentSpec;
|
420
|
+
spec.log.apply(spec, arguments);
|
400
421
|
};
|
401
422
|
|
402
423
|
/**
|
@@ -559,28 +580,3 @@ jasmine.XmlHttpRequest = (typeof XMLHttpRequest == "undefined") ? function() {
|
|
559
580
|
}
|
560
581
|
throw new Error("This browser does not support XMLHttpRequest.");
|
561
582
|
} : XMLHttpRequest;
|
562
|
-
|
563
|
-
/**
|
564
|
-
* Adds suite files to an HTML document so that they are executed, thus adding them to the current
|
565
|
-
* Jasmine environment.
|
566
|
-
*
|
567
|
-
* @param {String} url path to the file to include
|
568
|
-
* @param {Boolean} opt_global
|
569
|
-
* @deprecated We suggest you use a different method of including JS source files. <code>jasmine.include</code> will be removed soon.
|
570
|
-
*/
|
571
|
-
jasmine.include = function(url, opt_global) {
|
572
|
-
if (opt_global) {
|
573
|
-
document.write('<script type="text/javascript" src="' + url + '"></' + 'script>');
|
574
|
-
} else {
|
575
|
-
var xhr;
|
576
|
-
try {
|
577
|
-
xhr = new jasmine.XmlHttpRequest();
|
578
|
-
xhr.open("GET", url, false);
|
579
|
-
xhr.send(null);
|
580
|
-
} catch(e) {
|
581
|
-
throw new Error("couldn't fetch " + url + ": " + e);
|
582
|
-
}
|
583
|
-
|
584
|
-
return eval(xhr.responseText);
|
585
|
-
}
|
586
|
-
};
|
@@ -1,6 +1,7 @@
|
|
1
1
|
jasmine.TrivialReporter = function(doc) {
|
2
2
|
this.document = doc || document;
|
3
3
|
this.suiteDivs = {};
|
4
|
+
this.logRunningSpecs = false;
|
4
5
|
};
|
5
6
|
|
6
7
|
jasmine.TrivialReporter.prototype.createDom = function(type, attrs, childrenVarArgs) {
|
@@ -58,10 +59,10 @@ jasmine.TrivialReporter.prototype.reportRunnerStarting = function(runner) {
|
|
58
59
|
var suiteDiv = this.createDom('div', { className: 'suite' },
|
59
60
|
this.createDom('a', { className: 'run_spec', href: '?spec=' + encodeURIComponent(suite.getFullName()) }, "run"),
|
60
61
|
this.createDom('a', { className: 'description', href: '?spec=' + encodeURIComponent(suite.getFullName()) }, suite.description));
|
61
|
-
this.suiteDivs[suite.
|
62
|
+
this.suiteDivs[suite.id] = suiteDiv;
|
62
63
|
var parentDiv = this.outerDiv;
|
63
64
|
if (suite.parentSuite) {
|
64
|
-
parentDiv = this.suiteDivs[suite.parentSuite.
|
65
|
+
parentDiv = this.suiteDivs[suite.parentSuite.id];
|
65
66
|
}
|
66
67
|
parentDiv.appendChild(suiteDiv);
|
67
68
|
}
|
@@ -112,7 +113,13 @@ jasmine.TrivialReporter.prototype.reportSuiteResults = function(suite) {
|
|
112
113
|
if (results.totalCount == 0) { // todo: change this to check results.skipped
|
113
114
|
status = 'skipped';
|
114
115
|
}
|
115
|
-
this.suiteDivs[suite.
|
116
|
+
this.suiteDivs[suite.id].className += " " + status;
|
117
|
+
};
|
118
|
+
|
119
|
+
jasmine.TrivialReporter.prototype.reportSpecStarting = function(spec) {
|
120
|
+
if (this.logRunningSpecs) {
|
121
|
+
this.log('>> Jasmine Running ' + spec.suite.description + ' ' + spec.description + '...');
|
122
|
+
}
|
116
123
|
};
|
117
124
|
|
118
125
|
jasmine.TrivialReporter.prototype.reportSpecResults = function(spec) {
|
@@ -134,7 +141,10 @@ jasmine.TrivialReporter.prototype.reportSpecResults = function(spec) {
|
|
134
141
|
var messagesDiv = this.createDom('div', { className: 'messages' });
|
135
142
|
for (var i = 0; i < resultItems.length; i++) {
|
136
143
|
var result = resultItems[i];
|
137
|
-
|
144
|
+
|
145
|
+
if (result.type == 'log') {
|
146
|
+
messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage log'}, result.toString()));
|
147
|
+
} else if (result.type == 'expect' && result.passed && !result.passed()) {
|
138
148
|
messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage fail'}, result.message));
|
139
149
|
|
140
150
|
if (result.trace.stack) {
|
@@ -147,11 +157,12 @@ jasmine.TrivialReporter.prototype.reportSpecResults = function(spec) {
|
|
147
157
|
specDiv.appendChild(messagesDiv);
|
148
158
|
}
|
149
159
|
|
150
|
-
this.suiteDivs[spec.suite.
|
160
|
+
this.suiteDivs[spec.suite.id].appendChild(specDiv);
|
151
161
|
};
|
152
162
|
|
153
163
|
jasmine.TrivialReporter.prototype.log = function() {
|
154
|
-
console.
|
164
|
+
var console = jasmine.getGlobal().console;
|
165
|
+
if (console && console.log) console.log.apply(console, arguments);
|
155
166
|
};
|
156
167
|
|
157
168
|
jasmine.TrivialReporter.prototype.getLocation = function() {
|
@@ -0,0 +1,166 @@
|
|
1
|
+
body {
|
2
|
+
font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif;
|
3
|
+
}
|
4
|
+
|
5
|
+
|
6
|
+
.jasmine_reporter a:visited, .jasmine_reporter a {
|
7
|
+
color: #303;
|
8
|
+
}
|
9
|
+
|
10
|
+
.jasmine_reporter a:hover, .jasmine_reporter a:active {
|
11
|
+
color: blue;
|
12
|
+
}
|
13
|
+
|
14
|
+
.run_spec {
|
15
|
+
float:right;
|
16
|
+
padding-right: 5px;
|
17
|
+
font-size: .8em;
|
18
|
+
text-decoration: none;
|
19
|
+
}
|
20
|
+
|
21
|
+
.jasmine_reporter {
|
22
|
+
margin: 0 5px;
|
23
|
+
}
|
24
|
+
|
25
|
+
.banner {
|
26
|
+
color: #303;
|
27
|
+
background-color: #fef;
|
28
|
+
padding: 5px;
|
29
|
+
}
|
30
|
+
|
31
|
+
.logo {
|
32
|
+
float: left;
|
33
|
+
font-size: 1.1em;
|
34
|
+
padding-left: 5px;
|
35
|
+
}
|
36
|
+
|
37
|
+
.logo .version {
|
38
|
+
font-size: .6em;
|
39
|
+
padding-left: 1em;
|
40
|
+
}
|
41
|
+
|
42
|
+
.runner.running {
|
43
|
+
background-color: yellow;
|
44
|
+
}
|
45
|
+
|
46
|
+
|
47
|
+
.options {
|
48
|
+
text-align: right;
|
49
|
+
font-size: .8em;
|
50
|
+
}
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
.suite {
|
56
|
+
border: 1px outset gray;
|
57
|
+
margin: 5px 0;
|
58
|
+
padding-left: 1em;
|
59
|
+
}
|
60
|
+
|
61
|
+
.suite .suite {
|
62
|
+
margin: 5px;
|
63
|
+
}
|
64
|
+
|
65
|
+
.suite.passed {
|
66
|
+
background-color: #dfd;
|
67
|
+
}
|
68
|
+
|
69
|
+
.suite.failed {
|
70
|
+
background-color: #fdd;
|
71
|
+
}
|
72
|
+
|
73
|
+
.spec {
|
74
|
+
margin: 5px;
|
75
|
+
padding-left: 1em;
|
76
|
+
clear: both;
|
77
|
+
}
|
78
|
+
|
79
|
+
.spec.failed, .spec.passed, .spec.skipped {
|
80
|
+
padding-bottom: 5px;
|
81
|
+
border: 1px solid gray;
|
82
|
+
}
|
83
|
+
|
84
|
+
.spec.failed {
|
85
|
+
background-color: #fbb;
|
86
|
+
border-color: red;
|
87
|
+
}
|
88
|
+
|
89
|
+
.spec.passed {
|
90
|
+
background-color: #bfb;
|
91
|
+
border-color: green;
|
92
|
+
}
|
93
|
+
|
94
|
+
.spec.skipped {
|
95
|
+
background-color: #bbb;
|
96
|
+
}
|
97
|
+
|
98
|
+
.messages {
|
99
|
+
border-left: 1px dashed gray;
|
100
|
+
padding-left: 1em;
|
101
|
+
padding-right: 1em;
|
102
|
+
}
|
103
|
+
|
104
|
+
.passed {
|
105
|
+
background-color: #cfc;
|
106
|
+
display: none;
|
107
|
+
}
|
108
|
+
|
109
|
+
.failed {
|
110
|
+
background-color: #fbb;
|
111
|
+
}
|
112
|
+
|
113
|
+
.skipped {
|
114
|
+
color: #777;
|
115
|
+
background-color: #eee;
|
116
|
+
display: none;
|
117
|
+
}
|
118
|
+
|
119
|
+
|
120
|
+
/*.resultMessage {*/
|
121
|
+
/*white-space: pre;*/
|
122
|
+
/*}*/
|
123
|
+
|
124
|
+
.resultMessage span.result {
|
125
|
+
display: block;
|
126
|
+
line-height: 2em;
|
127
|
+
color: black;
|
128
|
+
}
|
129
|
+
|
130
|
+
.resultMessage .mismatch {
|
131
|
+
color: black;
|
132
|
+
}
|
133
|
+
|
134
|
+
.stackTrace {
|
135
|
+
white-space: pre;
|
136
|
+
font-size: .8em;
|
137
|
+
margin-left: 10px;
|
138
|
+
max-height: 5em;
|
139
|
+
overflow: auto;
|
140
|
+
border: 1px inset red;
|
141
|
+
padding: 1em;
|
142
|
+
background: #eef;
|
143
|
+
}
|
144
|
+
|
145
|
+
.finished-at {
|
146
|
+
padding-left: 1em;
|
147
|
+
font-size: .6em;
|
148
|
+
}
|
149
|
+
|
150
|
+
.show-passed .passed,
|
151
|
+
.show-skipped .skipped {
|
152
|
+
display: block;
|
153
|
+
}
|
154
|
+
|
155
|
+
|
156
|
+
#jasmine_content {
|
157
|
+
position:fixed;
|
158
|
+
right: 100%;
|
159
|
+
}
|
160
|
+
|
161
|
+
.runner {
|
162
|
+
border: 1px solid gray;
|
163
|
+
display: block;
|
164
|
+
margin: 5px 0;
|
165
|
+
padding: 2px 0 2px 10px;
|
166
|
+
}
|
@@ -64,9 +64,9 @@ jasmine.FakeTimer.prototype.runFunctionsWithinRange = function(oldMillis, nowMil
|
|
64
64
|
funcToRun.funcToCall();
|
65
65
|
if (funcToRun.recurring) {
|
66
66
|
this.scheduleFunction(funcToRun.timeoutKey,
|
67
|
-
|
68
|
-
|
69
|
-
|
67
|
+
funcToRun.funcToCall,
|
68
|
+
funcToRun.millis,
|
69
|
+
true);
|
70
70
|
}
|
71
71
|
} catch(e) {
|
72
72
|
}
|
@@ -110,10 +110,12 @@ jasmine.Clock = {
|
|
110
110
|
},
|
111
111
|
|
112
112
|
useMock: function() {
|
113
|
-
|
114
|
-
|
113
|
+
if (!jasmine.Clock.isInstalled()) {
|
114
|
+
var spec = jasmine.getEnv().currentSpec;
|
115
|
+
spec.after(jasmine.Clock.uninstallMock);
|
115
116
|
|
116
|
-
|
117
|
+
jasmine.Clock.installMock();
|
118
|
+
}
|
117
119
|
},
|
118
120
|
|
119
121
|
installMock: function() {
|
@@ -126,24 +128,28 @@ jasmine.Clock = {
|
|
126
128
|
},
|
127
129
|
|
128
130
|
real: {
|
129
|
-
setTimeout:
|
130
|
-
clearTimeout:
|
131
|
-
setInterval:
|
132
|
-
clearInterval:
|
131
|
+
setTimeout: jasmine.getGlobal().setTimeout,
|
132
|
+
clearTimeout: jasmine.getGlobal().clearTimeout,
|
133
|
+
setInterval: jasmine.getGlobal().setInterval,
|
134
|
+
clearInterval: jasmine.getGlobal().clearInterval
|
133
135
|
},
|
134
136
|
|
135
137
|
assertInstalled: function() {
|
136
|
-
if (jasmine.Clock.
|
138
|
+
if (!jasmine.Clock.isInstalled()) {
|
137
139
|
throw new Error("Mock clock is not installed, use jasmine.Clock.useMock()");
|
138
140
|
}
|
139
141
|
},
|
140
142
|
|
143
|
+
isInstalled: function() {
|
144
|
+
return jasmine.Clock.installed == jasmine.Clock.defaultFakeTimer;
|
145
|
+
},
|
146
|
+
|
141
147
|
installed: null
|
142
148
|
};
|
143
149
|
jasmine.Clock.installed = jasmine.Clock.real;
|
144
150
|
|
145
151
|
//else for IE support
|
146
|
-
|
152
|
+
jasmine.getGlobal().setTimeout = function(funcToCall, millis) {
|
147
153
|
if (jasmine.Clock.installed.setTimeout.apply) {
|
148
154
|
return jasmine.Clock.installed.setTimeout.apply(this, arguments);
|
149
155
|
} else {
|
@@ -151,7 +157,7 @@ window.setTimeout = function(funcToCall, millis) {
|
|
151
157
|
}
|
152
158
|
};
|
153
159
|
|
154
|
-
|
160
|
+
jasmine.getGlobal().setInterval = function(funcToCall, millis) {
|
155
161
|
if (jasmine.Clock.installed.setInterval.apply) {
|
156
162
|
return jasmine.Clock.installed.setInterval.apply(this, arguments);
|
157
163
|
} else {
|
@@ -159,7 +165,7 @@ window.setInterval = function(funcToCall, millis) {
|
|
159
165
|
}
|
160
166
|
};
|
161
167
|
|
162
|
-
|
168
|
+
jasmine.getGlobal().clearTimeout = function(timeoutKey) {
|
163
169
|
if (jasmine.Clock.installed.clearTimeout.apply) {
|
164
170
|
return jasmine.Clock.installed.clearTimeout.apply(this, arguments);
|
165
171
|
} else {
|
@@ -167,11 +173,11 @@ window.clearTimeout = function(timeoutKey) {
|
|
167
173
|
}
|
168
174
|
};
|
169
175
|
|
170
|
-
|
176
|
+
jasmine.getGlobal().clearInterval = function(timeoutKey) {
|
171
177
|
if (jasmine.Clock.installed.clearTimeout.apply) {
|
172
178
|
return jasmine.Clock.installed.clearInterval.apply(this, arguments);
|
173
179
|
} else {
|
174
|
-
|
180
|
+
return jasmine.Clock.installed.clearInterval(timeoutKey);
|
175
181
|
}
|
176
182
|
};
|
177
183
|
|