Make SerializableTypeOracleBuilderTest run much faster by not building the same type oracle over and over.
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@5949 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/test/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilderTest.java b/user/test/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilderTest.java
index b22f8d1..a7f7fe6 100644
--- a/user/test/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilderTest.java
+++ b/user/test/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilderTest.java
@@ -106,6 +106,8 @@
private static final int EXPOSURE_NONE = TypeParameterExposureComputer.EXPOSURE_NONE;
+ private static TypeOracle sTypeOracle;
+
private static void addGwtTransient(Set<CompilationUnit> units) {
StringBuffer code = new StringBuffer();
code.append("package com.google.gwt.user.client.rpc;\n");
@@ -251,6 +253,20 @@
return actual;
}
+ private static TypeOracle getTestTypeOracle()
+ throws UnableToCompleteException {
+ if (sTypeOracle == null) {
+ TreeLogger logger = createLogger();
+ ModuleDef moduleDef = ModuleDefLoader.createSyntheticModule(logger,
+ "com.google.gwt.user.rebind.rpc.testcases.RebindRPCTestCases.JUnit",
+ new String[] {
+ "com.google.gwt.user.rebind.rpc.testcases.RebindRPCTestCases",
+ "com.google.gwt.junit.JUnit"}, true);
+ sTypeOracle = moduleDef.getTypeOracle(logger);
+ }
+ return sTypeOracle;
+ }
+
private static String makeSourceName(String binaryName) {
return binaryName.replace('$', '.');
}
@@ -291,21 +307,6 @@
+ toString(actual), Arrays.equals(expected, actual));
}
- private final ModuleDef moduleDef;
-
- private final TypeOracle typeOracle;
-
- public SerializableTypeOracleBuilderTest() throws UnableToCompleteException {
- TreeLogger logger = createLogger();
-
- moduleDef = ModuleDefLoader.createSyntheticModule(logger,
- "com.google.gwt.user.rebind.rpc.testcases.RebindRPCTestCases.JUnit",
- new String[] {
- "com.google.gwt.user.rebind.rpc.testcases.RebindRPCTestCases",
- "com.google.gwt.junit.JUnit"}, true);
- typeOracle = moduleDef.getTypeOracle(logger);
- }
-
/**
* Test with a generic class whose type parameter is exposed only in certain
* subclasses.
@@ -872,6 +873,7 @@
throws NotFoundException, UnableToCompleteException {
TreeLogger logger = createLogger();
+ TypeOracle typeOracle = getTestTypeOracle();
JRawType rawType = typeOracle.getType(
ClassWithTypeParameterThatErasesToObject.class.getCanonicalName()).isGenericType().getRawType();
@@ -1400,6 +1402,7 @@
UnableToCompleteException {
TreeLogger logger = createLogger();
+ TypeOracle typeOracle = getTestTypeOracle();
SerializableTypeOracleBuilder stob = createSerializableTypeOracleBuilder(
logger, typeOracle);
JClassType a = typeOracle.getType(ManualSerialization.A.class.getCanonicalName());
@@ -1418,6 +1421,7 @@
UnableToCompleteException {
TreeLogger logger = createLogger();
+ TypeOracle typeOracle = getTestTypeOracle();
JClassType rawList = typeOracle.getType(List.class.getName());
SerializableTypeOracleBuilder stob = createSerializableTypeOracleBuilder(
logger, typeOracle);
@@ -1562,6 +1566,7 @@
UnableToCompleteException {
TreeLogger logger = createLogger();
+ TypeOracle typeOracle = getTestTypeOracle();
JClassType a = typeOracle.getType(NoSerializableTypes.A.class.getCanonicalName());
SerializableTypeOracleBuilder stob = createSerializableTypeOracleBuilder(
logger, typeOracle);
@@ -1583,6 +1588,7 @@
throws UnableToCompleteException, NotFoundException {
TreeLogger logger = createLogger();
+ TypeOracle typeOracle = getTestTypeOracle();
JClassType a = typeOracle.getType(NotAllSubtypesAreSerializable.A.class.getCanonicalName());
SerializableTypeOracleBuilder stob = createSerializableTypeOracleBuilder(
logger, typeOracle);
@@ -1605,6 +1611,7 @@
public void testObjectArrayNotInstantiable() throws UnableToCompleteException {
TreeLogger logger = createLogger();
+ TypeOracle typeOracle = getTestTypeOracle();
JArrayType objectArray = typeOracle.getArrayType(typeOracle.getJavaLangObject());
SerializableTypeOracleBuilder stob = createSerializableTypeOracleBuilder(
logger, typeOracle);
@@ -1623,6 +1630,7 @@
public void testObjectNotInstantiable() throws UnableToCompleteException {
TreeLogger logger = createLogger();
+ TypeOracle typeOracle = getTestTypeOracle();
SerializableTypeOracleBuilder stob = createSerializableTypeOracleBuilder(
logger, typeOracle);
stob.addRootType(logger, typeOracle.getJavaLangObject());
@@ -1642,6 +1650,7 @@
throws UnableToCompleteException, NotFoundException {
TreeLogger logger = createLogger();
+ TypeOracle typeOracle = getTestTypeOracle();
SerializableTypeOracleBuilder stob = createSerializableTypeOracleBuilder(
logger, typeOracle);
stob.addRootType(