aboutsummaryrefslogtreecommitdiff
path: root/node_modules/convert-source-map/test/comment-regex.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/convert-source-map/test/comment-regex.js')
-rw-r--r--node_modules/convert-source-map/test/comment-regex.js138
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()
+})