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
+8 -3
View File
@@ -5493,8 +5493,13 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
(!!haystack && !haystack.indexOf) (!!haystack && !haystack.indexOf)
) { ) {
for (var i = 0; i < haystack.length; i++) { for (var i = 0; i < haystack.length; i++) {
if (this.equals(haystack[i], needle, customTesters)) { try {
return true; this.suppressDeprecation_ = true;
if (this.equals(haystack[i], needle, customTesters)) {
return true;
}
} finally {
this.suppressDeprecation_ = false;
} }
} }
return false; return false;
@@ -5613,7 +5618,7 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
if (isDiffBuilder(customTestersOrDiffBuilder)) { if (isDiffBuilder(customTestersOrDiffBuilder)) {
diffBuilder = customTestersOrDiffBuilder; diffBuilder = customTestersOrDiffBuilder;
} else { } else {
if (customTestersOrDiffBuilder) { if (customTestersOrDiffBuilder && !this.suppressDeprecation_) {
j$.getEnv().deprecated( j$.getEnv().deprecated(
'Passing custom equality testers ' + 'Passing custom equality testers ' +
'to MatchersUtil#equals is deprecated. ' + 'to MatchersUtil#equals is deprecated. ' +
+16
View File
@@ -1235,6 +1235,22 @@ describe('matchersUtil', function() {
expect(matchersUtil.contains([1, 2], 3)).toBe(true); 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() { it('fails when actual is undefined', function() {
var matchersUtil = new jasmineUnderTest.MatchersUtil(); var matchersUtil = new jasmineUnderTest.MatchersUtil();
expect(matchersUtil.contains(undefined, 'A')).toBe(false); expect(matchersUtil.contains(undefined, 'A')).toBe(false);
+8 -3
View File
@@ -51,8 +51,13 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
(!!haystack && !haystack.indexOf) (!!haystack && !haystack.indexOf)
) { ) {
for (var i = 0; i < haystack.length; i++) { for (var i = 0; i < haystack.length; i++) {
if (this.equals(haystack[i], needle, customTesters)) { try {
return true; this.suppressDeprecation_ = true;
if (this.equals(haystack[i], needle, customTesters)) {
return true;
}
} finally {
this.suppressDeprecation_ = false;
} }
} }
return false; return false;
@@ -171,7 +176,7 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
if (isDiffBuilder(customTestersOrDiffBuilder)) { if (isDiffBuilder(customTestersOrDiffBuilder)) {
diffBuilder = customTestersOrDiffBuilder; diffBuilder = customTestersOrDiffBuilder;
} else { } else {
if (customTestersOrDiffBuilder) { if (customTestersOrDiffBuilder && !this.suppressDeprecation_) {
j$.getEnv().deprecated( j$.getEnv().deprecated(
'Passing custom equality testers ' + 'Passing custom equality testers ' +
'to MatchersUtil#equals is deprecated. ' + 'to MatchersUtil#equals is deprecated. ' +