diff --git a/GECKOInstaller.m b/GECKOInstaller.m index a870b981..55f85aff 100644 --- a/GECKOInstaller.m +++ b/GECKOInstaller.m @@ -10,7 +10,7 @@ sourceDir = fileparts(which(mfilename)); paths = GECKOInstaller.GetFilteredSubPaths(sourceDir, GECKOInstaller.FILE_FILTER); - GECKOInstaller.checkRAVENversion('2.9.1'); % Minimum RAVEN version + GECKOInstaller.checkRAVENversion('3.0.0'); % Minimum RAVEN version % Check unique function names if ~exist("checkFunctionUniqueness.m") @@ -72,7 +72,10 @@ function checkRAVENversion(minmVer) if strcmp(currVer,'develop') printOrange('WARNING: Cannot determine your RAVEN version as it is in a development branch.\n'); else - wrongVersion = GECKOInstaller.isOlderVersion(currVer, minmVer); + % A pre-release suffix of the installed RAVEN (3.0.0b2) is + % ignored: it satisfies the minimum 3.0.0. + wrongVersion = GECKOInstaller.isOlderVersion( ... + GECKOInstaller.releaseOf(currVer), minmVer); end catch warning(['Cannot find RAVEN Toolbox in the MATLAB path, or the version ' ... @@ -136,6 +139,13 @@ function checkRAVENversion(minmVer) end end + function release = releaseOf(ver) + % releaseOf The major.minor.patch part of a version string + % without its pre-release suffix (3.0.0b2 gives 3.0.0). + num = GECKOInstaller.parseVersion(ver); + release = sprintf('%d.%d.%d', num); + end + function [num, isPre] = parseVersion(ver) % parseVersion Leading numbers of major.minor.patch, and % whether the patch number carries a pre-release suffix. diff --git a/test/unit_tests/geckoCoreFunctionTests.m b/test/unit_tests/geckoCoreFunctionTests.m index 6b35794c..09837df6 100644 --- a/test/unit_tests/geckoCoreFunctionTests.m +++ b/test/unit_tests/geckoCoreFunctionTests.m @@ -2410,6 +2410,21 @@ function testGECKOInstallerIsOlderVersion_tc0059(testCase) verifyFalse(testCase, older('4.0.0b1', '4.0.0b2')) end +function testGECKOInstallerIgnoresRavenPrerelease_tc0284(testCase) + % The pre-release suffix of the installed RAVEN is ignored when it is + % compared with the minimum RAVEN version. + older = @(ver, minVer) GECKOInstaller.isOlderVersion( ... + GECKOInstaller.releaseOf(ver), minVer); + verifyEqual(testCase, GECKOInstaller.releaseOf('3.0.0b2'), '3.0.0') + verifyEqual(testCase, GECKOInstaller.releaseOf('3.1'), '3.1.0') + verifyFalse(testCase, older('3.0.0b1', '3.0.0')) + verifyFalse(testCase, older('3.0.0b2', '3.0.0')) + verifyFalse(testCase, older('3.0.0', '3.0.0')) + verifyFalse(testCase, older('3.2.1', '3.0.0')) + verifyTrue(testCase, older('2.9.9', '3.0.0')) + verifyTrue(testCase, older('2.10.0b3', '3.0.0')) +end + function testEcFSEOFSelectsTargetsByCorrelation_tc0100(testCase) % Verifies ecFSEOF classifies a reaction as a target when the absolute % flux correlates with the enforced production flux (default