tor-browser

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

error-report.js (1961B)


      1 {
      2    // Plain-old Error object
      3    let error = new Error("foobar");
      4 
      5    let report = createErrorReport(error);
      6    assertEq(report.toStringResult, "Error: foobar");
      7    assertEq(report.name, "Error");
      8    assertEq(report.message, "foobar");
      9 }
     10 
     11 {
     12    // Error object with overwritten properties
     13    let error = new Error("foobar");
     14    error.name = "MyError";
     15    error.message = "here";
     16 
     17    let report = createErrorReport(error);
     18    assertEq(report.toStringResult, "MyError: here");
     19    assertEq(report.name, "Error");
     20    assertEq(report.message, "here");
     21 }
     22 
     23 {
     24    // Plain object, which doesn't quack (enough) like an Error
     25    let obj = {name: "foo", message: "bar"};
     26 
     27    let report = createErrorReport(obj);
     28    assertEq(report.toStringResult, "uncaught exception: [object Object]");
     29    assertEq(report.name, "");
     30    assertEq(report.message, "uncaught exception: [object Object]");
     31 }
     32 
     33 {
     34    setPrefValue("ducktyped_errors", false);
     35    // Duck-typed error object (when not supported)
     36    let obj = {name: "foo", message: "bar", fileName: "test", lineNumber: 0};
     37 
     38    let report = createErrorReport(obj);
     39    assertEq(report.toStringResult, "uncaught exception: [object Object]");
     40    assertEq(report.name, "");
     41    assertEq(report.message, "uncaught exception: [object Object]");
     42 }
     43 
     44 {
     45    setPrefValue("ducktyped_errors", true);
     46    // Duck-typed error object (when supported)
     47    let obj = {name: "foo", message: "bar", fileName: "test", lineNumber: 0};
     48 
     49    let report = createErrorReport(obj);
     50    assertEq(report.toStringResult, "foo: bar");
     51    assertEq(report.name, "");
     52    assertEq(report.message, "foo: bar");
     53 }
     54 
     55 {
     56    // toString failure
     57    let obj = {toString() { throw "haha"; }};
     58 
     59    let report = createErrorReport(obj);
     60    assertEq(report.toStringResult, "uncaught exception: unknown (can't convert to string)");
     61    assertEq(report.name, "");
     62    assertEq(report.message, "uncaught exception: unknown (can't convert to string)");
     63 }