# Keep everything for tests
# This flag has been moved to the makefiles and is set for tests by default.
#-dontshrink

# But we may want to obfuscate if the main app gets obfuscated.
# This flag has been moved to the makefiles.
#-dontobfuscate

#-keep class * extends junit.framework.TestCase {
#  public void test*();
#}

#-keepclasseswithmembers class * {
#  public static void run();
#  public static junit.framework.Test suite();
#}

# some AllTests don't include run().
#-keepclasseswithmembers class * {
#  public static junit.framework.Test suite();
#}

#-keep class * extends junit.framework.TestSuite
#-keep class * extends android.app.Instrumentation
#-keep class * extends android.test.TestSuiteProvider

