@@ -3879,13 +3879,30 @@ getJasmineRequireObj().DelayedFunctionScheduler = function(j$) {
|
||||
var currentTime = 0;
|
||||
var delayedFnCount = 0;
|
||||
var deletedKeys = [];
|
||||
var ticking = false;
|
||||
|
||||
self.tick = function(millis, tickDate) {
|
||||
millis = millis || 0;
|
||||
var endTime = currentTime + millis;
|
||||
if (ticking) {
|
||||
j$.getEnv().deprecated('The behavior of reentrant calls to ' +
|
||||
'jasmine.clock().tick() will change in a future version. Either ' +
|
||||
'modify the affected spec to not call tick() from within a ' +
|
||||
'setTimeout or setInterval handler, or be aware that it may ' +
|
||||
'behave differently in the future. See ' +
|
||||
'<https://jasmine.github.io/tutorials/upgrading_to_Jasmine_4.0#deprecations-due-to-reentrant-calls-to-jasmine-clock-tick> ' +
|
||||
'for details.');
|
||||
}
|
||||
|
||||
runScheduledFunctions(endTime, tickDate);
|
||||
currentTime = endTime;
|
||||
ticking = true;
|
||||
|
||||
try {
|
||||
millis = millis || 0;
|
||||
var endTime = currentTime + millis;
|
||||
|
||||
runScheduledFunctions(endTime, tickDate);
|
||||
currentTime = endTime;
|
||||
} finally {
|
||||
ticking = false;
|
||||
}
|
||||
};
|
||||
|
||||
self.scheduleFunction = function(
|
||||
|
||||
@@ -1259,6 +1259,42 @@ describe('Env integration', function() {
|
||||
});
|
||||
});
|
||||
|
||||
it('logs a deprecation warning when the mock clock is ticked reentrantly', function(done) {
|
||||
var ticked = false,
|
||||
env = jasmineUnderTest.getEnv();
|
||||
spyOn(env, 'deprecated');
|
||||
|
||||
env.beforeEach(function() {
|
||||
env.clock.install();
|
||||
});
|
||||
|
||||
env.afterEach(function() {
|
||||
env.clock.uninstall();
|
||||
});
|
||||
|
||||
env.it('ticks inside tick', function() {
|
||||
setTimeout(function() {
|
||||
ticked = true;
|
||||
env.clock.tick();
|
||||
}, 1);
|
||||
|
||||
env.clock.tick(1);
|
||||
});
|
||||
|
||||
env.execute(null, function() {
|
||||
expect(ticked).toBeTrue();
|
||||
expect(env.deprecated).toHaveBeenCalledWith(
|
||||
'The behavior of reentrant calls to jasmine.clock().tick() will ' +
|
||||
'change in a future version. Either modify the affected spec to ' +
|
||||
'not call tick() from within a setTimeout or setInterval handler, ' +
|
||||
'or be aware that it may behave differently in the future. See ' +
|
||||
'<https://jasmine.github.io/tutorials/upgrading_to_Jasmine_4.0#deprecations-due-to-reentrant-calls-to-jasmine-clock-tick> ' +
|
||||
'for details.'
|
||||
);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should run async specs in order, waiting for them to complete', function(done) {
|
||||
var mutatedVar;
|
||||
|
||||
|
||||
@@ -6,13 +6,31 @@ getJasmineRequireObj().DelayedFunctionScheduler = function(j$) {
|
||||
var currentTime = 0;
|
||||
var delayedFnCount = 0;
|
||||
var deletedKeys = [];
|
||||
var ticking = false;
|
||||
|
||||
self.tick = function(millis, tickDate) {
|
||||
millis = millis || 0;
|
||||
var endTime = currentTime + millis;
|
||||
if (ticking) {
|
||||
j$.getEnv().deprecated(
|
||||
'The behavior of reentrant calls to jasmine.clock().tick() will ' +
|
||||
'change in a future version. Either modify the affected spec to ' +
|
||||
'not call tick() from within a setTimeout or setInterval handler, ' +
|
||||
'or be aware that it may behave differently in the future. See ' +
|
||||
'<https://jasmine.github.io/tutorials/upgrading_to_Jasmine_4.0#deprecations-due-to-reentrant-calls-to-jasmine-clock-tick> ' +
|
||||
'for details.'
|
||||
);
|
||||
}
|
||||
|
||||
runScheduledFunctions(endTime, tickDate);
|
||||
currentTime = endTime;
|
||||
ticking = true;
|
||||
|
||||
try {
|
||||
millis = millis || 0;
|
||||
var endTime = currentTime + millis;
|
||||
|
||||
runScheduledFunctions(endTime, tickDate);
|
||||
currentTime = endTime;
|
||||
} finally {
|
||||
ticking = false;
|
||||
}
|
||||
};
|
||||
|
||||
self.scheduleFunction = function(
|
||||
|
||||
Reference in New Issue
Block a user