Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
a console.assert which actually stop the execution
/**
* A console.assert which actually stop the exectution.
* default console.assert() is a plain display, such as console.log() or console.error();
* It doesnt stop the execution like assert() is meant to do. This is a little code to
* "workaround this limitation" :) thanks @jensarp
*
* Usage:
* console.assert(foo === bar); // Will throw if not equal
* console.assert(foo === bar, 'Dude, foo does not equal bar'); // Will throw with custom error message
*
* To trigger js debugger on failed assert, do
* console.assert.useDebugger = true;
*/
console.assert = function(cond, text){
if( cond ) return;
if( console.assert.useDebugger ) debugger;
throw new Error(text || "Assertion failed!");
};

Sweet! Just two notes:

If it throws, it won't reach the debugger statement, so I'd introduce a third param.

Also, there was some issue with throwing without a new Error()... I don't remember exactly what it was, but I think it won't show a stack trace on some browsers or something like that.

Here's a forked version w/ a third param: https://gist.github.com/2651966

Owner

jeromeetienne commented May 10, 2012

i coded the modifications you adviced. The third parameter is console.assert.useDebugger in my version. thus it is backward compatible

Owner

jeromeetienne commented May 10, 2012

and you removed the text which is more eleguant :)

Ok, now it's time to use it in real life and see if it proves useful :)

This pauses within the stack of the custom 'assert' function, further search I have found that you can pause on console.assert by enabling it during dev in Chrome Devleoper Tools, see http://stackoverflow.com/questions/12163266/break-into-chrome-debugger-when-console-assert-fails

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