123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- '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()
- })
|