diff --git a/package.json b/package.json index 40919594..58d1baca 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "name": "loop-protect", "description": "Prevent infinite loops in dynamically eval'd JavaScript.", "main": "lib/", - "version": "2.0.0-beta.2", + "version": "2.0.0", "homepage": "https://github.com/jsbin/loop-protect", "repository": { "type": "git", diff --git a/test/loop-protect.test.js b/test/loop-protect.test.js index dff22180..9249222e 100644 --- a/test/loop-protect.test.js +++ b/test/loop-protect.test.js @@ -73,6 +73,40 @@ describe('loop', function() { spy = sinon.spy(run); }); + // https://github.com/jsbin/loop-protect/issues/16 + it('should handle nested for', () => { + const code = `for (var i = 0; i < 10; i = i + 1) { + for (var j = 0; j < 10; i = i + 1) { + } + } + return true`; + + const compiled = loopProtect(code); + assert(run(compiled) === true); + }); + + // https://github.com/jsbin/loop-protect/issues/5 + it('blank line', () => { + const code = `const log = () => {};while (1) + + log('Hello') + return true`; + + const compiled = loopProtect(code); + assert(run(compiled) === true); + }); + + it('with if', () => { + const code = `if (false) for (var i = 1; i--;) { + throw Error; + } + + return true;`; + + const compiled = loopProtect(code); + assert(run(compiled) === true); + }); + it('should ignore comments', function() { var c = code.ignorecomments; var compiled = loopProtect(c);