Fixed extra deprecation when passing custom equality testers to MatchersUtil#contains

This commit is contained in:
Steve Gravrock
2021-09-24 14:24:22 -07:00
parent 64d58ed1f0
commit 3b28ee7c29
3 changed files with 32 additions and 6 deletions

View File

@@ -5493,8 +5493,13 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
(!!haystack && !haystack.indexOf)
) {
for (var i = 0; i < haystack.length; i++) {
if (this.equals(haystack[i], needle, customTesters)) {
return true;
try {
this.suppressDeprecation_ = true;
if (this.equals(haystack[i], needle, customTesters)) {
return true;
}
} finally {
this.suppressDeprecation_ = false;
}
}
return false;
@@ -5613,7 +5618,7 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
if (isDiffBuilder(customTestersOrDiffBuilder)) {
diffBuilder = customTestersOrDiffBuilder;
} else {
if (customTestersOrDiffBuilder) {
if (customTestersOrDiffBuilder && !this.suppressDeprecation_) {
j$.getEnv().deprecated(
'Passing custom equality testers ' +
'to MatchersUtil#equals is deprecated. ' +

View File

@@ -1235,6 +1235,22 @@ describe('matchersUtil', function() {
expect(matchersUtil.contains([1, 2], 3)).toBe(true);
});
it('logs a single deprecation warning when custom equality testers are passed', function() {
// TODO: remove this in the next major release.
var matchersUtil = new jasmineUnderTest.MatchersUtil(),
deprecated = spyOn(jasmineUnderTest.getEnv(), 'deprecated');
matchersUtil.contains([0], 0, []);
expect(deprecated).toHaveBeenCalledOnceWith(
jasmine.stringMatching(
'Passing custom equality testers ' +
'to MatchersUtil#contains is deprecated. ' +
'See <https://jasmine.github.io/tutorials/upgrading_to_Jasmine_4.0#matchers-cet> for details.'
)
);
});
it('fails when actual is undefined', function() {
var matchersUtil = new jasmineUnderTest.MatchersUtil();
expect(matchersUtil.contains(undefined, 'A')).toBe(false);

View File

@@ -51,8 +51,13 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
(!!haystack && !haystack.indexOf)
) {
for (var i = 0; i < haystack.length; i++) {
if (this.equals(haystack[i], needle, customTesters)) {
return true;
try {
this.suppressDeprecation_ = true;
if (this.equals(haystack[i], needle, customTesters)) {
return true;
}
} finally {
this.suppressDeprecation_ = false;
}
}
return false;
@@ -171,7 +176,7 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
if (isDiffBuilder(customTestersOrDiffBuilder)) {
diffBuilder = customTestersOrDiffBuilder;
} else {
if (customTestersOrDiffBuilder) {
if (customTestersOrDiffBuilder && !this.suppressDeprecation_) {
j$.getEnv().deprecated(
'Passing custom equality testers ' +
'to MatchersUtil#equals is deprecated. ' +