Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
.DS_Store
node_modules
*.sock
.idea

2 changes: 2 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@ support
test
examples
*.sock
.idea/

3 changes: 1 addition & 2 deletions Readme.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@

# better-assert

Better c-style assertions using [callsite](https://github.com/visionmedia/callsite) for
self-documenting failure messages.
Better c-style assertions for self-documenting failure messages.

## Installation

Expand Down
36 changes: 21 additions & 15 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

var AssertionError = require('assert').AssertionError
, callsite = require('callsite')
, fs = require('fs')
, fs = require('fs');

/**
* Expose `assert`.
Expand All @@ -21,18 +21,24 @@ module.exports = process.env.NO_ASSERT
function assert(expr) {
if (expr) return;

var stack = callsite();
var call = stack[1];
var file = call.getFileName();
var lineno = call.getLineNumber();
var src = fs.readFileSync(file, 'utf8');
var line = src.split('\n')[lineno-1];
var src = line.match(/assert\((.*)\)/)[1];

var err = new AssertionError({
message: src,
stackStartFunction: stack[0].getFunction()
});

throw err;
var a = new Error();
// 0 => Error
// 1 => at assert
// 2 => at Object.<anonymous> (/project/myproject/test/test-babel.js:15:1)', <= where the assert was raised !
// .....
//
var errorline = a.stack.split('\n')[2];
var m = errorline.match(/at (.*)\((.*):([0-9]*):([0-9]*)\)/);
var func = m[1]; // Object.<anonymous> ( not very useful)
var file = m[2]; // filename
var lineno = parseInt(m[3]);
var fullsource = fs.readFileSync(file, 'utf8');
var line = fullsource.split('\n')[lineno-1];
var src = line.match(/.*assert\((.*)\)/)[1];
var err = new AssertionError({
message: src + "\n ",
stackStartFunction: assert
});
throw err;
}

52 changes: 26 additions & 26 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
{
"name": "better-assert",
"version": "1.0.2",
"license": "MIT",
"description": "Better assertions for node, reporting the expr, filename, lineno etc",
"keywords": [
"assert",
"stack",
"trace",
"debug"
],
"author": "TJ Holowaychuk <[email protected]>",
"contributors": [
"TonyHe <[email protected]>",
"ForbesLindesay"
],
"dependencies": {
"callsite": "1.0.0"
},
"repository": {
"type": "git",
"url": "https://github.com/visionmedia/better-assert.git"
},
"main": "index",
"engines": {
"node": "*"
}
"name": "better-assert",
"version": "1.1.0",
"license": "MIT",
"description": "Better assertions for node, reporting the expr, filename, lineno etc",
"keywords": [
"assert",
"stack",
"trace",
"debug"
],
"author": "TJ Holowaychuk <[email protected]>",
"contributors": [
"TonyHe <[email protected]>",
"ForbesLindesay",
"Etienne Rossignon <[email protected]>"
],
"dependencies": {
},
"repository": {
"type": "git",
"url": "https://github.com/visionmedia/better-assert.git"
},
"main": "index",
"engines": {
"node": "*"
}
}
27 changes: 27 additions & 0 deletions test/test-babel.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// run with babel-node
// install:
// * npm install --save-dev babel-core
// * npm install --save-dev babel-preset-es2015
// * npm install -g babel
// babel-node --presets es2015 ./test/test-babel.hs
//
// should display:
// throw err;
// ^
// AssertionError: 1==2,"1 should be 2"
//
// at myFunction (/projects/better-assert/test/test-babel.js:23:5)
// at Object.<anonymous> /projects/better-assert/test/test-babel.js:20:1)
// at Module._compile (module.js:570:32)
//...

import assert from "..";



function myFunction() {
assert(1==2,"1 should be 2");

}

myFunction();
11 changes: 11 additions & 0 deletions test/testtest.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// node test/test.js
const assert = require("..");

var a = 1;
var b = 2;

function myFunction() {
assert(1==2,"1 should be 2");
}

myFunction();