]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/tests/tst.verror.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / node_modules / request / node_modules / http-signature / node_modules / jsprim / node_modules / verror / tests / tst.verror.js
diff --git a/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/tests/tst.verror.js b/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/tests/tst.verror.js
new file mode 100644 (file)
index 0000000..ee937cd
--- /dev/null
@@ -0,0 +1,156 @@
+/*
+ * tst.verror.js: tests basic functionality of the VError class.
+ */
+
+var mod_assert = require('assert');
+var mod_verror = require('../lib/verror');
+
+var VError = mod_verror.VError;
+var WError = mod_verror.WError;
+
+var err, suberr, stack, substack;
+
+/*
+ * Remove full paths and relative line numbers from stack traces so that we can
+ * compare against "known-good" output.
+ */
+function cleanStack(stacktxt)
+{
+       var re = new RegExp(__filename + ':\\d+:\\d+', 'gm');
+       stacktxt = stacktxt.replace(re, 'tst.verror.js');
+       return (stacktxt);
+}
+
+/*
+ * Save the generic parts of all stack traces so we can avoid hardcoding
+ * Node-specific implementation details in our testing of stack traces.
+ */
+var nodestack = new Error().stack.split('\n').slice(2).join('\n');
+
+/* no arguments */
+err = new VError();
+mod_assert.equal(err.name, 'VError');
+mod_assert.ok(err instanceof Error);
+mod_assert.ok(err instanceof VError);
+mod_assert.equal(err.message, '');
+mod_assert.ok(err.cause() === undefined);
+stack = cleanStack(err.stack);
+mod_assert.equal(stack, [
+    'VError',
+    '    at Object.<anonymous> (tst.verror.js)'
+].join('\n') + '\n' + nodestack);
+
+/* options-argument form */
+err = new VError({});
+mod_assert.equal(err.message, '');
+mod_assert.ok(err.cause() === undefined);
+
+/* simple message */
+err = new VError('my error');
+mod_assert.equal(err.message, 'my error');
+mod_assert.ok(err.cause() === undefined);
+stack = cleanStack(err.stack);
+mod_assert.equal(stack, [
+    'VError: my error',
+    '    at Object.<anonymous> (tst.verror.js)'
+].join('\n') + '\n' + nodestack);
+
+err = new VError({}, 'my error');
+mod_assert.equal(err.message, 'my error');
+mod_assert.ok(err.cause() === undefined);
+
+/* printf-style message */
+err = new VError('%s error: %3d problems', 'very bad', 15);
+mod_assert.equal(err.message, 'very bad error:  15 problems');
+mod_assert.ok(err.cause() === undefined);
+
+err = new VError({}, '%s error: %3d problems', 'very bad', 15);
+mod_assert.equal(err.message, 'very bad error:  15 problems');
+mod_assert.ok(err.cause() === undefined);
+
+/* caused by another error, with no additional message */
+suberr = new Error('root cause');
+err = new VError(suberr);
+mod_assert.equal(err.message, ': root cause');
+mod_assert.ok(err.cause() === suberr);
+
+err = new VError({ 'cause': suberr });
+mod_assert.equal(err.message, ': root cause');
+mod_assert.ok(err.cause() === suberr);
+
+/* caused by another error, with annotation */
+err = new VError(suberr, 'proximate cause: %d issues', 3);
+mod_assert.equal(err.message, 'proximate cause: 3 issues: root cause');
+mod_assert.ok(err.cause() === suberr);
+stack = cleanStack(err.stack);
+mod_assert.equal(stack, [
+    'VError: proximate cause: 3 issues: root cause',
+    '    at Object.<anonymous> (tst.verror.js)'
+].join('\n') + '\n' + nodestack);
+
+err = new VError({ 'cause': suberr }, 'proximate cause: %d issues', 3);
+mod_assert.equal(err.message, 'proximate cause: 3 issues: root cause');
+mod_assert.ok(err.cause() === suberr);
+stack = cleanStack(err.stack);
+mod_assert.equal(stack, [
+    'VError: proximate cause: 3 issues: root cause',
+    '    at Object.<anonymous> (tst.verror.js)'
+].join('\n') + '\n' + nodestack);
+
+/* caused by another VError, with annotation. */
+suberr = err;
+err = new VError(suberr, 'top');
+mod_assert.equal(err.message, 'top: proximate cause: 3 issues: root cause');
+mod_assert.ok(err.cause() === suberr);
+
+err = new VError({ 'cause': suberr }, 'top');
+mod_assert.equal(err.message, 'top: proximate cause: 3 issues: root cause');
+mod_assert.ok(err.cause() === suberr);
+
+/* caused by a WError */
+suberr = new WError(new Error('root cause'), 'mid');
+err = new VError(suberr, 'top');
+mod_assert.equal(err.message, 'top: mid');
+mod_assert.ok(err.cause() === suberr);
+
+/* null cause (for backwards compatibility with older versions) */
+err = new VError(null, 'my error');
+mod_assert.equal(err.message, 'my error');
+mod_assert.ok(err.cause() === undefined);
+stack = cleanStack(err.stack);
+mod_assert.equal(stack, [
+    'VError: my error',
+    '    at Object.<anonymous> (tst.verror.js)'
+].join('\n') + '\n' + nodestack);
+
+err = new VError({ 'cause': null }, 'my error');
+mod_assert.equal(err.message, 'my error');
+mod_assert.ok(err.cause() === undefined);
+
+err = new VError(null);
+mod_assert.equal(err.message, '');
+mod_assert.ok(err.cause() === undefined);
+stack = cleanStack(err.stack);
+mod_assert.equal(stack, [
+    'VError',
+    '    at Object.<anonymous> (tst.verror.js)'
+].join('\n') + '\n' + nodestack);
+
+/* constructorOpt */
+function makeErr(options) {
+       return (new VError(options, 'test error'));
+}
+err = makeErr({});
+stack = cleanStack(err.stack);
+mod_assert.equal(stack, [
+    'VError: test error',
+    '    at makeErr (tst.verror.js)',
+    '    at Object.<anonymous> (tst.verror.js)'
+].join('\n') + '\n' + nodestack);
+
+err = makeErr({ 'constructorOpt': makeErr });
+stack = cleanStack(err.stack);
+mod_assert.equal(stack, [
+    'VError: test error',
+    '    at Object.<anonymous> (tst.verror.js)'
+].join('\n') + '\n' + nodestack);