mirror of https://github.com/webpack/webpack.git
compilation error don't affect parent module
recover after syntax error assume es6 module on syntax error #2117
This commit is contained in:
parent
bd35d4f65d
commit
1ee3585fa1
|
@ -112,8 +112,9 @@ Compilation.prototype.findModule = function(identifier) {
|
||||||
return this._modules[identifier];
|
return this._modules[identifier];
|
||||||
};
|
};
|
||||||
|
|
||||||
Compilation.prototype.buildModule = function(module, thisCallback) {
|
Compilation.prototype.buildModule = function(module, optional, origin, dependencies, thisCallback) {
|
||||||
this.applyPlugins("build-module", module);
|
var _this = this;
|
||||||
|
_this.applyPlugins("build-module", module);
|
||||||
if(module.building) return module.building.push(thisCallback);
|
if(module.building) return module.building.push(thisCallback);
|
||||||
var building = module.building = [thisCallback];
|
var building = module.building = [thisCallback];
|
||||||
|
|
||||||
|
@ -123,22 +124,28 @@ Compilation.prototype.buildModule = function(module, thisCallback) {
|
||||||
cb(err);
|
cb(err);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
module.build(this.options, this, this.resolvers.normal, this.inputFileSystem, function(err) {
|
module.build(_this.options, this, _this.resolvers.normal, _this.inputFileSystem, function(err) {
|
||||||
module.errors.forEach(function(err) {
|
module.errors.forEach(function(err) {
|
||||||
this.errors.push(err);
|
err.origin = origin;
|
||||||
|
err.dependencies = dependencies;
|
||||||
|
if(optional)
|
||||||
|
_this.warnings.push(err);
|
||||||
|
else
|
||||||
|
_this.errors.push(err);
|
||||||
}, this);
|
}, this);
|
||||||
module.warnings.forEach(function(err) {
|
module.warnings.forEach(function(err) {
|
||||||
this.warnings.push(err);
|
err.origin = origin;
|
||||||
|
err.dependencies = dependencies;
|
||||||
|
_this.warnings.push(err);
|
||||||
}, this);
|
}, this);
|
||||||
module.dependencies.sort(Dependency.compare);
|
module.dependencies.sort(Dependency.compare);
|
||||||
if(err) {
|
if(err) {
|
||||||
module.error = err;
|
_this.applyPlugins("failed-module", module, err);
|
||||||
this.applyPlugins("failed-module", module);
|
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
this.applyPlugins("succeed-module", module);
|
_this.applyPlugins("succeed-module", module);
|
||||||
return callback();
|
return callback();
|
||||||
}.bind(this));
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Compilation.prototype.processModuleDependencies = function(module, callback) {
|
Compilation.prototype.processModuleDependencies = function(module, callback) {
|
||||||
|
@ -186,9 +193,7 @@ Compilation.prototype.addModuleDependencies = function(module, dependencies, bai
|
||||||
var dependencies = item[1];
|
var dependencies = item[1];
|
||||||
|
|
||||||
var errorAndCallback = function errorAndCallback(err) {
|
var errorAndCallback = function errorAndCallback(err) {
|
||||||
err.dependencies = dependencies;
|
|
||||||
err.origin = module;
|
err.origin = module;
|
||||||
module.dependenciesErrors.push(err);
|
|
||||||
_this.errors.push(err);
|
_this.errors.push(err);
|
||||||
if(bail) {
|
if(bail) {
|
||||||
callback(err);
|
callback(err);
|
||||||
|
@ -197,9 +202,7 @@ Compilation.prototype.addModuleDependencies = function(module, dependencies, bai
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var warningAndCallback = function warningAndCallback(err) {
|
var warningAndCallback = function warningAndCallback(err) {
|
||||||
err.dependencies = dependencies;
|
|
||||||
err.origin = module;
|
err.origin = module;
|
||||||
module.dependenciesWarnings.push(err);
|
|
||||||
_this.warnings.push(err);
|
_this.warnings.push(err);
|
||||||
callback();
|
callback();
|
||||||
};
|
};
|
||||||
|
@ -220,7 +223,7 @@ Compilation.prototype.addModuleDependencies = function(module, dependencies, bai
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(err) {
|
if(err) {
|
||||||
return errorOrWarningAndCallback(new ModuleNotFoundError(module, err));
|
return errorOrWarningAndCallback(new ModuleNotFoundError(module, err, dependencies));
|
||||||
}
|
}
|
||||||
if(!dependentModule) {
|
if(!dependentModule) {
|
||||||
return process.nextTick(callback);
|
return process.nextTick(callback);
|
||||||
|
@ -233,7 +236,7 @@ Compilation.prototype.addModuleDependencies = function(module, dependencies, bai
|
||||||
dependentModule.profile.factory = afterFactory - start;
|
dependentModule.profile.factory = afterFactory - start;
|
||||||
}
|
}
|
||||||
|
|
||||||
dependentModule.issuer = module.identifier();
|
dependentModule.issuer = module;
|
||||||
var newModule = _this.addModule(dependentModule, cacheGroup);
|
var newModule = _this.addModule(dependentModule, cacheGroup);
|
||||||
|
|
||||||
if(!newModule) { // from cache
|
if(!newModule) { // from cache
|
||||||
|
@ -294,7 +297,7 @@ Compilation.prototype.addModuleDependencies = function(module, dependencies, bai
|
||||||
dependentModule.addReason(module, dep);
|
dependentModule.addReason(module, dep);
|
||||||
});
|
});
|
||||||
|
|
||||||
_this.buildModule(dependentModule, function(err) {
|
_this.buildModule(dependentModule, isOptional(), module, dependencies, function(err) {
|
||||||
if(err) {
|
if(err) {
|
||||||
return errorOrWarningAndCallback(err);
|
return errorOrWarningAndCallback(err);
|
||||||
}
|
}
|
||||||
|
@ -383,7 +386,7 @@ Compilation.prototype._addModuleChain = function process(context, dependency, on
|
||||||
|
|
||||||
onModule(module);
|
onModule(module);
|
||||||
|
|
||||||
this.buildModule(module, function(err) {
|
this.buildModule(module, false, null, null, function(err) {
|
||||||
if(err) {
|
if(err) {
|
||||||
return errorAndCallback(err);
|
return errorAndCallback(err);
|
||||||
}
|
}
|
||||||
|
@ -455,7 +458,7 @@ Compilation.prototype.rebuildModule = function(module, thisCallback) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
var deps = module.dependencies.slice();
|
var deps = module.dependencies.slice();
|
||||||
this.buildModule(module, function(err) {
|
this.buildModule(module, false, module, null, function(err) {
|
||||||
if(err) return callback(err);
|
if(err) return callback(err);
|
||||||
|
|
||||||
this.processModuleDependencies(module, function(err) {
|
this.processModuleDependencies(module, function(err) {
|
||||||
|
@ -658,10 +661,6 @@ Compilation.prototype.processDependenciesBlockForChunk = function processDepende
|
||||||
if(d.weak) {
|
if(d.weak) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(d.module.error) {
|
|
||||||
d.module = null;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(chunk.addModule(d.module)) {
|
if(chunk.addModule(d.module)) {
|
||||||
d.module.addChunk(chunk);
|
d.module.addChunk(chunk);
|
||||||
this.processDependenciesBlockForChunk(d.module, chunk);
|
this.processDependenciesBlockForChunk(d.module, chunk);
|
||||||
|
|
|
@ -26,6 +26,7 @@ function Module() {
|
||||||
this.errors = [];
|
this.errors = [];
|
||||||
this.dependenciesErrors = [];
|
this.dependenciesErrors = [];
|
||||||
this.strict = false;
|
this.strict = false;
|
||||||
|
this.meta = {};
|
||||||
}
|
}
|
||||||
module.exports = Module;
|
module.exports = Module;
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
MIT License http://www.opensource.org/licenses/mit-license.php
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
||||||
Author Tobias Koppers @sokra
|
Author Tobias Koppers @sokra
|
||||||
*/
|
*/
|
||||||
function ModuleNotFoundError(module, err) {
|
function ModuleNotFoundError(module, err, dependencies) {
|
||||||
Error.call(this);
|
Error.call(this);
|
||||||
Error.captureStackTrace(this, ModuleNotFoundError);
|
Error.captureStackTrace(this, ModuleNotFoundError);
|
||||||
this.name = "ModuleNotFoundError";
|
this.name = "ModuleNotFoundError";
|
||||||
|
@ -10,6 +10,8 @@ function ModuleNotFoundError(module, err) {
|
||||||
this.details = err.details;
|
this.details = err.details;
|
||||||
this.missing = err.missing;
|
this.missing = err.missing;
|
||||||
this.module = module;
|
this.module = module;
|
||||||
|
this.origin = module;
|
||||||
|
this.dependencies = dependencies;
|
||||||
this.error = err;
|
this.error = err;
|
||||||
}
|
}
|
||||||
module.exports = ModuleNotFoundError;
|
module.exports = ModuleNotFoundError;
|
||||||
|
|
|
@ -43,7 +43,6 @@ function NormalModule(request, userRequest, rawRequest, loaders, resource, parse
|
||||||
this.errors = [];
|
this.errors = [];
|
||||||
this.error = null;
|
this.error = null;
|
||||||
this._source = null;
|
this._source = null;
|
||||||
this.meta = {};
|
|
||||||
this.assets = {};
|
this.assets = {};
|
||||||
this.built = false;
|
this.built = false;
|
||||||
this._cachedSource = null;
|
this._cachedSource = null;
|
||||||
|
@ -135,8 +134,7 @@ NormalModule.prototype.doBuild = function doBuild(options, compilation, resolver
|
||||||
module.contextDependencies = result.contextDependencies;
|
module.contextDependencies = result.contextDependencies;
|
||||||
}
|
}
|
||||||
if(err) {
|
if(err) {
|
||||||
module.error = err;
|
return callback(module.error = new ModuleBuildError(module, err));
|
||||||
return callback(new ModuleBuildError(module, err));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var resourceBuffer = result.resourceBuffer;
|
var resourceBuffer = result.resourceBuffer;
|
||||||
|
@ -144,8 +142,7 @@ NormalModule.prototype.doBuild = function doBuild(options, compilation, resolver
|
||||||
var sourceMap = result.result[1];
|
var sourceMap = result.result[1];
|
||||||
|
|
||||||
if(!Buffer.isBuffer(source) && typeof source !== "string") {
|
if(!Buffer.isBuffer(source) && typeof source !== "string") {
|
||||||
module.error = new Error("Final loader didn't return a Buffer or String");
|
return callback(module.error = new ModuleBuildError(module, new Error("Final loader didn't return a Buffer or String")));
|
||||||
return callback(new ModuleBuildError(module, module.error));
|
|
||||||
}
|
}
|
||||||
source = asString(source);
|
source = asString(source);
|
||||||
if(module.identifier && module.lineToLine && resourceBuffer) {
|
if(module.identifier && module.lineToLine && resourceBuffer) {
|
||||||
|
@ -168,41 +165,54 @@ NormalModule.prototype.disconnect = function disconnect() {
|
||||||
};
|
};
|
||||||
|
|
||||||
NormalModule.prototype.build = function build(options, compilation, resolver, fs, callback) {
|
NormalModule.prototype.build = function build(options, compilation, resolver, fs, callback) {
|
||||||
this.buildTimestamp = new Date().getTime();
|
var _this = this;
|
||||||
this.built = true;
|
_this.buildTimestamp = new Date().getTime();
|
||||||
return this.doBuild(options, compilation, resolver, fs, function(err) {
|
_this.built = true;
|
||||||
if(err) return callback(err);
|
_this._source = null;
|
||||||
this.dependencies.length = 0;
|
_this.error = null;
|
||||||
this.variables.length = 0;
|
return _this.doBuild(options, compilation, resolver, fs, function(err) {
|
||||||
this.blocks.length = 0;
|
_this.dependencies.length = 0;
|
||||||
this._cachedSource = null;
|
_this.variables.length = 0;
|
||||||
|
_this.blocks.length = 0;
|
||||||
|
_this._cachedSource = null;
|
||||||
|
if(err) return setError(err);
|
||||||
if(options.module && options.module.noParse) {
|
if(options.module && options.module.noParse) {
|
||||||
function testRegExp(regExp) {
|
function testRegExp(regExp) {
|
||||||
return typeof regExp === "string" ?
|
return typeof regExp === "string" ?
|
||||||
this.request.indexOf(regExp) === 0 :
|
_this.request.indexOf(regExp) === 0 :
|
||||||
regExp.test(this.request);
|
regExp.test(_this.request);
|
||||||
}
|
}
|
||||||
if(Array.isArray(options.module.noParse)) {
|
if(Array.isArray(options.module.noParse)) {
|
||||||
if(options.module.noParse.some(testRegExp, this))
|
if(options.module.noParse.some(testRegExp, _this))
|
||||||
return callback();
|
return callback();
|
||||||
} else if(testRegExp.call(this, options.module.noParse)) {
|
} else if(testRegExp.call(_this, options.module.noParse)) {
|
||||||
return callback();
|
return callback();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
this.parser.parse(this._source.source(), {
|
_this.parser.parse(_this._source.source(), {
|
||||||
current: this,
|
current: _this,
|
||||||
module: this,
|
module: _this,
|
||||||
compilation: compilation,
|
compilation: compilation,
|
||||||
options: options
|
options: options
|
||||||
});
|
});
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
var source = this._source.source();
|
var source = _this._source.source();
|
||||||
this._source = null;
|
return setError(_this.error = new ModuleParseError(_this, source, e));
|
||||||
return callback(new ModuleParseError(this, source, e));
|
|
||||||
}
|
}
|
||||||
return callback();
|
return callback();
|
||||||
}.bind(this));
|
});
|
||||||
|
|
||||||
|
function setError(err) {
|
||||||
|
_this.meta = null;
|
||||||
|
if(_this.error) {
|
||||||
|
_this.errors.push(_this.error);
|
||||||
|
_this._source = new RawSource("throw new Error(" + JSON.stringify(_this.error.message) + ");");
|
||||||
|
} else {
|
||||||
|
_this._source = new RawSource("throw new Error('Module build failed');");
|
||||||
|
}
|
||||||
|
callback();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
NormalModule.prototype.source = function(dependencyTemplates, outputOptions, requestShortener) {
|
NormalModule.prototype.source = function(dependencyTemplates, outputOptions, requestShortener) {
|
||||||
|
|
21
lib/Stats.js
21
lib/Stats.js
|
@ -116,6 +116,11 @@ Stats.prototype.toJson = function toJson(options, forToString) {
|
||||||
text += " " + dep.loc.start.line + ":" + dep.loc.start.column + "-" +
|
text += " " + dep.loc.start.line + ":" + dep.loc.start.column + "-" +
|
||||||
(dep.loc.start.line !== dep.loc.end.line ? dep.loc.end.line + ":" : "") + dep.loc.end.column;
|
(dep.loc.start.line !== dep.loc.end.line ? dep.loc.end.line + ":" : "") + dep.loc.end.column;
|
||||||
});
|
});
|
||||||
|
var current = e.origin;
|
||||||
|
while(current.issuer) {
|
||||||
|
current = current.issuer;
|
||||||
|
text += "\n @ " + current.readableIdentifier(requestShortener);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
@ -203,7 +208,9 @@ Stats.prototype.toJson = function toJson(options, forToString) {
|
||||||
return chunk.id;
|
return chunk.id;
|
||||||
}),
|
}),
|
||||||
assets: Object.keys(module.assets || {}),
|
assets: Object.keys(module.assets || {}),
|
||||||
issuer: module.issuer,
|
issuer: module.issuer && module.issuer.identifier(),
|
||||||
|
issuerId: module.issuer && module.issuer.id,
|
||||||
|
issuerName: module.issuer && module.issuer.readableIdentifier(requestShortener),
|
||||||
profile: module.profile,
|
profile: module.profile,
|
||||||
failed: !!module.error,
|
failed: !!module.error,
|
||||||
errors: module.errors && module.dependenciesErrors && (module.errors.length + module.dependenciesErrors.length),
|
errors: module.errors && module.dependenciesErrors && (module.errors.length + module.dependenciesErrors.length),
|
||||||
|
@ -465,17 +472,11 @@ Stats.jsonToString = function jsonToString(obj, useColors) {
|
||||||
function processProfile(module) {
|
function processProfile(module) {
|
||||||
if(module.profile) {
|
if(module.profile) {
|
||||||
colors.normal(" ");
|
colors.normal(" ");
|
||||||
var sum = 0,
|
var sum = 0;
|
||||||
allowSum = true;
|
|
||||||
var path = [];
|
var path = [];
|
||||||
var current = module;
|
var current = module;
|
||||||
while(current.issuer) {
|
while(current.issuer) {
|
||||||
if(!modulesByIdentifier["$" + current.issuer]) {
|
path.unshift(current = current.issuer);
|
||||||
colors.normal(" ... ->");
|
|
||||||
allowSum = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
path.unshift(current = modulesByIdentifier["$" + current.issuer]);
|
|
||||||
}
|
}
|
||||||
path.forEach(function(module) {
|
path.forEach(function(module) {
|
||||||
colors.normal(" [");
|
colors.normal(" [");
|
||||||
|
@ -495,10 +496,8 @@ Stats.jsonToString = function jsonToString(obj, useColors) {
|
||||||
coloredTime(time);
|
coloredTime(time);
|
||||||
sum += time;
|
sum += time;
|
||||||
});
|
});
|
||||||
if(allowSum) {
|
|
||||||
colors.normal(" = ");
|
colors.normal(" = ");
|
||||||
coloredTime(sum);
|
coloredTime(sum);
|
||||||
}
|
|
||||||
newline();
|
newline();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,7 +63,7 @@ HarmonyExportImportedSpecifierDependency.Template.prototype.apply = function(dep
|
||||||
content = "/* unused harmony reexport " + dep.name + " */\n";
|
content = "/* unused harmony reexport " + dep.name + " */\n";
|
||||||
} else if(!active) { // we want to reexport something but another exports overrides this one
|
} else if(!active) { // we want to reexport something but another exports overrides this one
|
||||||
content = "/* inactive harmony reexport " + (dep.name || "namespace") + " */\n";
|
content = "/* inactive harmony reexport " + (dep.name || "namespace") + " */\n";
|
||||||
} else if(dep.name && dep.id === "default" && !(importedModule && importedModule.meta && importedModule.meta.harmonyModule)) { // we want to reexport the default export from a non-hamory module
|
} else if(dep.name && dep.id === "default" && !(importedModule && (!importedModule.meta || importedModule.meta.harmonyModule))) { // we want to reexport the default export from a non-hamory module
|
||||||
content = "/* harmony reexport */ " + getReexportStatement(JSON.stringify(used), null) + "\n";
|
content = "/* harmony reexport */ " + getReexportStatement(JSON.stringify(used), null) + "\n";
|
||||||
} else if(dep.name && dep.id) { // we want to reexport a key as new key
|
} else if(dep.name && dep.id) { // we want to reexport a key as new key
|
||||||
var idUsed = importedModule && importedModule.isUsed(dep.id);
|
var idUsed = importedModule && importedModule.isUsed(dep.id);
|
||||||
|
@ -72,7 +72,7 @@ HarmonyExportImportedSpecifierDependency.Template.prototype.apply = function(dep
|
||||||
content = "/* harmony reexport */ " + getReexportStatement(JSON.stringify(used), "") + "\n";
|
content = "/* harmony reexport */ " + getReexportStatement(JSON.stringify(used), "") + "\n";
|
||||||
} else if(Array.isArray(dep.originModule.usedExports)) { // we know which exports are used
|
} else if(Array.isArray(dep.originModule.usedExports)) { // we know which exports are used
|
||||||
activeExports = HarmonyModulesHelpers.getActiveExports(dep.originModule);
|
activeExports = HarmonyModulesHelpers.getActiveExports(dep.originModule);
|
||||||
var importIsHarmony = importedModule && importedModule.meta.harmonyModule;
|
var importIsHarmony = importedModule && (!importedModule.meta || importedModule.meta.harmonyModule);
|
||||||
var importActiveExports = importedModule && HarmonyModulesHelpers.getActiveExports(importedModule);
|
var importActiveExports = importedModule && HarmonyModulesHelpers.getActiveExports(importedModule);
|
||||||
var items = dep.originModule.usedExports.map(function(id) {
|
var items = dep.originModule.usedExports.map(function(id) {
|
||||||
if(id === "default") return;
|
if(id === "default") return;
|
||||||
|
|
|
@ -25,7 +25,7 @@ HarmonyImportDependency.prototype.getReference = function() {
|
||||||
|
|
||||||
HarmonyImportDependency.prototype.updateHash = function updateHash(hash) {
|
HarmonyImportDependency.prototype.updateHash = function updateHash(hash) {
|
||||||
ModuleDependency.prototype.updateHash.call(this, hash);
|
ModuleDependency.prototype.updateHash.call(this, hash);
|
||||||
hash.update((this.module && this.module.meta && this.module.meta.harmonyModule) + "");
|
hash.update((this.module && (!this.module.meta || this.module.meta.harmonyModule)) + "");
|
||||||
};
|
};
|
||||||
|
|
||||||
HarmonyImportDependency.makeStatement = function(declare, dep, outputOptions, requestShortener) {
|
HarmonyImportDependency.makeStatement = function(declare, dep, outputOptions, requestShortener) {
|
||||||
|
|
|
@ -47,7 +47,7 @@ HarmonyImportSpecifierDependency.prototype.updateHash = function(hash) {
|
||||||
hash.update((importedModule && this.id) + "");
|
hash.update((importedModule && this.id) + "");
|
||||||
hash.update((importedModule && this.importedVar) + "");
|
hash.update((importedModule && this.importedVar) + "");
|
||||||
hash.update((importedModule && this.id && importedModule.isUsed(this.id)) + "");
|
hash.update((importedModule && this.id && importedModule.isUsed(this.id)) + "");
|
||||||
hash.update((importedModule && importedModule.meta && importedModule.meta.harmonyModule) + "");
|
hash.update((importedModule && (!importedModule.meta || importedModule.meta.harmonyModule)) + "");
|
||||||
hash.update((importedModule && (importedModule.used + JSON.stringify(importedModule.usedExports))) + "");
|
hash.update((importedModule && (importedModule.used + JSON.stringify(importedModule.usedExports))) + "");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ HarmonyImportSpecifierDependency.Template = function HarmonyImportSpecifierDepen
|
||||||
HarmonyImportSpecifierDependency.Template.prototype.apply = function(dep, source) {
|
HarmonyImportSpecifierDependency.Template.prototype.apply = function(dep, source) {
|
||||||
var content;
|
var content;
|
||||||
var importedModule = dep.importDependency.module;
|
var importedModule = dep.importDependency.module;
|
||||||
var defaultImport = dep.id === "default" && !(importedModule && importedModule.meta && importedModule.meta.harmonyModule);
|
var defaultImport = dep.id === "default" && !(importedModule && (!importedModule.meta || importedModule.meta.harmonyModule));
|
||||||
if(defaultImport) {
|
if(defaultImport) {
|
||||||
content = dep.importedVar + "_default.a";
|
content = dep.importedVar + "_default.a";
|
||||||
} else if(dep.id) {
|
} else if(dep.id) {
|
||||||
|
|
|
@ -77,8 +77,8 @@ describe("HotTestCases", function() {
|
||||||
var jsonStats = stats.toJson({
|
var jsonStats = stats.toJson({
|
||||||
errorDetails: true
|
errorDetails: true
|
||||||
});
|
});
|
||||||
if(checkArrayExpectation(testDirectory, jsonStats, "error", "Error", done)) return;
|
if(checkArrayExpectation(testDirectory, jsonStats, "error", "errors" + options.updateIndex, "Error", done)) return;
|
||||||
if(checkArrayExpectation(testDirectory, jsonStats, "warning", "Warning", done)) return;
|
if(checkArrayExpectation(testDirectory, jsonStats, "warning", "warnings" + options.updateIndex, "Warning", done)) return;
|
||||||
if(callback) callback();
|
if(callback) callback();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,18 @@
|
||||||
var fs = require("fs");
|
var fs = require("fs");
|
||||||
var path = require("path");
|
var path = require("path");
|
||||||
|
|
||||||
module.exports = function checkArrayExpectation(testDirectory, object, kind, upperCaseKind, done) {
|
module.exports = function checkArrayExpectation(testDirectory, object, kind, filename, upperCaseKind, done) {
|
||||||
|
if(!done) {
|
||||||
|
done = upperCaseKind;
|
||||||
|
upperCaseKind = filename;
|
||||||
|
filename = kind + "s";
|
||||||
|
}
|
||||||
var array = object[kind + "s"].slice().sort();
|
var array = object[kind + "s"].slice().sort();
|
||||||
if(kind === "warning") array = array.filter(function(item) {
|
if(kind === "warning") array = array.filter(function(item) {
|
||||||
return !/from UglifyJs/.test(item);
|
return !/from UglifyJs/.test(item);
|
||||||
});
|
});
|
||||||
if(fs.existsSync(path.join(testDirectory, kind + "s.js"))) {
|
if(fs.existsSync(path.join(testDirectory, filename + ".js"))) {
|
||||||
var expected = require(path.join(testDirectory, kind + "s.js"));
|
var expected = require(path.join(testDirectory, filename + ".js"));
|
||||||
if(expected.length < array.length)
|
if(expected.length < array.length)
|
||||||
return done(new Error("More " + kind + "s while compiling than expected:\n\n" + array.join("\n\n"))), true;
|
return done(new Error("More " + kind + "s while compiling than expected:\n\n" + array.join("\n\n"))), true;
|
||||||
else if(expected.length > array.length)
|
else if(expected.length > array.length)
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
export default 1;
|
||||||
|
---
|
||||||
|
export default 2;
|
||||||
|
throw new Error("Failed");
|
||||||
|
---
|
||||||
|
export default 3;
|
|
@ -0,0 +1,20 @@
|
||||||
|
import a from "./a";
|
||||||
|
|
||||||
|
it("should abort when module is not accepted", function(done) {
|
||||||
|
a.should.be.eql(1);
|
||||||
|
NEXT(require("../../update")(done, {
|
||||||
|
ignoreErrored: true
|
||||||
|
}, function() {
|
||||||
|
a.should.be.eql(1);
|
||||||
|
NEXT(require("../../update")(done, {
|
||||||
|
ignoreErrored: true
|
||||||
|
}, function() {
|
||||||
|
a.should.be.eql(3);
|
||||||
|
done();
|
||||||
|
}));
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
|
||||||
|
if(module.hot) {
|
||||||
|
module.hot.accept("./a");
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
export default 1;
|
||||||
|
---
|
||||||
|
]});
|
||||||
|
export default 2;
|
||||||
|
---
|
||||||
|
export default 3;
|
|
@ -0,0 +1,3 @@
|
||||||
|
module.exports = [
|
||||||
|
[/Module parse failed/]
|
||||||
|
]
|
|
@ -0,0 +1,20 @@
|
||||||
|
import a from "./a";
|
||||||
|
|
||||||
|
it("should abort when module is not accepted", function(done) {
|
||||||
|
a.should.be.eql(1);
|
||||||
|
NEXT(require("../../update")(done, {
|
||||||
|
ignoreErrored: true
|
||||||
|
}, function() {
|
||||||
|
a.should.be.eql(1);
|
||||||
|
NEXT(require("../../update")(done, {
|
||||||
|
ignoreErrored: true
|
||||||
|
}, function() {
|
||||||
|
a.should.be.eql(3);
|
||||||
|
done();
|
||||||
|
}));
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
|
||||||
|
if(module.hot) {
|
||||||
|
module.hot.accept("./a");
|
||||||
|
}
|
|
@ -9,41 +9,41 @@ chunk {0} bundle.js (main) 73 bytes [rendered]
|
||||||
> main [5] (webpack)/test/statsCases/chunks/index.js
|
> main [5] (webpack)/test/statsCases/chunks/index.js
|
||||||
[0] (webpack)/test/statsCases/chunks/a.js 22 bytes {0} [built]
|
[0] (webpack)/test/statsCases/chunks/a.js 22 bytes {0} [built]
|
||||||
cjs require ./a [5] (webpack)/test/statsCases/chunks/index.js 1:0-14
|
cjs require ./a [5] (webpack)/test/statsCases/chunks/index.js 1:0-14
|
||||||
[5] Xms -> factory:Xms building:Xms = Xms
|
[] -> factory:Xms building:Xms = Xms
|
||||||
[5] (webpack)/test/statsCases/chunks/index.js 51 bytes {0} [built]
|
[5] (webpack)/test/statsCases/chunks/index.js 51 bytes {0} [built]
|
||||||
factory:Xms building:Xms = Xms
|
factory:Xms building:Xms = Xms
|
||||||
chunk {1} 1.bundle.js 54 bytes {0} [rendered]
|
chunk {1} 1.bundle.js 54 bytes {0} [rendered]
|
||||||
> [5] (webpack)/test/statsCases/chunks/index.js 3:0-16
|
> [5] (webpack)/test/statsCases/chunks/index.js 3:0-16
|
||||||
[2] (webpack)/test/statsCases/chunks/c.js 54 bytes {1} [built]
|
[2] (webpack)/test/statsCases/chunks/c.js 54 bytes {1} [built]
|
||||||
amd require ./c [5] (webpack)/test/statsCases/chunks/index.js 3:0-16
|
amd require ./c [5] (webpack)/test/statsCases/chunks/index.js 3:0-16
|
||||||
[5] Xms -> factory:Xms building:Xms = Xms
|
[] -> factory:Xms building:Xms = Xms
|
||||||
chunk {2} 2.bundle.js 22 bytes {0} [rendered]
|
chunk {2} 2.bundle.js 22 bytes {0} [rendered]
|
||||||
> [5] (webpack)/test/statsCases/chunks/index.js 2:0-16
|
> [5] (webpack)/test/statsCases/chunks/index.js 2:0-16
|
||||||
[1] (webpack)/test/statsCases/chunks/b.js 22 bytes {2} [built]
|
[1] (webpack)/test/statsCases/chunks/b.js 22 bytes {2} [built]
|
||||||
amd require ./b [5] (webpack)/test/statsCases/chunks/index.js 2:0-16
|
amd require ./b [5] (webpack)/test/statsCases/chunks/index.js 2:0-16
|
||||||
[5] Xms -> factory:Xms building:Xms = Xms
|
[] -> factory:Xms building:Xms = Xms
|
||||||
chunk {3} 3.bundle.js 44 bytes {1} [rendered]
|
chunk {3} 3.bundle.js 44 bytes {1} [rendered]
|
||||||
> [2] (webpack)/test/statsCases/chunks/c.js 1:0-52
|
> [2] (webpack)/test/statsCases/chunks/c.js 1:0-52
|
||||||
[3] (webpack)/test/statsCases/chunks/d.js 22 bytes {3} [built]
|
[3] (webpack)/test/statsCases/chunks/d.js 22 bytes {3} [built]
|
||||||
require.ensure item ./d [2] (webpack)/test/statsCases/chunks/c.js 1:0-52
|
require.ensure item ./d [2] (webpack)/test/statsCases/chunks/c.js 1:0-52
|
||||||
[5] Xms -> [2] Xms -> factory:Xms building:Xms = Xms
|
[] -> factory:Xms building:Xms = Xms
|
||||||
[4] (webpack)/test/statsCases/chunks/e.js 22 bytes {3} [built]
|
[4] (webpack)/test/statsCases/chunks/e.js 22 bytes {3} [built]
|
||||||
require.ensure item ./e [2] (webpack)/test/statsCases/chunks/c.js 1:0-52
|
require.ensure item ./e [2] (webpack)/test/statsCases/chunks/c.js 1:0-52
|
||||||
[5] Xms -> [2] Xms -> factory:Xms building:Xms = Xms
|
[] -> factory:Xms building:Xms = Xms
|
||||||
[0] (webpack)/test/statsCases/chunks/a.js 22 bytes {0} [built]
|
[0] (webpack)/test/statsCases/chunks/a.js 22 bytes {0} [built]
|
||||||
cjs require ./a [5] (webpack)/test/statsCases/chunks/index.js 1:0-14
|
cjs require ./a [5] (webpack)/test/statsCases/chunks/index.js 1:0-14
|
||||||
[5] Xms -> factory:Xms building:Xms = Xms
|
[] -> factory:Xms building:Xms = Xms
|
||||||
[1] (webpack)/test/statsCases/chunks/b.js 22 bytes {2} [built]
|
[1] (webpack)/test/statsCases/chunks/b.js 22 bytes {2} [built]
|
||||||
amd require ./b [5] (webpack)/test/statsCases/chunks/index.js 2:0-16
|
amd require ./b [5] (webpack)/test/statsCases/chunks/index.js 2:0-16
|
||||||
[5] Xms -> factory:Xms building:Xms = Xms
|
[] -> factory:Xms building:Xms = Xms
|
||||||
[2] (webpack)/test/statsCases/chunks/c.js 54 bytes {1} [built]
|
[2] (webpack)/test/statsCases/chunks/c.js 54 bytes {1} [built]
|
||||||
amd require ./c [5] (webpack)/test/statsCases/chunks/index.js 3:0-16
|
amd require ./c [5] (webpack)/test/statsCases/chunks/index.js 3:0-16
|
||||||
[5] Xms -> factory:Xms building:Xms = Xms
|
[] -> factory:Xms building:Xms = Xms
|
||||||
[3] (webpack)/test/statsCases/chunks/d.js 22 bytes {3} [built]
|
[3] (webpack)/test/statsCases/chunks/d.js 22 bytes {3} [built]
|
||||||
require.ensure item ./d [2] (webpack)/test/statsCases/chunks/c.js 1:0-52
|
require.ensure item ./d [2] (webpack)/test/statsCases/chunks/c.js 1:0-52
|
||||||
[5] Xms -> [2] Xms -> factory:Xms building:Xms = Xms
|
[] -> factory:Xms building:Xms = Xms
|
||||||
[4] (webpack)/test/statsCases/chunks/e.js 22 bytes {3} [built]
|
[4] (webpack)/test/statsCases/chunks/e.js 22 bytes {3} [built]
|
||||||
require.ensure item ./e [2] (webpack)/test/statsCases/chunks/c.js 1:0-52
|
require.ensure item ./e [2] (webpack)/test/statsCases/chunks/c.js 1:0-52
|
||||||
[5] Xms -> [2] Xms -> factory:Xms building:Xms = Xms
|
[] -> factory:Xms building:Xms = Xms
|
||||||
[5] (webpack)/test/statsCases/chunks/index.js 51 bytes {0} [built]
|
[5] (webpack)/test/statsCases/chunks/index.js 51 bytes {0} [built]
|
||||||
factory:Xms building:Xms = Xms
|
factory:Xms building:Xms = Xms
|
|
@ -8,21 +8,21 @@ main.js 5.28 kB 0 [emitted] main
|
||||||
chunk {0} main.js (main) 73 bytes [rendered]
|
chunk {0} main.js (main) 73 bytes [rendered]
|
||||||
[0] (webpack)/test/statsCases/preset-verbose/a.js 22 bytes {0} [built]
|
[0] (webpack)/test/statsCases/preset-verbose/a.js 22 bytes {0} [built]
|
||||||
cjs require ./a [5] (webpack)/test/statsCases/preset-verbose/index.js 1:0-14
|
cjs require ./a [5] (webpack)/test/statsCases/preset-verbose/index.js 1:0-14
|
||||||
[5] Xms -> factory:Xms building:Xms = Xms
|
[] -> factory:Xms building:Xms = Xms
|
||||||
[5] (webpack)/test/statsCases/preset-verbose/index.js 51 bytes {0} [built]
|
[5] (webpack)/test/statsCases/preset-verbose/index.js 51 bytes {0} [built]
|
||||||
factory:Xms building:Xms = Xms
|
factory:Xms building:Xms = Xms
|
||||||
chunk {1} 1.js 54 bytes {0} [rendered]
|
chunk {1} 1.js 54 bytes {0} [rendered]
|
||||||
[2] (webpack)/test/statsCases/preset-verbose/c.js 54 bytes {1} [built]
|
[2] (webpack)/test/statsCases/preset-verbose/c.js 54 bytes {1} [built]
|
||||||
amd require ./c [5] (webpack)/test/statsCases/preset-verbose/index.js 3:0-16
|
amd require ./c [5] (webpack)/test/statsCases/preset-verbose/index.js 3:0-16
|
||||||
[5] Xms -> factory:Xms building:Xms = Xms
|
[] -> factory:Xms building:Xms = Xms
|
||||||
chunk {2} 2.js 22 bytes {0} [rendered]
|
chunk {2} 2.js 22 bytes {0} [rendered]
|
||||||
[1] (webpack)/test/statsCases/preset-verbose/b.js 22 bytes {2} [built]
|
[1] (webpack)/test/statsCases/preset-verbose/b.js 22 bytes {2} [built]
|
||||||
amd require ./b [5] (webpack)/test/statsCases/preset-verbose/index.js 2:0-16
|
amd require ./b [5] (webpack)/test/statsCases/preset-verbose/index.js 2:0-16
|
||||||
[5] Xms -> factory:Xms building:Xms = Xms
|
[] -> factory:Xms building:Xms = Xms
|
||||||
chunk {3} 3.js 44 bytes {1} [rendered]
|
chunk {3} 3.js 44 bytes {1} [rendered]
|
||||||
[3] (webpack)/test/statsCases/preset-verbose/d.js 22 bytes {3} [built]
|
[3] (webpack)/test/statsCases/preset-verbose/d.js 22 bytes {3} [built]
|
||||||
require.ensure item ./d [2] (webpack)/test/statsCases/preset-verbose/c.js 1:0-52
|
require.ensure item ./d [2] (webpack)/test/statsCases/preset-verbose/c.js 1:0-52
|
||||||
[5] Xms -> [2] Xms -> factory:Xms building:Xms = Xms
|
[] -> factory:Xms building:Xms = Xms
|
||||||
[4] (webpack)/test/statsCases/preset-verbose/e.js 22 bytes {3} [built]
|
[4] (webpack)/test/statsCases/preset-verbose/e.js 22 bytes {3} [built]
|
||||||
require.ensure item ./e [2] (webpack)/test/statsCases/preset-verbose/c.js 1:0-52
|
require.ensure item ./e [2] (webpack)/test/statsCases/preset-verbose/c.js 1:0-52
|
||||||
[5] Xms -> [2] Xms -> factory:Xms building:Xms = Xms
|
[] -> factory:Xms building:Xms = Xms
|
Loading…
Reference in New Issue