summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2017-06-15 07:27:26 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2017-06-15 07:27:26 +0000
commitbd618ee42bd5ed2528872410a2bcbb641cb54be0 (patch)
treeb440aa1c8f8740554d064120dd01d9e79b53ba7b
parentaba98d4676dfb7c4ba31f7a894ecda203c8c57a6 (diff)
parent8a4ad19dbeed1aa49785c761e41295e873bfb044 (diff)
downloadplatform_external_doclava-bd618ee42bd5ed2528872410a2bcbb641cb54be0.tar.gz
platform_external_doclava-bd618ee42bd5ed2528872410a2bcbb641cb54be0.tar.bz2
platform_external_doclava-bd618ee42bd5ed2528872410a2bcbb641cb54be0.zip
release-request-f7cf88d3-9ff3-4602-981e-79c555d8aa91-for-git_oc-mr1-release-4102303 snap-temp-L92600000074342209
Change-Id: I8f34da44b07f632b779dd1750f0097f75355a3e2
-rw-r--r--src/com/google/doclava/MethodInfo.java8
-rw-r--r--test/doclava/ApiCheckTest.java84
2 files changed, 75 insertions, 17 deletions
diff --git a/src/com/google/doclava/MethodInfo.java b/src/com/google/doclava/MethodInfo.java
index 47b1978..33197a3 100644
--- a/src/com/google/doclava/MethodInfo.java
+++ b/src/com/google/doclava/MethodInfo.java
@@ -893,6 +893,8 @@ public class MethodInfo extends MemberInfo implements AbstractMethodInfo, Resolv
+ " to " + mInfo.scope());
}
+ // Changing the deprecated annotation is binary- and source-compatible, but
+ // we still need to log the API change.
if (!isDeprecated() == mInfo.isDeprecated()) {
Errors.error(Errors.CHANGED_DEPRECATED, mInfo.position(), "Method "
+ mInfo.prettyQualifiedSignature() + " has changed deprecation state " + isDeprecated()
@@ -900,16 +902,14 @@ public class MethodInfo extends MemberInfo implements AbstractMethodInfo, Resolv
consistent = false;
}
- // see JLS 3 13.4.20 "Adding or deleting a synchronized modifier of a method does not break "
- // "compatibility with existing binaries."
- /*
+ // Changing the synchronized modifier is binary- and source-compatible (see
+ // JLS 3 13.4.20), but we still need to log the API change.
if (mIsSynchronized != mInfo.mIsSynchronized) {
Errors.error(Errors.CHANGED_SYNCHRONIZED, mInfo.position(), "Method " + mInfo.qualifiedName()
+ " has changed 'synchronized' qualifier from " + mIsSynchronized + " to "
+ mInfo.mIsSynchronized);
consistent = false;
}
- */
for (ClassInfo exception : thrownExceptions()) {
if (!mInfo.throwsException(exception)) {
diff --git a/test/doclava/ApiCheckTest.java b/test/doclava/ApiCheckTest.java
index d9f1a07..fb931a9 100644
--- a/test/doclava/ApiCheckTest.java
+++ b/test/doclava/ApiCheckTest.java
@@ -17,26 +17,31 @@
package doclava;
import com.google.doclava.Errors;
-import com.google.doclava.Errors.Error;
import com.google.doclava.Errors.ErrorMessage;
import com.google.doclava.apicheck.ApiCheck;
import com.google.doclava.apicheck.ApiCheck.Report;
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertTrue;
import java.util.Iterator;
-public class ApiCheckTest extends TestCase {
- /**
- * Clear all errors and make sure all future errors will be recorded.
- */
+public class ApiCheckTest {
+
+ @Before
public void setUp() {
+ // Clear all errors and make sure all future errors will be recorded.
Errors.clearErrors();
for (Errors.Error error : Errors.sErrors) {
Errors.setErrorLevel(error.code, Errors.ERROR);
}
}
+ @Test
public void testEquivalentApi() {
String[] args = { "test/api/medium.xml", "test/api/medium.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -44,6 +49,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(report.errors().size(), 0);
}
+ @Test
public void testMethodReturnTypeChanged() {
String[] args = { "test/api/return-type-changed-1.xml", "test/api/return-type-changed-2.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -52,6 +58,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_TYPE, report.errors().iterator().next().error());
}
+ @Test
public void testMethodParameterChanged() {
String[] args = { "test/api/parameter-changed-1.xml", "test/api/parameter-changed-2.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -66,6 +73,7 @@ public class ApiCheckTest extends TestCase {
assertTrue(m2.error().equals(Errors.ADDED_METHOD) || m2.error().equals(Errors.REMOVED_METHOD));
}
+ @Test
public void testConstructorParameterChanged() {
String[] args = { "test/api/parameter-changed-1.xml", "test/api/parameter-changed-3.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -79,6 +87,7 @@ public class ApiCheckTest extends TestCase {
assertTrue(m2.error().equals(Errors.ADDED_METHOD) || m2.error().equals(Errors.REMOVED_METHOD));
}
+ @Test
public void testAddedClass() {
String[] args = { "test/api/simple.xml", "test/api/added-class.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -87,6 +96,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.ADDED_CLASS, report.errors().iterator().next().error());
}
+ @Test
public void testRemovedClass() {
String[] args = { "test/api/added-class.xml", "test/api/simple.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -95,6 +105,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.REMOVED_CLASS, report.errors().iterator().next().error());
}
+ @Test
public void testRemovedDeprecatedClass() {
String[] args = { "test/api/added-deprecated-class.xml", "test/api/simple.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -103,6 +114,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.REMOVED_DEPRECATED_CLASS, report.errors().iterator().next().error());
}
+ @Test
public void testChangedSuper() {
String[] args = { "test/api/simple.xml", "test/api/changed-super.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -111,6 +123,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_SUPERCLASS, report.errors().iterator().next().error());
}
+ @Test
public void testChangedAssignableReturn() {
String[] args = { "test/api/changed-assignable-return-1.xml", "test/api/changed-assignable-return-2.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -118,6 +131,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(0, report.errors().size());
}
+ @Test
public void testInsertedSuper() {
String[] args = { "test/api/inserted-super-1.xml", "test/api/inserted-super-2.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -125,6 +139,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(0, report.errors().size());
}
+ @Test
public void testAddedInterface() {
String[] args = { "test/api/removed-interface.xml", "test/api/medium.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -133,6 +148,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.ADDED_INTERFACE, report.errors().iterator().next().error());
}
+ @Test
public void testRemovedInterface() {
String[] args = { "test/api/medium.xml", "test/api/removed-interface.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -141,6 +157,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.REMOVED_INTERFACE, report.errors().iterator().next().error());
}
+ @Test
public void testChangedAbstractClass() {
String[] args = { "test/api/medium.xml", "test/api/changed-abstract.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -149,6 +166,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_ABSTRACT, report.errors().iterator().next().error());
}
+ @Test
public void testChangedAbstractClass2() {
String[] args = { "test/api/changed-abstract.xml", "test/api/medium.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -157,6 +175,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_ABSTRACT, report.errors().iterator().next().error());
}
+ @Test
public void testChangedAbstractMethod() {
String[] args = { "test/api/medium.xml", "test/api/changed-abstract2.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -165,6 +184,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_ABSTRACT, report.errors().iterator().next().error());
}
+ @Test
public void testChangedAbstractMethod2() {
String[] args = { "test/api/changed-abstract2.xml", "test/api/medium.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -173,6 +193,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_ABSTRACT, report.errors().iterator().next().error());
}
+ @Test
public void testAddedPackage() {
String[] args = { "test/api/medium.xml", "test/api/added-package.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -181,6 +202,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.ADDED_PACKAGE, report.errors().iterator().next().error());
}
+ @Test
public void testRemovedPackage() {
String[] args = { "test/api/added-package.xml", "test/api/medium.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -189,6 +211,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.REMOVED_PACKAGE, report.errors().iterator().next().error());
}
+ @Test
public void testChangedValue() {
String[] args = { "test/api/constants.xml", "test/api/changed-value.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -197,6 +220,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_VALUE, report.errors().iterator().next().error());
}
+ @Test
public void testChangedValue2() {
String[] args = { "test/api/constants.xml", "test/api/changed-value2.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -205,6 +229,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_VALUE, report.errors().iterator().next().error());
}
+ @Test
public void testChangedType() {
String[] args = { "test/api/constants.xml", "test/api/changed-type.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -213,7 +238,8 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_TYPE, report.errors().iterator().next().error());
}
- public void testChangedFinalField() {
+ @Test
+ public void testAddedFinalField() {
String[] args = { "test/api/constants.xml", "test/api/changed-final.xml" };
ApiCheck apiCheck = new ApiCheck();
Report report = apiCheck.checkApi(args);
@@ -221,7 +247,8 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.ADDED_FINAL, report.errors().iterator().next().error());
}
- public void testChangedFinalMethod() {
+ @Test
+ public void testAddedFinalMethod() {
String[] args = { "test/api/constants.xml", "test/api/changed-final2.xml" };
ApiCheck apiCheck = new ApiCheck();
Report report = apiCheck.checkApi(args);
@@ -229,22 +256,27 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.ADDED_FINAL, report.errors().iterator().next().error());
}
- public void testChangedFinalClass() {
+ @Test
+ public void testAddedFinalClass() {
String[] args = { "test/api/constants.xml", "test/api/changed-final3.xml" };
ApiCheck apiCheck = new ApiCheck();
Report report = apiCheck.checkApi(args);
- assertEquals(1, report.errors().size());
+ // One error for the class, one for the constructor, one for the method.
+ assertEquals(3, report.errors().size());
assertEquals(Errors.ADDED_FINAL, report.errors().iterator().next().error());
}
- public void testChangedFinalClass2() {
+ @Test
+ public void testRemovedFinalClass() {
String[] args = { "test/api/changed-final3.xml", "test/api/constants.xml" };
ApiCheck apiCheck = new ApiCheck();
Report report = apiCheck.checkApi(args);
- assertEquals(1, report.errors().size());
+ // One error for the class, one for the constructor, one for the method.
+ assertEquals(3, report.errors().size());
assertEquals(Errors.REMOVED_FINAL, report.errors().iterator().next().error());
}
+ @Test
public void testAddedField() {
String[] args = { "test/api/constants.xml", "test/api/added-field.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -253,6 +285,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.ADDED_FIELD, report.errors().iterator().next().error());
}
+ @Test
public void testRemovedField() {
String[] args = { "test/api/added-field.xml", "test/api/constants.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -261,6 +294,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.REMOVED_FIELD, report.errors().iterator().next().error());
}
+ @Test
public void testRemovedDeprecatedField() {
String[] args = { "test/api/added-deprecated-field.xml", "test/api/constants.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -269,6 +303,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.REMOVED_DEPRECATED_FIELD, report.errors().iterator().next().error());
}
+ @Test
public void testAddedMethod() {
String[] args = { "test/api/constants.xml", "test/api/added-method.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -277,6 +312,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.ADDED_METHOD, report.errors().iterator().next().error());
}
+ @Test
public void testRemovedMethod() {
String[] args = { "test/api/added-method.xml", "test/api/constants.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -285,6 +321,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.REMOVED_METHOD, report.errors().iterator().next().error());
}
+ @Test
public void testRemovedDeprecatedMethod() {
String[] args = { "test/api/added-deprecated-method.xml", "test/api/constants.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -293,6 +330,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.REMOVED_DEPRECATED_METHOD, report.errors().iterator().next().error());
}
+ @Test
public void testChangedStaticMethod() {
String[] args = { "test/api/constants.xml", "test/api/changed-static.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -301,6 +339,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_STATIC, report.errors().iterator().next().error());
}
+ @Test
public void testChangedStaticClass() {
String[] args = { "test/api/constants.xml", "test/api/changed-static2.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -309,6 +348,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_STATIC, report.errors().iterator().next().error());
}
+ @Test
public void testChangedStaticField() {
String[] args = { "test/api/constants.xml", "test/api/changed-static3.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -317,6 +357,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_STATIC, report.errors().iterator().next().error());
}
+ @Test
public void testChangedTransient() {
String[] args = { "test/api/constants.xml", "test/api/changed-transient.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -325,13 +366,15 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_TRANSIENT, report.errors().iterator().next().error());
}
+ @Test
public void testChangedSynchronized() {
String[] args = { "test/api/constants.xml", "test/api/changed-synchronized.xml" };
ApiCheck apiCheck = new ApiCheck();
Report report = apiCheck.checkApi(args);
- assertEquals(0, report.errors().size());
+ assertEquals(1, report.errors().size());
}
+ @Test
public void testChangedVolatile() {
String[] args = { "test/api/constants.xml", "test/api/changed-volatile.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -340,6 +383,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_VOLATILE, report.errors().iterator().next().error());
}
+ @Test
public void testChangedNative() {
String[] args = { "test/api/constants.xml", "test/api/changed-native.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -348,6 +392,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_NATIVE, report.errors().iterator().next().error());
}
+ @Test
public void testChangedScopeMethod() {
String[] args = { "test/api/constants.xml", "test/api/changed-scope.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -356,6 +401,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_SCOPE, report.errors().iterator().next().error());
}
+ @Test
public void testChangedScopeClass() {
String[] args = { "test/api/changed-scope.xml", "test/api/constants.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -364,6 +410,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_SCOPE, report.errors().iterator().next().error());
}
+ @Test
public void testChangedScopeClass2() {
String[] args = { "test/api/constants.xml", "test/api/changed-scope2.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -372,6 +419,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_SCOPE, report.errors().iterator().next().error());
}
+ @Test
public void testChangedScopeField() {
String[] args = { "test/api/constants.xml", "test/api/changed-scope3.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -380,6 +428,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_SCOPE, report.errors().iterator().next().error());
}
+ @Test
public void testChangedConstructorScope() {
String[] args = { "test/api/constants.xml", "test/api/changed-scope4.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -388,6 +437,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_SCOPE, report.errors().iterator().next().error());
}
+ @Test
public void testChangedMethodThrows() {
String[] args = { "test/api/throws.xml", "test/api/removed-exception.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -396,6 +446,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_THROWS, report.errors().iterator().next().error());
}
+ @Test
public void testChangedMethodThrows2() {
String[] args = { "test/api/removed-exception.xml", "test/api/throws.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -404,6 +455,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_THROWS, report.errors().iterator().next().error());
}
+ @Test
public void testChangedConstructorThrows() {
String[] args = { "test/api/throws.xml", "test/api/added-exception.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -412,6 +464,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_THROWS, report.errors().iterator().next().error());
}
+ @Test
public void testChangedConstructorThrows2() {
String[] args = { "test/api/added-exception.xml", "test/api/throws.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -420,6 +473,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_THROWS, report.errors().iterator().next().error());
}
+ @Test
public void testChangedMethodDeprecated() {
String[] args = { "test/api/constants.xml", "test/api/changed-deprecated.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -428,6 +482,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_DEPRECATED, report.errors().iterator().next().error());
}
+ @Test
public void testChangedConstructorDeprecated() {
String[] args = { "test/api/constants.xml", "test/api/changed-deprecated2.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -436,6 +491,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_DEPRECATED, report.errors().iterator().next().error());
}
+ @Test
public void testChangedFieldDeprecated() {
String[] args = { "test/api/constants.xml", "test/api/changed-deprecated3.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -444,6 +500,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_DEPRECATED, report.errors().iterator().next().error());
}
+ @Test
public void testChangedClassToInterface() {
String[] args = { "test/api/changed-class-info2.xml", "test/api/changed-class-info.xml" };
ApiCheck apiCheck = new ApiCheck();
@@ -452,6 +509,7 @@ public class ApiCheckTest extends TestCase {
assertEquals(Errors.CHANGED_CLASS, report.errors().iterator().next().error());
}
+ @Test
public void testChangedInterfaceToClass() {
String[] args = { "test/api/changed-class-info.xml", "test/api/changed-class-info2.xml" };
ApiCheck apiCheck = new ApiCheck();