diff --git a/lib/jasmine-core/jasmine.js b/lib/jasmine-core/jasmine.js index 8ab0ec67..b97e13f8 100644 --- a/lib/jasmine-core/jasmine.js +++ b/lib/jasmine-core/jasmine.js @@ -3521,6 +3521,9 @@ getJasmineRequireObj().DelayedFunctionScheduler = function(j$) { // setTimeout("some code") and setInterval("some code") are legal, if // not recommended. We don't do that ourselves, but user code might. // This allows such code to work when the mock clock is installed. + j$.getEnv().deprecated( + "The eval form of setTimeout and setInterval is deprecated and will stop working in a future version of Jasmine's mock clock. Pass a function instead of a string." + ); f = function() { // eslint-disable-next-line no-eval return eval(funcToCall); diff --git a/spec/core/DelayedFunctionSchedulerSpec.js b/spec/core/DelayedFunctionSchedulerSpec.js index 09cf84c2..9ff98c74 100644 --- a/spec/core/DelayedFunctionSchedulerSpec.js +++ b/spec/core/DelayedFunctionSchedulerSpec.js @@ -15,8 +15,14 @@ describe('DelayedFunctionScheduler', function() { it('schedules a string for later execution', function() { const scheduler = new jasmineUnderTest.DelayedFunctionScheduler(), strfn = 'horrible = true;'; + spyOn(jasmineUnderTest.getEnv(), 'deprecated'); scheduler.scheduleFunction(strfn, 0); + expect(jasmineUnderTest.getEnv().deprecated).toHaveBeenCalledWith( + 'The eval form of setTimeout and setInterval is deprecated and will ' + + "stop working in a future version of Jasmine's mock clock. Pass a " + + 'function instead of a string.' + ); scheduler.tick(0); diff --git a/src/core/DelayedFunctionScheduler.js b/src/core/DelayedFunctionScheduler.js index 8933866e..abe157aa 100644 --- a/src/core/DelayedFunctionScheduler.js +++ b/src/core/DelayedFunctionScheduler.js @@ -29,6 +29,9 @@ getJasmineRequireObj().DelayedFunctionScheduler = function(j$) { // setTimeout("some code") and setInterval("some code") are legal, if // not recommended. We don't do that ourselves, but user code might. // This allows such code to work when the mock clock is installed. + j$.getEnv().deprecated( + "The eval form of setTimeout and setInterval is deprecated and will stop working in a future version of Jasmine's mock clock. Pass a function instead of a string." + ); f = function() { // eslint-disable-next-line no-eval return eval(funcToCall);