/** * Check lib version satisfies lib version requirements * * @param versions e.g. <code>{"junit:junit": "4.12", "com.android.support:support-v4": "25.3.1"}</code> * @param requirements e.g. <code>{"junit:junit": "4.12", "com.android.support:support-v4": ">=25"}</code> * @return verify result * @see Result */ public static Result satisfies(Map<String, String> versions, Map<String, String> requirements) { for (Map.Entry<String, String> entry : requirements.entrySet()) { final String lib = entry.getKey(); final String requirement = entry.getValue(); final String version = versions.get(lib); if (version == null) { // lib not exist return Result.createFailResult(lib, String.format(Locale.ENGLISH, "required lib [%s] not exist", lib)); } if (!new Version(version).satisfies(requirement)) { // lib version requirement not satisfied return Result.createFailResult(lib, String.format(Locale.ENGLISH, "required lib [%s:%s] not satisfies [%s:%s]", lib, version, lib, requirement)); } } return Result.createSuccessResult(); }
@Test public void testSatisfiesEqual() throws Exception { { Version version = new Version("27.0.0"); Assert.assertTrue(version.satisfies("27.0.0")); } { Version version = new Version("27.0.0"); Assert.assertTrue(version.satisfies("27.0")); } { Version version = new Version("27.0.0"); Assert.assertTrue(version.satisfies("27")); } { Version version = new Version("27.0.0"); Assert.assertFalse(version.satisfies("27.0.1")); } { Version version = new Version("27.0.0-SNAPSHOT"); Assert.assertTrue(version.satisfies("27.0.0-SNAPSHOT")); Assert.assertFalse(version.satisfies("27.0.1-SNAPSHOT")); Assert.assertFalse(version.satisfies("27.0.0")); } }
Assert.assertFalse(version.satisfies("=27.0.0")); Assert.assertFalse(version.satisfies("==27.0.0")); Assert.assertFalse(version.satisfies(">27.0.0")); Assert.assertFalse(version.satisfies("<27.0.0")); Assert.assertFalse(version.satisfies("<=27.0.0")); Assert.assertFalse(version.satisfies("!=27.0.0")); Assert.assertFalse(version.satisfies("27.0.0-prerelease"));
Assert.assertTrue(version.satisfies(">=27.0.0")); Assert.assertTrue(version.satisfies(">=27.0")); Assert.assertTrue(version.satisfies(">=27")); Assert.assertFalse(version.satisfies(">=27.1.0")); Assert.assertTrue(version.satisfies(">=26.9999999.9999999.99999999.99999999999")); Assert.assertTrue(version.satisfies(">=20161018")); Assert.assertFalse(version.satisfies("20161018")); Assert.assertFalse(version.satisfies("27.0.0-SNAPSHOT")); Assert.assertTrue(version.satisfies(">=27.0.0-SNAPSHOT")); Assert.assertFalse(version.satisfies("27.0.0-SNAPSHOT")); Assert.assertTrue(version.satisfies(">=27.0.0-SNAPSHOT")); Assert.assertTrue(version.satisfies(">=28.0.0-beta.2")); Assert.assertTrue(version.satisfies(">=28.0.0-beta.2+build.3")); Assert.assertTrue(version.satisfies(">=28.0.0-alpha1")); Assert.assertTrue(version.satisfies(">=28.0.0-beta01")); Assert.assertTrue(version.satisfies(">=28.0.0-rc02"));
/** * Check lib version satisfies lib version requirements * * @param versions e.g. <code>{"junit:junit": "4.12", "com.android.support:support-v4": "25.3.1"}</code> * @param requirements e.g. <code>{"junit:junit": "4.12", "com.android.support:support-v4": ">=25"}</code> * @return verify result * @see Result */ public static Result satisfies(Map<String, String> versions, Map<String, String> requirements) { for (Map.Entry<String, String> entry : requirements.entrySet()) { final String lib = entry.getKey(); final String requirement = entry.getValue(); final String version = versions.get(lib); if (version == null) { // lib not exist return Result.createFailResult(lib, String.format(Locale.ENGLISH, "required lib [%s] not exist", lib)); } if (!new Version(version).satisfies(requirement)) { // lib version requirement not satisfied return Result.createFailResult(lib, String.format(Locale.ENGLISH, "required lib [%s:%s] not satisfies [%s:%s]", lib, version, lib, requirement)); } } return Result.createSuccessResult(); }