Skip to content

Instantly share code, notes, and snippets.

@eschwartz
Created February 22, 2016 16:49
Show Gist options
  • Save eschwartz/2b8d675882c68e743623 to your computer and use it in GitHub Desktop.
Save eschwartz/2b8d675882c68e743623 to your computer and use it in GitHub Desktop.
Extend assert
const assert = require('assert');
// Wrap `assert()`
const assertExt = (val, msg) => assert(val, msg);
// Extend assert properties
Object.assign(assertExt, assert, {
someCustomAssertion: require('./assert/some-custom-assertion')
});
module.exports = assertExt;
@eschwartz
Copy link
Author

eschwartz commented Oct 3, 2016

Automagical version:

const assert = require('assert');
const fs = require('fs');
const path = require('path');

const EXT_DIR = path.join(__dirname, 'assert');

// Load extensions from EXT_DIR
const extensions = fs.readdirSync(EXT_DIR)
  .reduce((exts, fname) => Object.assign(exts, {
    [path.basename(fname, '.js')]: require(path.join(EXT_DIR, fname))
  }), {});

// Extend assert
const assertClone = assert.bind(null);
Object.assign(assertClone, assert, extensions);

module.exports = assertClone;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment