From 4103276db4d3a74025c1a5eb4a86a42702fccea0 Mon Sep 17 00:00:00 2001 From: Alexei Barantsev Date: Tue, 28 Oct 2014 01:21:54 +0300 Subject: [PATCH] Fixing stack frame parser for Firefox new stack trace format (with column numbers and more allowed symbols in function names). Fixes issue 8093 --- javascript/firefox-driver/js/error.js | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/javascript/firefox-driver/js/error.js b/javascript/firefox-driver/js/error.js index 672df7463aa0f..b04c6bd1fa435 100644 --- a/javascript/firefox-driver/js/error.js +++ b/javascript/firefox-driver/js/error.js @@ -37,16 +37,29 @@ fxdriver.error.toJSON = function(ex) { var stack = ex.stack.replace(/\s*$/, '').split('\n'); for (var frame = stack.shift(); frame; frame = stack.shift()) { - var match = frame.match(/^([a-zA-Z_$][\w./<]*)?(?:\(.*\))?@(.+)?:(\d*)$/); + var methodName; + var fileName; + var lineNumber; + var columnNumber; + + var match = frame.match(/(.*):(\d+):(\d+)$/); if (match) { - stackFrames.push({ - 'methodName': match[1], - 'fileName': match[2], - 'lineNumber': Number(match[3]) - }); + frame = match[1]; + lineNumber = Number(match[2]); + columnNumber = Number(match[3]); } else { - stackFrames.push({'methodName': frame}); + match = frame.match(/(.*):(\d+)$/); + frame = match[1]; + lineNumber = Number(match[2]); } + + match = frame.match(/^([a-zA-Z_$][\w./<$]*)?(?:\(.*\))?@(.+)?$/); + stackFrames.push({ + 'methodName': match[1], + 'fileName': match[2], + 'lineNumber': lineNumber, + 'columnNumber': columnNumber + }); } }