Implementing test stability attribute

Change-Id: I5d78a19039ab2bcdb217886fdaca29e3df412780
This commit is contained in:
vadimt 2019-10-15 18:34:58 -07:00
parent 984187b0a1
commit 36d7be7fc9
2 changed files with 44 additions and 25 deletions

View File

@ -24,8 +24,6 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import android.util.Log;
import androidx.test.filters.LargeTest;
import androidx.test.runner.AndroidJUnit4;
@ -38,7 +36,6 @@ import com.android.launcher3.tapl.AppIconMenu;
import com.android.launcher3.tapl.AppIconMenuItem;
import com.android.launcher3.tapl.Widgets;
import com.android.launcher3.tapl.Workspace;
import com.android.launcher3.util.rule.TestStabilityRule.Stability;
import com.android.launcher3.views.OptionsPopupView;
import com.android.launcher3.widget.WidgetsFullSheet;
import com.android.launcher3.widget.WidgetsRecyclerView;
@ -362,10 +359,4 @@ public class TaplTestsLauncher3 extends AbstractLauncherUiTest {
public static String getAppPackageName() {
return getInstrumentation().getContext().getPackageName();
}
@Test
@Stability
public void testTestStabilityAttribute() {
Log.d("TestStabilityRule", "Hello world!");
}
}

View File

@ -17,6 +17,7 @@ package com.android.launcher3.util.rule;
import static androidx.test.InstrumentationRegistry.getInstrumentation;
import android.content.pm.PackageManager;
import android.os.Build;
import android.util.Log;
@ -50,20 +51,33 @@ public class TestStabilityRule implements TestRule {
+ "(?<postsubmit>[0-9]+)"
+ ")$");
public static final int LOCAL = 0x1;
public static final int UNBUNDLED_PRESUBMIT = 0x2;
public static final int UNBUNDLED_POSTSUBMIT = 0x4;
public static final int PLATFORM_PRESUBMIT = 0x8;
public static final int PLATFORM_POSTSUBMIT = 0x10;
private static final int RUN_FLAFOR = getRunFlavor();
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Stability {
int flavors();
}
@Override
public Statement apply(Statement base, Description description) {
if (description.getAnnotation(Stability.class) != null) {
final Stability stability = description.getAnnotation(Stability.class);
if (stability != null) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
getRunFlavor();
base.evaluate();
if ((stability.flavors() & RUN_FLAFOR) != 0) {
Log.d(TAG, "Running " + description.getDisplayName());
base.evaluate();
} else {
Log.d(TAG, "Skipping " + description.getDisplayName());
}
}
};
} else {
@ -71,49 +85,63 @@ public class TestStabilityRule implements TestRule {
}
}
private static void getRunFlavor() throws Exception {
final String launcherVersion = getInstrumentation().
getContext().
getPackageManager().
getPackageInfo(
UiDevice.getInstance(getInstrumentation()).
getLauncherPackageName(),
0).
versionName;
private static int getRunFlavor() {
final String launcherVersion;
try {
launcherVersion = getInstrumentation().
getContext().
getPackageManager().
getPackageInfo(
UiDevice.getInstance(getInstrumentation()).
getLauncherPackageName(),
0).
versionName;
} catch (PackageManager.NameNotFoundException e) {
throw new RuntimeException(e);
}
final Matcher launcherBuildMatcher = LAUNCHER_BUILD.matcher(launcherVersion);
if (!launcherBuildMatcher.find()) {
Log.e(TAG, "Match not found");
throw new AssertionError("Launcher build match not found");
}
final String platformVersion = Build.VERSION.INCREMENTAL;
final Matcher platformBuildMatcher = PLATFORM_BUILD.matcher(platformVersion);
if (!platformBuildMatcher.find()) {
Log.e(TAG, "Match not found");
throw new AssertionError("Platform build match not found");
}
Log.d(TAG, "Launcher: " + launcherVersion + ", platform: " + platformVersion);
final int runFlavor;
if (launcherBuildMatcher.group("local") != null && (
platformBuildMatcher.group("commandLine") != null ||
platformBuildMatcher.group("postsubmit") != null)) {
Log.d(TAG, "LOCAL RUN");
runFlavor = LOCAL;
} else if (launcherBuildMatcher.group("presubmit") != null
&& platformBuildMatcher.group("postsubmit") != null) {
Log.d(TAG, "UNBUNDLED PRESUBMIT");
runFlavor = UNBUNDLED_PRESUBMIT;
} else if (launcherBuildMatcher.group("postsubmit") != null
&& platformBuildMatcher.group("postsubmit") != null) {
Log.d(TAG, "UNBUNDLED POSTSUBMIT");
runFlavor = UNBUNDLED_POSTSUBMIT;
} else if (launcherBuildMatcher.group("platform") != null
&& platformBuildMatcher.group("presubmit") != null) {
Log.d(TAG, "PLATFORM PRESUBMIT");
runFlavor = PLATFORM_PRESUBMIT;
} else if (launcherBuildMatcher.group("platform") != null
&& platformBuildMatcher.group("postsubmit") != null) {
Log.d(TAG, "PLATFORM POSTSUBMIT");
runFlavor = PLATFORM_POSTSUBMIT;
} else {
Log.e(TAG, "ERROR3");
throw new AssertionError("Unrecognized run flavor");
}
return runFlavor;
}
}