tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

regress-50447-1.js (4970B)


      1 /* -*- tab-width: 8; indent-tabs-mode: nil; js-indent-level: 4 -*-
      2 * vim: set ts=8 sts=4 et sw=4 tw=99:
      3 * This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 
      8 /*
      9 * SUMMARY: New properties fileName, lineNumber have been added to Error objects
     10 * in SpiderMonkey. These are non-ECMA extensions and do not exist in Rhino.
     11 *
     12 * See http://bugzilla.mozilla.org/show_bug.cgi?id=50447
     13 *
     14 * 2005-04-05 Modified by bclary to support changes to error reporting
     15 *            which set default values for the error's fileName and
     16 *            lineNumber properties.
     17 */
     18 
     19 //-----------------------------------------------------------------------------
     20 var BUGNUMBER = 50447;
     21 var summary = 'Test (non-ECMA) Error object properties fileName, lineNumber';
     22 
     23 
     24 //-----------------------------------------------------------------------------
     25 test();
     26 //-----------------------------------------------------------------------------
     27 
     28 
     29 function test()
     30 {
     31 
     32  printBugNumber(BUGNUMBER);
     33  printStatus (summary);
     34 
     35  testRealError();
     36  test1();
     37  test2();
     38  test3();
     39  test4();
     40 
     41 
     42 }
     43 
     44 // Normalize filenames so this test can work on Windows. This 
     45 // function is also used on strings that contain filenames.
     46 function normalize(filename)
     47 {
     48    // Also convert double-backslash to single-slash to handle
     49    // escaped filenames in string literals.
     50    return filename.replace(/\\{1,2}/g, '/');
     51 }
     52 
     53 function testRealError()
     54 {
     55  /* throw a real error, and see what it looks like */
     56 
     57 
     58  try
     59  {
     60    blabla;
     61  }
     62  catch (e)
     63  {
     64    if (e.fileName.search (/-50447-1\.js$/i) == -1)
     65      reportCompare('PASS', 'FAIL', "expected fileName to end with '-50447-1.js'");
     66 
     67    reportCompare(60, e.lineNumber,
     68 	  "lineNumber property returned unexpected value.");
     69  }
     70 
     71 
     72 }
     73 
     74 
     75 function test1()
     76 {
     77  /* generate an error with msg, file, and lineno properties */
     78 
     79 
     80  var e = new InternalError ("msg", "file", 2);
     81  if (Error.prototype.toSource) {
     82    reportCompare ("(new InternalError(\"msg\", \"file\", 2))",
     83  		 e.toSource(),
     84  		 "toSource() returned unexpected result.");
     85  }
     86  reportCompare ("file", e.fileName,
     87 	 "fileName property returned unexpected value.");
     88  reportCompare (2, e.lineNumber,
     89 	 "lineNumber property returned unexpected value.");
     90 
     91 
     92 }
     93 
     94 
     95 function test2()
     96 {
     97  /* generate an error with only msg property */
     98 
     99 
    100  /* note this test incorporates the path to the
    101     test file and assumes the path to the test case
    102     is a subdirectory of the directory containing jsDriver.pl
    103  */
    104  var expectedLine = 108;
    105  var expectedFileName = 'non262/extensions/regress-50447-1.js';
    106  var expectedSource = /\(new InternalError\("msg", "([^"]+)", ([0-9]+)\)\)/;
    107 
    108  var e = new InternalError ("msg");
    109 
    110  if (Error.prototype.toSource) {
    111    var actual = expectedSource.exec(e.toSource());
    112    reportCompare (normalize(actual[1]).endsWith(expectedFileName), true,
    113  		 "toSource() returned unexpected result (filename).");
    114    reportCompare (actual[2], String(expectedLine),
    115  		 "toSource() returned unexpected result (line).");
    116  }
    117  reportCompare (normalize(e.fileName).endsWith(expectedFileName), true,
    118 	 "fileName property returned unexpected value.");
    119  reportCompare (expectedLine, e.lineNumber,
    120 	 "lineNumber property returned unexpected value.");
    121 
    122 
    123 }
    124 
    125 
    126 function test3()
    127 {
    128  /* generate an error with only msg and lineNo properties */
    129 
    130  /* note this test incorporates the path to the
    131     test file and assumes the path to the test case
    132     is a subdirectory of the directory containing jsDriver.pl
    133  */
    134 
    135 
    136 
    137  var expectedLine = 10;
    138  var expectedFileName = 'non262/extensions/regress-50447-1.js';
    139  var expectedSource = /\(new InternalError\("msg", "([^"]+)", ([0-9]+)\)\)/;
    140 
    141  var e = new InternalError ("msg");
    142  e.lineNumber = expectedLine;
    143 
    144  if (Error.prototype.toSource) {
    145    var actual = expectedSource.exec(e.toSource());
    146    reportCompare (normalize(actual[1]).endsWith(expectedFileName), true,
    147  		 "toSource() returned unexpected result (filename).");
    148    reportCompare (actual[2], String(expectedLine),
    149  		 "toSource() returned unexpected result (line).");
    150  }
    151  reportCompare (normalize(e.fileName).endsWith(expectedFileName), true,
    152 	 "fileName property returned unexpected value.");
    153  reportCompare (expectedLine, e.lineNumber,
    154 	 "lineNumber property returned unexpected value.");
    155 
    156 
    157 }
    158 
    159 
    160 function test4()
    161 {
    162  /* generate an error with only msg and filename properties */
    163 
    164 
    165  var expectedLine = 167;
    166 
    167  var e = new InternalError ("msg", "file");
    168  if (Error.prototype.toSource) {
    169    reportCompare ("(new InternalError(\"msg\", \"file\", " + expectedLine + "))",
    170  		 e.toSource(),
    171  		 "toSource() returned unexpected result.");
    172  }
    173  reportCompare ("file", e.fileName,
    174 	 "fileName property returned unexpected value.");
    175  reportCompare (expectedLine, e.lineNumber,
    176 	 "lineNumber property returned unexpected value.");
    177 
    178 
    179 }