From b462141e1b2d385959aff2314b7aca65164bb3a2 Mon Sep 17 00:00:00 2001 From: Merlin Beutlberger Date: Wed, 30 Sep 2026 15:09:41 +0200 Subject: [PATCH 1/2] fix(server): Generate library manifest from project source reader generateLibraryManifest matched the library resources feeding the manifest via project.getReader(). That reader reflects build output and workspace modifications, which conflicts with the versionInfo-middleware that relies on the _source_ reader and can't see any already generated manifest.json files. The versionInfo-middleware tasks the generateLibraryManifest to produce the missing manifest.json files, but the internal createManifestProcessor (which looks at the latest internal build result) refuses to produce the files since they already exist. This leads to missing information in the final sap-ui-version.json. Fix: Use project.getSourceReader(), which always reads the project's original sources regardless of any build result. --- .../server/lib/middleware/helper/generateLibraryManifest.js | 2 +- .../lib/server/middleware/helper/generateLibraryManifest.js | 4 ++-- packages/server/test/lib/server/middleware/versionInfo.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/server/lib/middleware/helper/generateLibraryManifest.js b/packages/server/lib/middleware/helper/generateLibraryManifest.js index dfafe25d340..bf05d1063f5 100644 --- a/packages/server/lib/middleware/helper/generateLibraryManifest.js +++ b/packages/server/lib/middleware/helper/generateLibraryManifest.js @@ -2,7 +2,7 @@ import createManifestProcessor from "@ui5/builder/processors/manifestCreator"; export default async function generateLibraryManifest(middlewareUtil, dotLibResource) { const project = dotLibResource.getProject(); - const libResources = await project.getReader().byGlob( + const libResources = await project.getSourceReader().byGlob( `/resources/**/*.{js,json,library,less,css,theming,theme,properties}`); const res = await createManifestProcessor({ diff --git a/packages/server/test/lib/server/middleware/helper/generateLibraryManifest.js b/packages/server/test/lib/server/middleware/helper/generateLibraryManifest.js index 65b24463f63..1ffdc070fa1 100644 --- a/packages/server/test/lib/server/middleware/helper/generateLibraryManifest.js +++ b/packages/server/test/lib/server/middleware/helper/generateLibraryManifest.js @@ -11,7 +11,7 @@ test("Generate library manifest", async (t) => { const project = { getNamespace: () => "sap/foo", getVersion: () => "1.0.0", - getReader: () => reader + getSourceReader: () => reader }; const middlewareUtilMock = { getProject: () => project @@ -92,7 +92,7 @@ test("Expected manifestCreator parameters", async (t) => { const project = { getNamespace: () => "sap/foo", getVersion: () => "1.0.0", - getReader: () => adapter + getSourceReader: () => adapter }; const middlewareUtilMock = { getProject: () => project diff --git a/packages/server/test/lib/server/middleware/versionInfo.js b/packages/server/test/lib/server/middleware/versionInfo.js index f011bddee8a..e3ca031ee95 100644 --- a/packages/server/test/lib/server/middleware/versionInfo.js +++ b/packages/server/test/lib/server/middleware/versionInfo.js @@ -129,7 +129,7 @@ function createDepWorkspace(names, oOptions = { }, oOptions); const workspace = resourceFactory.createAdapter(oOptions); // Connect the project back to the created workspace, this allows for accessing the reader via a resources project - project.getReader = () => workspace; + project.getSourceReader = () => workspace; return workspace; } From 1fec4775bbac64a6dd0fd9f36d3c6051693ee2be Mon Sep 17 00:00:00 2001 From: Merlin Beutlberger Date: Thu, 1 Oct 2026 13:53:36 +0200 Subject: [PATCH 2/2] test: Increase AVA timeout for all projects Fixes ocasional timeouts when running many tests in parallel --- ava.common.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/ava.common.config.js b/ava.common.config.js index 05a6baafd03..de51048fca9 100644 --- a/ava.common.config.js +++ b/ava.common.config.js @@ -22,4 +22,5 @@ export default { suppressLog ], workerThreads: false, + timeout: "2m", };