diff options
Diffstat (limited to 'node_modules/convert-source-map/test/comment-regex.js')
-rw-r--r-- | node_modules/convert-source-map/test/comment-regex.js | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/node_modules/convert-source-map/test/comment-regex.js b/node_modules/convert-source-map/test/comment-regex.js new file mode 100644 index 000000000..16331ccb8 --- /dev/null +++ b/node_modules/convert-source-map/test/comment-regex.js @@ -0,0 +1,138 @@ +'use strict'; +/*jshint asi: true */ + +var test = require('tap').test + , generator = require('inline-source-map') + , rx = require('..').commentRegex + , mapFileRx = require('..').mapFileCommentRegex + +function comment(prefix, suffix) { + rx.lastIndex = 0; + return rx.test(prefix + 'sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyJmdW5jdGlvbiBmb28oKSB7XG4gY29uc29sZS5sb2coXCJoZWxsbyBJIGFtIGZvb1wiKTtcbiBjb25zb2xlLmxvZyhcIndobyBhcmUgeW91XCIpO1xufVxuXG5mb28oKTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSJ9' + suffix) +} + +function commentWithCharSet(prefix, suffix, sep) { + sep = sep || ':'; + rx.lastIndex = 0; + return rx.test(prefix + 'sourceMappingURL=data:application/json;charset' + sep +'utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyJmdW5jdGlvbiBmb28oKSB7XG4gY29uc29sZS5sb2coXCJoZWxsbyBJIGFtIGZvb1wiKTtcbiBjb25zb2xlLmxvZyhcIndobyBhcmUgeW91XCIpO1xufVxuXG5mb28oKTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSJ9' + suffix) +} + +// Source Map v2 Tests +test('comment regex old spec - @', function (t) { + [ + '//@ ', + ' //@ ', // with leading space + '\t//@ ', // with leading tab + '//@ ', // with leading text + '/*@ ', // multi line style + ' /*@ ', // multi line style with leading spaces + '\t/*@ ', // multi line style with leading tab + '/*@ ', // multi line style with leading text + ].forEach(function (x) { + t.ok(comment(x, ''), 'matches ' + x) + t.ok(commentWithCharSet(x, ''), 'matches ' + x + ' with charset') + t.ok(commentWithCharSet(x, '', '='), 'matches ' + x + ' with charset') + }); + + [ + ' @// @', + ' @/* @', + ].forEach(function (x) { t.ok(!comment(x, ''), 'should not match ' + x) }) + + t.end() +}) + +test('comment regex new spec - #', function (t) { + [ + ' //# ', // with leading spaces + '\t//# ', // with leading tab + '//# ', // with leading text + '/*# ', // multi line style + ' /*# ', // multi line style with leading spaces + '\t/*# ', // multi line style with leading tab + '/*# ', // multi line style with leading text + ].forEach(function (x) { + t.ok(comment(x, ''), 'matches ' + x) + t.ok(commentWithCharSet(x, ''), 'matches ' + x + ' with charset') + t.ok(commentWithCharSet(x, '', '='), 'matches ' + x + ' with charset') + }); + + [ + ' #// #', + ' #/* #', + ].forEach(function (x) { t.ok(!comment(x, ''), 'should not match ' + x) }) + + t.end() +}) + +function mapFileCommentWrap(s1, s2) { + mapFileRx.lastIndex = 0; + return mapFileRx.test(s1 + 'sourceMappingURL=foo.js.map' + s2) +} + +test('mapFileComment regex old spec - @', function (t) { + + [ + ['//@ ', ''], + [' //@ ', ''], // with leading spaces + ['\t//@ ', ''], // with a leading tab + ['///@ ', ''], // with a leading text + [';//@ ', ''], // with a leading text + ['return//@ ', ''], // with a leading text + ].forEach(function (x) { t.ok(mapFileCommentWrap(x[0], x[1]), 'matches ' + x.join(' :: ')) }); + + [ + [' @// @', ''], + ['var sm = "//@ ', '"'], // not inside a string + ['var sm = \'//@ ', '\''], // not inside a string + ['var sm = \' //@ ', '\''], // not inside a string + ].forEach(function (x) { t.ok(!mapFileCommentWrap(x[0], x[1]), 'does not match ' + x.join(' :: ')) }) + t.end() +}) + +test('mapFileComment regex new spec - #', function (t) { + [ + ['//# ', ''], + [' //# ', ''], // with leading space + ['\t//# ', ''], // with leading tab + ['///# ', ''], // with leading text + [';//# ', ''], // with leading text + ['return//# ', ''], // with leading text + ].forEach(function (x) { t.ok(mapFileCommentWrap(x[0], x[1]), 'matches ' + x.join(' :: ')) }); + + [ + [' #// #', ''], + ['var sm = "//# ', '"'], // not inside a string + ['var sm = \'//# ', '\''], // not inside a string + ['var sm = \' //# ', '\''], // not inside a string + ].forEach(function (x) { t.ok(!mapFileCommentWrap(x[0], x[1]), 'does not match ' + x.join(' :: ')) }) + t.end() +}) + +test('mapFileComment regex /* */ old spec - @', function (t) { + [ [ '/*@ ', '*/' ] + , [' /*@ ', ' */ ' ] // with leading spaces + , [ '\t/*@ ', ' \t*/\t '] // with a leading tab + , [ 'leading string/*@ ', '*/' ] // with a leading string + , [ '/*@ ', ' \t*/\t '] // with trailing whitespace + ].forEach(function (x) { t.ok(mapFileCommentWrap(x[0], x[1]), 'matches ' + x.join(' :: ')) }); + + [ ['/*@ ', ' */ */ ' ], // not the last thing on its line + ['/*@ ', ' */ more text ' ] // not the last thing on its line + ].forEach(function (x) { t.ok(!mapFileCommentWrap(x[0], x[1]), 'does not match ' + x.join(' :: ')) }); + t.end() +}) + +test('mapFileComment regex /* */ new spec - #', function (t) { + [ [ '/*# ', '*/' ] + , [' /*# ', ' */ ' ] // with leading spaces + , [ '\t/*# ', ' \t*/\t '] // with a leading tab + , [ 'leading string/*# ', '*/' ] // with a leading string + , [ '/*# ', ' \t*/\t '] // with trailing whitespace + ].forEach(function (x) { t.ok(mapFileCommentWrap(x[0], x[1]), 'matches ' + x.join(' :: ')) }); + + [ ['/*# ', ' */ */ ' ], // not the last thing on its line + ['/*# ', ' */ more text ' ] // not the last thing on its line + ].forEach(function (x) { t.ok(!mapFileCommentWrap(x[0], x[1]), 'does not match ' + x.join(' :: ')) }); + t.end() +}) |