Merge "Add CtsHostsideNetworkTestsApp2 to testcase list" into nyc-dev
diff --git a/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
index 4bd494d..abe8bf0 100644
--- a/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
+++ b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
@@ -137,6 +137,7 @@
Collections.addAll(paths, context.getExternalCacheDirs());
Collections.addAll(paths, context.getExternalFilesDirs(null));
Collections.addAll(paths, context.getExternalFilesDirs(Environment.DIRECTORY_PICTURES));
+ Collections.addAll(paths, context.getExternalMediaDirs());
Collections.addAll(paths, context.getObbDirs());
return paths;
}
@@ -146,6 +147,7 @@
Collections.addAll(paths, context.getExternalCacheDirs());
Collections.addAll(paths, context.getExternalFilesDirs(null));
Collections.addAll(paths, context.getExternalFilesDirs(Environment.DIRECTORY_PICTURES));
+ Collections.addAll(paths, context.getExternalMediaDirs());
return paths;
}
diff --git a/libs/migration/src/com/android/cts/migration/MigrationHelper.java b/libs/migration/src/com/android/cts/migration/MigrationHelper.java
index 5fa0ff8..0595486 100644
--- a/libs/migration/src/com/android/cts/migration/MigrationHelper.java
+++ b/libs/migration/src/com/android/cts/migration/MigrationHelper.java
@@ -1,9 +1,11 @@
package com.android.cts.migration;
import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.log.LogUtil.CLog;
import java.io.File;
import java.io.FileNotFoundException;
+import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -27,7 +29,9 @@
Method method = cls.getMethod("getTestsDir");
File dir = (File) method.invoke(instance);
File file = new File(dir, filename);
+ CLog.i("Looking for test file %s in dir %s", filename, dir.getAbsolutePath());
if (file.exists()) {
+ CLog.i("File %s found", filename);
return file;
}
} catch (ClassNotFoundException | NoSuchMethodException | InstantiationException |
@@ -40,7 +44,9 @@
Object helper = builder.invoke(null, mBuild);
Method method = cls.getMethod("getTestApp", String.class);
File file = (File) method.invoke(helper, filename);
+ CLog.i("Looking for test file %s as %s", filename, file.getAbsolutePath());
if (file.exists()) {
+ CLog.i("File %s found", filename);
return file;
}
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException |
diff --git a/tests/tests/telecom/src/android/telecom/cts/TelecomAvailabilityTest.java b/tests/tests/telecom/src/android/telecom/cts/TelecomAvailabilityTest.java
index cc0afe4..8163520 100644
--- a/tests/tests/telecom/src/android/telecom/cts/TelecomAvailabilityTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/TelecomAvailabilityTest.java
@@ -25,6 +25,7 @@
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
+import android.telecom.TelecomManager;
import android.test.InstrumentationTestCase;
import android.util.Log;
@@ -98,6 +99,24 @@
telephonyMatches);
}
+ public void testTelecomCanManageBlockedNumbers() {
+ if (!shouldTestTelecom(mContext)) {
+ return;
+ }
+
+ final TelecomManager telecomManager = mContext.getSystemService(TelecomManager.class);
+ final Intent intent = telecomManager.createManageBlockedNumbersIntent();
+ assertNotNull(intent);
+
+ final List<ResolveInfo> activities =
+ mPackageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
+ assertEquals(1, activities.size());
+ for (ResolveInfo resolveInfo : activities) {
+ assertNotNull(resolveInfo.activityInfo);
+ assertEquals(TELECOM_PACKAGE_NAME, resolveInfo.activityInfo.packageName);
+ }
+ }
+
/**
* @return The {@link PackageInfo} of the only app named {@code PACKAGE_NAME}.
*/
diff --git a/tests/tests/transition/res/layout/scene7.xml b/tests/tests/transition/res/layout/scene7.xml
new file mode 100644
index 0000000..72c74e8
--- /dev/null
+++ b/tests/tests/transition/res/layout/scene7.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:transitionName="holder"
+ android:id="@+id/holder">
+ <View android:layout_width="10dp"
+ android:layout_height="10dp"
+ android:background="#0F0"
+ android:transitionName="green"
+ android:id="@+id/greenSquare" />
+ <TextView android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:transitionName="hello"
+ android:text="@string/hello"
+ android:id="@+id/hello"/>
+</RelativeLayout>
diff --git a/tests/tests/transition/res/layout/scene8.xml b/tests/tests/transition/res/layout/scene8.xml
new file mode 100644
index 0000000..69674ee
--- /dev/null
+++ b/tests/tests/transition/res/layout/scene8.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:transitionName="holder"
+ android:id="@+id/holder">
+ <View android:layout_width="10dp"
+ android:layout_height="10dp"
+ android:background="#F00"
+ android:transitionName="red"
+ android:id="@+id/greenSquare" />
+ <View android:layout_width="10dp"
+ android:layout_height="10dp"
+ android:background="#0F0"
+ android:transitionName="green"
+ android:id="@+id/redSquare"
+ android:layout_below="@+id/greenSquare" />
+ <TextView android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:transitionName="hello"
+ android:text="@string/hello"
+ android:id="@+id/hello"/>
+</RelativeLayout>
diff --git a/tests/tests/transition/src/android/transition/cts/ArcMotionTest.java b/tests/tests/transition/src/android/transition/cts/ArcMotionTest.java
new file mode 100644
index 0000000..6cb5c1c
--- /dev/null
+++ b/tests/tests/transition/src/android/transition/cts/ArcMotionTest.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.transition.cts;
+
+import android.graphics.Path;
+import android.graphics.PathMeasure;
+import android.transition.ArcMotion;
+
+import junit.framework.TestCase;
+
+public class ArcMotionTest extends TestCase {
+
+ public void test90Quadrants() throws Throwable {
+ ArcMotion arcMotion = new ArcMotion();
+ arcMotion.setMaximumAngle(90);
+
+ Path expected = arcWithPoint(0, 100, 100, 0, 100, 100);
+ Path path = arcMotion.getPath(0, 100, 100, 0);
+ assertPathMatches(expected, path);
+
+ expected = arcWithPoint(100, 0, 0, -100, 100, -100);
+ path = arcMotion.getPath(100, 0, 0, -100);
+ assertPathMatches(expected, path);
+
+ expected = arcWithPoint(0, -100, -100, 0, -100, -100);
+ path = arcMotion.getPath(0, -100, -100, 0);
+ assertPathMatches(expected, path);
+
+ expected = arcWithPoint(-100, 0, 0, 100, -100, 100);
+ path = arcMotion.getPath(-100, 0, 0, 100);
+ assertPathMatches(expected, path);
+ }
+
+ public void test345Triangles() throws Throwable {
+ // 3-4-5 triangles are easy to calculate the control points
+ ArcMotion arcMotion = new ArcMotion();
+ arcMotion.setMaximumAngle(90);
+ Path expected;
+ Path path;
+
+ expected = arcWithPoint(0, 120, 160, 0, 125, 120);
+ path = arcMotion.getPath(0, 120, 160, 0);
+ assertPathMatches(expected, path);
+
+ expected = arcWithPoint(0, 160, 120, 0, 120, 125);
+ path = arcMotion.getPath(0, 160, 120, 0);
+ assertPathMatches(expected, path);
+
+ expected = arcWithPoint(-120, 0, 0, 160, -120, 125);
+ path = arcMotion.getPath(-120, 0, 0, 160);
+ assertPathMatches(expected, path);
+
+ expected = arcWithPoint(-160, 0, 0, 120, -125, 120);
+ path = arcMotion.getPath(-160, 0, 0, 120);
+ assertPathMatches(expected, path);
+
+ expected = arcWithPoint(0, -120, -160, 0, -125, -120);
+ path = arcMotion.getPath(0, -120, -160, 0);
+ assertPathMatches(expected, path);
+
+ expected = arcWithPoint(0, -160, -120, 0, -120, -125);
+ path = arcMotion.getPath(0, -160, -120, 0);
+ assertPathMatches(expected, path);
+
+ expected = arcWithPoint(120, 0, 0, -160, 120, -125);
+ path = arcMotion.getPath(120, 0, 0, -160);
+ assertPathMatches(expected, path);
+
+ expected = arcWithPoint(160, 0, 0, -120, 125, -120);
+ path = arcMotion.getPath(160, 0, 0, -120);
+ assertPathMatches(expected, path);
+ }
+
+ private Path arcWithPoint(float startX, float startY, float endX, float endY,
+ float eX, float eY) {
+ float c1x = (eX + startX)/2;
+ float c1y = (eY + startY)/2;
+ float c2x = (eX + endX)/2;
+ float c2y = (eY + endY)/2;
+ Path path = new Path();
+ path.moveTo(startX, startY);
+ path.cubicTo(c1x, c1y, c2x, c2y, endX, endY);
+ return path;
+ }
+
+ private void assertPathMatches(Path expectedPath, Path path) {
+ PathMeasure expectedMeasure = new PathMeasure(expectedPath, false);
+ PathMeasure pathMeasure = new PathMeasure(path, false);
+
+ float expectedLength = expectedMeasure.getLength();
+ assertEquals(expectedLength, pathMeasure.getLength(), 0.01f);
+
+ float minLength = Math.min(expectedLength, pathMeasure.getLength());
+
+ float pos[] = new float[2];
+
+ float increment = minLength / 5f;
+ for (float along = 0; along <= minLength; along += increment) {
+ expectedMeasure.getPosTan(along, pos, null);
+ float expectedX = pos[0];
+ float expectedY = pos[1];
+
+ pathMeasure.getPosTan(along, pos, null);
+ assertEquals(expectedX, pos[0], 0.01f);
+ assertEquals(expectedY, pos[1], 0.01f);
+ }
+ }
+
+ public void testMaximumAngle() throws Throwable {
+ ArcMotion arcMotion = new ArcMotion();
+ arcMotion.setMaximumAngle(45f);
+ assertEquals(45f, arcMotion.getMaximumAngle());
+
+ float ratio = (float) Math.tan(Math.PI/8);
+ float ex = 50 + (50 * ratio);
+ float ey = ex;
+
+ Path expected = arcWithPoint(0, 100, 100, 0, ex, ey);
+ Path path = arcMotion.getPath(0, 100, 100, 0);
+ assertPathMatches(expected, path);
+ }
+
+ public void testMinimumHorizontalAngle() throws Throwable {
+ ArcMotion arcMotion = new ArcMotion();
+ arcMotion.setMinimumHorizontalAngle(45);
+ assertEquals(45f, arcMotion.getMinimumHorizontalAngle());
+
+ float ey = (float)(Math.tan(Math.PI/8) * 50);
+ float ex = 50;
+ Path expected = arcWithPoint(0, 0, 100, 0, ex, ey);
+ Path path = arcMotion.getPath(0, 0, 100, 0);
+ assertPathMatches(expected, path);
+
+ // Pretty much the same, but follows a different path.
+ expected = arcWithPoint(0, 0, 100.001f, 0, ex, ey);
+ path = arcMotion.getPath(0, 0, 100.001f, 0);
+ assertPathMatches(expected, path);
+ }
+
+ public void testMinimumVerticalAngle() throws Throwable {
+ ArcMotion arcMotion = new ArcMotion();
+ arcMotion.setMinimumVerticalAngle(45);
+ assertEquals(45f, arcMotion.getMinimumVerticalAngle());
+
+ float ex = (float)(Math.tan(Math.PI/8) * 50);
+ float ey = 50;
+ Path expected = arcWithPoint(0, 0, 0, 100, ex, ey);
+ Path path = arcMotion.getPath(0, 0, 0, 100);
+ assertPathMatches(expected, path);
+
+ // Pretty much the same, but follows a different path.
+ expected = arcWithPoint(0, 0, 0, 100.001f, ex, ey);
+ path = arcMotion.getPath(0, 0, 0, 100.001f);
+ assertPathMatches(expected, path);
+ }
+}
+
diff --git a/tests/tests/transition/src/android/transition/cts/BaseTransitionTest.java b/tests/tests/transition/src/android/transition/cts/BaseTransitionTest.java
index 9f41f21..56ba44b 100644
--- a/tests/tests/transition/src/android/transition/cts/BaseTransitionTest.java
+++ b/tests/tests/transition/src/android/transition/cts/BaseTransitionTest.java
@@ -23,7 +23,6 @@
import android.transition.TransitionManager;
import android.transition.TransitionValues;
import android.transition.Visibility;
-import android.transition.cts.R;
import android.view.Choreographer;
import android.view.Choreographer.FrameCallback;
import android.view.View;
@@ -76,11 +75,50 @@
listener.endLatch.await(waitMillis, TimeUnit.MILLISECONDS);
}
- protected void startTransition(final int layoutId) throws Throwable {
+ protected View loadLayout(final int layout) throws Throwable {
+ View[] root = new View[1];
+
runTestOnUiThread(new Runnable() {
@Override
public void run() {
- Scene scene = Scene.getSceneForLayout(mSceneRoot, layoutId, mActivity);
+ root[0] = mActivity.getLayoutInflater().inflate(layout, mSceneRoot, false);
+ }
+ });
+
+ return root[0];
+ }
+
+ protected Scene loadScene(final View layout) throws Throwable {
+ Scene[] scene = new Scene[1];
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ scene[0] = new Scene(mSceneRoot, layout);
+ }
+ });
+
+ return scene[0];
+ }
+
+ protected Scene loadScene(final int layoutId) throws Throwable {
+ Scene scene[] = new Scene[1];
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ scene[0] = Scene.getSceneForLayout(mSceneRoot, layoutId, mActivity);
+ }
+ });
+ return scene[0];
+ }
+
+ protected void startTransition(final int layoutId) throws Throwable {
+ startTransition(loadScene(layoutId));
+ }
+
+ protected void startTransition(final Scene scene) throws Throwable {
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
TransitionManager.go(scene, mTransition);
}
});
@@ -97,16 +135,35 @@
}
protected void enterScene(final int layoutId) throws Throwable {
+ enterScene(loadScene(layoutId));
+ }
+
+ protected void enterScene(final Scene scene) throws Throwable {
runTestOnUiThread(new Runnable() {
@Override
public void run() {
- Scene scene = Scene.getSceneForLayout(mSceneRoot, layoutId, mActivity);
scene.enter();
}
});
getInstrumentation().waitForIdleSync();
}
+ protected void exitScene(final Scene scene) throws Throwable {
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ scene.exit();
+ }
+ });
+ getInstrumentation().waitForIdleSync();
+ }
+
+ protected void resetListener() {
+ mTransition.removeListener(mListener);
+ mListener = new SimpleTransitionListener();
+ mTransition.addListener(mListener);
+ }
+
// Waits at least one frame and it could be more. The animated values should have changed
// from the previously recorded values by the end of this method.
protected void waitForAnimationFrame() throws Throwable {
@@ -128,7 +185,6 @@
public class TestTransition extends Visibility {
public TestTransition() {
- setDuration(200);
}
@Override
diff --git a/tests/tests/transition/src/android/transition/cts/SceneTest.java b/tests/tests/transition/src/android/transition/cts/SceneTest.java
new file mode 100644
index 0000000..2785714
--- /dev/null
+++ b/tests/tests/transition/src/android/transition/cts/SceneTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.transition.cts;
+
+import android.transition.Scene;
+import android.view.View;
+
+public class SceneTest extends BaseTransitionTest {
+
+ public SceneTest() {
+ }
+
+ public void testDynamicConstructor() throws Throwable {
+ Scene scene = new Scene(mSceneRoot);
+ assertEquals(mSceneRoot, scene.getSceneRoot());
+ CallCheck enterCheck = new CallCheck() {
+ @Override
+ public void run() {
+ super.run();
+ mActivity.getLayoutInflater().inflate(R.layout.scene1, mSceneRoot, true);
+ }
+ };
+ scene.setEnterAction(enterCheck);
+ CallCheck exitCheck = new CallCheck();
+ scene.setExitAction(exitCheck);
+ enterScene(scene);
+
+ assertTrue(enterCheck.wasRun);
+ assertFalse(exitCheck.wasRun);
+
+ View redSquare = mActivity.findViewById(R.id.redSquare);
+ assertNotNull(redSquare);
+
+ exitScene(scene);
+ assertNotNull(mSceneRoot.findViewById(R.id.redSquare));
+ assertTrue(exitCheck.wasRun);
+
+ enterScene(R.layout.scene4);
+ assertNull(mSceneRoot.findViewById(R.id.redSquare));
+ }
+
+ public void testViewConstructor() throws Throwable {
+ View view = loadLayout(R.layout.scene1);
+ Scene scene = new Scene(mSceneRoot, view);
+ assertEquals(mSceneRoot, scene.getSceneRoot());
+ CallCheck enterCheck = new CallCheck();
+ scene.setEnterAction(enterCheck);
+ CallCheck exitCheck = new CallCheck();
+ scene.setExitAction(exitCheck);
+ enterScene(scene);
+
+ assertTrue(enterCheck.wasRun);
+ assertFalse(exitCheck.wasRun);
+
+ View redSquare = mActivity.findViewById(R.id.redSquare);
+ assertNotNull(redSquare);
+
+ exitScene(scene);
+ assertNotNull(mSceneRoot.findViewById(R.id.redSquare));
+ assertTrue(exitCheck.wasRun);
+
+ enterScene(R.layout.scene4);
+ assertNull(mSceneRoot.findViewById(R.id.redSquare));
+ }
+
+ public void testFactory() throws Throwable {
+ Scene scene = loadScene(R.layout.scene1);
+ assertEquals(mSceneRoot, scene.getSceneRoot());
+ CallCheck enterCheck = new CallCheck();
+ scene.setEnterAction(enterCheck);
+ CallCheck exitCheck = new CallCheck();
+ scene.setExitAction(exitCheck);
+ enterScene(scene);
+
+ assertTrue(enterCheck.wasRun);
+ assertFalse(exitCheck.wasRun);
+
+ View redSquare = mActivity.findViewById(R.id.redSquare);
+ assertNotNull(redSquare);
+
+ exitScene(scene);
+ assertNotNull(mSceneRoot.findViewById(R.id.redSquare));
+ assertTrue(exitCheck.wasRun);
+ enterScene(R.layout.scene4);
+ assertNull(mSceneRoot.findViewById(R.id.redSquare));
+ }
+
+ private static class CallCheck implements Runnable {
+ public boolean wasRun;
+
+ @Override
+ public void run() {
+ wasRun = true;
+ }
+ }
+}
+
diff --git a/tests/tests/transition/src/android/transition/cts/TransitionSetTest.java b/tests/tests/transition/src/android/transition/cts/TransitionSetTest.java
new file mode 100644
index 0000000..3afe812
--- /dev/null
+++ b/tests/tests/transition/src/android/transition/cts/TransitionSetTest.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.transition.cts;
+
+import android.transition.ChangeBounds;
+import android.transition.Fade;
+import android.transition.TransitionSet;
+
+import java.util.concurrent.TimeUnit;
+
+public class TransitionSetTest extends BaseTransitionTest {
+
+ public void testTransitionTogether() throws Throwable {
+ TransitionSet transitionSet = new TransitionSet();
+ Fade fade = new Fade();
+ SimpleTransitionListener fadeListener = new SimpleTransitionListener();
+ fade.addListener(fadeListener);
+ ChangeBounds changeBounds = new ChangeBounds();
+ SimpleTransitionListener changeBoundsListener = new SimpleTransitionListener();
+ changeBounds.addListener(changeBoundsListener);
+ transitionSet.addTransition(fade);
+ transitionSet.addTransition(changeBounds);
+ mTransition = transitionSet;
+ resetListener();
+
+ assertEquals(TransitionSet.ORDERING_TOGETHER, transitionSet.getOrdering());
+ enterScene(R.layout.scene1);
+ startTransition(R.layout.scene3);
+ assertTrue(fadeListener.startLatch.await(0, TimeUnit.MILLISECONDS));
+ assertTrue(changeBoundsListener.startLatch.await(0, TimeUnit.MILLISECONDS));
+
+ endTransition();
+ }
+
+ public void testTransitionSequentially() throws Throwable {
+ TransitionSet transitionSet = new TransitionSet();
+ Fade fade = new Fade();
+ SimpleTransitionListener fadeListener = new SimpleTransitionListener();
+ fade.addListener(fadeListener);
+ ChangeBounds changeBounds = new ChangeBounds();
+ SimpleTransitionListener changeBoundsListener = new SimpleTransitionListener();
+ changeBounds.addListener(changeBoundsListener);
+ transitionSet.addTransition(fade);
+ transitionSet.addTransition(changeBounds);
+ mTransition = transitionSet;
+ resetListener();
+
+ assertEquals(TransitionSet.ORDERING_TOGETHER, transitionSet.getOrdering());
+ transitionSet.setOrdering(TransitionSet.ORDERING_SEQUENTIAL);
+ assertEquals(TransitionSet.ORDERING_SEQUENTIAL, transitionSet.getOrdering());
+
+ enterScene(R.layout.scene1);
+ startTransition(R.layout.scene3);
+ assertTrue(fadeListener.startLatch.await(0, TimeUnit.MILLISECONDS));
+ assertEquals(1, changeBoundsListener.startLatch.getCount());
+ assertTrue(fadeListener.endLatch.await(400, TimeUnit.MILLISECONDS));
+ assertTrue(changeBoundsListener.startLatch.await(0, TimeUnit.MILLISECONDS));
+ endTransition();
+ }
+
+ public void testTransitionCount() throws Throwable {
+ TransitionSet transitionSet = new TransitionSet();
+ assertEquals(0, transitionSet.getTransitionCount());
+
+ Fade fade = new Fade();
+ ChangeBounds changeBounds = new ChangeBounds();
+ transitionSet.addTransition(fade);
+ transitionSet.addTransition(changeBounds);
+
+ assertEquals(2, transitionSet.getTransitionCount());
+ assertSame(fade, transitionSet.getTransitionAt(0));
+ assertSame(changeBounds, transitionSet.getTransitionAt(1));
+
+ transitionSet.removeTransition(fade);
+
+ assertEquals(1, transitionSet.getTransitionCount());
+ assertSame(changeBounds, transitionSet.getTransitionAt(0));
+
+ transitionSet.removeTransition(fade); // remove one that isn't there
+ assertEquals(1, transitionSet.getTransitionCount());
+ assertSame(changeBounds, transitionSet.getTransitionAt(0));
+ }
+}
+
diff --git a/tests/tests/transition/src/android/transition/cts/TransitionTest.java b/tests/tests/transition/src/android/transition/cts/TransitionTest.java
index e87be84..9ae568a 100644
--- a/tests/tests/transition/src/android/transition/cts/TransitionTest.java
+++ b/tests/tests/transition/src/android/transition/cts/TransitionTest.java
@@ -15,19 +15,31 @@
*/
package android.transition.cts;
-import android.transition.cts.R;
-
-import android.animation.ObjectAnimator;
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.graphics.Rect;
+import android.os.Debug;
+import android.os.SystemClock;
+import android.transition.ArcMotion;
import android.transition.AutoTransition;
+import android.transition.ChangeBounds;
+import android.transition.PathMotion;
import android.transition.Scene;
+import android.transition.Transition;
+import android.transition.Transition.EpicenterCallback;
+import android.transition.Transition.TransitionListener;
import android.transition.TransitionManager;
+import android.transition.TransitionPropagation;
import android.transition.TransitionValues;
import android.view.View;
import android.view.ViewGroup;
+import android.view.animation.AccelerateInterpolator;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
+import java.util.HashMap;
+import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
public class TransitionTest extends BaseTransitionTest {
@@ -84,6 +96,8 @@
public void testAddTargetId() throws Throwable {
enterScene(R.layout.scene4);
+ assertNotNull(mTransition.getTargetIds());
+ assertTrue(mTransition.getTargetIds().isEmpty());
mTransition.addTarget(R.id.holder);
mTransition.addTarget(R.id.hello);
assertEquals(2, mTransition.getTargetIds().size());
@@ -111,6 +125,7 @@
public void testAddTargetClass() throws Throwable {
enterScene(R.layout.scene4);
+ assertNull(mTransition.getTargetTypes());
mTransition.addTarget(RelativeLayout.class);
mTransition.addTarget(TextView.class);
assertEquals(2, mTransition.getTargetTypes().size());
@@ -194,6 +209,7 @@
public void testAddTargetName() throws Throwable {
enterScene(R.layout.scene4);
+ assertNull(mTransition.getTargetNames());
mTransition.addTarget("red");
mTransition.addTarget("holder");
assertEquals(2, mTransition.getTargetNames().size());
@@ -224,6 +240,7 @@
public void testIsTransitionRequired() throws Throwable {
enterScene(R.layout.scene1);
mTransition = new NotRequiredTransition();
+ resetListener();
runTestOnUiThread(new Runnable() {
@Override
public void run() {
@@ -236,6 +253,268 @@
endTransition();
}
+ public void testCanRemoveViews() throws Throwable {
+ enterScene(R.layout.scene1);
+ assertFalse(mTransition.canRemoveViews());
+ mTransition.addListener(new TransitionListener() {
+ @Override
+ public void onTransitionStart(Transition transition) {
+ assertTrue(transition.canRemoveViews());
+ }
+
+ @Override
+ public void onTransitionEnd(Transition transition) {
+ }
+
+ @Override
+ public void onTransitionCancel(Transition transition) {
+ }
+
+ @Override
+ public void onTransitionPause(Transition transition) {
+ }
+
+ @Override
+ public void onTransitionResume(Transition transition) {
+ }
+ });
+ startTransition(R.layout.scene2);
+ }
+
+ public void testExcludeChildrenView() throws Throwable {
+ View layout1 = loadLayout(R.layout.scene1);
+ Scene scene1 = loadScene(layout1);
+ enterScene(R.layout.scene1);
+ View holder1 = layout1.findViewById(R.id.holder);
+ mTransition.excludeChildren(holder1, true);
+ View layout2 = loadLayout(R.layout.scene2);
+ Scene scene2 = loadScene(layout2);
+ View holder2 = layout2.findViewById(R.id.holder);
+ mTransition.excludeChildren(holder2, true);
+ startTransition(scene2);
+ waitForEnd(0); // Should already be ended, since no children are transitioning
+
+ mTransition.excludeChildren(holder1, false); // remove it
+ mTransition.excludeChildren(holder2, false); // remove it
+ resetListener();
+ startTransition(scene1);
+ assertEquals(1, mListener.endLatch.getCount()); // it is running as expected
+ endTransition();
+ }
+
+ public void testExcludeChildrenId() throws Throwable {
+ enterScene(R.layout.scene1);
+ mTransition.excludeChildren(R.id.holder, true);
+ startTransition(R.layout.scene2);
+ waitForEnd(0); // Should already be ended, since no children are transitioning
+
+ resetListener();
+ mTransition.excludeChildren(R.id.holder, false); // remove it
+ startTransition(R.layout.scene1);
+ assertEquals(1, mListener.endLatch.getCount()); // It is running
+ endTransition();
+ }
+
+ public void testExcludeTargetView() throws Throwable {
+ View layout1 = loadLayout(R.layout.scene1);
+ Scene scene1 = loadScene(layout1);
+ enterScene(R.layout.scene1);
+ View redSquare1 = layout1.findViewById(R.id.redSquare);
+ mTransition.excludeTarget(redSquare1, true);
+ startTransition(R.layout.scene7);
+ waitForEnd(0); // Should already be ended, since no children are transitioning
+
+ mTransition.excludeTarget(redSquare1, false); // remove it
+ resetListener();
+ startTransition(scene1);
+ assertEquals(1, mListener.endLatch.getCount()); // it is running as expected
+ endTransition();
+ }
+
+ public void testExcludeTargetId() throws Throwable {
+ enterScene(R.layout.scene1);
+ mTransition.excludeTarget(R.id.redSquare, true);
+ startTransition(R.layout.scene7);
+ waitForEnd(0); // Should already be ended, since no children are transitioning
+
+ resetListener();
+ mTransition.excludeTarget(R.id.redSquare, false); // remove it
+ startTransition(R.layout.scene1);
+ assertEquals(1, mListener.endLatch.getCount()); // It is running
+ endTransition();
+ }
+
+ public void testExcludeTargetClass() throws Throwable {
+ enterScene(R.layout.scene1);
+ mTransition.excludeTarget(TextView.class, true);
+ startTransition(R.layout.scene3);
+ waitForEnd(0); // Should already be ended, since no children are transitioning
+
+ resetListener();
+ mTransition.excludeTarget(TextView.class, false); // remove it
+ startTransition(R.layout.scene1);
+ assertEquals(1, mListener.endLatch.getCount()); // It is running
+ endTransition();
+ }
+
+ public void testExcludeTargetName() throws Throwable {
+ enterScene(R.layout.scene1);
+ mTransition.excludeTarget("hello", true);
+ startTransition(R.layout.scene3);
+ waitForEnd(0); // Should already be ended, since no children are transitioning
+
+ resetListener();
+ mTransition.excludeTarget("hello", false); // remove it
+ startTransition(R.layout.scene1);
+ assertEquals(1, mListener.endLatch.getCount()); // It is running
+ endTransition();
+ }
+
+ public void testDuration() throws Throwable {
+ assertEquals(-1, mTransition.getDuration());
+ enterScene(R.layout.scene1);
+ mTransition.setDuration(500);
+ assertEquals(500, mTransition.getDuration());
+ startTransition(R.layout.scene3);
+ long startTime = SystemClock.uptimeMillis();
+ waitForEnd(600);
+ long endTime = SystemClock.uptimeMillis();
+ assertEquals(500, endTime - startTime, 100);
+ }
+
+ public void testEpicenter() throws Throwable {
+ EpicenterCallback callback = new EpicenterCallback() {
+ @Override
+ public Rect onGetEpicenter(Transition transition) {
+ return new Rect(0, 0, 1, 1);
+ }
+ };
+ mTransition.setEpicenterCallback(callback);
+ assertEquals(callback, mTransition.getEpicenterCallback());
+ }
+
+ public void testInterpolator() throws Throwable {
+ enterScene(R.layout.scene1);
+ View redSquare = mActivity.findViewById(R.id.redSquare);
+ CaptureAnimatorTransition transition = new CaptureAnimatorTransition();
+ assertNull(transition.getInterpolator());
+ AccelerateInterpolator interpolator = new AccelerateInterpolator();
+ transition.setInterpolator(interpolator);
+ assertSame(interpolator, transition.getInterpolator());
+ mTransition = transition;
+ resetListener();
+ startTransition(R.layout.scene4);
+ assertFalse(transition.animators.isEmpty());
+ Animator animator = transition.animators.get(redSquare);
+ AnimationStartListener listener = transition.listeners.get(redSquare);
+ assertTrue(listener.startLatch.await(100, TimeUnit.MILLISECONDS));
+ assertSame(interpolator, animator.getInterpolator());
+ endTransition();
+ }
+
+ public void testName() throws Throwable {
+ assertEquals("android.transition.cts.BaseTransitionTest$TestTransition",
+ mTransition.getName());
+ }
+
+ public void testPathMotion() throws Throwable {
+ PathMotion pathMotion = new ArcMotion();
+ mTransition.setPathMotion(pathMotion);
+ assertEquals(pathMotion, mTransition.getPathMotion());
+ }
+
+ public void testPropagation() throws Throwable {
+ enterScene(R.layout.scene1);
+ CaptureAnimatorTransition transition = new CaptureAnimatorTransition();
+ mTransition = transition;
+ TransitionPropagation yPropagation = new TransitionPropagation() {
+ private static final String TOP = "top value";
+ private final String[] PROPERTIES = {TOP};
+
+ @Override
+ public long getStartDelay(ViewGroup viewGroup, Transition transition,
+ TransitionValues startValues, TransitionValues endValues) {
+ int startTop = startValues == null ? 0 : (Integer) startValues.values.get(TOP);
+ int endTop = endValues == null ? 0 : (Integer) endValues.values.get(TOP);
+ return (startTop == 0) ? endTop : startTop;
+ }
+
+ @Override
+ public void captureValues(TransitionValues transitionValues) {
+ if (transitionValues.view != null) {
+ transitionValues.values.put(TOP, transitionValues.view.getTop());
+ }
+ }
+
+ @Override
+ public String[] getPropagationProperties() {
+ return PROPERTIES;
+ }
+ };
+ mTransition.setPropagation(yPropagation);
+ resetListener();
+
+ View redSquare = mActivity.findViewById(R.id.redSquare);
+ View greenSquare = mActivity.findViewById(R.id.greenSquare);
+ int diffTop = greenSquare.getTop() - redSquare.getTop();
+ startTransition(R.layout.scene4);
+ Animator redSquareAnimator = transition.animators.get(redSquare);
+ Animator greenSquareAnimator = transition.animators.get(greenSquare);
+ AnimationStartListener listener = transition.listeners.get(redSquare);
+ assertTrue(listener.startLatch.await(100, TimeUnit.MILLISECONDS));
+ assertEquals(0, redSquareAnimator.getStartDelay());
+ assertEquals(diffTop, greenSquareAnimator.getStartDelay());
+ endTransition();
+ }
+
+ public void testStartDelay() throws Throwable {
+ CaptureAnimatorTransition transition = new CaptureAnimatorTransition();
+ mTransition = transition;
+ resetListener();
+ enterScene(R.layout.scene1);
+ View redSquare = mActivity.findViewById(R.id.redSquare);
+
+ assertEquals(-1, mTransition.getStartDelay());
+ mTransition.setStartDelay(200);
+ assertEquals(200, mTransition.getStartDelay());
+
+ startTransition(R.layout.scene4);
+
+ Animator animator = transition.animators.get(redSquare);
+ assertFalse(animator.isRunning());
+ AnimationStartListener listener = transition.listeners.get(redSquare);
+ assertTrue(listener.startLatch.await(250, TimeUnit.MILLISECONDS));
+ endTransition();
+ }
+
+ public void testTransitionValues() throws Throwable {
+ enterScene(R.layout.scene1);
+ mTransition = new CheckTransitionValuesTransition();
+ mTransition.setDuration(10);
+ resetListener();
+ startTransition(R.layout.scene4);
+ // The transition has all the asserts in it, so we can just end it now.
+ endTransition();
+ }
+
+ public void testMatchOrder() throws Throwable {
+ mTransition = new ChangeBounds();
+ resetListener();
+ enterScene(R.layout.scene1);
+ startTransition(R.layout.scene8);
+
+ // scene 8 swaps the ids, but not the names. No transition should happen.
+ waitForEnd(0);
+
+ // now change the match order to prefer the id
+ mTransition.setMatchOrder(new int[] {Transition.MATCH_ID, Transition.MATCH_NAME});
+
+ resetListener();
+ startTransition(R.layout.scene1);
+ assertEquals(1, mListener.endLatch.getCount());
+ waitForEnd(400);
+ }
+
private class NotRequiredTransition extends TestTransition {
@Override
public boolean isTransitionRequired(TransitionValues startValues,
@@ -243,5 +522,59 @@
return false;
}
}
+
+ private class CaptureAnimatorTransition extends TestTransition {
+ public HashMap<View, Animator> animators = new HashMap<>();
+ public HashMap<View, AnimationStartListener> listeners = new HashMap<>();
+
+ @Override
+ public Animator onAppear(ViewGroup sceneRoot, View view, TransitionValues startValues,
+ TransitionValues endValues) {
+ return setupAnimator(super.onAppear(sceneRoot, view, startValues, endValues),
+ endValues.view);
+ }
+
+ @Override
+ public Animator onDisappear(ViewGroup sceneRoot, View view, TransitionValues startValues,
+ TransitionValues endValues) {
+ return setupAnimator(super.onDisappear(sceneRoot, view, startValues, endValues),
+ startValues.view);
+ }
+
+ private Animator setupAnimator(Animator animator, View view) {
+ animators.put(view, animator);
+ AnimationStartListener listener = new AnimationStartListener();
+ animator.addListener(listener);
+ listeners.put(view, listener);
+ return animator;
+ }
+ }
+
+ private class CheckTransitionValuesTransition extends TestTransition {
+ @Override
+ public Animator onAppear(ViewGroup sceneRoot, View view, TransitionValues startValues,
+ TransitionValues endValues) {
+ assertNull(getTransitionValues(endValues.view, true));
+ assertEquals(endValues, getTransitionValues(endValues.view, false));
+ return super.onAppear(sceneRoot, view, startValues, endValues);
+ }
+
+ @Override
+ public Animator onDisappear(ViewGroup sceneRoot, View view, TransitionValues startValues,
+ TransitionValues endValues) {
+ assertNull(getTransitionValues(startValues.view, false));
+ assertEquals(startValues, getTransitionValues(startValues.view, true));
+ return super.onDisappear(sceneRoot, view, startValues, endValues);
+ }
+ }
+
+ private class AnimationStartListener extends AnimatorListenerAdapter {
+ public CountDownLatch startLatch = new CountDownLatch(1);
+
+ @Override
+ public void onAnimationStart(Animator animation) {
+ startLatch.countDown();
+ }
+ }
}
diff --git a/tests/tests/transition/src/android/transition/cts/VisibilityTest.java b/tests/tests/transition/src/android/transition/cts/VisibilityTest.java
new file mode 100644
index 0000000..091b229
--- /dev/null
+++ b/tests/tests/transition/src/android/transition/cts/VisibilityTest.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.transition.cts;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.transition.TransitionValues;
+import android.transition.Visibility;
+import android.view.View;
+import android.view.ViewGroup;
+
+import java.util.HashMap;
+import java.util.concurrent.CountDownLatch;
+
+public class VisibilityTest extends BaseTransitionTest {
+ Visibility mVisibilityTransition;
+
+ public VisibilityTest() {
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ mVisibilityTransition = (Visibility) mTransition;
+ }
+
+ public void testMode() throws Throwable {
+ assertEquals(Visibility.MODE_IN | Visibility.MODE_OUT, mVisibilityTransition.getMode());
+
+ // Should animate in and out
+ startTransition(R.layout.scene4);
+ assertEquals(1, mListener.endLatch.getCount());
+ endTransition();
+ waitForEnd(100);
+
+ resetListener();
+ mVisibilityTransition.setMode(Visibility.MODE_IN);
+ startTransition(R.layout.scene1);
+ assertEquals(1, mListener.endLatch.getCount());
+ endTransition();
+ waitForEnd(100);
+
+ resetListener();
+ mVisibilityTransition.setMode(Visibility.MODE_OUT); // now it shouldn't do any animation
+ startTransition(R.layout.scene1);
+ waitForEnd(0);
+
+ // but it should animate out
+ resetListener();
+ startTransition(R.layout.scene4);
+ assertEquals(1, mListener.endLatch.getCount());
+ endTransition();
+ waitForEnd(100);
+
+ // switch the mode to only animate in
+ resetListener();
+ mVisibilityTransition.setMode(Visibility.MODE_IN);
+ startTransition(R.layout.scene1);
+ assertEquals(1, mListener.endLatch.getCount());
+ endTransition();
+ waitForEnd(100);
+
+ // but it shouldn't animate out
+ startTransition(R.layout.scene1);
+ waitForEnd(0);
+ }
+
+ public void testIsVisible() throws Throwable {
+ assertFalse(mVisibilityTransition.isVisible(null));
+
+ enterScene(R.layout.scene1);
+ final View redSquare = mActivity.findViewById(R.id.redSquare);
+ TransitionValues visibleValues = new TransitionValues();
+ visibleValues.view = redSquare;
+ mTransition.captureStartValues(visibleValues);
+
+ assertTrue(mVisibilityTransition.isVisible(visibleValues));
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ redSquare.setVisibility(View.INVISIBLE);
+ }
+ });
+ getInstrumentation().waitForIdleSync();
+ TransitionValues invisibleValues = new TransitionValues();
+ invisibleValues.view = redSquare;
+ mTransition.captureStartValues(invisibleValues);
+ assertFalse(mVisibilityTransition.isVisible(invisibleValues));
+
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ redSquare.setVisibility(View.GONE);
+ }
+ });
+ getInstrumentation().waitForIdleSync();
+ TransitionValues goneValues = new TransitionValues();
+ goneValues.view = redSquare;
+ mTransition.captureStartValues(goneValues);
+ assertFalse(mVisibilityTransition.isVisible(goneValues));
+ }
+}
+
diff --git a/tools/tradefed-host/res/config/cts.xml b/tools/tradefed-host/res/config/cts.xml
index 794605c..e08ad81 100644
--- a/tools/tradefed-host/res/config/cts.xml
+++ b/tools/tradefed-host/res/config/cts.xml
@@ -20,7 +20,9 @@
<build_provider class="com.android.cts.tradefed.build.CtsBuildProvider" />
<device_recovery class="com.android.tradefed.device.WaitDeviceRecovery" />
<test class="com.android.cts.tradefed.testtype.CtsTest" />
- <logger class="com.android.tradefed.log.FileLogger" />
+ <logger class="com.android.tradefed.log.FileLogger">
+ <option name="log-level-display" value="WARN" />
+ </logger>
<result_reporter class="com.android.cts.tradefed.result.CtsXmlResultReporter" />
<template-include name="reporters" default="basic-reporters" />
</configuration>
diff --git a/tools/utils/buildCts.py b/tools/utils/buildCts.py
index 9223bf4..9923fcd 100755
--- a/tools/utils/buildCts.py
+++ b/tools/utils/buildCts.py
@@ -118,17 +118,20 @@
packages.sort()
plan = tools.TestPlan(packages)
+ plan.Exclude('android\.car.*')
plan.Exclude('android\.performance.*')
self.__WritePlan(plan, 'CTS')
self.__WritePlan(plan, 'CTS-TF')
plan = tools.TestPlan(packages)
+ plan.Exclude('android\.car.*')
plan.Exclude('android\.performance.*')
plan.Exclude('android\.media\.cts\.StreamingMediaPlayerTest.*')
# Test plan to not include media streaming tests
self.__WritePlan(plan, 'CTS-No-Media-Stream')
plan = tools.TestPlan(packages)
+ plan.Exclude('android\.car.*')
plan.Exclude('android\.performance.*')
self.__WritePlan(plan, 'SDK')
@@ -137,16 +140,19 @@
self.__WritePlan(plan, 'Android')
plan = tools.TestPlan(packages)
+ plan.Exclude('android\.car.*')
plan.Include(r'android\.core\.tests.*')
plan.Exclude(r'android\.core\.tests\.libcore\.package\.harmony*')
self.__WritePlan(plan, 'Java')
# TODO: remove this once the tests are fixed and merged into Java plan above.
plan = tools.TestPlan(packages)
+ plan.Exclude('android\.car.*')
plan.Include(r'android\.core\.tests\.libcore\.package\.harmony*')
self.__WritePlan(plan, 'Harmony')
plan = tools.TestPlan(packages)
+ plan.Exclude('android\.car.*')
plan.Include(r'android\.core\.vm-tests-tf')
self.__WritePlan(plan, 'VM-TF')
@@ -168,6 +174,7 @@
plan.Include('android\.telephony')
plan.Include('android\.nativemedia.*')
plan.Include('com\.android\.cts\..*')#TODO(stuartscott): Should PDK have all these?
+ plan.Exclude('android\.car.*')
self.__WritePlan(plan, 'PDK')
temporarily_known_failure_tests = BuildCtsTemporarilyKnownFailureList();
@@ -176,6 +183,7 @@
# CTS Stable plan
plan = tools.TestPlan(packages)
+ plan.Exclude('android\.car.*')
plan.Exclude(r'android\.browser')
for package, test_list in flaky_tests.iteritems():
plan.ExcludeTests(package, test_list)
@@ -190,6 +198,7 @@
for package, test_list in flaky_tests.iteritems():
plan.Include(package+'$')
plan.IncludeTests(package, test_list)
+ plan.Exclude('android\.car.*')
self.__WritePlan(plan, 'CTS-flaky')
small_tests = BuildAospSmallSizeTestList()
@@ -202,6 +211,7 @@
for package, test_list in small_tests.iteritems():
plan.Include(package+'$')
plan.Exclude(r'android\.browser')
+ plan.Exclude('android\.car.*')
for package, test_list in flaky_tests.iteritems():
plan.ExcludeTests(package, test_list)
for package, test_list in releasekey_tests.iteritems():
@@ -219,6 +229,7 @@
plan.ExcludeTests(package, test_list)
for package, test_list in releasekey_tests.iteritems():
plan.ExcludeTests(package, test_list)
+ plan.Exclude('android\.car.*')
self.__WritePlan(plan, 'CTS-kitkat-medium')
self.__WritePlan(plan, 'CTS-public-medium')
@@ -315,6 +326,7 @@
plan.Exclude(r'android\.view$')
plan.Exclude(r'android\.mediastress$')
plan.Exclude(r'android\.browser')
+ plan.Exclude('android\.car.*')
for package, test_list in flaky_tests.iteritems():
plan.ExcludeTests(package, test_list)
for package, test_list in releasekey_tests.iteritems():