From d9467317a88d4698dbfaefb8b8f12317b40aaca4 Mon Sep 17 00:00:00 2001 From: Joost Elfering Date: Thu, 19 Jul 2012 01:52:27 +0200 Subject: [PATCH] adding a check for the sticky regExp option supported by Firefox and accepted by the ES6. Note that the tests for this case are checking for the support of the sticky parameter. the logic is still tested by the other expect statements in browsers that do not support sticky but will never enter that block as creating a regExp with that flag is not allowed. Coverage is still good. See pivotal/jasmine#234 --- lib/jasmine-core/jasmine.js | 3 +++ spec/core/MatchersSpec.js | 7 +++++++ src/core/Env.js | 3 +++ 3 files changed, 13 insertions(+) diff --git a/lib/jasmine-core/jasmine.js b/lib/jasmine-core/jasmine.js index d1c365c4..d71facfb 100644 --- a/lib/jasmine-core/jasmine.js +++ b/lib/jasmine-core/jasmine.js @@ -887,6 +887,9 @@ jasmine.Env.prototype.compareRegExps_ = function(a, b, mismatchKeys, mismatchVal if (a.multiline != b.multiline) mismatchValues.push("expected modifier m was" + (b.multiline ? " " : " not ") + "set and does not equal the origin modifier"); + if (a.sticky != b.sticky) + mismatchValues.push("expected modifier y was" + (b.sticky ? " " : " not ") + "set and does not equal the origin modifier"); + return (mismatchValues.length === 0); }; diff --git a/spec/core/MatchersSpec.js b/spec/core/MatchersSpec.js index c095cc24..73cfe1f7 100644 --- a/spec/core/MatchersSpec.js +++ b/spec/core/MatchersSpec.js @@ -80,6 +80,13 @@ describe("jasmine.Matchers", function() { expect((match(/1/i).toNotEqual(/1/i))).toFail(); expect((match(/[abc]/gm).toEqual(/1/i))).toFail(); expect((match(/[abc]/gm).toNotEqual(/1/i))).toPass(); + + // only test if the browser supports the sticky option on a regExp see pull #234 + if (RegExp.prototype.sticky !== undefined) { + var sticky_regexp = new RegExp("[abc]", "y"); + expect((match(sticky_regexp).toEqual(/1/i))).toFail(); + expect((match(sticky_regexp).toNotEqual(/1/i))).toPass(); + } }); it("toEqual to build an Expectation Result", function() { diff --git a/src/core/Env.js b/src/core/Env.js index a3ae8ab2..aa461ab4 100644 --- a/src/core/Env.js +++ b/src/core/Env.js @@ -181,6 +181,9 @@ jasmine.Env.prototype.compareRegExps_ = function(a, b, mismatchKeys, mismatchVal if (a.multiline != b.multiline) mismatchValues.push("expected modifier m was" + (b.multiline ? " " : " not ") + "set and does not equal the origin modifier"); + if (a.sticky != b.sticky) + mismatchValues.push("expected modifier y was" + (b.sticky ? " " : " not ") + "set and does not equal the origin modifier"); + return (mismatchValues.length === 0); };