1
0
Fork 0

Match Foxx versions properly

This commit is contained in:
Alan Plum 2016-05-03 14:06:22 +02:00
parent 0ef698a28b
commit 1f17514b70
No known key found for this signature in database
GPG Key ID: 8ED72A9A323B6EFD
2 changed files with 18 additions and 13 deletions

View File

@ -284,26 +284,31 @@ function extractMaxVersion(matchEngine, versionDoc) {
let serverVersion = plainServerVersion();
let versions = Object.keys(versionDoc);
versions.sort(semver.compare).reverse();
let fallback;
for (let version of versions) {
if (matchEngine) {
let info = versionDoc[version];
if (info.engines && info.engines.arangodb) {
if (semver.satisfies(serverVersion, info.engines.arangodb)) {
return version;
}
}
else if (matchEngine !== "match-engines") {
let info = versionDoc[version];
if (!info.engines || Object.keys(info.engines).length === 0) {
// No known compatibility requirements indicated: use as last resort
if (!matchEngine) {
return version;
}
if (!fallback) {
fallback = version;
}
continue;
}
else {
let versionRange = info.engines.arangodb;
if (!versionRange || semver.outside(serverVersion, versionRange, '<')) {
// Explicitly backwards-incompatible with the server version: ignore
continue;
}
if (!matchEngine || semver.satisfies(serverVersion, versionRange)) {
return version;
}
}
return undefined;
return fallback;
}
////////////////////////////////////////////////////////////////////////////////

View File

@ -39,7 +39,7 @@ describe("Foxx Manager", function() {
});
it("should fetch apps from the appstore", function() {
var list = FoxxManager.availableJson("match-engines");
var list = FoxxManager.availableJson(true);
var i, app, l = list.length;
expect(l).toBeGreaterThan(0);
for (i = 0; i < l; ++i) {
@ -57,7 +57,7 @@ describe("Foxx Manager", function() {
FoxxManager.uninstall(mount, { force: true });
} catch(e) {
}
var list = FoxxManager.availableJson("match-engines");
var list = FoxxManager.availableJson(true);
var i, app, l = list.length;
for (i = 0; i < l; ++i) {
app = list[i];