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

View File

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