From e15bdc2da4c74c8d16db8c1d067a42c4767d1003 Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Sun, 16 Sep 2012 15:45:38 -0700 Subject: Add test for failed dexopt Bug: 7010829 Change-Id: Ie0616ff2c3739ad73733857de6d04243b2be2fca --- .../coretests/apks/install_bad_dex/Android.mk | 10 +++++++++ .../apks/install_bad_dex/AndroidManifest.xml | 24 ++++++++++++++++++++++ .../coretests/apks/install_bad_dex/classes.dex | 1 + .../apks/install_bad_dex/res/values/strings.xml | 6 ++++++ .../android/frameworks/coretests/TestActivity.java | 24 ++++++++++++++++++++++ .../coretests/apks/install_jni_lib/Android.mk | 2 +- .../android/content/pm/PackageManagerTests.java | 19 ++++++++++++++--- 7 files changed, 82 insertions(+), 4 deletions(-) create mode 100644 core/tests/coretests/apks/install_bad_dex/Android.mk create mode 100644 core/tests/coretests/apks/install_bad_dex/AndroidManifest.xml create mode 100644 core/tests/coretests/apks/install_bad_dex/classes.dex create mode 100644 core/tests/coretests/apks/install_bad_dex/res/values/strings.xml create mode 100644 core/tests/coretests/apks/install_bad_dex/src/com/android/frameworks/coretests/TestActivity.java (limited to 'core/tests') diff --git a/core/tests/coretests/apks/install_bad_dex/Android.mk b/core/tests/coretests/apks/install_bad_dex/Android.mk new file mode 100644 index 0000000..769a1b0 --- /dev/null +++ b/core/tests/coretests/apks/install_bad_dex/Android.mk @@ -0,0 +1,10 @@ +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(call all-subdir-java-files) + +LOCAL_PACKAGE_NAME := install_bad_dex + +LOCAL_JAVA_RESOURCE_FILES := $(LOCAL_PATH)/classes.dex + +include $(FrameworkCoreTests_BUILD_PACKAGE) diff --git a/core/tests/coretests/apks/install_bad_dex/AndroidManifest.xml b/core/tests/coretests/apks/install_bad_dex/AndroidManifest.xml new file mode 100644 index 0000000..fe4dd8e --- /dev/null +++ b/core/tests/coretests/apks/install_bad_dex/AndroidManifest.xml @@ -0,0 +1,24 @@ + + + + + + + + + diff --git a/core/tests/coretests/apks/install_bad_dex/classes.dex b/core/tests/coretests/apks/install_bad_dex/classes.dex new file mode 100644 index 0000000..284b6d4 --- /dev/null +++ b/core/tests/coretests/apks/install_bad_dex/classes.dex @@ -0,0 +1 @@ +This is a bad dex diff --git a/core/tests/coretests/apks/install_bad_dex/res/values/strings.xml b/core/tests/coretests/apks/install_bad_dex/res/values/strings.xml new file mode 100644 index 0000000..3b8b3b1 --- /dev/null +++ b/core/tests/coretests/apks/install_bad_dex/res/values/strings.xml @@ -0,0 +1,6 @@ + + + + + dummy + diff --git a/core/tests/coretests/apks/install_bad_dex/src/com/android/frameworks/coretests/TestActivity.java b/core/tests/coretests/apks/install_bad_dex/src/com/android/frameworks/coretests/TestActivity.java new file mode 100644 index 0000000..10d0551 --- /dev/null +++ b/core/tests/coretests/apks/install_bad_dex/src/com/android/frameworks/coretests/TestActivity.java @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2011 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 com.android.frameworks.coretests; + +import android.app.Activity; + +public class TestActivity extends Activity { + +} diff --git a/core/tests/coretests/apks/install_jni_lib/Android.mk b/core/tests/coretests/apks/install_jni_lib/Android.mk index de2993a..b61ea8e 100644 --- a/core/tests/coretests/apks/install_jni_lib/Android.mk +++ b/core/tests/coretests/apks/install_jni_lib/Android.mk @@ -23,6 +23,6 @@ LOCAL_SHARED_LIBRARIES := \ libnativehelper LOCAL_MODULE := libframeworks_coretests_jni -LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_TAGS := tests include $(BUILD_SHARED_LIBRARY) diff --git a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java index 785842f..5881aa1 100755 --- a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java +++ b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java @@ -39,6 +39,7 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.os.StatFs; import android.os.SystemClock; +import android.os.UserManager; import android.os.storage.IMountService; import android.os.storage.StorageListener; import android.os.storage.StorageManager; @@ -562,6 +563,14 @@ public class PackageManagerTests extends AndroidTestCase { fail(pkgName + " shouldnt be installed"); } catch (NameNotFoundException e) { } + + UserManager um = (UserManager) mContext.getSystemService(Context.USER_SERVICE); + List users = um.getUsers(); + for (UserInfo user : users) { + String dataDir = PackageManager.getDataDirForUser(user.id, pkgName); + assertFalse("Application data directory should not exist: " + dataDir, + new File(dataDir).exists()); + } } class InstallParams { @@ -707,9 +716,7 @@ public class PackageManagerTests extends AndroidTestCase { PackageManager.GET_UNINSTALLED_PACKAGES); GenericReceiver receiver = new DeleteReceiver(pkg.packageName); invokeDeletePackage(pkg.packageName, 0, receiver); - } catch (NameNotFoundException e1) { - } catch (Exception e) { - failStr(e); + } catch (NameNotFoundException e) { } } try { @@ -3476,6 +3483,12 @@ public class PackageManagerTests extends AndroidTestCase { assertNotNull("signatures should not be null", packageInfo.signatures); } + public void testInstall_BadDex_CleanUp() throws Exception { + int retCode = PackageManager.INSTALL_FAILED_DEXOPT; + installFromRawResource("install.apk", R.raw.install_bad_dex, 0, true, true, retCode, + PackageInfo.INSTALL_LOCATION_UNSPECIFIED); + } + /*---------- Recommended install location tests ----*/ /* * TODO's -- cgit v1.1