Merge pull request #8368 from yurydelendik/sourcemap

Enables source maps for webpack generated files.
This commit is contained in:
Yury Delendik 2017-05-05 09:32:27 -05:00 committed by GitHub
commit deae2d8cb8
7 changed files with 84 additions and 63 deletions

View File

@ -1,28 +1,17 @@
function f1() {
/* head */
"1";
/* mid */
"2";
}
/* tail */
function f2() {
// head
"1";
// mid
"2";
}
// tail
function f2() {
if ("1") {
// begin block
"1";
}
"2";
// trailing
if (/* s */
"3")
/*e*/
{
"4";
}
if ("3") {
"4";
}
}

View File

@ -347,28 +347,23 @@ function traverseTree(ctx, node) {
}
function preprocessPDFJSCode(ctx, code) {
var saveComments = !!ctx.saveComments;
var format = ctx.format || {
indent: {
style: ' ',
adjustMultilineComment: saveComments,
}
};
var comments;
var parseComment = {
var parseOptions = {
locations: true,
onComments: saveComments || (comments = []),
sourceFile: ctx.sourceFile,
sourceType: 'module',
};
var codegenOptions = {
format: format,
comment: saveComments,
parse: acorn.parse,
sourceMap: ctx.sourceMap,
sourceMapWithCode: ctx.sourceMap,
};
var syntax = acorn.parse(code, parseComment);
if (saveComments) {
escodegen.attachComments(syntax, comments);
}
var syntax = acorn.parse(code, parseOptions);
traverseTree(ctx, syntax);
return escodegen.generate(syntax, codegenOptions);
}

View File

@ -1,17 +1,20 @@
'use strict';
require('shelljs/make');
var builder = require('./builder');
var fs = require('fs');
var path = require('path');
var errors = 0;
cd(__dirname);
cd('fixtures');
ls('*-expected.*').forEach(function(expectationFilename) {
var baseDir = path.join(__dirname, 'fixtures');
var files = fs.readdirSync(baseDir).filter(function (name) {
return /-expected\./.test(name);
}).map(function (name) {
return path.join(baseDir, name);
});
files.forEach(function(expectationFilename) {
var inFilename = expectationFilename.replace('-expected', '');
var expectation = cat(expectationFilename).trim()
var expectation = fs.readFileSync(expectationFilename).toString().trim()
.replace(/__filename/g, fs.realpathSync(inFilename));
var outLines = [];
@ -32,20 +35,22 @@ ls('*-expected.*').forEach(function(expectationFilename) {
if (out !== expectation) {
errors++;
echo('Assertion failed for ' + inFilename);
echo('--------------------------------------------------');
echo('EXPECTED:');
echo(expectation);
echo('--------------------------------------------------');
echo('ACTUAL');
echo(out);
echo('--------------------------------------------------');
echo();
console.log('Assertion failed for ' + inFilename);
console.log('--------------------------------------------------');
console.log('EXPECTED:');
console.log(expectation);
console.log('--------------------------------------------------');
console.log('ACTUAL');
console.log(out);
console.log('--------------------------------------------------');
console.log();
}
});
if (errors) {
echo('Found ' + errors + ' expectation failures.');
console.error('Found ' + errors + ' expectation failures.');
process.exit(1);
} else {
echo('All tests completed without errors.');
console.log('All tests completed without errors.');
process.exit(0);
}

View File

@ -1,17 +1,20 @@
'use strict';
require('shelljs/make');
var p2 = require('./preprocessor2.js');
var fs = require('fs');
var path = require('path');
var errors = 0;
cd(__dirname);
cd('fixtures_esprima');
ls('*-expected.*').forEach(function(expectationFilename) {
var baseDir = path.join(__dirname, 'fixtures_esprima');
var files = fs.readdirSync(baseDir).filter(function (name) {
return /-expected\./.test(name);
}).map(function (name) {
return path.join(baseDir, name);
});
files.forEach(function(expectationFilename) {
var inFilename = expectationFilename.replace('-expected', '');
var expectation = cat(expectationFilename).trim()
var expectation = fs.readFileSync(expectationFilename).toString().trim()
.replace(/__filename/g, fs.realpathSync(inFilename));
var input = fs.readFileSync(inFilename).toString();
@ -24,7 +27,6 @@ ls('*-expected.*').forEach(function(expectationFilename) {
var ctx = {
defines: defines,
rootPath: __dirname + '/../..',
saveComments: true
};
var out;
try {
@ -35,20 +37,22 @@ ls('*-expected.*').forEach(function(expectationFilename) {
if (out !== expectation) {
errors++;
echo('Assertion failed for ' + inFilename);
echo('--------------------------------------------------');
echo('EXPECTED:');
echo(expectation);
echo('--------------------------------------------------');
echo('ACTUAL');
echo(out);
echo('--------------------------------------------------');
echo();
console.log('Assertion failed for ' + inFilename);
console.log('--------------------------------------------------');
console.log('EXPECTED:');
console.log(expectation);
console.log('--------------------------------------------------');
console.log('ACTUAL');
console.log(out);
console.log('--------------------------------------------------');
console.log();
}
});
if (errors) {
echo('Found ' + errors + ' expectation failures.');
console.error('Found ' + errors + ' expectation failures.');
process.exit(1);
} else {
echo('All tests completed without errors.');
console.log('All tests completed without errors.');
process.exit(0);
}

View File

@ -17,6 +17,7 @@
'use strict';
var preprocessor2 = require('../builder/preprocessor2.js');
var path = require('path');
module.exports = function (source) {
// Options must be specified, ignoring request if not.
@ -24,7 +25,19 @@ module.exports = function (source) {
return source;
}
this.cacheable();
var ctx = this.query;
source = preprocessor2.preprocessPDFJSCode(ctx, source);
return source;
var filePath = this.resourcePath;
var context = this.options.context;
var sourcePath = path.relative(context, filePath).split(path.sep).join('/');
var ctx = Object.create(this.query);
ctx.sourceMap = true;
ctx.sourceFile = sourcePath;
var callback = this.callback;
var sourceAndMap = preprocessor2.preprocessPDFJSCode(ctx, source);
var map = sourceAndMap.map.toJSON();
// escodegen does not embed source -- setting map's sourcesContent.
map.sourcesContent = [source];
callback(null, sourceAndMap.code, map);
};

View File

@ -129,6 +129,8 @@ function createWebpackConfig(defines, output) {
BUNDLE_BUILD: versionInfo.commit
});
var licenseHeader = fs.readFileSync('./src/license_header.js').toString();
var enableSourceMaps = !bundleDefines.FIREFOX && !bundleDefines.MOZCENTRAL &&
!bundleDefines.CHROME;
return {
output: output,
@ -142,6 +144,7 @@ function createWebpackConfig(defines, output) {
'pdfjs-web': path.join(__dirname, 'web'),
}
},
devtool: enableSourceMaps ? 'source-map' : undefined,
module: {
loaders: [
{
@ -1329,8 +1332,11 @@ gulp.task('dist-repo-prepare', ['dist-pre'], function () {
.pipe(gulp.dest(DIST_DIR)),
gulp.src([
GENERIC_DIR + 'build/pdf.js',
GENERIC_DIR + 'build/pdf.js.map',
GENERIC_DIR + 'build/pdf.worker.js',
GENERIC_DIR + 'build/pdf.worker.js.map',
SINGLE_FILE_DIR + 'build/pdf.combined.js',
SINGLE_FILE_DIR + 'build/pdf.combined.js.map',
SRC_DIR + 'pdf.worker.entry.js',
]).pipe(gulp.dest(DIST_DIR + 'build/')),
gulp.src(MINIFIED_DIR + 'build/pdf.js')
@ -1424,3 +1430,12 @@ gulp.task('mozcentraldiff', ['mozcentral', 'mozcentralbaseline'],
});
});
});
gulp.task('externaltest', function () {
gutil.log('Running test-fixtures.js');
safeSpawnSync('node', ['external/builder/test-fixtures.js'],
{stdio: 'inherit'});
gutil.log('Running test-fixtures_esprima.js');
safeSpawnSync('node', ['external/builder/test-fixtures_esprima.js'],
{stdio: 'inherit'});
});

View File

@ -35,7 +35,7 @@
"yargs": "^3.14.0"
},
"scripts": {
"test": "gulp lint unittestcli"
"test": "gulp lint unittestcli externaltest"
},
"repository": {
"type": "git",