Skip to content

Commit ba860de

Browse files
committed
[FIX] ui5Framework: Choose correct resolver for snapshot framework version overrides
1 parent aa7d853 commit ba860de

File tree

2 files changed

+117
-3
lines changed

2 files changed

+117
-3
lines changed

lib/graph/helpers/ui5Framework.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ export default {
329329
}
330330

331331
let Resolver;
332-
if (version && version.endsWith("-SNAPSHOT")) {
332+
if (version && version.toLowerCase().endsWith("-snapshot")) {
333333
Resolver = (await import("../../ui5Framework/Sapui5MavenSnapshotResolver.js")).default;
334334
} else if (frameworkName === "OpenUI5") {
335335
Resolver = (await import("../../ui5Framework/Openui5Resolver.js")).default;

test/lib/graph/helpers/ui5Framework.js

Lines changed: 116 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,17 +42,19 @@ test.beforeEach(async (t) => {
4242
t.context.Sapui5ResolverStub.resolveVersion = t.context.Sapui5ResolverResolveVersionStub;
4343

4444
t.context.Sapui5MavenSnapshotResolverInstallStub = sinon.stub();
45-
t.context.Sapui5MavenSnapshotResolver = sinon.stub()
45+
t.context.Sapui5MavenSnapshotResolverStub = sinon.stub()
4646
.callsFake(() => {
4747
return {
4848
install: t.context.Sapui5MavenSnapshotResolverInstallStub
4949
};
5050
});
51+
t.context.Sapui5MavenSnapshotResolverResolveVersionStub = sinon.stub();
52+
t.context.Sapui5MavenSnapshotResolverStub.resolveVersion = t.context.Sapui5MavenSnapshotResolverResolveVersionStub;
5153

5254
t.context.ui5Framework = await esmock.p("../../../../lib/graph/helpers/ui5Framework.js", {
5355
"@ui5/logger": ui5Logger,
5456
"../../../../lib/ui5Framework/Sapui5Resolver.js": t.context.Sapui5ResolverStub,
55-
"../../../../lib/ui5Framework/Sapui5MavenSnapshotResolver.js": t.context.Sapui5MavenSnapshotResolver,
57+
"../../../../lib/ui5Framework/Sapui5MavenSnapshotResolver.js": t.context.Sapui5MavenSnapshotResolverStub,
5658
});
5759
t.context.utils = t.context.ui5Framework._utils;
5860
});
@@ -321,6 +323,118 @@ test.serial("enrichProjectGraph: With versionOverride", async (t) => {
321323
}], "Sapui5Resolver#constructor should be called with expected args");
322324
});
323325

326+
test.serial("enrichProjectGraph: With versionOverride containing snapshot version", async (t) => {
327+
const {
328+
sinon, ui5Framework, utils,
329+
Sapui5MavenSnapshotResolverStub, Sapui5MavenSnapshotResolverResolveVersionStub,
330+
Sapui5MavenSnapshotResolverInstallStub
331+
} = t.context;
332+
333+
const dependencyTree = {
334+
id: "test1",
335+
version: "1.0.0",
336+
path: applicationAPath,
337+
configuration: {
338+
specVersion: "2.0",
339+
type: "application",
340+
metadata: {
341+
name: "application.a"
342+
},
343+
framework: {
344+
name: "SAPUI5",
345+
version: "1.75.0"
346+
}
347+
}
348+
};
349+
350+
const referencedLibraries = ["sap.ui.lib1", "sap.ui.lib2", "sap.ui.lib3"];
351+
const libraryMetadata = {fake: "metadata"};
352+
353+
sinon.stub(utils, "getFrameworkLibrariesFromGraph").resolves(referencedLibraries);
354+
355+
Sapui5MavenSnapshotResolverInstallStub.resolves({libraryMetadata});
356+
357+
Sapui5MavenSnapshotResolverResolveVersionStub.resolves("1.99.9-SNAPSHOT");
358+
359+
const addProjectToGraphStub = sinon.stub();
360+
sinon.stub(utils, "ProjectProcessor")
361+
.callsFake(() => {
362+
return {
363+
addProjectToGraph: addProjectToGraphStub
364+
};
365+
});
366+
367+
const provider = new DependencyTreeProvider({dependencyTree});
368+
const projectGraph = await projectGraphBuilder(provider);
369+
370+
await ui5Framework.enrichProjectGraph(projectGraph, {versionOverride: "1.99-SNAPSHOT"});
371+
372+
t.is(Sapui5MavenSnapshotResolverStub.callCount, 1,
373+
"Sapui5MavenSnapshotResolverStub#constructor should be called once");
374+
t.deepEqual(Sapui5MavenSnapshotResolverStub.getCall(0).args, [{
375+
cacheMode: undefined,
376+
cwd: dependencyTree.path,
377+
version: "1.99.9-SNAPSHOT",
378+
providedLibraryMetadata: undefined
379+
}], "Sapui5Resolver#constructor should be called with expected args");
380+
});
381+
382+
test.serial("enrichProjectGraph: With versionOverride containing latest-snapshot", async (t) => {
383+
const {
384+
sinon, ui5Framework, utils,
385+
Sapui5MavenSnapshotResolverStub, Sapui5MavenSnapshotResolverResolveVersionStub,
386+
Sapui5MavenSnapshotResolverInstallStub
387+
} = t.context;
388+
389+
const dependencyTree = {
390+
id: "test1",
391+
version: "1.0.0",
392+
path: applicationAPath,
393+
configuration: {
394+
specVersion: "2.0",
395+
type: "application",
396+
metadata: {
397+
name: "application.a"
398+
},
399+
framework: {
400+
name: "SAPUI5",
401+
version: "1.75.0"
402+
}
403+
}
404+
};
405+
406+
const referencedLibraries = ["sap.ui.lib1", "sap.ui.lib2", "sap.ui.lib3"];
407+
const libraryMetadata = {fake: "metadata"};
408+
409+
sinon.stub(utils, "getFrameworkLibrariesFromGraph").resolves(referencedLibraries);
410+
411+
Sapui5MavenSnapshotResolverInstallStub.resolves({libraryMetadata});
412+
413+
Sapui5MavenSnapshotResolverResolveVersionStub.resolves("1.99.9-SNAPSHOT");
414+
415+
const addProjectToGraphStub = sinon.stub();
416+
sinon.stub(utils, "ProjectProcessor")
417+
.callsFake(() => {
418+
return {
419+
addProjectToGraph: addProjectToGraphStub
420+
};
421+
});
422+
423+
const provider = new DependencyTreeProvider({dependencyTree});
424+
const projectGraph = await projectGraphBuilder(provider);
425+
426+
await ui5Framework.enrichProjectGraph(projectGraph, {versionOverride: "latest-snapshot"});
427+
428+
t.is(Sapui5MavenSnapshotResolverStub.callCount, 1,
429+
"Sapui5MavenSnapshotResolverStub#constructor should be called once");
430+
t.deepEqual(Sapui5MavenSnapshotResolverStub.getCall(0).args, [{
431+
cacheMode: undefined,
432+
cwd: dependencyTree.path,
433+
version: "1.99.9-SNAPSHOT",
434+
providedLibraryMetadata: undefined
435+
}], "Sapui5Resolver#constructor should be called with expected args");
436+
});
437+
324438
test.serial("enrichProjectGraph shouldn't throw when no framework version and no libraries are provided", async (t) => {
325439
const {ui5Framework, log} = t.context;
326440
const dependencyTree = {

0 commit comments

Comments
 (0)