blob: fd1c9b7d178abb5894147aded6b84d449ac4b197 [file] [log] [blame]
Yang Guo4fd355c2019-09-19 08:59:031/**
2 * Module dependencies.
3 */
4
5var AssertionError = require('assert').AssertionError
6 , callsite = require('callsite')
7 , fs = require('fs')
8
9/**
10 * Expose `assert`.
11 */
12
13module.exports = process.env.NO_ASSERT
14 ? function(){}
15 : assert;
16
17/**
18 * Assert the given `expr`.
19 */
20
21function assert(expr) {
22 if (expr) return;
23
24 var stack = callsite();
25 var call = stack[1];
26 var file = call.getFileName();
27 var lineno = call.getLineNumber();
28 var src = fs.readFileSync(file, 'utf8');
29 var line = src.split('\n')[lineno-1];
30 var src = line.match(/assert\((.*)\)/)[1];
31
32 var err = new AssertionError({
33 message: src,
34 stackStartFunction: stack[0].getFunction()
35 });
36
37 throw err;
38}