mirror of
https://github.com/verdaccio/verdaccio.git
synced 2025-03-04 02:02:39 -05:00
56 lines
1.3 KiB
JavaScript
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")
|
|
}
|
|
|