jasmine-core 2.5.0 → 2.99.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
});
|