Skip to content

Commit

Permalink
Correctly forward errors that not derived from Error
Browse files Browse the repository at this point in the history
  • Loading branch information
IvanGoncharov committed Jun 24, 2018
1 parent 807af82 commit 82c6fee
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
5 changes: 4 additions & 1 deletion src/boilerplate/post-module.js
Expand Up @@ -36,7 +36,10 @@ if (typeof importScripts === "function") {
var result = render(instance, src, options);
postMessage({ id: id, result: result });
} catch (error) {
postMessage({ id: id, error: { message: error.message, fileName: error.fileName, lineNumber: error.lineNumber } });
var error = error instanceof Error
? { message: error.message, fileName: error.fileName, lineNumber: error.lineNumber }
: { message: error.toString() };
postMessage({ id: id, error: error });
}
}
}
Expand Down
24 changes: 24 additions & 0 deletions test-node/render.js
Expand Up @@ -23,3 +23,27 @@ it('should render a graph using the Module and render functions exported by the
assert.ok(result);
});
});

it('should throw descriptive error when not enough memory allocated', function() {
let worker = new Worker(path.resolve(__dirname, '../full.render.js'));
let viz = new Viz({ worker });
let dot = 'digraph {';
for (let i = 0; i < 50000; ++i) {
dot += `node${i} -> node${i + 1};`;
}
dot += '}';

return viz.renderString(dot).then(
() => {
worker.terminate();
assert.fail('should throw');
},
error => {
worker.terminate();
assert(
/Cannot enlarge memory arrays/.test(error.message),
'should return descriptive error',
);
},
);
});

0 comments on commit 82c6fee

Please sign in to comment.