refactor: init cypress-cucumber-preprocessor install.
This commit is contained in:
347
node_modules/combine-source-map/test/combine-source-map.js
generated
vendored
Normal file
347
node_modules/combine-source-map/test/combine-source-map.js
generated
vendored
Normal file
@@ -0,0 +1,347 @@
|
||||
'use strict';
|
||||
/*jshint asi: true */
|
||||
|
||||
var test = require('tap').test;
|
||||
var convert = require('convert-source-map');
|
||||
var commentRegex = require('convert-source-map').commentRegex;
|
||||
var combine = require('..');
|
||||
var mappingsFromMap = require('../lib/mappings-from-map');
|
||||
|
||||
function checkMappings(foo, sm, lineOffset) {
|
||||
function inspect(obj, depth) {
|
||||
return require('util').inspect(obj, false, depth || 5, true);
|
||||
}
|
||||
|
||||
var fooMappings = mappingsFromMap(foo);
|
||||
var mappings = mappingsFromMap(sm);
|
||||
|
||||
var genLinesOffset = true;
|
||||
var origLinesSame = true;
|
||||
for (var i = 0; i < mappings.length; i++) {
|
||||
var fooGen = fooMappings[i].generated;
|
||||
var fooOrig = fooMappings[i].original;
|
||||
var gen = mappings[i].generated
|
||||
var orig = mappings[i].original;
|
||||
|
||||
if (gen.column !== fooGen.column || gen.line !== (fooGen.line + lineOffset)) {
|
||||
console.error(
|
||||
'generated mapping at %s not offset properly:\ninput: [%s]\noutput:[%s]\n\n',
|
||||
i ,
|
||||
inspect(fooGen),
|
||||
inspect(gen)
|
||||
);
|
||||
genLinesOffset = false;
|
||||
}
|
||||
|
||||
if (orig.column !== fooOrig.column || orig.line !== fooOrig.line) {
|
||||
console.error(
|
||||
'original mapping at %s is not the same as the genrated mapping:\ninput: [%s]\noutput:[%s]\n\n',
|
||||
i ,
|
||||
inspect(fooOrig),
|
||||
inspect(orig)
|
||||
);
|
||||
origLinesSame = false;
|
||||
}
|
||||
}
|
||||
return { genLinesOffset: genLinesOffset, origLinesSame: origLinesSame };
|
||||
}
|
||||
|
||||
var foo = {
|
||||
version : 3,
|
||||
file : 'foo.js',
|
||||
sourceRoot : '',
|
||||
sources : [ 'foo.coffee' ],
|
||||
names : [],
|
||||
mappings : ';AAAA;CAAA;CAAA,CAAA,CAAA,IAAO,GAAK;CAAZ',
|
||||
sourcesContent : [ 'console.log(require \'./bar.js\')\n' ] };
|
||||
|
||||
test('add one file with inlined source', function (t) {
|
||||
|
||||
var mapComment = convert.fromObject(foo).toComment();
|
||||
var file = {
|
||||
id: 'xyz'
|
||||
, source: '(function() {\n\n console.log(require(\'./bar.js\'));\n\n}).call(this);\n' + '\n' + mapComment
|
||||
, sourceFile: 'foo.js'
|
||||
};
|
||||
|
||||
var lineOffset = 3
|
||||
var base64 = combine.create()
|
||||
.addFile(file, { line: lineOffset })
|
||||
.base64()
|
||||
|
||||
var sm = convert.fromBase64(base64).toObject();
|
||||
var res = checkMappings(foo, sm, lineOffset);
|
||||
|
||||
t.ok(res.genLinesOffset, 'all generated lines are offset properly and columns unchanged')
|
||||
t.ok(res.origLinesSame, 'all original lines and columns are unchanged')
|
||||
t.deepEqual(sm.sourcesContent, foo.sourcesContent, 'includes the original source')
|
||||
t.deepEqual(sm.sources, ['foo.coffee'], 'includes original filename')
|
||||
t.end()
|
||||
});
|
||||
|
||||
|
||||
test('add one file without inlined source', function (t) {
|
||||
|
||||
var mapComment = convert
|
||||
.fromObject(foo)
|
||||
.setProperty('sourcesContent', [])
|
||||
.toComment();
|
||||
|
||||
var file = {
|
||||
id: 'xyz'
|
||||
, source: '(function() {\n\n console.log(require(\'./bar.js\'));\n\n}).call(this);\n' + '\n' + mapComment
|
||||
, sourceFile: 'foo.js'
|
||||
};
|
||||
|
||||
var lineOffset = 3
|
||||
var base64 = combine.create()
|
||||
.addFile(file, { line: lineOffset })
|
||||
.base64()
|
||||
|
||||
var sm = convert.fromBase64(base64).toObject();
|
||||
var mappings = mappingsFromMap(sm);
|
||||
|
||||
t.deepEqual(sm.sourcesContent, [file.source], 'includes the generated source')
|
||||
t.deepEqual(sm.sources, ['foo.js'], 'includes generated filename')
|
||||
|
||||
t.deepEqual(
|
||||
mappings
|
||||
, [ { generated: { line: 4, column: 0 },
|
||||
original: { line: 1, column: 0 },
|
||||
source: 'foo.js', name: null },
|
||||
{ generated: { line: 5, column: 0 },
|
||||
original: { line: 2, column: 0 },
|
||||
source: 'foo.js', name: null },
|
||||
{ generated: { line: 6, column: 0 },
|
||||
original: { line: 3, column: 0 },
|
||||
source: 'foo.js', name: null },
|
||||
{ generated: { line: 7, column: 0 },
|
||||
original: { line: 4, column: 0 },
|
||||
source: 'foo.js', name: null },
|
||||
{ generated: { line: 8, column: 0 },
|
||||
original: { line: 5, column: 0 },
|
||||
source: 'foo.js', name: null },
|
||||
{ generated: { line: 9, column: 0 },
|
||||
original: { line: 6, column: 0 },
|
||||
source: 'foo.js', name: null },
|
||||
{ generated: { line: 10, column: 0 },
|
||||
original: { line: 7, column: 0 },
|
||||
source: 'foo.js', name: null } ]
|
||||
, 'generates mappings offset by the given line'
|
||||
)
|
||||
t.end()
|
||||
})
|
||||
|
||||
test('add one file with inlined sources from multiple files', function(t) {
|
||||
var gen1Map = {
|
||||
version: 3,
|
||||
sources: [ 'one.js', 'two.js' ],
|
||||
names: [],
|
||||
mappings: 'AAAA;ACAA',
|
||||
sourcesContent: [ 'console.log(1);', 'console.log(2);' ]
|
||||
};
|
||||
|
||||
var gen2Map = {
|
||||
version: 3,
|
||||
sources: [ 'three.js', 'four.js' ],
|
||||
names: [],
|
||||
mappings: 'AAAA;ACAA',
|
||||
sourcesContent: [ 'console.log(3);', 'console.log(4);' ]
|
||||
};
|
||||
|
||||
var base64 = combine.create()
|
||||
.addFile({
|
||||
source: 'console.log(1);\nconsole.log(2);\n' + convert.fromObject(gen1Map).toComment(),
|
||||
sourceFile: 'gen1.js'
|
||||
})
|
||||
.addFile({
|
||||
source: 'console.log(3);\nconsole.log(4);\n' + convert.fromObject(gen2Map).toComment(),
|
||||
sourceFile: 'gen2.js'
|
||||
}, {line: 2})
|
||||
.base64()
|
||||
|
||||
var sm = convert.fromBase64(base64).toObject();
|
||||
|
||||
|
||||
t.deepEqual(sm.sources, ['one.js', 'two.js', 'three.js', 'four.js'], 'include the correct source');
|
||||
|
||||
t.deepEqual(sm.sourcesContent, [
|
||||
'console.log(1);',
|
||||
'console.log(2);',
|
||||
'console.log(3);',
|
||||
'console.log(4);'
|
||||
], 'include the correct source file content');
|
||||
|
||||
t.deepEqual(
|
||||
mappingsFromMap(sm)
|
||||
, [ { original: { column: 0, line: 1 },
|
||||
generated: { column: 0, line: 1 },
|
||||
source: 'one.js',
|
||||
name: null },
|
||||
{ original: { column: 0, line: 1 },
|
||||
generated: { column: 0, line: 2 },
|
||||
source: 'two.js',
|
||||
name: null },
|
||||
{ original: { column: 0, line: 1 },
|
||||
generated: { column: 0, line: 3 },
|
||||
source: 'three.js',
|
||||
name: null },
|
||||
{ original: { column: 0, line: 1 },
|
||||
generated: { column: 0, line: 4 },
|
||||
source: 'four.js',
|
||||
name: null } ], 'should properly map multiple files');
|
||||
t.end()
|
||||
});
|
||||
|
||||
test('relative path from multiple files', function(t) {
|
||||
// Folder structure as follows:
|
||||
//
|
||||
// project
|
||||
// +- src
|
||||
// +- package1
|
||||
// +- sub
|
||||
// -- one.js
|
||||
// -- two.js
|
||||
// +- package2
|
||||
// +- sub
|
||||
// -- three.js
|
||||
// -- four.js
|
||||
// +- gen
|
||||
// +- gen1.js
|
||||
// +- gen2.js
|
||||
// -- combined.js
|
||||
//
|
||||
// Where 'one.js', 'two.js' were combined to 'gen1.js'
|
||||
// and 'three.js', 'four.js' were combined to 'gen2.js'.
|
||||
// Now 'gen1.js' and 'gen2.js' are being combined from
|
||||
// the project root folder.
|
||||
var gen1Map = {
|
||||
version: 3,
|
||||
sources: [ 'sub/one.js', 'sub/two.js' ],
|
||||
names: [],
|
||||
mappings: 'AAAA;ACAA',
|
||||
sourcesContent: [ 'console.log(1);', 'console.log(2);' ],
|
||||
sourceRoot: '../src/package1'
|
||||
};
|
||||
|
||||
var gen2Map = {
|
||||
version: 3,
|
||||
sources: [ 'sub/three.js', 'sub/four.js' ],
|
||||
names: [],
|
||||
mappings: 'AAAA;ACAA',
|
||||
sourcesContent: [ 'console.log(3);', 'console.log(4);' ],
|
||||
sourceRoot: '../src/package2'
|
||||
};
|
||||
|
||||
var base64 = combine.create()
|
||||
.addFile({
|
||||
source: 'console.log(1);\nconsole.log(2);\n' + convert.fromObject(gen1Map).toComment(),
|
||||
sourceFile: 'gen/gen1.js'
|
||||
})
|
||||
.addFile({
|
||||
source: 'console.log(3);\nconsole.log(4);\n' + convert.fromObject(gen2Map).toComment(),
|
||||
sourceFile: 'gen/gen2.js'
|
||||
}, {line: 2})
|
||||
.base64()
|
||||
|
||||
var sm = convert.fromBase64(base64).toObject();
|
||||
|
||||
t.deepEqual(sm.sources, ['src/package1/sub/one.js', 'src/package1/sub/two.js',
|
||||
'src/package2/sub/three.js', 'src/package2/sub/four.js'],
|
||||
'include the correct source');
|
||||
|
||||
t.deepEqual(sm.sourcesContent, [
|
||||
'console.log(1);',
|
||||
'console.log(2);',
|
||||
'console.log(3);',
|
||||
'console.log(4);'
|
||||
], 'include the correct source file content');
|
||||
|
||||
t.deepEqual(
|
||||
mappingsFromMap(sm)
|
||||
, [ { original: { column: 0, line: 1 },
|
||||
generated: { column: 0, line: 1 },
|
||||
source: 'src/package1/sub/one.js',
|
||||
name: null },
|
||||
{ original: { column: 0, line: 1 },
|
||||
generated: { column: 0, line: 2 },
|
||||
source: 'src/package1/sub/two.js',
|
||||
name: null },
|
||||
{ original: { column: 0, line: 1 },
|
||||
generated: { column: 0, line: 3 },
|
||||
source: 'src/package2/sub/three.js',
|
||||
name: null },
|
||||
{ original: { column: 0, line: 1 },
|
||||
generated: { column: 0, line: 4 },
|
||||
source: 'src/package2/sub/four.js',
|
||||
name: null } ], 'should properly map multiple files');
|
||||
t.end()
|
||||
});
|
||||
|
||||
test('relative path when source and file name are the same', function(t) {
|
||||
var gen1Map = {
|
||||
version: 3,
|
||||
sources: [ 'a/b/one.js' ],
|
||||
names: [],
|
||||
mappings: 'AAAA',
|
||||
file: 'a/b/one.js',
|
||||
sourcesContent: [ 'console.log(1);\n' ]
|
||||
};
|
||||
|
||||
var gen2Map = {
|
||||
version: 3,
|
||||
sources: [ 'a/b/two.js' ],
|
||||
names: [],
|
||||
mappings: 'AAAA',
|
||||
file: 'a/b/two.js',
|
||||
sourcesContent: [ 'console.log(2);\n' ]
|
||||
};
|
||||
|
||||
var base64 = combine.create()
|
||||
.addFile({
|
||||
source: 'console.log(1);\n' + convert.fromObject(gen1Map).toComment(),
|
||||
sourceFile: 'a/b/one.js'
|
||||
})
|
||||
.addFile({
|
||||
source: 'console.log(2);\n' + convert.fromObject(gen2Map).toComment(),
|
||||
sourceFile: 'a/b/two.js'
|
||||
}, {line: 1})
|
||||
.base64()
|
||||
|
||||
var sm = convert.fromBase64(base64).toObject();
|
||||
|
||||
t.deepEqual(sm.sources, ['a/b/one.js', 'a/b/two.js'],
|
||||
'include the correct source');
|
||||
|
||||
t.deepEqual(
|
||||
mappingsFromMap(sm)
|
||||
, [ { original: { column: 0, line: 1 },
|
||||
generated: { column: 0, line: 1 },
|
||||
source: 'a/b/one.js',
|
||||
name: null },
|
||||
{ original: { column: 0, line: 1 },
|
||||
generated: { column: 0, line: 2 },
|
||||
source: 'a/b/two.js',
|
||||
name: null } ], 'should properly map multiple files');
|
||||
t.end()
|
||||
});
|
||||
|
||||
test('remove comments', function (t) {
|
||||
var mapComment = convert.fromObject(foo).toComment();
|
||||
|
||||
function sourcemapComments(src) {
|
||||
var matches = src.match(commentRegex);
|
||||
return matches ? matches.length : 0;
|
||||
}
|
||||
|
||||
t.equal(sourcemapComments('var a = 1;\n' + mapComment), 1);
|
||||
|
||||
[ ''
|
||||
, 'var a = 1;\n' + mapComment
|
||||
, 'var a = 1;\n' + mapComment + '\nvar b = 5;\n' + mapComment
|
||||
] .forEach(function (x) {
|
||||
var removed = combine.removeComments(x)
|
||||
t.equal(sourcemapComments(removed), 0)
|
||||
})
|
||||
t.end()
|
||||
})
|
Reference in New Issue
Block a user