summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2014-10-18 03:48:03 +0000
committerandroid-build-merger <android-build-merger@google.com>2014-10-18 03:48:03 +0000
commit15851850cb5ef9cbb2f210c92d12b3db22528687 (patch)
treeb8c4a15547493f5ce10a5a152ee534eec20db37c
parente5c6c20d1439481e9f8198ebfdd95ff50f9f2676 (diff)
parent6bccc94e9ce06cdedcb674aaed4eee3173f4405b (diff)
downloadbase-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)
-rw-r--r--lint/cli/src/test/java/com/android/tools/lint/checks/GradleDetectorTest.java18
-rw-r--r--lint/cli/src/test/java/com/android/tools/lint/checks/data/gradle/DependenciesGson.gradle14
-rw-r--r--lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/GradleDetector.java14
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,