Merge pull request #13157 from scamden/pr-hash-bug

fix(resolve): allows filesysteminfo to resolve files that have #'s
This commit is contained in:
Tobias Koppers 2021-04-19 19:42:59 +02:00 committed by GitHub
commit 85fe6ac4f4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 28 additions and 17 deletions

View File

@ -1249,7 +1249,7 @@ class FileSystemInfo {
return callback();
}
resolveResults.set(key, undefined);
resolveContext(context, path, resolverContext, (err, result) => {
resolveContext(context, path, resolverContext, (err, _, result) => {
if (err) {
if (expected === false) {
resolveResults.set(key, false);
@ -1259,11 +1259,12 @@ class FileSystemInfo {
err.message += `\nwhile resolving '${path}' in ${context} to a directory`;
return callback(err);
}
resolveResults.set(key, result);
const resultPath = result.path;
resolveResults.set(key, resultPath);
push({
type: RBDT_DIRECTORY,
context: undefined,
path: result,
path: resultPath,
expected: undefined,
issuer: job
});
@ -1276,14 +1277,16 @@ class FileSystemInfo {
return callback();
}
resolveResults.set(key, undefined);
resolve(context, path, resolverContext, (err, result) => {
resolve(context, path, resolverContext, (err, _, result) => {
if (typeof expected === "string") {
if (result === expected) {
resolveResults.set(key, result);
if (!err && result && result.path === expected) {
resolveResults.set(key, result.path);
} else {
invalidResolveResults.add(key);
this.logger.warn(
`Resolving '${path}' in ${context} for build dependencies doesn't lead to expected result '${expected}', but to '${result}' instead. Resolving dependencies are ignored for this path.\n${pathToString(
`Resolving '${path}' in ${context} for build dependencies doesn't lead to expected result '${expected}', but to '${
err || (result && result.path)
}' instead. Resolving dependencies are ignored for this path.\n${pathToString(
job
)}`
);
@ -1300,11 +1303,12 @@ class FileSystemInfo {
)}`;
return callback(err);
}
resolveResults.set(key, result);
const resultPath = result.path;
resolveResults.set(key, resultPath);
push({
type: RBDT_FILE,
context: undefined,
path: result,
path: resultPath,
expected: undefined,
issuer: job
});
@ -1646,38 +1650,42 @@ class FileSystemInfo {
const [type, context, path] = key.split("\n");
switch (type) {
case "d":
resolveContext(context, path, {}, (err, result) => {
resolveContext(context, path, {}, (err, _, result) => {
if (expectedResult === false)
return callback(err ? undefined : INVALID);
if (err) return callback(err);
if (result !== expectedResult) return callback(INVALID);
const resultPath = result.path;
if (resultPath !== expectedResult) return callback(INVALID);
callback();
});
break;
case "f":
resolveCjs(context, path, {}, (err, result) => {
resolveCjs(context, path, {}, (err, _, result) => {
if (expectedResult === false)
return callback(err ? undefined : INVALID);
if (err) return callback(err);
if (result !== expectedResult) return callback(INVALID);
const resultPath = result.path;
if (resultPath !== expectedResult) return callback(INVALID);
callback();
});
break;
case "c":
resolveCjsAsChild(context, path, {}, (err, result) => {
resolveCjsAsChild(context, path, {}, (err, _, result) => {
if (expectedResult === false)
return callback(err ? undefined : INVALID);
if (err) return callback(err);
if (result !== expectedResult) return callback(INVALID);
const resultPath = result.path;
if (resultPath !== expectedResult) return callback(INVALID);
callback();
});
break;
case "e":
resolveEsm(context, path, {}, (err, result) => {
resolveEsm(context, path, {}, (err, _, result) => {
if (expectedResult === false)
return callback(err ? undefined : INVALID);
if (err) return callback(err);
if (result !== expectedResult) return callback(INVALID);
const resultPath = result.path;
if (resultPath !== expectedResult) return callback(INVALID);
callback();
});
break;

View File

@ -1,5 +1,6 @@
/* global VALUE */
require("dep#with#hash/#.js");
module.exports = {
loader: require("./loader!"),
config: VALUE,

View File

View File

@ -3,6 +3,8 @@ const webpack = require("../../..");
// eslint-disable-next-line node/no-missing-require
const value = require("../../js/buildDepsInput/config-dependency");
require("dep#with#hash/#.js");
process.exitCode = 1;
const options = JSON.parse(process.argv[3]);