Skip to content

Commit 72f3a01

Browse files
committed
[INTERNAL] AbstractResolver: Throw more precise error when requested framework version is known to be unavailable
If the requested framework version is lower than what is the lowest version currently available in the public npm registry, throw a more precise error message if it can't be resolved.
1 parent 16894e1 commit 72f3a01

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

lib/ui5Framework/AbstractResolver.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,16 @@ class AbstractResolver {
171171
const versions = await this.fetchAllVersions({ui5HomeDir, cwd});
172172
const resolvedVersion = semver.maxSatisfying(versions, spec);
173173
if (!resolvedVersion) {
174+
if (this.name === "Sapui5Resolver" && semver.lt(spec, "1.76.0")) {
175+
throw new Error(`Could not resolve framework version ${version}. ` +
176+
`Note that SAPUI5 framework libraries can only be consumed by the UI5 Tooling ` +
177+
`starting with SAPUI5 v1.76.0`);
178+
} else
179+
if (this.name === "Openui5Resolver" && semver.lt(spec, "1.52.5")) {
180+
throw new Error(`Could not resolve framework version ${version}. ` +
181+
`Note that OpenUI5 framework libraries can only be consumed by the UI5 Tooling ` +
182+
`starting with OpenUI5 v1.52.5`);
183+
}
174184
throw new Error(`Could not resolve framework version ${version}`);
175185
}
176186
return resolvedVersion;

test/lib/ui5framework/AbstractResolver.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -444,3 +444,53 @@ test.serial("AbstractResolver: Static resolveVersion throws error for '~1.75.0'"
444444

445445
t.is(fetchAllVersionsStub.callCount, 0, "fetchAllVersions should not be called");
446446
});
447+
448+
test.serial("AbstractResolver: Static resolveVersion throws error for version not found", async (t) => {
449+
sinon.stub(MyResolver, "fetchAllVersions")
450+
.returns(["1.75.0", "1.75.1", "1.76.0"]);
451+
452+
const error = await t.throwsAsync(MyResolver.resolveVersion("1.74.0", {
453+
cwd: "/cwd",
454+
ui5HomeDir: "/ui5HomeDir"
455+
}));
456+
457+
t.is(error.message, `Could not resolve framework version 1.74.0`);
458+
});
459+
460+
test.serial(
461+
"AbstractResolver: Static resolveVersion throws error for version lower than lowest OpenUI5 version", async (t) => {
462+
class Openui5Resolver extends AbstractResolver {
463+
static async fetchAllVersions() {}
464+
}
465+
466+
sinon.stub(Openui5Resolver, "fetchAllVersions")
467+
.returns(["1.75.0", "1.75.1", "1.76.0"]);
468+
469+
const error = await t.throwsAsync(Openui5Resolver.resolveVersion("1.50.0", {
470+
cwd: "/cwd",
471+
ui5HomeDir: "/ui5HomeDir"
472+
}));
473+
474+
t.is(error.message,
475+
`Could not resolve framework version 1.50.0. Note that OpenUI5 framework libraries can only be ` +
476+
`consumed by the UI5 Tooling starting with OpenUI5 v1.52.5`);
477+
});
478+
479+
test.serial(
480+
"AbstractResolver: Static resolveVersion throws error for version lower than lowest SAPUI5 version", async (t) => {
481+
class Sapui5Resolver extends AbstractResolver {
482+
static async fetchAllVersions() {}
483+
}
484+
485+
sinon.stub(Sapui5Resolver, "fetchAllVersions")
486+
.returns(["1.76.0", "1.76.1", "1.90.0"]);
487+
488+
const error = await t.throwsAsync(Sapui5Resolver.resolveVersion("1.75.0", {
489+
cwd: "/cwd",
490+
ui5HomeDir: "/ui5HomeDir"
491+
}));
492+
493+
t.is(error.message,
494+
`Could not resolve framework version 1.75.0. Note that SAPUI5 framework libraries can only be ` +
495+
`consumed by the UI5 Tooling starting with SAPUI5 v1.76.0`);
496+
});

0 commit comments

Comments
 (0)