diff options
author | Tor Norbye <tnorbye@google.com> | 2014-10-18 03:48:03 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2014-10-18 03:48:03 +0000 |
commit | 15851850cb5ef9cbb2f210c92d12b3db22528687 (patch) | |
tree | b8c4a15547493f5ce10a5a152ee534eec20db37c | |
parent | e5c6c20d1439481e9f8198ebfdd95ff50f9f2676 (diff) | |
parent | 6bccc94e9ce06cdedcb674aaed4eee3173f4405b (diff) | |
download | base-15851850cb5ef9cbb2f210c92d12b3db22528687.tar.gz |
Merge "77594: Studio offers gson 2.3.0 making build fail (correct version is 2.3)" into studio-1.0-dev automerge: 3a089a9
automerge: 6bccc94
* commit '6bccc94e9ce06cdedcb674aaed4eee3173f4405b':
77594: Studio offers gson 2.3.0 making build fail (correct version is 2.3)
3 files changed, 40 insertions, 6 deletions
diff --git a/lint/cli/src/test/java/com/android/tools/lint/checks/GradleDetectorTest.java b/lint/cli/src/test/java/com/android/tools/lint/checks/GradleDetectorTest.java index 8d373a6b11..282192e6d4 100644 --- a/lint/cli/src/test/java/com/android/tools/lint/checks/GradleDetectorTest.java +++ b/lint/cli/src/test/java/com/android/tools/lint/checks/GradleDetectorTest.java @@ -138,7 +138,7 @@ public class GradleDetectorTest extends AbstractCheckTest { + "build.gradle:5: Warning: Old buildToolsVersion 19.0.0; recommended version is 19.1.0 or later [GradleDependency]\n" + " buildToolsVersion \"19.0.0\"\n" + " ~~~~~~~~~~~~~~~~~~~~~~~~~~\n" - + "build.gradle:24: Warning: A newer version of com.google.guava:guava than 11.0.2 is available: 18.0.0 [GradleDependency]\n" + + "build.gradle:24: Warning: A newer version of com.google.guava:guava than 11.0.2 is available: 18.0 [GradleDependency]\n" + " freeCompile 'com.google.guava:guava:11.0.2'\n" + " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + "build.gradle:25: Warning: A newer version of com.android.support:appcompat-v7 than 13.0.0 is available: 20.0.0 [GradleDependency]\n" @@ -194,7 +194,7 @@ public class GradleDetectorTest extends AbstractCheckTest { + "build.gradle:5: Warning: Old buildToolsVersion 19.0.0; recommended version is 19.1.0 or later [GradleDependency]\n" + " buildToolsVersion \"19.0.0\"\n" + " ~~~~~~~~~~~~~~~~~~~~~~~~~~\n" - + "build.gradle:24: Warning: A newer version of com.google.guava:guava than 11.0.2 is available: 18.0.0 [GradleDependency]\n" + + "build.gradle:24: Warning: A newer version of com.google.guava:guava than 11.0.2 is available: 18.0 [GradleDependency]\n" + " freeCompile 'com.google.guava:guava:11.0.2'\n" + " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + "build.gradle:25: Warning: A newer version of com.android.support:appcompat-v7 than 13.0.0 is available: 20.0.0 [GradleDependency]\n" @@ -217,6 +217,18 @@ public class GradleDetectorTest extends AbstractCheckTest { lintProject("gradle/Dependencies14.gradle=>build.gradle")); } + public void testDependenciesNoMicroVersion() throws Exception { + // Regression test for https://code.google.com/p/android/issues/detail?id=77594 + mEnabled = Collections.singleton(DEPENDENCY); + assertEquals("" + + "build.gradle:13: Warning: A newer version of com.google.code.gson:gson than 2.2 is available: 2.3 [GradleDependency]\n" + + " compile 'com.google.code.gson:gson:2.2'\n" + + " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + + "0 errors, 1 warnings\n", + + lintProject("gradle/DependenciesGson.gradle=>build.gradle")); + } + public void testPaths() throws Exception { mEnabled = Collections.singleton(PATH); assertEquals("" @@ -374,7 +386,7 @@ public class GradleDetectorTest extends AbstractCheckTest { "{\"responseHeader\":{\"status\":0,\"QTime\":1,\"params\":{\"fl\":\"id,g,a,v,p,ec,timestamp,tags\",\"sort\":\"score desc,timestamp desc,g asc,a asc,v desc\",\"indent\":\"off\",\"q\":\"g:\\\"com.google.guava\\\" AND a:\\\"guava\\\"\",\"core\":\"gav\",\"wt\":\"json\",\"version\":\"2.2\"}},\"response\":{\"numFound\":38,\"start\":0,\"docs\":[{\"id\":\"com.google.guava:guava:18.0-rc1\",\"g\":\"com.google.guava\",\"a\":\"guava\",\"v\":\"18.0-rc1\",\"p\":\"bundle\",\"timestamp\":1407266204000,\"tags\":[\"spec\",\"libraries\",\"classes\",\"google\",\"code\",\"expanded\",\"much\",\"include\",\"annotation\",\"dependency\",\"that\",\"more\",\"utility\",\"guava\",\"javax\",\"only\",\"core\",\"suite\",\"collections\"],\"ec\":[\"-javadoc.jar\",\"-sources.jar\",\".jar\",\"-site.jar\",\".pom\"]},{\"id\":\"com.google.guava:guava:17.0\",\"g\":\"com.google.guava\",\"a\":\"guava\",\"v\":\"17.0\",\"p\":\"bundle\",\"timestamp\":1398199666000,\"tags\":[\"spec\",\"libraries\",\"classes\",\"google\",\"code\",\"expanded\",\"much\",\"include\",\"annotation\",\"dependency\",\"that\",\"more\",\"utility\",\"guava\",\"javax\",\"only\",\"core\",\"suite\",\"collections\"],\"ec\":[\"-javadoc.jar\",\"-sources.jar\",\".jar\",\"-site.jar\",\".pom\"]},{\"id\":\"com.google.guava:guava:17.0-rc2\",\"g\":\"com.google.guava\",\"a\":\"guava\",\"v\":\"17.0-rc2\",\"p\":\"bundle\",\"timestamp\":1397162341000,\"tags\":[\"spec\",\"libraries\",\"classes\",\"google\",\"code\",\"expanded\",\"much\",\"include\",\"annotation\",\"dependency\",\"that\",\"more\",\"utility\",\"guava\",\"javax\",\"only\",\"core\",\"suite\",\"collections\"],\"ec\":[\"-javadoc.jar\",\"-sources.jar\",\".jar\",\"-site.jar\",\".pom\"]},{\"id\":\"com.google.guava:guava:17.0-rc1\",\"g\":\"com.google.guava\",\"a\":\"guava\",\"v\":\"17.0-rc1\",\"p\":\"bundle\",\"timestamp\":1396985408000,\"tags\":[\"spec\",\"libraries\",\"classes\",\"google\",\"code\",\"expanded\",\"much\",\"include\",\"annotation\",\"dependency\",\"that\",\"more\",\"utility\",\"guava\",\"javax\",\"only\",\"core\",\"suite\",\"collections\"],\"ec\":[\"-javadoc.jar\",\"-sources.jar\",\".jar\",\"-site.jar\",\".pom\"]},{\"id\":\"com.google.guava:guava:16.0.1\",\"g\":\"com.google.guava\",\"a\":\"guava\",\"v\":\"16.0.1\",\"p\":\"bundle\",\"timestamp\":1391467528000,\"tags\":[\"spec\",\"libraries\",\"classes\",\"google\",\"code\",\"expanded\",\"much\",\"include\",\"annotation\",\"dependency\",\"that\",\"more\",\"utility\",\"guava\",\"javax\",\"only\",\"core\",\"suite\",\"collections\"],\"ec\":[\"-javadoc.jar\",\"-sources.jar\",\".jar\",\"-site.jar\",\".pom\"]},{\"id\":\"com.google.guava:guava:16.0\",\"g\":\"com.google.guava\",\"a\":\"guava\",\"v\":\"16.0\",\"p\":\"bundle\",\"timestamp\":1389995088000,\"tags\":[\"spec\",\"libraries\",\"classes\",\"google\",\"code\",\"expanded\",\"much\",\"include\",\"annotation\",\"dependency\",\"that\",\"more\",\"utility\",\"guava\",\"javax\",\"only\",\"core\",\"suite\",\"collections\"],\"ec\":[\"-javadoc.jar\",\"-sources.jar\",\".jar\",\"-site.jar\",\".pom\"]},{\"id\":\"com.google.guava:guava:16.0-rc1\",\"g\":\"com.google.guava\",\"a\":\"guava\",\"v\":\"16.0-rc1\",\"p\":\"bundle\",\"timestamp\":1387495574000,\"tags\":[\"spec\",\"libraries\",\"classes\",\"google\",\"code\",\"expanded\",\"much\",\"include\",\"annotation\",\"dependency\",\"that\",\"more\",\"utility\",\"guava\",\"javax\",\"only\",\"core\",\"suite\",\"collections\"],\"ec\":[\"-javadoc.jar\",\"-sources.jar\",\".jar\",\"-site.jar\",\".pom\"]},{\"id\":\"com.google.guava:guava:15.0\",\"g\":\"com.google.guava\",\"a\":\"guava\",\"v\":\"15.0\",\"p\":\"bundle\",\"timestamp\":1378497169000,\"tags\":[\"spec\",\"libraries\",\"classes\",\"google\",\"inject\",\"code\",\"expanded\",\"much\",\"include\",\"annotation\",\"that\",\"more\",\"utility\",\"guava\",\"dependencies\",\"javax\",\"core\",\"suite\",\"collections\"],\"ec\":[\"-javadoc.jar\",\"-sources.jar\",\".jar\",\"-site.jar\",\".pom\",\"-cdi1.0.jar\"]},{\"id\":\"com.google.guava:guava:15.0-rc1\",\"g\":\"com.google.guava\",\"a\":\"guava\",\"v\":\"15.0-rc1\",\"p\":\"bundle\",\"timestamp\":1377542588000,\"tags\":[\"spec\",\"libraries\",\"classes\",\"google\",\"inject\",\"code\",\"expanded\",\"much\",\"include\",\"annotation\",\"that\",\"more\",\"utility\",\"guava\",\"dependencies\",\"javax\",\"core\",\"suite\",\"collections\"],\"ec\":[\"-javadoc.jar\",\"-sources.jar\",\".jar\",\"-site.jar\",\".pom\"]},{\"id\":\"com.google.guava:guava:14.0.1\",\"g\":\"com.google.guava\",\"a\":\"guava\",\"v\":\"14.0.1\",\"p\":\"bundle\",\"timestamp\":1363305439000,\"tags\":[\"spec\",\"libraries\",\"classes\",\"google\",\"inject\",\"code\",\"expanded\",\"much\",\"include\",\"annotation\",\"that\",\"more\",\"utility\",\"guava\",\"dependencies\",\"javax\",\"core\",\"suite\",\"collections\"],\"ec\":[\"-javadoc.jar\",\"-sources.jar\",\".jar\",\"-site.jar\",\".pom\"]}]}}"); assertEquals("" - + "build.gradle:9: Warning: A newer version of com.google.guava:guava than 11.0.2 is available: 17.0.0 [NewerVersionAvailable]\n" + + "build.gradle:9: Warning: A newer version of com.google.guava:guava than 11.0.2 is available: 17.0 [NewerVersionAvailable]\n" + " compile 'com.google.guava:guava:11.0.2'\n" + " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + "build.gradle:10: Warning: A newer version of com.google.guava:guava than 16.0-rc1 is available: 18.0.0-rc1 [NewerVersionAvailable]\n" diff --git a/lint/cli/src/test/java/com/android/tools/lint/checks/data/gradle/DependenciesGson.gradle b/lint/cli/src/test/java/com/android/tools/lint/checks/data/gradle/DependenciesGson.gradle new file mode 100644 index 0000000000..89776f01ca --- /dev/null +++ b/lint/cli/src/test/java/com/android/tools/lint/checks/data/gradle/DependenciesGson.gradle @@ -0,0 +1,14 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 19 + + defaultConfig { + minSdkVersion 15 + targetSdkVersion 17 + } +} + +dependencies { + compile 'com.google.code.gson:gson:2.2' +} diff --git a/lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/GradleDetector.java b/lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/GradleDetector.java index 26f95ca394..285af40534 100644 --- a/lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/GradleDetector.java +++ b/lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/GradleDetector.java @@ -736,6 +736,7 @@ public class GradleDetector extends Detector implements Detector.GradleScanner { FullRevision version = null; Issue issue = DEPENDENCY; + boolean includeMicro = true; if ("com.android.tools.build".equals(dependency.getGroupId()) && "gradle".equals(dependency.getArtifactId())) { FullRevision v = FullRevision.parseRevision(GRADLE_PLUGIN_RECOMMENDED_VERSION); @@ -747,9 +748,11 @@ public class GradleDetector extends Detector implements Detector.GradleScanner { } else if ("com.google.guava".equals(dependency.getGroupId()) && "guava".equals(dependency.getArtifactId())) { version = getNewerRevision(dependency, 18, 0, 0); + includeMicro = false; } else if ("com.google.code.gson".equals(dependency.getGroupId()) && "gson".equals(dependency.getArtifactId())) { version = getNewerRevision(dependency, 2, 3, 0); + includeMicro = false; } else if ("org.apache.httpcomponents".equals(dependency.getGroupId()) && "httpclient".equals(dependency.getArtifactId())) { version = getNewerRevision(dependency, 4, 3, 5); @@ -766,14 +769,19 @@ public class GradleDetector extends Detector implements Detector.GradleScanner { } if (version != null) { - String message = getNewerVersionAvailableMessage(dependency, version); + String message = getNewerVersionAvailableMessage(dependency, version, includeMicro); report(context, cookie, issue, message); } } private static String getNewerVersionAvailableMessage(GradleCoordinate dependency, - FullRevision version) { - return getNewerVersionAvailableMessage(dependency, version.toString()); + FullRevision version, boolean includeMicro) { + String versionString = includeMicro || version.getMicro() != 0 || version.isPreview() + ? version.toString() + // We can't use version#toShortString because that will turn 18.0 into 18 + // which we don't want. + : (version.getMajor() + "." + version.getMinor()); + return getNewerVersionAvailableMessage(dependency, versionString); } private static String getNewerVersionAvailableMessage(GradleCoordinate dependency, |