From ca40f0265133724c9f9af833c3bbc317daf54fa0 Mon Sep 17 00:00:00 2001 From: Matthew Kastor Date: Sun, 4 Jan 2015 09:56:47 -0500 Subject: [PATCH 1/3] updates emit to work with scoped vars since storedVars has to be block scoped now, emit and others access storedVarsGlobal to do the same thing they used to. Also, evalWithVars was defined twice in here, in exactly the same way, so I removed one of them. --- .../chrome/content/extensions/selbench.js | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/selbench-fx-xpi/chrome/content/extensions/selbench.js b/selbench-fx-xpi/chrome/content/extensions/selbench.js index a0936fb..f316efe 100644 --- a/selbench-fx-xpi/chrome/content/extensions/selbench.js +++ b/selbench-fx-xpi/chrome/content/extensions/selbench.js @@ -46,7 +46,7 @@ function $d() { return selenium.browserbot.getDocument(); } catch (err) { throw new Error("In " + err.fileName + " @" + err.lineNumber + ": " + err); } - storedVars.emitted = ""; + storedVarsGlobal.emitted = ""; }; })(); @@ -76,11 +76,6 @@ function $d() { return selenium.browserbot.getDocument(); } // ================================================================================ // emit execution tracing - function evalWithVars(expr) { - return eval("with (storedVars) {" + expr + "}"); - } - - // ================================================================================ Selenium.prototype.doExpectError = function(target) { $$.expectedError = eval(target); @@ -92,9 +87,9 @@ function $d() { return selenium.browserbot.getDocument(); } // appends the given string to current emitted state, (a ~ is inserted between each append) Selenium.prototype.doEmit = function(target) { - if (storedVars.emitted) - storedVars.emitted += "~"; - storedVars.emitted += evalWithVars(target); + if (storedVarsGlobal.emitted) + storedVarsGlobal.emitted += "~"; + storedVarsGlobal.emitted += evalWithVars(target); }; // verifies that the accumulated emit state matches the given string // if an array is specified, then matches for a ~ between each element @@ -104,8 +99,8 @@ function $d() { return selenium.browserbot.getDocument(); } if (expectedValue instanceof Array) { expectedValue = expectedValue.join("~"); } - if (expectedValue != storedVars.emitted) { - var errmsg = " expected: " + expectedValue + "\nbut found: " + storedVars.emitted; + if (expectedValue != storedVarsGlobal.emitted) { + var errmsg = " expected: " + expectedValue + "\nbut found: " + storedVarsGlobal.emitted; alert(errmsg); throw new Error(errmsg); } @@ -113,7 +108,7 @@ function $d() { return selenium.browserbot.getDocument(); } // clears the accumulated emitted state Selenium.prototype.doResetEmitted = function() { - storedVars.emitted = ""; + storedVarsGlobal.emitted = ""; }; // ================================================================================ @@ -132,17 +127,19 @@ function $d() { return selenium.browserbot.getDocument(); } Selenium.prototype.doAlert = function(expr) { alert(evalWithVars(expr)); }; - + // remove selenium variable - Selenium.prototype.doDeleteVar = function(name) { - delete storedVars[name]; + function deleteVar(name) { + delete storedVarsLocal[name]; + delete storedVarsGlobal[name] }; + Selenium.prototype.doDeleteVar = deleteVar; // remove selenium variable Selenium.prototype.doDeleteVars = function(namesSpec) { var names = namesSpec.split(","); for (var i = 0; i < names.length; i++) { - delete storedVars[names[i].trim()]; + deleteVar(names[i].trim()); } }; @@ -174,7 +171,7 @@ function $d() { return selenium.browserbot.getDocument(); } Selenium.prototype.doTimerElapsed = function(name, script) { if (script) { - storedVars._elapsed = timers[name].elapsed(); + storedVarsGlobal._elapsed = timers[name].elapsed(); eval(script); } else From e67e183b5c2b6726c7c55bfa67bc6ff2c5a0c676 Mon Sep 17 00:00:00 2001 From: Matthew Kastor Date: Sun, 4 Jan 2015 20:02:50 -0500 Subject: [PATCH 2/3] defines storedVarsGlobal if not present I forgot to add this in earlier. storedVarsGlobal only exists in a dev branch of SelBlocks. With this code in place SelBench will continue to work as it did before. --- selbench-fx-xpi/chrome/content/extensions/selbench.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/selbench-fx-xpi/chrome/content/extensions/selbench.js b/selbench-fx-xpi/chrome/content/extensions/selbench.js index f316efe..1687e16 100644 --- a/selbench-fx-xpi/chrome/content/extensions/selbench.js +++ b/selbench-fx-xpi/chrome/content/extensions/selbench.js @@ -24,7 +24,11 @@ function $d() { return selenium.browserbot.getDocument(); } // selbench name-space (function($$){ - + if(typeof storedVarsGlobal !== 'object') { + // intentional global + storedVarsGlobal = storedVars; + } + function evalWithVars(expr) { return eval("with (storedVars) {" + expr + "}"); } From a54fc1ca2273b9356918c47b00549cc93410e844 Mon Sep 17 00:00:00 2001 From: Matthew Kastor Date: Sun, 4 Jan 2015 21:22:05 -0500 Subject: [PATCH 3/3] conditional check for storedVarsLocal This didn't come up in testing selbench because there isn't a test for deleteVar. --- selbench-fx-xpi/chrome/content/extensions/selbench.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/selbench-fx-xpi/chrome/content/extensions/selbench.js b/selbench-fx-xpi/chrome/content/extensions/selbench.js index 1687e16..9db3f9e 100644 --- a/selbench-fx-xpi/chrome/content/extensions/selbench.js +++ b/selbench-fx-xpi/chrome/content/extensions/selbench.js @@ -28,6 +28,10 @@ function $d() { return selenium.browserbot.getDocument(); } // intentional global storedVarsGlobal = storedVars; } + if(typeof storedVarsLocal !== 'object') { + // intentional global + storedVarsLocal = storedVars; + } function evalWithVars(expr) { return eval("with (storedVars) {" + expr + "}");