| /* -*- tab-width: 8; indent-tabs-mode: nil; js-indent-level: 4 -*- |
| * vim: set ts=8 sts=4 et sw=4 tw=99: |
| * This Source Code Form is subject to the terms of the Mozilla Public |
| * License, v. 2.0. If a copy of the MPL was not distributed with this |
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| |
| |
| /* |
| * SUMMARY: New properties fileName, lineNumber have been added to Error objects |
| * in SpiderMonkey. These are non-ECMA extensions and do not exist in Rhino. |
| * |
| * See http://bugzilla.mozilla.org/show_bug.cgi?id=50447 |
| * |
| * 2005-04-05 Modified by bclary to support changes to error reporting |
| * which set default values for the error's fileName and |
| * lineNumber properties. |
| */ |
| |
| //----------------------------------------------------------------------------- |
| var BUGNUMBER = 50447; |
| var summary = 'Test (non-ECMA) Error object properties fileName, lineNumber'; |
| |
| |
| //----------------------------------------------------------------------------- |
| test(); |
| //----------------------------------------------------------------------------- |
| |
| |
| function test() |
| { |
| enterFunc ('test'); |
| printBugNumber(BUGNUMBER); |
| printStatus (summary); |
| |
| testRealError(); |
| test1(); |
| test2(); |
| test3(); |
| test4(); |
| |
| exitFunc('test'); |
| } |
| |
| // Normalize filenames so this test can work on Windows. This |
| // function is also used on strings that contain filenames. |
| function normalize(filename) |
| { |
| // Also convert double-backslash to single-slash to handle |
| // escaped filenames in string literals. |
| return filename.replace(/\\{1,2}/g, '/'); |
| } |
| |
| function testRealError() |
| { |
| /* throw a real error, and see what it looks like */ |
| enterFunc ("testRealError"); |
| |
| try |
| { |
| blabla; |
| } |
| catch (e) |
| { |
| if (e.fileName.search (/-50447-1\.js$/i) == -1) |
| reportCompare('PASS', 'FAIL', "expected fileName to end with '-50447-1.js'"); |
| |
| reportCompare(60, e.lineNumber, |
| "lineNumber property returned unexpected value."); |
| } |
| |
| exitFunc ("testRealError"); |
| } |
| |
| |
| function test1() |
| { |
| /* generate an error with msg, file, and lineno properties */ |
| enterFunc ("test1"); |
| |
| var e = new InternalError ("msg", "file", 2); |
| reportCompare ("(new InternalError(\"msg\", \"file\", 2))", |
| e.toSource(), |
| "toSource() returned unexpected result."); |
| reportCompare ("file", e.fileName, |
| "fileName property returned unexpected value."); |
| reportCompare (2, e.lineNumber, |
| "lineNumber property returned unexpected value."); |
| |
| exitFunc ("test1"); |
| } |
| |
| |
| function test2() |
| { |
| /* generate an error with only msg property */ |
| enterFunc ("test2"); |
| |
| /* note this test incorporates the path to the |
| test file and assumes the path to the test case |
| is a subdirectory of the directory containing jsDriver.pl |
| */ |
| var expectedLine = 109; |
| var expectedFileName = 'js1_5/extensions/regress-50447-1.js'; |
| if (typeof document != "undefined") { |
| expectedFileName = document.location.href. |
| replace(/[^\/]*(\?.*)$/, '') + |
| expectedFileName; |
| } |
| var e = new InternalError ("msg"); |
| reportCompare ("(new InternalError(\"msg\", \"" + |
| expectedFileName + "\", " + expectedLine + "))", |
| normalize(e.toSource()), |
| "toSource() returned unexpected result."); |
| reportCompare (expectedFileName, normalize(e.fileName), |
| "fileName property returned unexpected value."); |
| reportCompare (expectedLine, e.lineNumber, |
| "lineNumber property returned unexpected value."); |
| |
| exitFunc ("test2"); |
| } |
| |
| |
| function test3() |
| { |
| /* generate an error with only msg and lineNo properties */ |
| |
| /* note this test incorporates the path to the |
| test file and assumes the path to the test case |
| is a subdirectory of the directory containing jsDriver.pl |
| */ |
| |
| enterFunc ("test3"); |
| |
| var expectedFileName = 'js1_5/extensions/regress-50447-1.js'; |
| if (typeof document != "undefined") { |
| expectedFileName = document.location.href. |
| replace(/[^\/]*(\?.*)$/, '') + |
| expectedFileName; |
| } |
| |
| var e = new InternalError ("msg"); |
| e.lineNumber = 10; |
| reportCompare ("(new InternalError(\"msg\", \"" + |
| expectedFileName + "\", 10))", |
| normalize(e.toSource()), |
| "toSource() returned unexpected result."); |
| reportCompare (expectedFileName, normalize(e.fileName), |
| "fileName property returned unexpected value."); |
| reportCompare (10, e.lineNumber, |
| "lineNumber property returned unexpected value."); |
| |
| exitFunc ("test3"); |
| } |
| |
| |
| function test4() |
| { |
| /* generate an error with only msg and filename properties */ |
| enterFunc ("test4"); |
| |
| var expectedLine = 163; |
| |
| var e = new InternalError ("msg", "file"); |
| reportCompare ("(new InternalError(\"msg\", \"file\", " + expectedLine + "))", |
| e.toSource(), |
| "toSource() returned unexpected result."); |
| reportCompare ("file", e.fileName, |
| "fileName property returned unexpected value."); |
| reportCompare (expectedLine, e.lineNumber, |
| "lineNumber property returned unexpected value."); |
| |
| exitFunc ("test4"); |
| } |