jasmine-core 2.5.0 → 2.99.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/console/console.js +1 -1
- data/lib/jasmine-core/boot/boot.js +4 -1
- data/lib/jasmine-core/boot.js +5 -2
- data/lib/jasmine-core/jasmine-html.js +95 -31
- data/lib/jasmine-core/jasmine.css +1 -0
- data/lib/jasmine-core/jasmine.js +3635 -1684
- data/lib/jasmine-core/node_boot.js +1 -1
- data/lib/jasmine-core/spec/core/CallTrackerSpec.js +10 -0
- data/lib/jasmine-core/spec/core/ClearStackSpec.js +137 -0
- data/lib/jasmine-core/spec/core/ClockSpec.js +94 -14
- data/lib/jasmine-core/spec/core/DelayedFunctionSchedulerSpec.js +26 -8
- data/lib/jasmine-core/spec/core/EnvSpec.js +142 -10
- data/lib/jasmine-core/spec/core/ExpectationSpec.js +52 -7
- data/lib/jasmine-core/spec/core/GlobalErrorsSpec.js +110 -0
- data/lib/jasmine-core/spec/core/PrettyPrintSpec.js +132 -4
- data/lib/jasmine-core/spec/core/QueueRunnerSpec.js +333 -23
- data/lib/jasmine-core/spec/core/ReportDispatcherSpec.js +16 -1
- data/lib/jasmine-core/spec/core/SpecSpec.js +30 -8
- data/lib/jasmine-core/spec/core/SpyRegistrySpec.js +225 -1
- data/lib/jasmine-core/spec/core/SpySpec.js +44 -2
- data/lib/jasmine-core/spec/core/SpyStrategySpec.js +28 -5
- data/lib/jasmine-core/spec/core/SuiteSpec.js +14 -19
- data/lib/jasmine-core/spec/core/UserContextSpec.js +54 -0
- data/lib/jasmine-core/spec/core/UtilSpec.js +71 -0
- data/lib/jasmine-core/spec/core/asymmetric_equality/AnySpec.js +32 -0
- data/lib/jasmine-core/spec/core/asymmetric_equality/AnythingSpec.js +32 -0
- data/lib/jasmine-core/spec/core/asymmetric_equality/ArrayContainingSpec.js +13 -0
- data/lib/jasmine-core/spec/core/asymmetric_equality/ArrayWithExactContentsSpec.js +47 -0
- data/lib/jasmine-core/spec/core/asymmetric_equality/ObjectContainingSpec.js +13 -0
- data/lib/jasmine-core/spec/core/integration/CustomMatchersSpec.js +48 -0
- data/lib/jasmine-core/spec/core/integration/EnvSpec.js +339 -38
- data/lib/jasmine-core/spec/core/integration/SpecRunningSpec.js +156 -3
- data/lib/jasmine-core/spec/core/matchers/DiffBuilderSpec.js +47 -0
- data/lib/jasmine-core/spec/core/matchers/NullDiffBuilderSpec.js +13 -0
- data/lib/jasmine-core/spec/core/matchers/ObjectPathSpec.js +43 -0
- data/lib/jasmine-core/spec/core/matchers/matchersUtilSpec.js +231 -8
- data/lib/jasmine-core/spec/core/matchers/nothingSpec.js +8 -0
- data/lib/jasmine-core/spec/core/matchers/toBeCloseToSpec.js +42 -0
- data/lib/jasmine-core/spec/core/matchers/toBeNegativeInfinitySpec.js +31 -0
- data/lib/jasmine-core/spec/core/matchers/toBePositiveInfinitySpec.js +31 -0
- data/lib/jasmine-core/spec/core/matchers/toEqualSpec.js +780 -4
- data/lib/jasmine-core/spec/core/matchers/toHaveBeenCalledBeforeSpec.js +99 -0
- data/lib/jasmine-core/spec/core/matchers/toThrowErrorSpec.js +37 -0
- data/lib/jasmine-core/spec/helpers/BrowserFlags.js +4 -0
- data/lib/jasmine-core/spec/helpers/asyncAwait.js +27 -0
- data/lib/jasmine-core/spec/helpers/checkForMap.js +37 -0
- data/lib/jasmine-core/spec/helpers/checkForSet.js +41 -0
- data/lib/jasmine-core/spec/helpers/checkForSymbol.js +28 -0
- data/lib/jasmine-core/spec/helpers/checkForTypedArrays.js +20 -0
- data/lib/jasmine-core/spec/html/HtmlReporterSpec.js +105 -23
- data/lib/jasmine-core/spec/html/SpyRegistryHtmlSpec.js +34 -0
- data/lib/jasmine-core/spec/npmPackage/npmPackageSpec.js +1 -1
- data/lib/jasmine-core/version.rb +1 -1
- metadata +19 -4
@@ -181,6 +181,12 @@ describe("Env integration", function() {
|
|
181
181
|
}
|
182
182
|
})]
|
183
183
|
}));
|
184
|
+
expect(specDone).toHaveBeenCalledWith(jasmine.objectContaining({
|
185
|
+
description: 'pretty prints objects',
|
186
|
+
failedExpectations: [jasmine.objectContaining({
|
187
|
+
message: 'Failed: Object({ prop: \'value\', arr: [ \'works\', true ] })'
|
188
|
+
})]
|
189
|
+
}));
|
184
190
|
done();
|
185
191
|
}
|
186
192
|
});
|
@@ -197,6 +203,27 @@ describe("Env integration", function() {
|
|
197
203
|
env.it('has a message and stack trace from an Error', function() {
|
198
204
|
env.fail(new Error('error message'));
|
199
205
|
});
|
206
|
+
|
207
|
+
env.it('pretty prints objects', function() {
|
208
|
+
env.fail({prop: 'value', arr: ['works', true]});
|
209
|
+
})
|
210
|
+
});
|
211
|
+
|
212
|
+
env.execute();
|
213
|
+
});
|
214
|
+
|
215
|
+
it("produces an understandable error message when 'fail' is used outside of a current spec", function(done) {
|
216
|
+
var env = new jasmineUnderTest.Env(),
|
217
|
+
reporter = jasmine.createSpyObj('fakeReporter', ['jasmineDone']);
|
218
|
+
|
219
|
+
reporter.jasmineDone.and.callFake(done);
|
220
|
+
env.addReporter(reporter);
|
221
|
+
|
222
|
+
env.describe("A Suite", function() {
|
223
|
+
env.it("an async spec that is actually synchronous", function(underTestCallback) {
|
224
|
+
underTestCallback();
|
225
|
+
});
|
226
|
+
expect(function() { env.fail(); }).toThrowError(/'fail' was used when there was no current spec/);
|
200
227
|
});
|
201
228
|
|
202
229
|
env.execute();
|
@@ -216,7 +243,7 @@ describe("Env integration", function() {
|
|
216
243
|
} else {
|
217
244
|
secondSpecContext = this;
|
218
245
|
}
|
219
|
-
expect(this).toEqual(
|
246
|
+
expect(this).toEqual(new jasmineUnderTest.UserContext());
|
220
247
|
});
|
221
248
|
|
222
249
|
env.it("sync spec", function() {
|
@@ -250,7 +277,7 @@ describe("Env integration", function() {
|
|
250
277
|
|
251
278
|
env.beforeEach(function() {
|
252
279
|
specContext = this;
|
253
|
-
expect(this).toEqual(
|
280
|
+
expect(this).toEqual(new jasmineUnderTest.UserContext());
|
254
281
|
});
|
255
282
|
|
256
283
|
env.it("sync spec", function(underTestCallback) {
|
@@ -429,6 +456,41 @@ describe("Env integration", function() {
|
|
429
456
|
env.execute();
|
430
457
|
});
|
431
458
|
|
459
|
+
it("copes with async failures after done has been called", function(done) {
|
460
|
+
var global = {
|
461
|
+
setTimeout: function(fn, delay) { setTimeout(fn, delay) },
|
462
|
+
clearTimeout: function(fn, delay) { clearTimeout(fn, delay) },
|
463
|
+
};
|
464
|
+
spyOn(jasmineUnderTest, 'getGlobal').and.returnValue(global);
|
465
|
+
var env = new jasmineUnderTest.Env(),
|
466
|
+
reporter = jasmine.createSpyObj('fakeReporter', [ "specDone", "jasmineDone", "suiteDone" ]);
|
467
|
+
|
468
|
+
reporter.jasmineDone.and.callFake(function() {
|
469
|
+
expect(reporter.specDone).not.toHaveFailedExpecationsForRunnable('A suite fails', ['fail thrown']);
|
470
|
+
expect(reporter.suiteDone).toHaveFailedExpecationsForRunnable('A suite', ['fail thrown']);
|
471
|
+
done();
|
472
|
+
});
|
473
|
+
|
474
|
+
env.addReporter(reporter);
|
475
|
+
|
476
|
+
env.fdescribe('A suite', function() {
|
477
|
+
env.it('fails', function(specDone) {
|
478
|
+
setTimeout(function() {
|
479
|
+
specDone();
|
480
|
+
setTimeout(function() {
|
481
|
+
global.onerror('fail');
|
482
|
+
});
|
483
|
+
});
|
484
|
+
});
|
485
|
+
});
|
486
|
+
|
487
|
+
env.describe('Ignored', function() {
|
488
|
+
env.it('is not run', function() {});
|
489
|
+
});
|
490
|
+
|
491
|
+
env.execute();
|
492
|
+
});
|
493
|
+
|
432
494
|
describe('suiteDone reporting', function(){
|
433
495
|
it("reports when an afterAll fails an expectation", function(done) {
|
434
496
|
var env = new jasmineUnderTest.Env(),
|
@@ -724,7 +786,7 @@ describe("Env integration", function() {
|
|
724
786
|
env.execute();
|
725
787
|
});
|
726
788
|
|
727
|
-
it('can be configured to allow respying on functions', function () {
|
789
|
+
it('can be configured to allow respying on functions', function (done) {
|
728
790
|
var env = new jasmineUnderTest.Env(),
|
729
791
|
foo = {
|
730
792
|
bar: function () {
|
@@ -733,6 +795,7 @@ describe("Env integration", function() {
|
|
733
795
|
};
|
734
796
|
|
735
797
|
env.allowRespy(true);
|
798
|
+
env.addReporter({ jasmineDone: done });
|
736
799
|
|
737
800
|
env.describe('test suite', function(){
|
738
801
|
env.it('spec 0', function(){
|
@@ -866,7 +929,14 @@ describe("Env integration", function() {
|
|
866
929
|
});
|
867
930
|
|
868
931
|
it("should run async specs in order, waiting for them to complete", function(done) {
|
869
|
-
var env = new jasmineUnderTest.Env(),
|
932
|
+
var env = new jasmineUnderTest.Env(),
|
933
|
+
reporter = jasmine.createSpyObj('reporter', ['jasmineDone']),
|
934
|
+
mutatedVar;
|
935
|
+
|
936
|
+
reporter.jasmineDone.and.callFake(function() {
|
937
|
+
done();
|
938
|
+
});
|
939
|
+
env.addReporter(reporter);
|
870
940
|
|
871
941
|
env.describe("tests", function() {
|
872
942
|
env.beforeEach(function() {
|
@@ -877,7 +947,6 @@ describe("Env integration", function() {
|
|
877
947
|
setTimeout(function() {
|
878
948
|
expect(mutatedVar).toEqual(2);
|
879
949
|
underTestCallback();
|
880
|
-
done();
|
881
950
|
}, 0);
|
882
951
|
});
|
883
952
|
|
@@ -890,16 +959,15 @@ describe("Env integration", function() {
|
|
890
959
|
});
|
891
960
|
|
892
961
|
describe("with a mock clock", function() {
|
893
|
-
var originalTimeout;
|
894
|
-
|
895
962
|
beforeEach(function() {
|
896
|
-
originalTimeout = jasmineUnderTest.DEFAULT_TIMEOUT_INTERVAL;
|
963
|
+
this.originalTimeout = jasmineUnderTest.DEFAULT_TIMEOUT_INTERVAL;
|
964
|
+
this.realSetTimeout = setTimeout;
|
897
965
|
jasmine.clock().install();
|
898
966
|
});
|
899
967
|
|
900
968
|
afterEach(function() {
|
901
969
|
jasmine.clock().uninstall();
|
902
|
-
jasmineUnderTest.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
|
970
|
+
jasmineUnderTest.DEFAULT_TIMEOUT_INTERVAL = this.originalTimeout;
|
903
971
|
});
|
904
972
|
|
905
973
|
it("should wait a specified interval before failing specs haven't called done yet", function(done) {
|
@@ -940,8 +1008,8 @@ describe("Env integration", function() {
|
|
940
1008
|
env.addReporter(reporter);
|
941
1009
|
jasmineUnderTest.DEFAULT_TIMEOUT_INTERVAL = 1290;
|
942
1010
|
|
943
|
-
env.beforeAll(function(
|
944
|
-
jasmine.clock().tick(
|
1011
|
+
env.beforeAll(function(innerDone) {
|
1012
|
+
jasmine.clock().tick(1291);
|
945
1013
|
});
|
946
1014
|
|
947
1015
|
env.it("spec that will be failed", function() {
|
@@ -955,7 +1023,7 @@ describe("Env integration", function() {
|
|
955
1023
|
env.execute();
|
956
1024
|
});
|
957
1025
|
|
958
|
-
it("should not use the mock clock for asynchronous timeouts", function(){
|
1026
|
+
it("should not use the mock clock for asynchronous timeouts", function(done){
|
959
1027
|
var env = new jasmineUnderTest.Env(),
|
960
1028
|
reporter = jasmine.createSpyObj('fakeReporter', [ "specDone", "jasmineDone" ]),
|
961
1029
|
clock = env.clock;
|
@@ -963,6 +1031,7 @@ describe("Env integration", function() {
|
|
963
1031
|
reporter.jasmineDone.and.callFake(function() {
|
964
1032
|
expect(reporter.specDone.calls.count()).toEqual(1);
|
965
1033
|
expect(reporter.specDone.calls.argsFor(0)[0]).toEqual(jasmine.objectContaining({status: 'passed'}));
|
1034
|
+
done();
|
966
1035
|
});
|
967
1036
|
|
968
1037
|
env.addReporter(reporter);
|
@@ -976,10 +1045,11 @@ describe("Env integration", function() {
|
|
976
1045
|
clock.uninstall();
|
977
1046
|
});
|
978
1047
|
|
979
|
-
env.it("spec that should not time out", function(
|
1048
|
+
env.it("spec that should not time out", function(innerDone) {
|
980
1049
|
clock.tick(6);
|
981
1050
|
expect(true).toEqual(true);
|
982
|
-
|
1051
|
+
innerDone();
|
1052
|
+
jasmine.clock().tick(1);
|
983
1053
|
});
|
984
1054
|
|
985
1055
|
env.execute();
|
@@ -1010,11 +1080,13 @@ describe("Env integration", function() {
|
|
1010
1080
|
});
|
1011
1081
|
|
1012
1082
|
env.execute();
|
1083
|
+
jasmine.clock().tick(1);
|
1013
1084
|
});
|
1014
1085
|
|
1015
1086
|
it('should wait a custom interval before reporting async functions that fail to call done', function(done) {
|
1016
1087
|
var env = new jasmineUnderTest.Env(),
|
1017
|
-
reporter = jasmine.createSpyObj('fakeReport', ['jasmineDone', 'suiteDone', 'specDone'])
|
1088
|
+
reporter = jasmine.createSpyObj('fakeReport', ['jasmineDone', 'suiteDone', 'specDone']),
|
1089
|
+
realSetTimeout = this.realSetTimeout;
|
1018
1090
|
|
1019
1091
|
reporter.jasmineDone.and.callFake(function() {
|
1020
1092
|
expect(reporter.specDone).toHaveFailedExpecationsForRunnable('suite beforeAll times out', [
|
@@ -1044,10 +1116,19 @@ describe("Env integration", function() {
|
|
1044
1116
|
jasmineUnderTest.DEFAULT_TIMEOUT_INTERVAL = 10000;
|
1045
1117
|
|
1046
1118
|
env.describe('suite', function() {
|
1119
|
+
env.afterAll(function() {
|
1120
|
+
if (jasmine.getEnv().ieVersion < 9) {
|
1121
|
+
} else {
|
1122
|
+
realSetTimeout(function() {
|
1123
|
+
jasmine.clock().tick(10);
|
1124
|
+
}, 100);
|
1125
|
+
}
|
1126
|
+
});
|
1047
1127
|
env.describe('beforeAll', function() {
|
1048
1128
|
env.beforeAll(function(innerDone) {
|
1049
|
-
|
1050
|
-
|
1129
|
+
realSetTimeout(function() {
|
1130
|
+
jasmine.clock().tick(5001);
|
1131
|
+
}, 0);
|
1051
1132
|
}, 5000);
|
1052
1133
|
|
1053
1134
|
env.it('times out', function() {});
|
@@ -1055,8 +1136,9 @@ describe("Env integration", function() {
|
|
1055
1136
|
|
1056
1137
|
env.describe('afterAll', function() {
|
1057
1138
|
env.afterAll(function(innerDone) {
|
1058
|
-
|
1059
|
-
|
1139
|
+
realSetTimeout(function() {
|
1140
|
+
jasmine.clock().tick(2001);
|
1141
|
+
}, 0);
|
1060
1142
|
}, 2000);
|
1061
1143
|
|
1062
1144
|
env.it('times out', function() {});
|
@@ -1064,8 +1146,9 @@ describe("Env integration", function() {
|
|
1064
1146
|
|
1065
1147
|
env.describe('beforeEach', function() {
|
1066
1148
|
env.beforeEach(function(innerDone) {
|
1067
|
-
|
1068
|
-
|
1149
|
+
realSetTimeout(function() {
|
1150
|
+
jasmine.clock().tick(1001);
|
1151
|
+
}, 0);
|
1069
1152
|
}, 1000);
|
1070
1153
|
|
1071
1154
|
env.it('times out', function() {});
|
@@ -1073,16 +1156,18 @@ describe("Env integration", function() {
|
|
1073
1156
|
|
1074
1157
|
env.describe('afterEach', function() {
|
1075
1158
|
env.afterEach(function(innerDone) {
|
1076
|
-
|
1077
|
-
|
1159
|
+
realSetTimeout(function() {
|
1160
|
+
jasmine.clock().tick(4001);
|
1161
|
+
}, 0);
|
1078
1162
|
}, 4000);
|
1079
1163
|
|
1080
1164
|
env.it('times out', function() {});
|
1081
1165
|
});
|
1082
1166
|
|
1083
1167
|
env.it('it times out', function(innerDone) {
|
1084
|
-
|
1085
|
-
|
1168
|
+
realSetTimeout(function() {
|
1169
|
+
jasmine.clock().tick(6001);
|
1170
|
+
}, 0);
|
1086
1171
|
}, 6000);
|
1087
1172
|
});
|
1088
1173
|
|
@@ -1130,6 +1215,8 @@ describe("Env integration", function() {
|
|
1130
1215
|
env.fail();
|
1131
1216
|
innerDone();
|
1132
1217
|
}, 1);
|
1218
|
+
jasmine.clock().tick(1);
|
1219
|
+
jasmine.clock().tick(1);
|
1133
1220
|
});
|
1134
1221
|
|
1135
1222
|
env.it('specifies a message', function(innerDone) {
|
@@ -1137,12 +1224,16 @@ describe("Env integration", function() {
|
|
1137
1224
|
env.fail('messy message');
|
1138
1225
|
innerDone();
|
1139
1226
|
}, 1);
|
1227
|
+
jasmine.clock().tick(1);
|
1228
|
+
jasmine.clock().tick(1);
|
1140
1229
|
});
|
1141
1230
|
|
1142
1231
|
env.it('fails via the done callback', function(innerDone) {
|
1143
1232
|
setTimeout(function() {
|
1144
1233
|
innerDone.fail('done failed');
|
1145
1234
|
}, 1);
|
1235
|
+
jasmine.clock().tick(1);
|
1236
|
+
jasmine.clock().tick(1);
|
1146
1237
|
});
|
1147
1238
|
|
1148
1239
|
env.it('has a message from an Error', function(innerDone) {
|
@@ -1150,14 +1241,12 @@ describe("Env integration", function() {
|
|
1150
1241
|
env.fail(new Error('error message'));
|
1151
1242
|
innerDone();
|
1152
1243
|
}, 1);
|
1244
|
+
jasmine.clock().tick(1);
|
1245
|
+
jasmine.clock().tick(1);
|
1153
1246
|
});
|
1154
1247
|
});
|
1155
1248
|
|
1156
1249
|
env.execute();
|
1157
|
-
jasmine.clock().tick(1);
|
1158
|
-
jasmine.clock().tick(1);
|
1159
|
-
jasmine.clock().tick(1);
|
1160
|
-
jasmine.clock().tick(1);
|
1161
1250
|
});
|
1162
1251
|
});
|
1163
1252
|
|
@@ -1186,7 +1275,7 @@ describe("Env integration", function() {
|
|
1186
1275
|
env.execute();
|
1187
1276
|
});
|
1188
1277
|
|
1189
|
-
it('should only run focused suites', function(){
|
1278
|
+
it('should only run focused suites', function(done){
|
1190
1279
|
var env = new jasmineUnderTest.Env(),
|
1191
1280
|
calls = [];
|
1192
1281
|
|
@@ -1225,7 +1314,8 @@ describe("Env integration", function() {
|
|
1225
1314
|
|
1226
1315
|
reporter.jasmineDone.and.callFake(function() {
|
1227
1316
|
expect(reporter.jasmineStarted).toHaveBeenCalledWith({
|
1228
|
-
totalSpecsDefined: 1
|
1317
|
+
totalSpecsDefined: 1,
|
1318
|
+
order: jasmine.any(jasmineUnderTest.Order)
|
1229
1319
|
});
|
1230
1320
|
|
1231
1321
|
expect(reporter.specDone).toHaveBeenCalledWith(jasmine.objectContaining({
|
@@ -1260,7 +1350,8 @@ describe("Env integration", function() {
|
|
1260
1350
|
|
1261
1351
|
reporter.jasmineDone.and.callFake(function() {
|
1262
1352
|
expect(reporter.jasmineStarted).toHaveBeenCalledWith({
|
1263
|
-
totalSpecsDefined: 1
|
1353
|
+
totalSpecsDefined: 1,
|
1354
|
+
order: jasmine.any(jasmineUnderTest.Order)
|
1264
1355
|
});
|
1265
1356
|
|
1266
1357
|
expect(reporter.specDone).toHaveBeenCalledWith(jasmine.objectContaining({
|
@@ -1298,7 +1389,8 @@ describe("Env integration", function() {
|
|
1298
1389
|
|
1299
1390
|
reporter.jasmineDone.and.callFake(function() {
|
1300
1391
|
expect(reporter.jasmineStarted).toHaveBeenCalledWith({
|
1301
|
-
totalSpecsDefined: 5
|
1392
|
+
totalSpecsDefined: 5,
|
1393
|
+
order: jasmine.any(jasmineUnderTest.Order)
|
1302
1394
|
});
|
1303
1395
|
|
1304
1396
|
expect(reporter.specDone.calls.count()).toBe(5);
|
@@ -1355,6 +1447,34 @@ describe("Env integration", function() {
|
|
1355
1447
|
env.execute();
|
1356
1448
|
});
|
1357
1449
|
|
1450
|
+
it("should report the random seed at the beginning and end of execution", function(done) {
|
1451
|
+
var env = new jasmineUnderTest.Env(),
|
1452
|
+
reporter = jasmine.createSpyObj('fakeReporter', [
|
1453
|
+
"jasmineStarted",
|
1454
|
+
"jasmineDone",
|
1455
|
+
"suiteStarted",
|
1456
|
+
"suiteDone",
|
1457
|
+
"specStarted",
|
1458
|
+
"specDone"
|
1459
|
+
]);
|
1460
|
+
env.randomizeTests(true);
|
1461
|
+
env.seed('123456');
|
1462
|
+
|
1463
|
+
reporter.jasmineDone.and.callFake(function(doneArg) {
|
1464
|
+
expect(reporter.jasmineStarted).toHaveBeenCalled();
|
1465
|
+
var startedArg = reporter.jasmineStarted.calls.argsFor(0)[0];
|
1466
|
+
expect(startedArg.order.random).toEqual(true);
|
1467
|
+
expect(startedArg.order.seed).toEqual('123456');
|
1468
|
+
|
1469
|
+
expect(doneArg.order.random).toEqual(true);
|
1470
|
+
expect(doneArg.order.seed).toEqual('123456');
|
1471
|
+
done();
|
1472
|
+
});
|
1473
|
+
|
1474
|
+
env.addReporter(reporter);
|
1475
|
+
env.execute();
|
1476
|
+
});
|
1477
|
+
|
1358
1478
|
it('should report pending spec messages', function(done) {
|
1359
1479
|
var env = new jasmineUnderTest.Env(),
|
1360
1480
|
reporter = jasmine.createSpyObj('fakeReporter', [
|
@@ -1365,6 +1485,7 @@ describe("Env integration", function() {
|
|
1365
1485
|
reporter.jasmineDone.and.callFake(function() {
|
1366
1486
|
var specStatus = reporter.specDone.calls.argsFor(0)[0];
|
1367
1487
|
|
1488
|
+
expect(specStatus.status).toBe('pending');
|
1368
1489
|
expect(specStatus.pendingReason).toBe('with a message');
|
1369
1490
|
|
1370
1491
|
done();
|
@@ -1379,6 +1500,45 @@ describe("Env integration", function() {
|
|
1379
1500
|
env.execute();
|
1380
1501
|
});
|
1381
1502
|
|
1503
|
+
it('should report pending spec messages from promise-returning functions', function(done) {
|
1504
|
+
function StubPromise(fn) {
|
1505
|
+
try {
|
1506
|
+
fn();
|
1507
|
+
} catch (e) {
|
1508
|
+
this.exception = e;
|
1509
|
+
}
|
1510
|
+
}
|
1511
|
+
|
1512
|
+
StubPromise.prototype.then = function(resolve, reject) {
|
1513
|
+
reject(this.exception);
|
1514
|
+
};
|
1515
|
+
|
1516
|
+
var env = new jasmineUnderTest.Env(),
|
1517
|
+
reporter = jasmine.createSpyObj('fakeReporter', [
|
1518
|
+
'specDone',
|
1519
|
+
'jasmineDone'
|
1520
|
+
]);
|
1521
|
+
|
1522
|
+
reporter.jasmineDone.and.callFake(function() {
|
1523
|
+
var specStatus = reporter.specDone.calls.argsFor(0)[0];
|
1524
|
+
|
1525
|
+
expect(specStatus.status).toBe('pending');
|
1526
|
+
expect(specStatus.pendingReason).toBe('with a message');
|
1527
|
+
|
1528
|
+
done();
|
1529
|
+
});
|
1530
|
+
|
1531
|
+
env.addReporter(reporter);
|
1532
|
+
|
1533
|
+
env.it('will be pending', function() {
|
1534
|
+
return new StubPromise(function() {
|
1535
|
+
env.pending('with a message');
|
1536
|
+
});
|
1537
|
+
});
|
1538
|
+
|
1539
|
+
env.execute();
|
1540
|
+
});
|
1541
|
+
|
1382
1542
|
it('should report using fallback reporter', function(done) {
|
1383
1543
|
var env = new jasmineUnderTest.Env(),
|
1384
1544
|
reporter = jasmine.createSpyObj('fakeReporter', [
|
@@ -1414,10 +1574,11 @@ describe("Env integration", function() {
|
|
1414
1574
|
|
1415
1575
|
reporter.jasmineDone.and.callFake(function() {
|
1416
1576
|
expect(reporter.jasmineStarted).toHaveBeenCalledWith({
|
1417
|
-
totalSpecsDefined: 1
|
1577
|
+
totalSpecsDefined: 1,
|
1578
|
+
order: jasmine.any(jasmineUnderTest.Order)
|
1418
1579
|
});
|
1419
1580
|
|
1420
|
-
expect(reporter.specDone).toHaveBeenCalledWith(jasmine.objectContaining({ status: '
|
1581
|
+
expect(reporter.specDone).toHaveBeenCalledWith(jasmine.objectContaining({ status: 'disabled' }));
|
1421
1582
|
expect(reporter.suiteDone).toHaveBeenCalledWith(jasmine.objectContaining({ description: 'xd out', status: 'pending' }));
|
1422
1583
|
expect(reporter.suiteDone.calls.count()).toBe(4);
|
1423
1584
|
|
@@ -1572,14 +1733,17 @@ describe("Env integration", function() {
|
|
1572
1733
|
});
|
1573
1734
|
|
1574
1735
|
it("produces an understandable error message when an 'expect' is used outside of a current spec", function(done) {
|
1575
|
-
var env = new jasmineUnderTest.Env()
|
1736
|
+
var env = new jasmineUnderTest.Env(),
|
1737
|
+
reporter = jasmine.createSpyObj('fakeReporter', ['jasmineDone']);
|
1738
|
+
|
1739
|
+
reporter.jasmineDone.and.callFake(done);
|
1740
|
+
env.addReporter(reporter);
|
1576
1741
|
|
1577
1742
|
env.describe("A Suite", function() {
|
1578
1743
|
env.it("an async spec that is actually synchronous", function(underTestCallback) {
|
1579
1744
|
underTestCallback();
|
1580
|
-
expect(function() { env.expect('a').toEqual('a'); }).toThrowError(/'expect' was used when there was no current spec/);
|
1581
|
-
done();
|
1582
1745
|
});
|
1746
|
+
expect(function() { env.expect('a').toEqual('a'); }).toThrowError(/'expect' was used when there was no current spec/);
|
1583
1747
|
});
|
1584
1748
|
|
1585
1749
|
env.execute();
|
@@ -1746,4 +1910,141 @@ describe("Env integration", function() {
|
|
1746
1910
|
|
1747
1911
|
env.execute();
|
1748
1912
|
});
|
1913
|
+
|
1914
|
+
it("should associate errors thrown from async code with the correct runnable", function(done) {
|
1915
|
+
var env = new jasmineUnderTest.Env(),
|
1916
|
+
reporter = jasmine.createSpyObj('fakeReport', ['jasmineDone','suiteDone','specDone']);
|
1917
|
+
|
1918
|
+
reporter.jasmineDone.and.callFake(function() {
|
1919
|
+
expect(reporter.suiteDone).toHaveFailedExpecationsForRunnable('async suite', [
|
1920
|
+
/^(((Uncaught )?Error: suite( thrown)?)|(suite thrown))$/
|
1921
|
+
]);
|
1922
|
+
expect(reporter.specDone).toHaveFailedExpecationsForRunnable('suite async spec', [
|
1923
|
+
/^(((Uncaught )?Error: spec( thrown)?)|(spec thrown))$/
|
1924
|
+
]);
|
1925
|
+
done();
|
1926
|
+
});
|
1927
|
+
|
1928
|
+
env.addReporter(reporter);
|
1929
|
+
|
1930
|
+
env.describe('async suite', function() {
|
1931
|
+
env.afterAll(function(innerDone) {
|
1932
|
+
setTimeout(function() { throw new Error('suite'); }, 1);
|
1933
|
+
}, 10);
|
1934
|
+
|
1935
|
+
env.it('spec', function() {});
|
1936
|
+
});
|
1937
|
+
|
1938
|
+
env.describe('suite', function() {
|
1939
|
+
env.it('async spec', function(innerDone) {
|
1940
|
+
setTimeout(function() { throw new Error('spec'); }, 1);
|
1941
|
+
}, 10);
|
1942
|
+
});
|
1943
|
+
|
1944
|
+
env.execute();
|
1945
|
+
});
|
1946
|
+
|
1947
|
+
it('should throw on suites/specs/befores/afters nested in methods other than \'describe\'', function(done) {
|
1948
|
+
var env = new jasmineUnderTest.Env(),
|
1949
|
+
reporter = jasmine.createSpyObj('reporter', ['jasmineDone', 'suiteDone', 'specDone']);
|
1950
|
+
|
1951
|
+
reporter.jasmineDone.and.callFake(function() {
|
1952
|
+
var msg = /\'.*\' should only be used in \'describe\' function/;
|
1953
|
+
|
1954
|
+
expect(reporter.specDone).toHaveFailedExpecationsForRunnable('suite describe', [msg]);
|
1955
|
+
expect(reporter.specDone).toHaveFailedExpecationsForRunnable('suite xdescribe', [msg]);
|
1956
|
+
expect(reporter.specDone).toHaveFailedExpecationsForRunnable('suite fdescribe', [msg]);
|
1957
|
+
|
1958
|
+
expect(reporter.specDone).toHaveFailedExpecationsForRunnable('spec it', [msg]);
|
1959
|
+
expect(reporter.specDone).toHaveFailedExpecationsForRunnable('spec xit', [msg]);
|
1960
|
+
expect(reporter.specDone).toHaveFailedExpecationsForRunnable('spec fit', [msg]);
|
1961
|
+
|
1962
|
+
expect(reporter.specDone).toHaveFailedExpecationsForRunnable('beforeAll spec', [msg]);
|
1963
|
+
expect(reporter.specDone).toHaveFailedExpecationsForRunnable('beforeEach spec', [msg]);
|
1964
|
+
|
1965
|
+
expect(reporter.suiteDone).toHaveFailedExpecationsForRunnable('afterAll', [msg]);
|
1966
|
+
expect(reporter.specDone).toHaveFailedExpecationsForRunnable('afterEach spec', [msg]);
|
1967
|
+
|
1968
|
+
done();
|
1969
|
+
});
|
1970
|
+
|
1971
|
+
env.addReporter(reporter);
|
1972
|
+
|
1973
|
+
env.describe('suite', function() {
|
1974
|
+
env.it('describe', function() { env.describe('inner suite', function() {}); });
|
1975
|
+
env.it('xdescribe', function() { env.xdescribe('inner suite', function() {}); });
|
1976
|
+
env.it('fdescribe', function() { env.fdescribe('inner suite', function() {}); });
|
1977
|
+
});
|
1978
|
+
|
1979
|
+
env.describe('spec', function() {
|
1980
|
+
env.it('it', function() { env.it('inner spec', function() {}); });
|
1981
|
+
env.it('xit', function() { env.xit('inner spec', function() {}); });
|
1982
|
+
env.it('fit', function() { env.fit('inner spec', function() {}); });
|
1983
|
+
});
|
1984
|
+
|
1985
|
+
env.describe('beforeAll', function() {
|
1986
|
+
env.beforeAll(function() { env.beforeAll(function() {}); });
|
1987
|
+
env.it('spec', function() {});
|
1988
|
+
});
|
1989
|
+
|
1990
|
+
env.describe('beforeEach', function() {
|
1991
|
+
env.beforeEach(function() { env.beforeEach(function() {}); });
|
1992
|
+
env.it('spec', function() {});
|
1993
|
+
});
|
1994
|
+
|
1995
|
+
env.describe('afterAll', function() {
|
1996
|
+
env.afterAll(function() { env.afterAll(function() {}); });
|
1997
|
+
env.it('spec', function() {});
|
1998
|
+
});
|
1999
|
+
|
2000
|
+
env.describe('afterEach', function() {
|
2001
|
+
env.afterEach(function() { env.afterEach(function() {}); });
|
2002
|
+
env.it('spec', function() {});
|
2003
|
+
});
|
2004
|
+
|
2005
|
+
env.execute();
|
2006
|
+
});
|
2007
|
+
|
2008
|
+
it('should report deprecation warnings on the correct specs and suites', function(done) {
|
2009
|
+
var env = new jasmineUnderTest.Env(),
|
2010
|
+
reporter = jasmine.createSpyObj('reporter', ['jasmineDone', 'suiteDone', 'specDone']);
|
2011
|
+
|
2012
|
+
reporter.jasmineDone.and.callFake(function(result) {
|
2013
|
+
expect(result.deprecationWarnings).toEqual([
|
2014
|
+
jasmine.objectContaining({ message: 'top level deprecation' })
|
2015
|
+
]);
|
2016
|
+
|
2017
|
+
expect(reporter.suiteDone).toHaveBeenCalledWith(jasmine.objectContaining({
|
2018
|
+
fullName: 'suite',
|
2019
|
+
deprecationWarnings: [
|
2020
|
+
jasmine.objectContaining({ message: 'suite level deprecation' })
|
2021
|
+
]
|
2022
|
+
}));
|
2023
|
+
|
2024
|
+
expect(reporter.specDone).toHaveBeenCalledWith(jasmine.objectContaining({
|
2025
|
+
fullName: 'suite spec',
|
2026
|
+
deprecationWarnings: [
|
2027
|
+
jasmine.objectContaining({ message: 'spec level deprecation' })
|
2028
|
+
]
|
2029
|
+
}));
|
2030
|
+
|
2031
|
+
done();
|
2032
|
+
});
|
2033
|
+
|
2034
|
+
env.addReporter(reporter);
|
2035
|
+
|
2036
|
+
env.deprecated('top level deprecation');
|
2037
|
+
|
2038
|
+
env.describe('suite', function() {
|
2039
|
+
env.beforeAll(function() {
|
2040
|
+
env.deprecated('suite level deprecation');
|
2041
|
+
});
|
2042
|
+
|
2043
|
+
env.it('spec', function() {
|
2044
|
+
env.deprecated('spec level deprecation');
|
2045
|
+
});
|
2046
|
+
});
|
2047
|
+
|
2048
|
+
env.execute();
|
2049
|
+
});
|
1749
2050
|
});
|