From c4576087adb59a6159e95bce38f9b746aa5e26d6 Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Mon, 1 Jul 2024 14:55:40 +0300 Subject: [PATCH 1/9] Apply bundleDefinition defaults based on specVersion --- lib/processors/bundlers/moduleBundler.js | 32 ++++++++++++++++++------ 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/lib/processors/bundlers/moduleBundler.js b/lib/processors/bundlers/moduleBundler.js index 3f8d964f2..1eb8cfc5d 100644 --- a/lib/processors/bundlers/moduleBundler.js +++ b/lib/processors/bundlers/moduleBundler.js @@ -153,13 +153,8 @@ export default function({resources, options: { }, bundleOptions); // Apply defaults without modifying the passed object - bundleDefinition = Object.assign({ - resolve: false, - resolveConditional: false, - renderer: false, - sort: true, - declareRawModules: false, - }, bundleDefinition); + const project = resources?.[0]?.getProject(); + bundleDefinition = applyDefaultsToBundleDefinition(bundleDefinition, project?.getSpecVersion()); const pool = new LocatorResourcePool({ ignoreMissingModules: bundleOptions.ignoreMissingModules @@ -201,3 +196,26 @@ export default function({resources, options: { })); }); } + +function applyDefaultsToBundleDefinition(bundleDefinition, specVersion) { + bundleDefinition.sections = bundleDefinition?.sections?.map((section) => { + const defaultValues = { + resolve: false, + resolveConditional: false, + renderer: false, + sort: true, + declareRawModules: false, + }; + + // Since specVersion: 4.0 "require" section starts loading asynchronously. + // If specVersion cannot be determined, the latest spec is taken into account. + // This is a breaking change in specVersion: 4.0 + if (section.mode === "require" && (!specVersion || specVersion.gte("4.0"))) { + defaultValues.async = true; + } + + return Object.assign(defaultValues, section); + }); + + return bundleDefinition; +} From 1b6c9214d607f5d14adf8bbce9542744b2a5b57f Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Mon, 1 Jul 2024 14:55:47 +0300 Subject: [PATCH 2/9] Fix tests --- test/lib/processors/bundlers/moduleBundler.js | 88 ++----------------- 1 file changed, 7 insertions(+), 81 deletions(-) diff --git a/test/lib/processors/bundlers/moduleBundler.js b/test/lib/processors/bundlers/moduleBundler.js index dbcc36595..99138a074 100644 --- a/test/lib/processors/bundlers/moduleBundler.js +++ b/test/lib/processors/bundlers/moduleBundler.js @@ -45,16 +45,6 @@ test.serial("Builder returns single bundle", async (t) => { const bundleOptions = { "some": "option" }; - const effectiveBundleDefinition = { - // Defaults - "resolve": false, - "resolveConditional": false, - "renderer": false, - "sort": true, - "declareRawModules": false, - - "some": "definition" - }; const createdBundle = { name: "BundleName.js", @@ -103,7 +93,7 @@ test.serial("Builder returns single bundle", async (t) => { t.is(builder.createBundle.callCount, 1, "builder.createBundle should be called once"); t.is(builder.createBundle.getCall(0).args.length, 2); - t.deepEqual(builder.createBundle.getCall(0).args[0], effectiveBundleDefinition, + t.deepEqual(builder.createBundle.getCall(0).args[0], bundleDefinition, "builder.createBundle should be called with bundleDefinition"); t.deepEqual(builder.createBundle.getCall(0).args[1], { // default bundleOptions @@ -143,17 +133,6 @@ test.serial("Builder returns multiple bundles", async (t) => { "some": "option" }; - const effectiveBundleDefinition = { - // Defaults - "resolve": false, - "resolveConditional": false, - "renderer": false, - "sort": true, - "declareRawModules": false, - - "some": "definition" - }; - const createdBundles = [ { name: "BundleName1.js", @@ -226,7 +205,7 @@ test.serial("Builder returns multiple bundles", async (t) => { t.is(builder.createBundle.callCount, 1, "builder.createBundle should be called once"); t.is(builder.createBundle.getCall(0).args.length, 2); - t.deepEqual(builder.createBundle.getCall(0).args[0], effectiveBundleDefinition, + t.deepEqual(builder.createBundle.getCall(0).args[0], bundleDefinition, "builder.createBundle should be called with bundleDefinition"); t.deepEqual(builder.createBundle.getCall(0).args[1], { // default bundleOptions @@ -268,16 +247,6 @@ test.serial("bundleOptions default (no options passed)", async (t) => { const bundleDefinition = { "some": "definition" }; - const effectiveBundleDefinition = { - // Defaults - "resolve": false, - "resolveConditional": false, - "renderer": false, - "sort": true, - "declareRawModules": false, - - "some": "definition" - }; const createdBundle = { name: "BundleName.js", @@ -325,7 +294,7 @@ test.serial("bundleOptions default (no options passed)", async (t) => { t.is(builder.createBundle.callCount, 1, "builder.createBundle should be called once"); t.is(builder.createBundle.getCall(0).args.length, 2); - t.deepEqual(builder.createBundle.getCall(0).args[0], effectiveBundleDefinition, + t.deepEqual(builder.createBundle.getCall(0).args[0], bundleDefinition, "builder.createBundle should be called with bundleDefinition"); t.deepEqual(builder.createBundle.getCall(0).args[1], { // default bundleOptions @@ -361,17 +330,6 @@ test.serial("bundleOptions default (empty options passed)", async (t) => { }; const bundleOptions = {}; - const effectiveBundleDefinition = { - // Defaults - "resolve": false, - "resolveConditional": false, - "renderer": false, - "sort": true, - "declareRawModules": false, - - "some": "definition" - }; - const createdBundle = { name: "BundleName.js", content: "Bundle Content", @@ -400,7 +358,7 @@ test.serial("bundleOptions default (empty options passed)", async (t) => { t.is(builder.createBundle.callCount, 1, "builder.createBundle should be called once"); t.is(builder.createBundle.getCall(0).args.length, 2); - t.deepEqual(builder.createBundle.getCall(0).args[0], effectiveBundleDefinition, + t.deepEqual(builder.createBundle.getCall(0).args[0], bundleDefinition, "builder.createBundle should be called with bundleDefinition"); t.deepEqual(builder.createBundle.getCall(0).args[1], { // default bundleOptions @@ -434,17 +392,6 @@ test.serial("bundleOptions (all options passed)", async (t) => { ignoreMissingModules: true }; - const effectiveBundleDefinition = { - // Defaults - "resolve": false, - "resolveConditional": false, - "renderer": false, - "sort": true, - "declareRawModules": false, - - "some": "definition" - }; - const createdBundle = { name: "BundleName.js", content: "Bundle Content", @@ -473,7 +420,7 @@ test.serial("bundleOptions (all options passed)", async (t) => { t.is(builder.createBundle.callCount, 1, "builder.createBundle should be called once"); t.is(builder.createBundle.getCall(0).args.length, 2); - t.deepEqual(builder.createBundle.getCall(0).args[0], effectiveBundleDefinition, + t.deepEqual(builder.createBundle.getCall(0).args[0], bundleDefinition, "builder.createBundle should be called with bundleDefinition"); t.deepEqual(builder.createBundle.getCall(0).args[1], bundleOptions, "builder.createBundle should be called with bundleOptions"); @@ -502,16 +449,6 @@ test.serial("Passes ignoreMissingModules bundleOption to LocatorResourcePool", a "ignoreMissingModules": "foo" }; - const effectiveBundleDefinition = { - // Defaults - "resolve": false, - "resolveConditional": false, - "renderer": false, - "sort": true, - "declareRawModules": false, - - "some": "definition" - }; const createdBundle = { name: "BundleName.js", @@ -560,7 +497,7 @@ test.serial("Passes ignoreMissingModules bundleOption to LocatorResourcePool", a t.is(builder.createBundle.callCount, 1, "builder.createBundle should be called once"); t.is(builder.createBundle.getCall(0).args.length, 2); - t.deepEqual(builder.createBundle.getCall(0).args[0], effectiveBundleDefinition, + t.deepEqual(builder.createBundle.getCall(0).args[0], bundleDefinition, "builder.createBundle should be called with bundleDefinition"); t.deepEqual(builder.createBundle.getCall(0).args[1], effectiveBundleOptions, "builder.createBundle should be called with bundleOptions"); @@ -602,17 +539,6 @@ test.serial("Verbose Logging", async (t) => { "some": "option", }; - const effectiveBundleDefinition = { - // Defaults - "resolve": false, - "resolveConditional": false, - "renderer": false, - "sort": true, - "declareRawModules": false, - - "some": "definition" - }; - const createdBundle = { name: "Bundle Name", content: "Bundle Content", @@ -645,6 +571,6 @@ test.serial("Verbose Logging", async (t) => { t.deepEqual(log.verbose.getCall(0).args, ["Generating bundle:"]); t.deepEqual(log.verbose.getCall(1).args, - ["bundleDefinition: " + JSON.stringify(effectiveBundleDefinition, null, 2)]); + ["bundleDefinition: " + JSON.stringify(bundleDefinition, null, 2)]); t.deepEqual(log.verbose.getCall(2).args, ["bundleOptions: " + JSON.stringify(effectiveBundleOptions, null, 2)]); }); From e390877b34690a96625abdb04fb0492a2c33115b Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Tue, 2 Jul 2024 09:23:57 +0300 Subject: [PATCH 3/9] add tests --- test/lib/processors/bundlers/moduleBundler.js | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/test/lib/processors/bundlers/moduleBundler.js b/test/lib/processors/bundlers/moduleBundler.js index 99138a074..6abbf2184 100644 --- a/test/lib/processors/bundlers/moduleBundler.js +++ b/test/lib/processors/bundlers/moduleBundler.js @@ -574,3 +574,107 @@ test.serial("Verbose Logging", async (t) => { ["bundleDefinition: " + JSON.stringify(bundleDefinition, null, 2)]); t.deepEqual(log.verbose.getCall(2).args, ["bundleOptions: " + JSON.stringify(effectiveBundleOptions, null, 2)]); }); + +test.serial.only("Bundle with async require", async (t) => { + const {processor, Resource, LocatorResourcePool, pool, BundleBuilder, builder, log} = t.context; + + const resources = []; + const bundleDefinition = { + sections: [{ + name: "custom-module.js", + mode: "require" + }] + }; + const bundleOptions = { + ignoreMissingModules: "foo" + }; + + const effectiveBundleOptions = { + // Defaults + "optimize": true, + "sourceMap": true, + "decorateBootstrapModule": false, + "addTryCatchRestartWrapper": false, + "numberOfParts": 1, + + "ignoreMissingModules": "foo" + }; + + const createdBundle = { + name: "BundleName.js", + content: "Bundle Content", + bundleInfo: { + "Bundle": "Info" + } + }; + + builder.createBundle.resolves(createdBundle); + + const expectedOutputResource = { + "output": "resource" + }; + Resource.returns(expectedOutputResource); + + const outputResources = await processor({ + resources, + options: { + bundleDefinition, + bundleOptions + } + }); + + t.deepEqual(outputResources, [{bundle: expectedOutputResource}]); + t.is(outputResources[0].bundle, expectedOutputResource); + + t.is(LocatorResourcePool.callCount, 1, "LocatorResourcePool should be created once"); + t.true(LocatorResourcePool.calledWithNew()); + t.deepEqual(LocatorResourcePool.getCall(0).args, [ + { + ignoreMissingModules: "foo" // as defined in bundleOptions + } + ], "LocatorResourcePool should be called with expected args"); + + t.is(BundleBuilder.callCount, 1, "BundleBuilder should be created once"); + t.true(BundleBuilder.calledWithNew()); + t.is(BundleBuilder.getCall(0).args.length, 2); + t.is(BundleBuilder.getCall(0).args[0], pool, "LocatorResourcePool should be called with pool"); + t.is(BundleBuilder.getCall(0).args[1], undefined, "Target UI5 Version is not defined"); + + t.is(pool.prepare.callCount, 1, "pool.prepare should be called once"); + t.is(pool.prepare.getCall(0).args.length, 2); + t.is(pool.prepare.getCall(0).args[0], resources, "pool.prepare should be called with resources"); + t.is(pool.prepare.getCall(0).args[1], undefined, "pool.prepare should be called without moduleNameMapping"); + + t.is(builder.createBundle.callCount, 1, "builder.createBundle should be called once"); + t.is(builder.createBundle.getCall(0).args.length, 2); + t.deepEqual( + builder.createBundle.getCall(0).args[0], { + sections: [{ + resolve: false, + resolveConditional: false, + renderer: false, + sort: true, + declareRawModules: false, + async: true, + name: "custom-module.js", + mode: "require", + }], + }, + "bundleDefinition should be called with async require flag" + ); + t.deepEqual(builder.createBundle.getCall(0).args[1], effectiveBundleOptions, + "builder.createBundle should be called with bundleOptions"); + t.true(builder.createBundle.calledAfter(pool.prepare), + "builder.createBundle should be called before pool.prepare"); + + t.is(Resource.callCount, 1, "One resource should be created"); + t.true(Resource.calledWithNew()); + t.deepEqual(Resource.getCall(0).args, [ + { + path: "/resources/BundleName.js", + string: "Bundle Content" + } + ], "Resource should be called with expected args"); + + t.is(log.verbose.callCount, 0, "log.verbose is not called when verbose level is not enabled"); +}); From 4c8d22d4e044f12a77faa7d2653febb9c80de2c2 Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Tue, 2 Jul 2024 09:24:14 +0300 Subject: [PATCH 4/9] start all tests --- test/lib/processors/bundlers/moduleBundler.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/lib/processors/bundlers/moduleBundler.js b/test/lib/processors/bundlers/moduleBundler.js index 6abbf2184..5b0d0d938 100644 --- a/test/lib/processors/bundlers/moduleBundler.js +++ b/test/lib/processors/bundlers/moduleBundler.js @@ -575,7 +575,7 @@ test.serial("Verbose Logging", async (t) => { t.deepEqual(log.verbose.getCall(2).args, ["bundleOptions: " + JSON.stringify(effectiveBundleOptions, null, 2)]); }); -test.serial.only("Bundle with async require", async (t) => { +test.serial("Bundle with async require", async (t) => { const {processor, Resource, LocatorResourcePool, pool, BundleBuilder, builder, log} = t.context; const resources = []; From 702ea88b325499c6500f58c9fc169771f925c3f8 Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Tue, 2 Jul 2024 09:32:12 +0300 Subject: [PATCH 5/9] Add comments to the code --- lib/processors/bundlers/moduleBundler.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/processors/bundlers/moduleBundler.js b/lib/processors/bundlers/moduleBundler.js index 1eb8cfc5d..24d31dc54 100644 --- a/lib/processors/bundlers/moduleBundler.js +++ b/lib/processors/bundlers/moduleBundler.js @@ -152,8 +152,11 @@ export default function({resources, options: { ignoreMissingModules: false }, bundleOptions); - // Apply defaults without modifying the passed object + // Take the project from the resources if available. + // It's needed for specVersion check. If unavailable, + // the specVersion would be treated as the most recent one. const project = resources?.[0]?.getProject(); + // Apply defaults without modifying the passed object bundleDefinition = applyDefaultsToBundleDefinition(bundleDefinition, project?.getSpecVersion()); const pool = new LocatorResourcePool({ From bb33e241ed076672e1c7b577c755d8a56428082b Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Tue, 2 Jul 2024 11:58:38 +0300 Subject: [PATCH 6/9] Add taskUtil as dependency to moduleBundler --- lib/processors/bundlers/moduleBundler.js | 13 +- lib/tasks/bundlers/generateBundle.js | 2 +- .../bundlers/generateComponentPreload.js | 3 +- lib/tasks/bundlers/generateLibraryPreload.js | 2 +- test/lib/tasks/bundlers/generateBundle.js | 18 ++- .../bundlers/generateComponentPreload.js | 24 ++-- .../tasks/bundlers/generateLibraryPreload.js | 111 ++++++++++++------ 7 files changed, 111 insertions(+), 62 deletions(-) diff --git a/lib/processors/bundlers/moduleBundler.js b/lib/processors/bundlers/moduleBundler.js index 24d31dc54..a1c9f1703 100644 --- a/lib/processors/bundlers/moduleBundler.js +++ b/lib/processors/bundlers/moduleBundler.js @@ -135,11 +135,12 @@ const log = getLogger("builder:processors:bundlers:moduleBundler"); * @param {string} [parameters.options.targetUi5CoreVersion] Optional semver compliant sap.ui.core project version, e.g '2.0.0'. This allows the bundler to make assumptions on available runtime APIs. Omit if the ultimate UI5 version at runtime is unknown or can't be determined. + * @param {@ui5/project/build/helpers/TaskUtil|object} [parameters.taskUtil] TaskUtil * @returns {Promise} * Promise resolving with module bundle resources */ /* eslint-enable max-len */ -export default function({resources, options: { +export default function({resources, taskUtil, options: { bundleDefinition, bundleOptions, moduleNameMapping, targetUi5CoreVersion }}) { // Apply defaults without modifying the passed object @@ -152,12 +153,8 @@ export default function({resources, options: { ignoreMissingModules: false }, bundleOptions); - // Take the project from the resources if available. - // It's needed for specVersion check. If unavailable, - // the specVersion would be treated as the most recent one. - const project = resources?.[0]?.getProject(); // Apply defaults without modifying the passed object - bundleDefinition = applyDefaultsToBundleDefinition(bundleDefinition, project?.getSpecVersion()); + bundleDefinition = applyDefaultsToBundleDefinition(bundleDefinition, taskUtil); const pool = new LocatorResourcePool({ ignoreMissingModules: bundleOptions.ignoreMissingModules @@ -200,7 +197,7 @@ export default function({resources, options: { }); } -function applyDefaultsToBundleDefinition(bundleDefinition, specVersion) { +function applyDefaultsToBundleDefinition(bundleDefinition, taskUtil) { bundleDefinition.sections = bundleDefinition?.sections?.map((section) => { const defaultValues = { resolve: false, @@ -213,7 +210,7 @@ function applyDefaultsToBundleDefinition(bundleDefinition, specVersion) { // Since specVersion: 4.0 "require" section starts loading asynchronously. // If specVersion cannot be determined, the latest spec is taken into account. // This is a breaking change in specVersion: 4.0 - if (section.mode === "require" && (!specVersion || specVersion.gte("4.0"))) { + if (section.mode === "require" && (!taskUtil || taskUtil.getProject().getSpecVersion().gte("4.0"))) { defaultValues.async = true; } diff --git a/lib/tasks/bundlers/generateBundle.js b/lib/tasks/bundlers/generateBundle.js index d1fbc748c..92b0a6058 100644 --- a/lib/tasks/bundlers/generateBundle.js +++ b/lib/tasks/bundlers/generateBundle.js @@ -103,7 +103,7 @@ export default async function({ if (coreVersion) { options.targetUi5CoreVersion = coreVersion; } - return moduleBundler({options, resources}).then((bundles) => { + return moduleBundler({options, resources, taskUtil}).then((bundles) => { return Promise.all(bundles.map(({bundle, sourceMap} = {}) => { if (!bundle) { // Skip empty bundles diff --git a/lib/tasks/bundlers/generateComponentPreload.js b/lib/tasks/bundlers/generateComponentPreload.js index 2effe8f42..351608ce8 100644 --- a/lib/tasks/bundlers/generateComponentPreload.js +++ b/lib/tasks/bundlers/generateComponentPreload.js @@ -159,7 +159,8 @@ export default async function({ } return moduleBundler({ resources, - options + options, + taskUtil }); })); }) diff --git a/lib/tasks/bundlers/generateLibraryPreload.js b/lib/tasks/bundlers/generateLibraryPreload.js index b87756c2a..f40179877 100644 --- a/lib/tasks/bundlers/generateLibraryPreload.js +++ b/lib/tasks/bundlers/generateLibraryPreload.js @@ -265,7 +265,7 @@ export default async function({workspace, taskUtil, options: {skipBundles = [], if (coreVersion) { options.targetUi5CoreVersion = coreVersion; } - return moduleBundler({options, resources}); + return moduleBundler({options, resources, taskUtil}); }; return nonDbgWorkspace.byGlob("/**/*.{js,json,xml,html,properties,library,js.map}").then(async (resources) => { diff --git a/test/lib/tasks/bundlers/generateBundle.js b/test/lib/tasks/bundlers/generateBundle.js index 3546fb96d..d2f63a1f0 100644 --- a/test/lib/tasks/bundlers/generateBundle.js +++ b/test/lib/tasks/bundlers/generateBundle.js @@ -98,7 +98,8 @@ test.serial("generateBundle: No taskUtil, no bundleOptions", async (t) => { bundleDefinition, bundleOptions: undefined }, - resources + resources, + taskUtil: undefined }]); t.is(combo.byGlob.callCount, 1, @@ -171,7 +172,8 @@ test.serial("generateBundle: No bundleOptions, with taskUtil", async (t) => { bundleOptions: undefined, targetUi5CoreVersion: "1.120.0", }, - resources + resources, + taskUtil }]); t.is(combo.byGlob.callCount, 0, @@ -292,7 +294,8 @@ test.serial("generateBundle: bundleOptions: optimize=false, with taskUtil", asyn }, targetUi5CoreVersion: "1.120.0", }, - resources + resources, + taskUtil }]); t.is(combo.byGlob.callCount, 0, @@ -415,7 +418,8 @@ test.serial("generateBundle: bundleOptions: sourceMap=false, with taskUtil", asy bundleOptions, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.is(combo.byGlob.callCount, 0, @@ -513,7 +517,8 @@ test.serial("generateBundle: Empty bundle (skipIfEmpty=true)", async (t) => { bundleOptions, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.is(combo.byGlob.callCount, 0, @@ -640,7 +645,8 @@ test.serial("generateBundle: No bundleOptions, with taskUtil, UI5 Version >= 2", bundleOptions: undefined, targetUi5CoreVersion: "2.0.0", }, - resources + resources, + taskUtil }]); t.is(combo.byGlob.callCount, 0, diff --git a/test/lib/tasks/bundlers/generateComponentPreload.js b/test/lib/tasks/bundlers/generateComponentPreload.js index 93fe021af..c68a5cd36 100644 --- a/test/lib/tasks/bundlers/generateComponentPreload.js +++ b/test/lib/tasks/bundlers/generateComponentPreload.js @@ -96,7 +96,8 @@ test.serial("generateComponentPreload - one namespace", async (t) => { ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.is(byGlob.callCount, 1, @@ -188,7 +189,8 @@ test.serial("generateComponentPreload - one namespace - excludes", async (t) => ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.is(byGlob.callCount, 1, @@ -293,7 +295,8 @@ test.serial("generateComponentPreload - one namespace - excludes w/o namespace", ignoreMissingModules: true } }, - resources + resources, + taskUtil }]); t.is(byGlob.callCount, 1, @@ -414,7 +417,8 @@ test.serial("generateComponentPreload - multiple namespaces - excludes", async ( ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -455,7 +459,8 @@ test.serial("generateComponentPreload - multiple namespaces - excludes", async ( ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.is(byGlob.callCount, 1, @@ -599,7 +604,8 @@ test.serial("generateComponentPreload - nested namespaces - excludes", async (t) ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -648,7 +654,8 @@ test.serial("generateComponentPreload - nested namespaces - excludes", async (t) ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -690,7 +697,8 @@ test.serial("generateComponentPreload - nested namespaces - excludes", async (t) ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.is(log.warn.callCount, 1, "log.warn should be called once"); diff --git a/test/lib/tasks/bundlers/generateLibraryPreload.js b/test/lib/tasks/bundlers/generateLibraryPreload.js index d6f66d8e0..ec1ef8113 100644 --- a/test/lib/tasks/bundlers/generateLibraryPreload.js +++ b/test/lib/tasks/bundlers/generateLibraryPreload.js @@ -82,7 +82,8 @@ test.serial("generateLibraryPreload", async (t) => { ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -111,7 +112,8 @@ test.serial("generateLibraryPreload", async (t) => { skipIfEmpty: true } }, - resources + resources, + taskUtil: undefined }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -136,7 +138,8 @@ test.serial("generateLibraryPreload", async (t) => { skipIfEmpty: true } }, - resources + resources, + taskUtil: undefined }]); t.is(workspace.byGlob.callCount, 2, @@ -209,7 +212,8 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( addTryCatchRestartWrapper: true } }, - resources + resources, + taskUtil: undefined }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -239,7 +243,8 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( addTryCatchRestartWrapper: false } }, - resources + resources, + taskUtil: undefined }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -287,7 +292,8 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( addTryCatchRestartWrapper: true } }, - resources + resources, + taskUtil: undefined }]); t.deepEqual(moduleBundlerStub.getCall(3).args, [{ options: { @@ -328,7 +334,8 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( addTryCatchRestartWrapper: false } }, - resources + resources, + taskUtil: undefined }]); t.deepEqual(moduleBundlerStub.getCall(4).args, [{ options: { @@ -386,7 +393,8 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.is(workspace.byGlob.callCount, 2, @@ -503,7 +511,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -535,7 +544,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t moduleNameMapping: {}, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -584,7 +594,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(3).args, [{ options: { @@ -627,7 +638,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t moduleNameMapping: {}, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(4).args, [{ options: { @@ -686,7 +698,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(5).args, [{ options: { @@ -716,7 +729,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(6).args, [{ options: { @@ -742,7 +756,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); }); @@ -846,7 +861,8 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -878,7 +894,8 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined moduleNameMapping: {}, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -927,7 +944,8 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(3).args, [{ options: { @@ -970,7 +988,8 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined moduleNameMapping: {}, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(4).args, [{ options: { @@ -1029,7 +1048,8 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(5).args, [{ options: { @@ -1059,7 +1079,8 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(6).args, [{ options: { @@ -1085,7 +1106,8 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); }); @@ -1194,7 +1216,8 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -1224,7 +1247,8 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -1250,7 +1274,8 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.is(workspace.byGlob.callCount, 2, @@ -1370,7 +1395,8 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -1400,7 +1426,8 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -1426,7 +1453,8 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.is(workspace.byGlob.callCount, 2, @@ -1549,7 +1577,8 @@ test.serial("generateLibraryPreload with excludes", async (t) => { ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.is(workspace.byGlob.callCount, 2, @@ -1614,7 +1643,8 @@ test.serial("generateLibraryPreload with invalid excludes", async (t) => { ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.is(log.warn.callCount, 2, "log.warn should be called twice"); @@ -1737,7 +1767,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi }, targetUi5CoreVersion: "2.0.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -1769,7 +1800,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi moduleNameMapping: {}, targetUi5CoreVersion: "2.0.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -1818,7 +1850,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi }, targetUi5CoreVersion: "2.0.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(3).args, [{ options: { @@ -1861,7 +1894,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi moduleNameMapping: {}, targetUi5CoreVersion: "2.0.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(4).args, [{ options: { @@ -1920,7 +1954,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi }, targetUi5CoreVersion: "2.0.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(5).args, [{ options: { @@ -1950,7 +1985,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi }, targetUi5CoreVersion: "2.0.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(6).args, [{ options: { @@ -1976,6 +2012,7 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi }, targetUi5CoreVersion: "2.0.0" }, - resources + resources, + taskUtil }]); }); From 31c2bca846c55897a70ea5784aeecbc8d799d077 Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Tue, 2 Jul 2024 15:49:49 +0300 Subject: [PATCH 7/9] Move applyDefaults to external util & adjust tests --- lib/processors/bundlers/moduleBundler.js | 26 +- lib/tasks/bundlers/generateBundle.js | 7 +- .../bundlers/generateComponentPreload.js | 6 +- lib/tasks/bundlers/generateLibraryPreload.js | 4 +- .../bundlers/generateStandaloneAppBundle.js | 33 +- .../utils/applyDefaultsToBundleDefinition.js | 31 ++ test/lib/tasks/bundlers/generateBundle.js | 18 +- .../bundlers/generateComponentPreload.js | 40 +- .../tasks/bundlers/generateLibraryPreload.js | 495 +++++++++++++----- .../bundlers/generateStandaloneAppBundle.js | 62 ++- 10 files changed, 511 insertions(+), 211 deletions(-) create mode 100644 lib/tasks/bundlers/utils/applyDefaultsToBundleDefinition.js diff --git a/lib/processors/bundlers/moduleBundler.js b/lib/processors/bundlers/moduleBundler.js index a1c9f1703..09120a843 100644 --- a/lib/processors/bundlers/moduleBundler.js +++ b/lib/processors/bundlers/moduleBundler.js @@ -153,8 +153,7 @@ export default function({resources, taskUtil, options: { ignoreMissingModules: false }, bundleOptions); - // Apply defaults without modifying the passed object - bundleDefinition = applyDefaultsToBundleDefinition(bundleDefinition, taskUtil); + // bundleDefinition's defaults get applied in the corresponding standard tasks const pool = new LocatorResourcePool({ ignoreMissingModules: bundleOptions.ignoreMissingModules @@ -196,26 +195,3 @@ export default function({resources, taskUtil, options: { })); }); } - -function applyDefaultsToBundleDefinition(bundleDefinition, taskUtil) { - bundleDefinition.sections = bundleDefinition?.sections?.map((section) => { - const defaultValues = { - resolve: false, - resolveConditional: false, - renderer: false, - sort: true, - declareRawModules: false, - }; - - // Since specVersion: 4.0 "require" section starts loading asynchronously. - // If specVersion cannot be determined, the latest spec is taken into account. - // This is a breaking change in specVersion: 4.0 - if (section.mode === "require" && (!taskUtil || taskUtil.getProject().getSpecVersion().gte("4.0"))) { - defaultValues.async = true; - } - - return Object.assign(defaultValues, section); - }); - - return bundleDefinition; -} diff --git a/lib/tasks/bundlers/generateBundle.js b/lib/tasks/bundlers/generateBundle.js index 92b0a6058..996e516e1 100644 --- a/lib/tasks/bundlers/generateBundle.js +++ b/lib/tasks/bundlers/generateBundle.js @@ -1,4 +1,5 @@ import moduleBundler from "../../processors/bundlers/moduleBundler.js"; +import {applyDefaultsToBundleDefinition} from "./utils/applyDefaultsToBundleDefinition.js"; import createModuleNameMapping from "./utils/createModuleNameMapping.js"; import ReaderCollectionPrioritized from "@ui5/fs/ReaderCollectionPrioritized"; @@ -96,14 +97,16 @@ export default async function({ } const coreVersion = taskUtil?.getProject("sap.ui.core")?.getVersion(); return combo.byGlob("/resources/**/*.{js,json,xml,html,properties,library,js.map}").then((resources) => { - const options = {bundleDefinition, bundleOptions}; + const options = { + bundleDefinition: applyDefaultsToBundleDefinition(bundleDefinition, taskUtil), bundleOptions + }; if (!optimize && taskUtil) { options.moduleNameMapping = createModuleNameMapping({resources, taskUtil}); } if (coreVersion) { options.targetUi5CoreVersion = coreVersion; } - return moduleBundler({options, resources, taskUtil}).then((bundles) => { + return moduleBundler({options, resources}).then((bundles) => { return Promise.all(bundles.map(({bundle, sourceMap} = {}) => { if (!bundle) { // Skip empty bundles diff --git a/lib/tasks/bundlers/generateComponentPreload.js b/lib/tasks/bundlers/generateComponentPreload.js index 351608ce8..d593d09a5 100644 --- a/lib/tasks/bundlers/generateComponentPreload.js +++ b/lib/tasks/bundlers/generateComponentPreload.js @@ -1,5 +1,6 @@ import path from "node:path"; import moduleBundler from "../../processors/bundlers/moduleBundler.js"; +import {applyDefaultsToBundleDefinition} from "./utils/applyDefaultsToBundleDefinition.js"; import {getLogger} from "@ui5/logger"; const log = getLogger("builder:tasks:bundlers:generateComponentPreload"); import {negateFilters} from "../../lbt/resources/ResourceFilterList.js"; @@ -148,7 +149,7 @@ export default async function({ return Promise.all(bundleDefinitions.filter(Boolean).map((bundleDefinition) => { log.verbose(`Generating ${bundleDefinition.name}...`); const options = { - bundleDefinition, + bundleDefinition: applyDefaultsToBundleDefinition(bundleDefinition, taskUtil), bundleOptions: { ignoreMissingModules: true, optimize: true @@ -159,8 +160,7 @@ export default async function({ } return moduleBundler({ resources, - options, - taskUtil + options }); })); }) diff --git a/lib/tasks/bundlers/generateLibraryPreload.js b/lib/tasks/bundlers/generateLibraryPreload.js index f40179877..ca6515b9b 100644 --- a/lib/tasks/bundlers/generateLibraryPreload.js +++ b/lib/tasks/bundlers/generateLibraryPreload.js @@ -1,6 +1,7 @@ import {getLogger} from "@ui5/logger"; const log = getLogger("builder:tasks:bundlers:generateLibraryPreload"); import moduleBundler from "../../processors/bundlers/moduleBundler.js"; +import {applyDefaultsToBundleDefinition} from "./utils/applyDefaultsToBundleDefinition.js"; import {negateFilters} from "../../lbt/resources/ResourceFilterList.js"; import createModuleNameMapping from "./utils/createModuleNameMapping.js"; @@ -265,7 +266,8 @@ export default async function({workspace, taskUtil, options: {skipBundles = [], if (coreVersion) { options.targetUi5CoreVersion = coreVersion; } - return moduleBundler({options, resources, taskUtil}); + options.bundleDefinition = applyDefaultsToBundleDefinition(options.bundleDefinition, taskUtil); + return moduleBundler({options, resources}); }; return nonDbgWorkspace.byGlob("/**/*.{js,json,xml,html,properties,library,js.map}").then(async (resources) => { diff --git a/lib/tasks/bundlers/generateStandaloneAppBundle.js b/lib/tasks/bundlers/generateStandaloneAppBundle.js index bb8b8cb27..8cf08d3d7 100644 --- a/lib/tasks/bundlers/generateStandaloneAppBundle.js +++ b/lib/tasks/bundlers/generateStandaloneAppBundle.js @@ -2,6 +2,7 @@ import {getLogger} from "@ui5/logger"; const log = getLogger("builder:tasks:bundlers:generateStandaloneAppBundle"); import ReaderCollectionPrioritized from "@ui5/fs/ReaderCollectionPrioritized"; import moduleBundler from "../../processors/bundlers/moduleBundler.js"; +import {applyDefaultsToBundleDefinition} from "./utils/applyDefaultsToBundleDefinition.js"; import createModuleNameMapping from "./utils/createModuleNameMapping.js"; function getBundleDefinition(config) { @@ -139,24 +140,30 @@ export default async function({workspace, dependencies, taskUtil, options}) { } const bundleOptions = { - bundleDefinition: getBundleDefinition({ - name: "sap-ui-custom.js", - filters, - namespace, - preloadSection: true - }) + bundleDefinition: applyDefaultsToBundleDefinition( + getBundleDefinition({ + name: "sap-ui-custom.js", + filters, + namespace, + preloadSection: true, + }), + taskUtil + ), }; const bundleDbgOptions = { - bundleDefinition: getBundleDefinition({ - name: "sap-ui-custom-dbg.js", - filters, - namespace - }), + bundleDefinition: applyDefaultsToBundleDefinition( + getBundleDefinition({ + name: "sap-ui-custom-dbg.js", + filters, + namespace, + }), + taskUtil + ), bundleOptions: { - optimize: false + optimize: false, }, - moduleNameMapping: unoptimizedModuleNameMapping + moduleNameMapping: unoptimizedModuleNameMapping, }; if (coreVersion) { diff --git a/lib/tasks/bundlers/utils/applyDefaultsToBundleDefinition.js b/lib/tasks/bundlers/utils/applyDefaultsToBundleDefinition.js new file mode 100644 index 000000000..e2463b827 --- /dev/null +++ b/lib/tasks/bundlers/utils/applyDefaultsToBundleDefinition.js @@ -0,0 +1,31 @@ +/** + * Applies default values to bundleDefinitions + * + * @param {module:@ui5/builder/processors/bundlers/moduleBundler~ModuleBundleDefinition} bundleDefinition Module + * bundle definition + * @param {@ui5/project/build/helpers/TaskUtil|object} [taskUtil] TaskUtil + * + * @returns {module:@ui5/builder/processors/bundlers/moduleBundler~ModuleBundleDefinition} + */ +export function applyDefaultsToBundleDefinition(bundleDefinition, taskUtil) { + bundleDefinition.sections = bundleDefinition?.sections?.map((section) => { + const defaultValues = { + resolve: false, + resolveConditional: false, + renderer: false, + sort: true, + declareRawModules: false, + }; + + // Since specVersion: 4.0 "require" section starts loading asynchronously. + // If specVersion cannot be determined, the latest spec is taken into account. + // This is a breaking change in specVersion: 4.0 + if (section.mode === "require" && (!taskUtil || taskUtil.getProject().getSpecVersion().gte("4.0"))) { + defaultValues.async = true; + } + + return Object.assign(defaultValues, section); + }); + + return bundleDefinition; +} diff --git a/test/lib/tasks/bundlers/generateBundle.js b/test/lib/tasks/bundlers/generateBundle.js index d2f63a1f0..3546fb96d 100644 --- a/test/lib/tasks/bundlers/generateBundle.js +++ b/test/lib/tasks/bundlers/generateBundle.js @@ -98,8 +98,7 @@ test.serial("generateBundle: No taskUtil, no bundleOptions", async (t) => { bundleDefinition, bundleOptions: undefined }, - resources, - taskUtil: undefined + resources }]); t.is(combo.byGlob.callCount, 1, @@ -172,8 +171,7 @@ test.serial("generateBundle: No bundleOptions, with taskUtil", async (t) => { bundleOptions: undefined, targetUi5CoreVersion: "1.120.0", }, - resources, - taskUtil + resources }]); t.is(combo.byGlob.callCount, 0, @@ -294,8 +292,7 @@ test.serial("generateBundle: bundleOptions: optimize=false, with taskUtil", asyn }, targetUi5CoreVersion: "1.120.0", }, - resources, - taskUtil + resources }]); t.is(combo.byGlob.callCount, 0, @@ -418,8 +415,7 @@ test.serial("generateBundle: bundleOptions: sourceMap=false, with taskUtil", asy bundleOptions, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.is(combo.byGlob.callCount, 0, @@ -517,8 +513,7 @@ test.serial("generateBundle: Empty bundle (skipIfEmpty=true)", async (t) => { bundleOptions, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.is(combo.byGlob.callCount, 0, @@ -645,8 +640,7 @@ test.serial("generateBundle: No bundleOptions, with taskUtil, UI5 Version >= 2", bundleOptions: undefined, targetUi5CoreVersion: "2.0.0", }, - resources, - taskUtil + resources }]); t.is(combo.byGlob.callCount, 0, diff --git a/test/lib/tasks/bundlers/generateComponentPreload.js b/test/lib/tasks/bundlers/generateComponentPreload.js index c68a5cd36..68e4f9ae2 100644 --- a/test/lib/tasks/bundlers/generateComponentPreload.js +++ b/test/lib/tasks/bundlers/generateComponentPreload.js @@ -88,6 +88,8 @@ test.serial("generateComponentPreload - one namespace", async (t) => { renderer: false, resolve: false, resolveConditional: false, + declareRawModules: false, + sort: true } ] }, @@ -96,8 +98,7 @@ test.serial("generateComponentPreload - one namespace", async (t) => { ignoreMissingModules: true } }, - resources, - taskUtil: undefined + resources }]); t.is(byGlob.callCount, 1, @@ -181,6 +182,8 @@ test.serial("generateComponentPreload - one namespace - excludes", async (t) => renderer: false, resolve: false, resolveConditional: false, + declareRawModules: false, + sort: true } ] }, @@ -189,8 +192,7 @@ test.serial("generateComponentPreload - one namespace - excludes", async (t) => ignoreMissingModules: true } }, - resources, - taskUtil: undefined + resources }]); t.is(byGlob.callCount, 1, @@ -287,6 +289,8 @@ test.serial("generateComponentPreload - one namespace - excludes w/o namespace", renderer: false, resolve: false, resolveConditional: false, + declareRawModules: false, + sort: true } ] }, @@ -295,8 +299,7 @@ test.serial("generateComponentPreload - one namespace - excludes w/o namespace", ignoreMissingModules: true } }, - resources, - taskUtil + resources }]); t.is(byGlob.callCount, 1, @@ -409,6 +412,8 @@ test.serial("generateComponentPreload - multiple namespaces - excludes", async ( renderer: false, resolve: false, resolveConditional: false, + declareRawModules: false, + sort: true } ] }, @@ -417,8 +422,7 @@ test.serial("generateComponentPreload - multiple namespaces - excludes", async ( ignoreMissingModules: true } }, - resources, - taskUtil: undefined + resources }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -451,6 +455,8 @@ test.serial("generateComponentPreload - multiple namespaces - excludes", async ( renderer: false, resolve: false, resolveConditional: false, + declareRawModules: false, + sort: true } ] }, @@ -459,8 +465,7 @@ test.serial("generateComponentPreload - multiple namespaces - excludes", async ( ignoreMissingModules: true } }, - resources, - taskUtil: undefined + resources }]); t.is(byGlob.callCount, 1, @@ -596,6 +601,8 @@ test.serial("generateComponentPreload - nested namespaces - excludes", async (t) renderer: false, resolve: false, resolveConditional: false, + declareRawModules: false, + sort: true, } ] }, @@ -604,8 +611,7 @@ test.serial("generateComponentPreload - nested namespaces - excludes", async (t) ignoreMissingModules: true } }, - resources, - taskUtil: undefined + resources }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -646,6 +652,8 @@ test.serial("generateComponentPreload - nested namespaces - excludes", async (t) renderer: false, resolve: false, resolveConditional: false, + declareRawModules: false, + sort: true } ] }, @@ -654,8 +662,7 @@ test.serial("generateComponentPreload - nested namespaces - excludes", async (t) ignoreMissingModules: true } }, - resources, - taskUtil: undefined + resources }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -689,6 +696,8 @@ test.serial("generateComponentPreload - nested namespaces - excludes", async (t) renderer: false, resolve: false, resolveConditional: false, + declareRawModules: false, + sort: true } ] }, @@ -697,8 +706,7 @@ test.serial("generateComponentPreload - nested namespaces - excludes", async (t) ignoreMissingModules: true } }, - resources, - taskUtil: undefined + resources }]); t.is(log.warn.callCount, 1, "log.warn should be called once"); diff --git a/test/lib/tasks/bundlers/generateLibraryPreload.js b/test/lib/tasks/bundlers/generateLibraryPreload.js index ec1ef8113..552643c65 100644 --- a/test/lib/tasks/bundlers/generateLibraryPreload.js +++ b/test/lib/tasks/bundlers/generateLibraryPreload.js @@ -71,9 +71,11 @@ test.serial("generateLibraryPreload", async (t) => { "!my/lib/**/*.support.js", ], mode: "preload", - renderer: true, resolve: false, + sort: true, resolveConditional: false, + renderer: true, + declareRawModules: false, } ] }, @@ -82,8 +84,7 @@ test.serial("generateLibraryPreload", async (t) => { ignoreMissingModules: true } }, - resources, - taskUtil: undefined + resources }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -103,6 +104,8 @@ test.serial("generateLibraryPreload", async (t) => { renderer: false, resolve: false, resolveConditional: false, + sort: true, + declareRawModules: false } ] }, @@ -112,8 +115,7 @@ test.serial("generateLibraryPreload", async (t) => { skipIfEmpty: true } }, - resources, - taskUtil: undefined + resources }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -129,6 +131,8 @@ test.serial("generateLibraryPreload", async (t) => { renderer: false, resolve: false, resolveConditional: false, + declareRawModules: false, + sort: true, } ] }, @@ -138,8 +142,7 @@ test.serial("generateLibraryPreload", async (t) => { skipIfEmpty: true } }, - resources, - taskUtil: undefined + resources }]); t.is(workspace.byGlob.callCount, 2, @@ -189,6 +192,9 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( mode: "raw", resolve: true, sort: true, + resolveConditional: false, + renderer: false, + declareRawModules: false, declareModules: false }, { @@ -196,13 +202,23 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( filters: [ "sap/ui/core/Core.js" ], - resolve: true + resolve: true, + sort: true, + resolveConditional: false, + renderer: false, + declareRawModules: false, }, { mode: "require", filters: [ "sap/ui/core/Core.js" - ] + ], + async: true, + resolve: false, + sort: true, + resolveConditional: false, + renderer: false, + declareRawModules: false, } ] }, @@ -212,8 +228,7 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( addTryCatchRestartWrapper: true } }, - resources, - taskUtil: undefined + resources }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -227,13 +242,22 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( mode: "raw", resolve: true, sort: true, - declareModules: false + declareModules: false, + resolveConditional: false, + renderer: false, + declareRawModules: false, }, { mode: "require", filters: [ "sap/ui/core/Core.js" - ] + ], + async: true, + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true } ] }, @@ -243,8 +267,7 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( addTryCatchRestartWrapper: false } }, - resources, - taskUtil: undefined + resources }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -260,7 +283,12 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( "sap/ui/thirdparty/jquery.js", "sap/ui/thirdparty/jquery/*", "sap/ui/thirdparty/jqueryui/*" - ] + ], + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true, }, { filters: [ @@ -269,20 +297,33 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( mode: "raw", resolve: true, sort: true, - declareModules: false + declareModules: false, + declareRawModules: false, + renderer: false, + resolveConditional: false, }, { mode: "preload", filters: [ "sap/ui/core/Core.js" ], - resolve: true + resolve: true, + resolveConditional: false, + sort: true, + renderer: false, + declareRawModules: false, }, { mode: "require", filters: [ "sap/ui/core/Core.js" - ] + ], + async: true, + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true, } ] }, @@ -292,8 +333,7 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( addTryCatchRestartWrapper: true } }, - resources, - taskUtil: undefined + resources }]); t.deepEqual(moduleBundlerStub.getCall(3).args, [{ options: { @@ -309,7 +349,12 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( "sap/ui/thirdparty/jquery.js", "sap/ui/thirdparty/jquery/*", "sap/ui/thirdparty/jqueryui/*" - ] + ], + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true, }, { filters: [ @@ -318,13 +363,22 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( mode: "raw", resolve: true, sort: true, - declareModules: false + declareModules: false, + resolveConditional: false, + renderer: false, + declareRawModules: false, }, { mode: "require", filters: [ "sap/ui/core/Core.js" - ] + ], + async: true, + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true, } ] }, @@ -334,8 +388,7 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( addTryCatchRestartWrapper: false } }, - resources, - taskUtil: undefined + resources }]); t.deepEqual(moduleBundlerStub.getCall(4).args, [{ options: { @@ -349,6 +402,10 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( ], mode: "provided", resolve: true, + resolveConditional: false, + sort: true, + renderer: false, + declareRawModules: false, }, { filters: [ @@ -385,6 +442,8 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( renderer: true, resolve: false, resolveConditional: false, + sort: true, + declareRawModules: false, } ] }, @@ -393,8 +452,7 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( ignoreMissingModules: true } }, - resources, - taskUtil: undefined + resources }]); t.is(workspace.byGlob.callCount, 2, @@ -428,6 +486,7 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t return { toString: () => "0.1", lte: () => true, + gte: sinon.stub().withArgs("4.0").returns(false) }; }, getVersion: () => "1.120.0" @@ -487,20 +546,32 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t mode: "raw", resolve: true, sort: true, - declareModules: false + declareModules: false, + resolveConditional: false, + renderer: false, + declareRawModules: false, }, { mode: "preload", filters: [ "sap/ui/core/Core.js" ], - resolve: true + resolve: true, + sort: true, + resolveConditional: false, + renderer: false, + declareRawModules: false, }, { mode: "require", filters: [ "sap/ui/core/Core.js" - ] + ], + resolve: false, + sort: true, + resolveConditional: false, + renderer: false, + declareRawModules: false, } ] }, @@ -511,8 +582,7 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t }, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -524,15 +594,23 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t "ui5loader-autoconfig.js" ], mode: "raw", + declareRawModules: false, resolve: true, sort: true, - declareModules: false + declareModules: false, + renderer: false, + resolveConditional: false, }, { mode: "require", filters: [ "sap/ui/core/Core.js" - ] + ], + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true, } ] }, @@ -544,8 +622,7 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t moduleNameMapping: {}, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -561,7 +638,12 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t "sap/ui/thirdparty/jquery.js", "sap/ui/thirdparty/jquery/*", "sap/ui/thirdparty/jqueryui/*" - ] + ], + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true, }, { filters: [ @@ -570,20 +652,32 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t mode: "raw", resolve: true, sort: true, - declareModules: false + declareModules: false, + declareRawModules: false, + renderer: false, + resolveConditional: false, }, { mode: "preload", filters: [ "sap/ui/core/Core.js" ], - resolve: true + resolve: true, + declareRawModules: false, + renderer: false, + resolveConditional: false, + sort: true, }, { mode: "require", filters: [ "sap/ui/core/Core.js" - ] + ], + renderer: false, + declareRawModules: false, + resolve: false, + resolveConditional: false, + sort: true, } ] }, @@ -594,8 +688,7 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t }, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(3).args, [{ options: { @@ -611,22 +704,35 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t "sap/ui/thirdparty/jquery.js", "sap/ui/thirdparty/jquery/*", "sap/ui/thirdparty/jqueryui/*" - ] + ], + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true, }, { filters: [ "ui5loader-autoconfig.js" ], mode: "raw", + declareModules: false, + declareRawModules: false, + renderer: false, resolve: true, + resolveConditional: false, sort: true, - declareModules: false }, { mode: "require", filters: [ "sap/ui/core/Core.js" - ] + ], + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true, } ] }, @@ -638,8 +744,7 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t moduleNameMapping: {}, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(4).args, [{ options: { @@ -652,7 +757,11 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t "sap/ui/core/Core.js", ], mode: "provided", + declareRawModules: false, + renderer: false, resolve: true, + resolveConditional: false, + sort: true }, { filters: [ @@ -689,6 +798,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t renderer: true, resolve: false, resolveConditional: false, + sort: true, + declareRawModules: false, } ] }, @@ -698,8 +809,7 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t }, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(5).args, [{ options: { @@ -719,6 +829,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t renderer: false, resolve: false, resolveConditional: false, + declareRawModules: false, + sort: true } ] }, @@ -729,8 +841,7 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t }, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(6).args, [{ options: { @@ -746,6 +857,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t renderer: false, resolve: false, resolveConditional: false, + declareRawModules: false, + sort: true } ] }, @@ -756,8 +869,7 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t }, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); }); @@ -784,6 +896,7 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined return { toString: () => "0.1", lte: () => true, + gte: sinon.stub().withArgs("4.0").returns(false) }; }, getVersion: () => "1.120.0" @@ -835,22 +948,34 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined "ui5loader-autoconfig.js" ], mode: "raw", + declareModules: false, + declareRawModules: false, resolve: true, sort: true, - declareModules: false + resolveConditional: false, + renderer: false, }, { mode: "preload", filters: [ "sap/ui/core/Core.js" ], - resolve: true + resolve: true, + sort: true, + resolveConditional: false, + renderer: false, + declareRawModules: false, }, { mode: "require", filters: [ "sap/ui/core/Core.js" - ] + ], + resolve: false, + sort: true, + resolveConditional: false, + renderer: false, + declareRawModules: false, } ] }, @@ -861,8 +986,7 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined }, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -876,13 +1000,21 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined mode: "raw", resolve: true, sort: true, - declareModules: false + declareModules: false, + declareRawModules: false, + renderer: false, + resolveConditional: false, }, { mode: "require", filters: [ "sap/ui/core/Core.js" - ] + ], + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true, } ] }, @@ -894,8 +1026,7 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined moduleNameMapping: {}, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -911,7 +1042,12 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined "sap/ui/thirdparty/jquery.js", "sap/ui/thirdparty/jquery/*", "sap/ui/thirdparty/jqueryui/*" - ] + ], + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true, }, { filters: [ @@ -920,20 +1056,32 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined mode: "raw", resolve: true, sort: true, - declareModules: false + declareModules: false, + declareRawModules: false, + renderer: false, + resolveConditional: false, }, { mode: "preload", filters: [ "sap/ui/core/Core.js" ], - resolve: true + resolve: true, + declareRawModules: false, + renderer: false, + resolveConditional: false, + sort: true, }, { mode: "require", filters: [ "sap/ui/core/Core.js" - ] + ], + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true, } ] }, @@ -944,8 +1092,7 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined }, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(3).args, [{ options: { @@ -961,7 +1108,12 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined "sap/ui/thirdparty/jquery.js", "sap/ui/thirdparty/jquery/*", "sap/ui/thirdparty/jqueryui/*" - ] + ], + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true, }, { filters: [ @@ -970,13 +1122,21 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined mode: "raw", resolve: true, sort: true, - declareModules: false + declareModules: false, + declareRawModules: false, + renderer: false, + resolveConditional: false, }, { mode: "require", filters: [ "sap/ui/core/Core.js" - ] + ], + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true, } ] }, @@ -988,8 +1148,7 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined moduleNameMapping: {}, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(4).args, [{ options: { @@ -1003,6 +1162,10 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined ], mode: "provided", resolve: true, + resolveConditional: false, + sort: true, + renderer: false, + declareRawModules: false, }, { filters: [ @@ -1039,6 +1202,8 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined renderer: true, resolve: false, resolveConditional: false, + declareRawModules: false, + sort: true } ] }, @@ -1048,8 +1213,7 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined }, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(5).args, [{ options: { @@ -1069,6 +1233,8 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined renderer: false, resolve: false, resolveConditional: false, + sort: true, + declareRawModules: false } ] }, @@ -1079,8 +1245,7 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined }, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(6).args, [{ options: { @@ -1096,6 +1261,8 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined renderer: false, resolve: false, resolveConditional: false, + declareRawModules: false, + sort: true } ] }, @@ -1106,8 +1273,7 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined }, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); }); @@ -1133,6 +1299,7 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio return { toString: () => "2.4", lte: () => false, + gte: sinon.stub().withArgs("4.0").returns(false) }; }, getVersion: () => "1.120.0" @@ -1171,6 +1338,10 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio ], mode: "provided", resolve: true, + sort: true, + resolveConditional: false, + renderer: false, + declareRawModules: false, }, { filters: [ @@ -1204,9 +1375,11 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio "!sap/ui/core/plugin/LessSupport.js", ], mode: "preload", - renderer: true, resolve: false, + sort: true, resolveConditional: false, + renderer: true, + declareRawModules: false, } ] }, @@ -1216,8 +1389,7 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio }, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -1237,6 +1409,8 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio renderer: false, resolve: false, resolveConditional: false, + declareRawModules: false, + sort: true } ] }, @@ -1247,8 +1421,7 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio }, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -1261,9 +1434,11 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio "!sap/ui/core/**/*-preload.support.js" ], mode: "preload", + declareRawModules: false, renderer: false, resolve: false, resolveConditional: false, + sort: true } ] }, @@ -1274,8 +1449,7 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio }, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.is(workspace.byGlob.callCount, 2, @@ -1309,6 +1483,7 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio return { toString: () => "2.6", lte: () => false, + gte: sinon.stub().withArgs("4.0").returns(false) }; }, getVersion: () => "1.120.0" @@ -1350,6 +1525,10 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio ], mode: "provided", resolve: true, + sort: true, + resolveConditional: false, + renderer: false, + declareRawModules: false, }, { filters: [ @@ -1383,9 +1562,11 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio "!sap/ui/core/plugin/LessSupport.js", ], mode: "preload", - renderer: true, resolve: false, + sort: true, resolveConditional: false, + renderer: true, + declareRawModules: false, } ] }, @@ -1395,8 +1576,7 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio }, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -1416,6 +1596,8 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio renderer: false, resolve: false, resolveConditional: false, + sort: true, + declareRawModules: false } ] }, @@ -1426,8 +1608,7 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio }, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -1440,9 +1621,11 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio "!sap/ui/core/**/*-preload.support.js" ], mode: "preload", + declareRawModules: false, renderer: false, resolve: false, resolveConditional: false, + sort: true } ] }, @@ -1453,8 +1636,7 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio }, targetUi5CoreVersion: "1.120.0" }, - resources, - taskUtil + resources }]); t.is(workspace.byGlob.callCount, 2, @@ -1485,6 +1667,7 @@ test.serial("Error: Failed to resolve non-debug name", async (t) => { return { toString: () => "0.1", lte: () => true, + gte: sinon.stub().withArgs("4.0").returns(false) }; }, getVersion: () => "1.120.0" @@ -1569,6 +1752,8 @@ test.serial("generateLibraryPreload with excludes", async (t) => { renderer: true, resolve: false, resolveConditional: false, + declareRawModules: false, + sort: true } ] }, @@ -1577,8 +1762,7 @@ test.serial("generateLibraryPreload with excludes", async (t) => { ignoreMissingModules: true } }, - resources, - taskUtil: undefined + resources }]); t.is(workspace.byGlob.callCount, 2, @@ -1632,9 +1816,11 @@ test.serial("generateLibraryPreload with invalid excludes", async (t) => { "!my/lib/**/*.support.js" ], mode: "preload", - renderer: true, resolve: false, + sort: true, resolveConditional: false, + renderer: true, + declareRawModules: false, } ] }, @@ -1643,8 +1829,7 @@ test.serial("generateLibraryPreload with invalid excludes", async (t) => { ignoreMissingModules: true } }, - resources, - taskUtil: undefined + resources }]); t.is(log.warn.callCount, 2, "log.warn should be called twice"); @@ -1684,6 +1869,7 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi return { toString: () => "0.1", lte: () => true, + gte: sinon.stub().withArgs("4.0").returns(false) }; }, getVersion: () => "2.0.0" @@ -1743,20 +1929,32 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi mode: "raw", resolve: true, sort: true, - declareModules: false + declareModules: false, + declareRawModules: false, + renderer: false, + resolveConditional: false }, { mode: "preload", filters: [ "sap/ui/core/Core.js" ], - resolve: true + resolve: true, + declareRawModules: false, + renderer: false, + resolveConditional: false, + sort: true }, { mode: "require", filters: [ "sap/ui/core/Core.js" - ] + ], + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true } ] }, @@ -1767,8 +1965,7 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi }, targetUi5CoreVersion: "2.0.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -1782,13 +1979,21 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi mode: "raw", resolve: true, sort: true, - declareModules: false + declareModules: false, + resolveConditional: false, + renderer: false, + declareRawModules: false, }, { mode: "require", filters: [ "sap/ui/core/Core.js" - ] + ], + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true, } ] }, @@ -1800,8 +2005,7 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi moduleNameMapping: {}, targetUi5CoreVersion: "2.0.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -1817,7 +2021,12 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi "sap/ui/thirdparty/jquery.js", "sap/ui/thirdparty/jquery/*", "sap/ui/thirdparty/jqueryui/*" - ] + ], + resolve: false, + sort: true, + resolveConditional: false, + renderer: false, + declareRawModules: false, }, { filters: [ @@ -1826,20 +2035,32 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi mode: "raw", resolve: true, sort: true, - declareModules: false + declareModules: false, + resolveConditional: false, + renderer: false, + declareRawModules: false, }, { mode: "preload", filters: [ "sap/ui/core/Core.js" ], - resolve: true + resolve: true, + sort: true, + resolveConditional: false, + renderer: false, + declareRawModules: false, }, { mode: "require", filters: [ "sap/ui/core/Core.js" - ] + ], + resolve: false, + sort: true, + resolveConditional: false, + renderer: false, + declareRawModules: false, } ] }, @@ -1850,8 +2071,7 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi }, targetUi5CoreVersion: "2.0.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(3).args, [{ options: { @@ -1867,7 +2087,12 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi "sap/ui/thirdparty/jquery.js", "sap/ui/thirdparty/jquery/*", "sap/ui/thirdparty/jqueryui/*" - ] + ], + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true, }, { filters: [ @@ -1876,13 +2101,21 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi mode: "raw", resolve: true, sort: true, - declareModules: false + declareModules: false, + resolveConditional: false, + renderer: false, + declareRawModules: false, }, { mode: "require", filters: [ "sap/ui/core/Core.js" - ] + ], + resolve: false, + sort: true, + resolveConditional: false, + renderer: false, + declareRawModules: false, } ] }, @@ -1894,8 +2127,7 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi moduleNameMapping: {}, targetUi5CoreVersion: "2.0.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(4).args, [{ options: { @@ -1909,6 +2141,10 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi ], mode: "provided", resolve: true, + sort: true, + resolveConditional: false, + renderer: false, + declareRawModules: false, }, { filters: [ @@ -1942,9 +2178,11 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi "!sap/ui/core/plugin/LessSupport.js", ], mode: "preload", - renderer: true, resolve: false, + sort: true, resolveConditional: false, + renderer: true, + declareRawModules: false, } ] }, @@ -1954,8 +2192,7 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi }, targetUi5CoreVersion: "2.0.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(5).args, [{ options: { @@ -1972,9 +2209,11 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi "!sap/ui/core/designtime/**/*.xml" ], mode: "preload", - renderer: false, resolve: false, + sort: true, resolveConditional: false, + renderer: false, + declareRawModules: false, } ] }, @@ -1985,8 +2224,7 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi }, targetUi5CoreVersion: "2.0.0" }, - resources, - taskUtil + resources }]); t.deepEqual(moduleBundlerStub.getCall(6).args, [{ options: { @@ -1999,9 +2237,11 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi "!sap/ui/core/**/*-preload.support.js" ], mode: "preload", - renderer: false, resolve: false, + sort: true, resolveConditional: false, + renderer: false, + declareRawModules: false, } ] }, @@ -2012,7 +2252,6 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi }, targetUi5CoreVersion: "2.0.0" }, - resources, - taskUtil + resources }]); }); diff --git a/test/lib/tasks/bundlers/generateStandaloneAppBundle.js b/test/lib/tasks/bundlers/generateStandaloneAppBundle.js index a5a4e16d6..9c0b60354 100644 --- a/test/lib/tasks/bundlers/generateStandaloneAppBundle.js +++ b/test/lib/tasks/bundlers/generateStandaloneAppBundle.js @@ -11,7 +11,15 @@ test.beforeEach(async (t) => { return params.reader; }); t.context.taskUtil = { - getProject: sinon.stub(), + getProject: () => ({ + getSpecVersion: () => { + return { + toString: () => "0.1", + gte: sinon.stub().withArgs("4.0").returns(false), + }; + }, + getVersion: () => "1.120.0" + }), getTag: sinon.stub().returns(false), setTag: sinon.stub(), clearTag: sinon.stub(), @@ -267,6 +275,9 @@ test.serial("execute module bundler with taskUtil", async (t) => { mode: "raw", resolve: true, sort: true, + declareRawModules: false, + renderer: false, + resolveConditional: false }, { filters: [ @@ -281,15 +292,23 @@ test.serial("execute module bundler with taskUtil", async (t) => { renderer: true, resolve: true, resolveConditional: true, + declareRawModules: false, + sort: true }, { filters: [ "sap/ui/core/Core.js", ], mode: "require", + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true, }, ], - } + }, + targetUi5CoreVersion: "1.120.0" }); t.is(moduleBundlerStub.getCall(1).args.length, 1); @@ -316,12 +335,20 @@ test.serial("execute module bundler with taskUtil", async (t) => { mode: "raw", resolve: true, sort: true, + resolveConditional: false, + renderer: false, + declareRawModules: false }, { filters: [ "sap/ui/core/Core.js", ], mode: "require", + renderer: false, + resolve: false, + resolveConditional: false, + sort: true, + declareRawModules: false, }, ], }, @@ -330,7 +357,8 @@ test.serial("execute module bundler with taskUtil", async (t) => { }, moduleNameMapping: { "/resources/ponyPath2-dbg.js": "ponyPath2.js" - } + }, + targetUi5CoreVersion: "1.120.0" }); }); @@ -342,12 +370,6 @@ test.serial("execute module bundler with taskUtil, UI5 Version >= 2", async (t) const dummyResource3 = createDummyResource("3.js"); const dummyResource4 = createDummyResource("4-dbg.js"); - taskUtil.getProject = () => { - return { - getVersion: () => "2.0.0" - }; - }; - taskUtil.getTag.withArgs(dummyResource1, taskUtil.STANDARD_TAGS.HasDebugVariant).returns(true); taskUtil.getTag.withArgs(dummyResource2, taskUtil.STANDARD_TAGS.IsDebugVariant).returns(true); @@ -434,6 +456,9 @@ test.serial("execute module bundler with taskUtil, UI5 Version >= 2", async (t) mode: "raw", resolve: true, sort: true, + declareRawModules: false, + renderer: false, + resolveConditional: false, }, { filters: [ @@ -448,16 +473,23 @@ test.serial("execute module bundler with taskUtil, UI5 Version >= 2", async (t) renderer: true, resolve: true, resolveConditional: true, + declareRawModules: false, + sort: true }, { filters: [ "sap/ui/core/Core.js", ], mode: "require", + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true, }, ], }, - targetUi5CoreVersion: "2.0.0" + targetUi5CoreVersion: "1.120.0" }); t.is(moduleBundlerStub.getCall(1).args.length, 1); @@ -484,12 +516,20 @@ test.serial("execute module bundler with taskUtil, UI5 Version >= 2", async (t) mode: "raw", resolve: true, sort: true, + declareRawModules: false, + renderer: false, + resolveConditional: false, }, { filters: [ "sap/ui/core/Core.js", ], mode: "require", + declareRawModules: false, + renderer: false, + resolve: false, + resolveConditional: false, + sort: true, }, ], }, @@ -499,7 +539,7 @@ test.serial("execute module bundler with taskUtil, UI5 Version >= 2", async (t) moduleNameMapping: { "/resources/ponyPath2-dbg.js": "ponyPath2.js" }, - targetUi5CoreVersion: "2.0.0" + targetUi5CoreVersion: "1.120.0" }); }); From 50a1979c530524c2de15ecbe5e900e3d1fe6c9ee Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Tue, 2 Jul 2024 15:51:13 +0300 Subject: [PATCH 8/9] Remove redundant tests --- test/lib/processors/bundlers/moduleBundler.js | 104 ------------------ 1 file changed, 104 deletions(-) diff --git a/test/lib/processors/bundlers/moduleBundler.js b/test/lib/processors/bundlers/moduleBundler.js index 5b0d0d938..99138a074 100644 --- a/test/lib/processors/bundlers/moduleBundler.js +++ b/test/lib/processors/bundlers/moduleBundler.js @@ -574,107 +574,3 @@ test.serial("Verbose Logging", async (t) => { ["bundleDefinition: " + JSON.stringify(bundleDefinition, null, 2)]); t.deepEqual(log.verbose.getCall(2).args, ["bundleOptions: " + JSON.stringify(effectiveBundleOptions, null, 2)]); }); - -test.serial("Bundle with async require", async (t) => { - const {processor, Resource, LocatorResourcePool, pool, BundleBuilder, builder, log} = t.context; - - const resources = []; - const bundleDefinition = { - sections: [{ - name: "custom-module.js", - mode: "require" - }] - }; - const bundleOptions = { - ignoreMissingModules: "foo" - }; - - const effectiveBundleOptions = { - // Defaults - "optimize": true, - "sourceMap": true, - "decorateBootstrapModule": false, - "addTryCatchRestartWrapper": false, - "numberOfParts": 1, - - "ignoreMissingModules": "foo" - }; - - const createdBundle = { - name: "BundleName.js", - content: "Bundle Content", - bundleInfo: { - "Bundle": "Info" - } - }; - - builder.createBundle.resolves(createdBundle); - - const expectedOutputResource = { - "output": "resource" - }; - Resource.returns(expectedOutputResource); - - const outputResources = await processor({ - resources, - options: { - bundleDefinition, - bundleOptions - } - }); - - t.deepEqual(outputResources, [{bundle: expectedOutputResource}]); - t.is(outputResources[0].bundle, expectedOutputResource); - - t.is(LocatorResourcePool.callCount, 1, "LocatorResourcePool should be created once"); - t.true(LocatorResourcePool.calledWithNew()); - t.deepEqual(LocatorResourcePool.getCall(0).args, [ - { - ignoreMissingModules: "foo" // as defined in bundleOptions - } - ], "LocatorResourcePool should be called with expected args"); - - t.is(BundleBuilder.callCount, 1, "BundleBuilder should be created once"); - t.true(BundleBuilder.calledWithNew()); - t.is(BundleBuilder.getCall(0).args.length, 2); - t.is(BundleBuilder.getCall(0).args[0], pool, "LocatorResourcePool should be called with pool"); - t.is(BundleBuilder.getCall(0).args[1], undefined, "Target UI5 Version is not defined"); - - t.is(pool.prepare.callCount, 1, "pool.prepare should be called once"); - t.is(pool.prepare.getCall(0).args.length, 2); - t.is(pool.prepare.getCall(0).args[0], resources, "pool.prepare should be called with resources"); - t.is(pool.prepare.getCall(0).args[1], undefined, "pool.prepare should be called without moduleNameMapping"); - - t.is(builder.createBundle.callCount, 1, "builder.createBundle should be called once"); - t.is(builder.createBundle.getCall(0).args.length, 2); - t.deepEqual( - builder.createBundle.getCall(0).args[0], { - sections: [{ - resolve: false, - resolveConditional: false, - renderer: false, - sort: true, - declareRawModules: false, - async: true, - name: "custom-module.js", - mode: "require", - }], - }, - "bundleDefinition should be called with async require flag" - ); - t.deepEqual(builder.createBundle.getCall(0).args[1], effectiveBundleOptions, - "builder.createBundle should be called with bundleOptions"); - t.true(builder.createBundle.calledAfter(pool.prepare), - "builder.createBundle should be called before pool.prepare"); - - t.is(Resource.callCount, 1, "One resource should be created"); - t.true(Resource.calledWithNew()); - t.deepEqual(Resource.getCall(0).args, [ - { - path: "/resources/BundleName.js", - string: "Bundle Content" - } - ], "Resource should be called with expected args"); - - t.is(log.verbose.callCount, 0, "log.verbose is not called when verbose level is not enabled"); -}); From 7916be77b09a41a848bb02cf34aaf07be60a67b0 Mon Sep 17 00:00:00 2001 From: Merlin Beutlberger Date: Fri, 5 Jul 2024 13:24:48 +0200 Subject: [PATCH 9/9] Remove unused parameter from moduleBundler --- lib/processors/bundlers/moduleBundler.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/processors/bundlers/moduleBundler.js b/lib/processors/bundlers/moduleBundler.js index 09120a843..028a9d3b8 100644 --- a/lib/processors/bundlers/moduleBundler.js +++ b/lib/processors/bundlers/moduleBundler.js @@ -140,7 +140,7 @@ const log = getLogger("builder:processors:bundlers:moduleBundler"); * Promise resolving with module bundle resources */ /* eslint-enable max-len */ -export default function({resources, taskUtil, options: { +export default function({resources, options: { bundleDefinition, bundleOptions, moduleNameMapping, targetUi5CoreVersion }}) { // Apply defaults without modifying the passed object