ensure globalImportPath support in eager test file generation and update entry logic for client and server in rspack config

This commit is contained in:
Nacho Codoñer
2026-02-16 16:02:45 +01:00
parent 74bee0a97d
commit ec57a45f7a
2 changed files with 34 additions and 17 deletions

View File

@@ -13,13 +13,14 @@ const { createIgnoreRegex, createIgnoreGlobConfig } = require("./ignore.js");
* @returns {string} The path to the generated file
*/
const generateEagerTestFile = ({
isAppTest,
projectDir,
buildContext,
ignoreEntries: inIgnoreEntries = [],
prefix: inPrefix = '',
extraEntry,
}) => {
isAppTest,
projectDir,
buildContext,
ignoreEntries: inIgnoreEntries = [],
prefix: inPrefix = '',
extraEntry,
globalImportPath,
}) => {
const distDir = path.resolve(projectDir, ".meteor/local/test");
if (!fs.existsSync(distDir)) {
fs.mkdirSync(distDir, { recursive: true });
@@ -49,7 +50,9 @@ const generateEagerTestFile = ({
? "/\\.app-(?:test|spec)s?\\.[^.]+$/"
: "/\\.(?:test|spec)s?\\.[^.]+$/";
const content = `{
const content = `${
globalImportPath ? `import '${globalImportPath}';\n\n` : ''
}{
const ctx = import.meta.webpackContext('/', {
recursive: true,
regExp: ${regExp},
@@ -60,14 +63,14 @@ const generateEagerTestFile = ({
${
extraEntry
? `const extra = import.meta.webpackContext('${path.dirname(
extraEntry
)}', {
extraEntry
)}', {
recursive: false,
regExp: ${new RegExp(`${path.basename(extraEntry)}$`).toString()},
mode: 'eager',
});
extra.keys().forEach(extra);`
: ''
: ""
}
}`;

View File

@@ -429,7 +429,7 @@ module.exports = async function (inMeteor = {}, argv = {}) {
const lazyCompilationConfig = { lazyCompilation: false };
const clientEntry =
isTest && isTestEager && isTestFullApp
isClient && isTest && isTestEager && isTestFullApp
? generateEagerTestFile({
isAppTest: true,
projectDir,
@@ -437,8 +437,9 @@ module.exports = async function (inMeteor = {}, argv = {}) {
ignoreEntries: [...meteorIgnoreEntries, "**/server/**"],
prefix: "client",
extraEntry: path.resolve(process.cwd(), Meteor.mainClientEntry),
globalImportPath: path.resolve(projectDir, buildContext, entryPath),
})
: isTest && isTestEager
: isClient && isTest && isTestEager
? generateEagerTestFile({
isAppTest: false,
isClient: true,
@@ -446,10 +447,16 @@ module.exports = async function (inMeteor = {}, argv = {}) {
buildContext,
ignoreEntries: [...meteorIgnoreEntries, "**/server/**"],
prefix: "client",
globalImportPath: path.resolve(projectDir, buildContext, entryPath),
})
: isTest && testEntry
: isClient && isTest && testEntry
? path.resolve(process.cwd(), testEntry)
: path.resolve(process.cwd(), buildContext, entryPath);
console.log(
"--> (rspack.config.js-Line: 431)\n clientEntry: ",
clientEntry,
entryPath
);
const clientNameConfig = `[${(isTest && 'test-') || ''}client-rspack]`;
// Base client config
let clientConfig = {
@@ -548,26 +555,33 @@ module.exports = async function (inMeteor = {}, argv = {}) {
};
const serverEntry =
isTest && isTestEager && isTestFullApp
isServer && isTest && isTestEager && isTestFullApp
? generateEagerTestFile({
isAppTest: true,
projectDir,
buildContext,
ignoreEntries: [...meteorIgnoreEntries, "**/client/**"],
prefix: "server",
globalImportPath: path.resolve(projectDir, buildContext, entryPath),
})
: isTest && isTestEager
: isServer && isTest && isTestEager
? generateEagerTestFile({
isAppTest: false,
projectDir,
buildContext,
ignoreEntries: [...meteorIgnoreEntries, "**/client/**"],
prefix: "server",
globalImportPath: path.resolve(projectDir, buildContext, entryPath),
})
: isTest && testEntry
: isServer && isTest && testEntry
? path.resolve(process.cwd(), testEntry)
: path.resolve(projectDir, buildContext, entryPath);
const serverNameConfig = `[${(isTest && 'test-') || ''}server-rspack]`;
console.log(
"--> (rspack.config.js-Line: 576)\n serverEntry: ",
serverEntry,
entryPath
);
// Base server config
let serverConfig = {
name: serverNameConfig,