0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2025-03-04 02:02:39 -05:00
verdaccio/node_modules/jju/test/test_errors.js
2014-11-25 03:08:06 +03:00

56 lines
1.3 KiB
JavaScript

var assert = require('assert')
var parse = require('../').parse
function addTest(arg, row, col, errRegExp) {
var fn = function() {
try {
parse(arg)
} catch(err) {
if (row !== undefined) assert.equal(err.row, row, 'wrong row: ' + err.row)
if (col !== undefined) assert.equal(err.column, col, 'wrong column: ' + err.column)
if (errRegExp) assert(errRegExp.exec(err.message))
return
}
throw new Error("no error")
}
if (typeof(describe) === 'function') {
it('test_errors: ' + JSON.stringify(arg), fn)
} else {
fn()
}
}
// semicolon will be unexpected, so it indicates an error position
addTest(';', 1, 1)
addTest('\n\n\n;', 4, 1)
addTest('\r\n;', 2, 1)
addTest('\n\r;', 3, 1)
addTest('\n\u2028;', 3, 1)
addTest('\n\u2029;', 3, 1)
addTest('[\n1\n,\n;', 4, 1)
addTest('{\n;', 2, 1)
addTest('{\n1\n:\n;', 4, 1)
addTest('.e3', 1, 3, /"\.e3"/)
// line continuations
addTest('["\\\n",\n;', 3, 1)
addTest('["\\\r\n",\n;', 3, 1)
addTest('["\\\u2028",\n;', 3, 1)
addTest('["\\\u2029",\n;', 3, 1)
// bareword rewind
addTest('nulz', 1, 1)
// no data
addTest(' ', 1, 3, /No data.*whitespace/)
addTest('blah', 1, 1, /Unexpected token 'b'/)
addTest('', 1, 1, /No data.*empty input/)
try {
parse('{{{{{{{{{')
} catch(err) {
var x = err.stack.match(/parseObject/g)
assert(!x || x.length < 2, "shouldn't blow up the stack with internal calls")
}