Add e2e tests for updatable shared libs
Just adding the tests now, not making them run yet. Test: atest UpdatableSharedLibsTest Bug: 191978330 Ignore-AOSP-First: logic under test is only available in internal master Change-Id: I48e8b9422c8703cd4cec6552e0dcfd3b82021816
This commit is contained in:
41
javatests/com/android/modules/updatablesharedlibs/Android.bp
Normal file
41
javatests/com/android/modules/updatablesharedlibs/Android.bp
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 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 {
|
||||||
|
default_applicable_licenses: ["Android-Apache-2.0"],
|
||||||
|
}
|
||||||
|
|
||||||
|
java_test_host {
|
||||||
|
name: "UpdatableSharedLibsTest",
|
||||||
|
srcs: [
|
||||||
|
"UpdatableSharedLibsTest.java"
|
||||||
|
],
|
||||||
|
libs: ["tradefed"],
|
||||||
|
java_resources: [
|
||||||
|
":test_com.android.modules.updatablesharedlibs",
|
||||||
|
],
|
||||||
|
data: [
|
||||||
|
":com.android.modules.updatablesharedlibs.apps.targetS",
|
||||||
|
":com.android.modules.updatablesharedlibs.apps.targetT",
|
||||||
|
":com.android.modules.updatablesharedlibs.apps.targetTWithLib",
|
||||||
|
],
|
||||||
|
static_libs: [
|
||||||
|
"compatibility-host-util",
|
||||||
|
"cts-install-lib-host",
|
||||||
|
"frameworks-base-hostutils",
|
||||||
|
"truth-prebuilt"
|
||||||
|
],
|
||||||
|
}
|
||||||
5
javatests/com/android/modules/updatablesharedlibs/OWNERS
Normal file
5
javatests/com/android/modules/updatablesharedlibs/OWNERS
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# Mainline modularization team
|
||||||
|
|
||||||
|
andreionea@google.com
|
||||||
|
pedroql@google.com
|
||||||
|
satayev@google.com
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 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.modules.updatablesharedlibs;
|
||||||
|
|
||||||
|
import static org.junit.Assume.assumeTrue;
|
||||||
|
|
||||||
|
import com.android.internal.util.test.SystemPreparer;
|
||||||
|
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
|
||||||
|
import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
|
||||||
|
|
||||||
|
import org.junit.Rule;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.rules.RuleChain;
|
||||||
|
import org.junit.rules.TemporaryFolder;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
|
import android.cts.install.lib.host.InstallUtilsHost;
|
||||||
|
|
||||||
|
@RunWith(DeviceJUnit4ClassRunner.class)
|
||||||
|
public class UpdatableSharedLibsTest extends BaseHostJUnit4Test {
|
||||||
|
|
||||||
|
private final InstallUtilsHost mHostUtils = new InstallUtilsHost(this);
|
||||||
|
private final TemporaryFolder mTemporaryFolder = new TemporaryFolder();
|
||||||
|
private final SystemPreparer mPreparer = new SystemPreparer(mTemporaryFolder, this::getDevice);
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public final RuleChain ruleChain = RuleChain.outerRule(mTemporaryFolder).around(mPreparer);
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void callOnDeviceApiFromHost() throws Exception {
|
||||||
|
if (!getDevice().isAdbRoot()) {
|
||||||
|
getDevice().enableAdbRoot();
|
||||||
|
}
|
||||||
|
assumeTrue("Device does not support updating APEX", mHostUtils.isApexUpdateSupported());
|
||||||
|
assumeTrue("Device requires root", getDevice().isAdbRoot());
|
||||||
|
|
||||||
|
String apex = "test_com.android.modules.updatablesharedlibs.apex";
|
||||||
|
mPreparer.pushResourceFile(apex, "/system/apex/" + apex);
|
||||||
|
mPreparer.reboot();
|
||||||
|
getDevice().disableAdbRoot();
|
||||||
|
|
||||||
|
installPackage("com.android.modules.updatablesharedlibs.apps.targetS.apk");
|
||||||
|
installPackage("com.android.modules.updatablesharedlibs.apps.targetT.apk");
|
||||||
|
installPackage("com.android.modules.updatablesharedlibs.apps.targetTWithLib.apk");
|
||||||
|
|
||||||
|
runDeviceTests("com.android.modules.updatablesharedlibs.apps.targetS", null);
|
||||||
|
runDeviceTests("com.android.modules.updatablesharedlibs.apps.targetT", null);
|
||||||
|
runDeviceTests("com.android.modules.updatablesharedlibs.apps.targetTWithLib", null);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
// Copyright (C) 2021 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.
|
||||||
|
|
||||||
|
apex_key {
|
||||||
|
name: "com.android.modules.updatablesharedlibs.key",
|
||||||
|
public_key: "com.android.modules.updatablesharedlibs.avbpubkey",
|
||||||
|
private_key: "com.android.modules.updatablesharedlibs.pem",
|
||||||
|
}
|
||||||
|
|
||||||
|
android_app_certificate {
|
||||||
|
name: "com.android.modules.updatablesharedlibs.certificate",
|
||||||
|
certificate: "com.android.modules.updatablesharedlibs",
|
||||||
|
}
|
||||||
|
|
||||||
|
apex_test {
|
||||||
|
name: "test_com.android.modules.updatablesharedlibs",
|
||||||
|
manifest: "manifest.json",
|
||||||
|
file_contexts: ":apex.test-file_contexts",
|
||||||
|
key: "com.android.modules.updatablesharedlibs.key",
|
||||||
|
java_libs: [
|
||||||
|
"com.android.modules.updatablesharedlibs.libs.before.t",
|
||||||
|
"com.android.modules.updatablesharedlibs.libs.since.t",
|
||||||
|
],
|
||||||
|
updatable: false,
|
||||||
|
}
|
||||||
Binary file not shown.
@@ -0,0 +1,51 @@
|
|||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
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
|
||||||
|
-----END RSA PRIVATE KEY-----
|
||||||
Binary file not shown.
@@ -0,0 +1,34 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIF8zCCA9sCFF/jvwHjBgaxHaamJyRxH88j4704MA0GCSqGSIb3DQEBCwUAMIG0
|
||||||
|
MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91
|
||||||
|
bnRhaW4gVmlldzEQMA4GA1UECgwHQW5kcm9pZDEQMA4GA1UECwwHQW5kcm9pZDEi
|
||||||
|
MCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTEwMC4GA1UEAwwnY29t
|
||||||
|
LmFuZHJvaWQubW9kdWxlcy51cGRhdGFibGVzaGFyZWRsaWJzMCAXDTIxMTAyNzEy
|
||||||
|
NTU0OFoYDzQ3NTkwOTIzMTI1NTQ4WjCBtDELMAkGA1UEBhMCVVMxEzARBgNVBAgM
|
||||||
|
CkNhbGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB0Fu
|
||||||
|
ZHJvaWQxEDAOBgNVBAsMB0FuZHJvaWQxIjAgBgkqhkiG9w0BCQEWE2FuZHJvaWRA
|
||||||
|
YW5kcm9pZC5jb20xMDAuBgNVBAMMJ2NvbS5hbmRyb2lkLm1vZHVsZXMudXBkYXRh
|
||||||
|
Ymxlc2hhcmVkbGliczCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK1C
|
||||||
|
8OSduZta1sNA/3eKcj/IU5dtOUWFSB21dKIlzOqEBOO9meCBiU5IYKGIjEpktsEH
|
||||||
|
CaIn3PZ8iqUNU30myjgugqQbdoo7GyYHj9px23s5L+DRoOyDlk6WEfLpNei74POz
|
||||||
|
wisii5MJMN3SEPVbMFhwYJnfPOOxLl1hLpkKD0I/bDKrjKnVCqpDB3YfOZrwk32h
|
||||||
|
Og1fI7G7/kCBD2KZPyjXghJMVs0ohRrl7KLFSYCGIvrUH8WUQ3iQGGmTYTJmwUMu
|
||||||
|
BshlY/xt2EIqjzU2s3R9uzPibzDfaWgzmHVEV1fmXwUEryiKSza8lPnUhaH2fNsi
|
||||||
|
SPUHYPG19qEoQueHchBNpxFFJPipTGH00XLKAQATqmCL2Dwxu02HY4mxdUKFc5TS
|
||||||
|
AKre9e7GjUv+P6RNuqMXOUmdTcN8xXy2wfIFeVa1JA9IAdRz9OlkXiB/l7GLjb0x
|
||||||
|
WEAIG0cmikrPsgKe9GT+OjKKKwhKrE/oCp+qc4Y9BnPoo1Q538BbEp0jYyYpKOVQ
|
||||||
|
7nGUbPI6Km6f+RzyzqEKB10EmUREApinEl0j05CVbf/WNl5ubRgo70MlyXdaQS2L
|
||||||
|
U6XF+HgwIOySLHL0opQgbgapZIGaOQv3/baa4R7DaJ8oVNQwSCpieLW+MzsTk3hJ
|
||||||
|
MyJAJf7iRlNcRx7NoJy5JWL9kmXiWAffYo+Dr8ldAgMBAAEwDQYJKoZIhvcNAQEL
|
||||||
|
BQADggIBAGQ5m+rrDvOQUfeOfRdfuU+XyhJ1zaOmyi1Br8ARuUrG5m3H6o8D1DyW
|
||||||
|
zmv09YgkcXt4iTSFG5WcxXtu6mA57f9KuiXaRtA4wzmcnSgUpZrhRamltv1xfo8P
|
||||||
|
h5vW9EKU67+437CuFBKlyjRLC+MD1GyMgNJwbHBqkIDUIfio+soIBVKgdANshSq7
|
||||||
|
Cgc1dLAg7DvJkRg+WyjhBRmmregopXmfJfs73zxt2Jif5QQEZfLG27JkE7Ae06+9
|
||||||
|
1FKvotlabdT3LMXjlX6miaJhPV8WPCmGyF2sZ8rOvI8OIKjWfWdf2S5269OnOrpg
|
||||||
|
IMRJTnXzsIDNk/nVdbvI50V0/STIKyCj+HYMjlGjyFqs9XOSoWtv7Y41bYDp+eoF
|
||||||
|
tfau5WOmVALWQ/M3sSIeBGkpzoq33wkyoqYNrlLRnA8FSNCOahKZpgAZyd7Cs9Fu
|
||||||
|
EzK1+35F+5HdxgJaK29cmiaBsx3acTUr4UZrPewsmnYTU+xUtnbOKaLniUxkf/WT
|
||||||
|
8qPhdg8n/1Hks5iWRzvKSHmFYMzx/efbz7PcB4UEyzKyaYW5mpX9xPLZ0Du6Je3X
|
||||||
|
JIk2t6WEGnMDHWS2fa1KpUfhsiRKkxNP7tMMuAwZ/2OnCiFmZ2/Tzy6bp4EFPsa6
|
||||||
|
zXcvJSf7eAe5jJkKrWkoMoKp+SBGoCKXzoMRCAbLSEdnSpr5EZXF
|
||||||
|
-----END CERTIFICATE-----
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "test_com.android.modules.updatablesharedlibs",
|
||||||
|
"version": 1
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
// Copyright (C) 2021 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 {
|
||||||
|
default_applicable_licenses: ["Android-Apache-2.0"],
|
||||||
|
}
|
||||||
|
|
||||||
|
android_test_helper_app {
|
||||||
|
name: "com.android.modules.updatablesharedlibs.apps.targetS",
|
||||||
|
srcs: ["UpdatableSharedLibraryTargetSTest.java"],
|
||||||
|
static_libs: [
|
||||||
|
"androidx.test.rules",
|
||||||
|
"androidx.test.core",
|
||||||
|
"truth-prebuilt",
|
||||||
|
],
|
||||||
|
sdk_version: "current",
|
||||||
|
target_sdk_version: "31",
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2021 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.
|
||||||
|
-->
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="com.android.modules.updatablesharedlibs.apps.targetS">
|
||||||
|
<application>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
<instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
android:targetPackage="com.android.modules.updatablesharedlibs.apps.targetS"
|
||||||
|
></instrumentation>
|
||||||
|
</manifest>
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 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.modules.updatablesharedlibs.apps.targetS;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import junit.framework.Assert;
|
||||||
|
|
||||||
|
import com.google.common.truth.Correspondence;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.pm.ApplicationInfo;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry;
|
||||||
|
import androidx.test.runner.AndroidJUnit4;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests an app targeting S.
|
||||||
|
*
|
||||||
|
* <p>One of the shared libraries included in this test claims to be in the
|
||||||
|
* BOOTCLASSPATH before T so it should be added transparently to this app.
|
||||||
|
*/
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class UpdatableSharedLibraryTargetSTest {
|
||||||
|
private static String SHARED_LIB_PATH = "/apex/test_com.android.modules.updatablesharedlibs"
|
||||||
|
+ "/javalib/com.android.modules.updatablesharedlibs.libs.before.t.jar";
|
||||||
|
|
||||||
|
private static final Context sContext = InstrumentationRegistry.getInstrumentation()
|
||||||
|
.getContext();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void checkSharedLibrary() throws Exception {
|
||||||
|
String packageName = sContext.getPackageName();
|
||||||
|
ApplicationInfo appInfo = sContext.getPackageManager().getApplicationInfo(packageName,
|
||||||
|
PackageManager.GET_SHARED_LIBRARY_FILES);
|
||||||
|
|
||||||
|
assertThat(appInfo.sharedLibraryFiles)
|
||||||
|
.asList()
|
||||||
|
.contains(SHARED_LIB_PATH);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void callApi() throws Exception {
|
||||||
|
Object api = Class.forName("com.android.modules.updatablesharedlibs.libs.before.t.Api")
|
||||||
|
.getDeclaredConstructor()
|
||||||
|
.newInstance();
|
||||||
|
|
||||||
|
String actual = (String) api.getClass().getDeclaredMethod("methodBeforeT").invoke(api);
|
||||||
|
assertThat(actual).isEqualTo("Success");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
// Copyright (C) 2021 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 {
|
||||||
|
default_applicable_licenses: ["Android-Apache-2.0"],
|
||||||
|
}
|
||||||
|
|
||||||
|
android_test_helper_app {
|
||||||
|
name: "com.android.modules.updatablesharedlibs.apps.targetT",
|
||||||
|
srcs: ["UpdatableSharedLibraryTargetTTest.java"],
|
||||||
|
static_libs: [
|
||||||
|
"androidx.test.rules",
|
||||||
|
"androidx.test.core",
|
||||||
|
"truth-prebuilt",
|
||||||
|
],
|
||||||
|
sdk_version: "current",
|
||||||
|
target_sdk_version: "Tiramisu",
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2021 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.
|
||||||
|
-->
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="com.android.modules.updatablesharedlibs.apps.targetT">
|
||||||
|
<application>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
<instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
android:targetPackage="com.android.modules.updatablesharedlibs.apps.targetT"
|
||||||
|
></instrumentation>
|
||||||
|
</manifest>
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 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.modules.updatablesharedlibs.apps.targetT;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import junit.framework.Assert;
|
||||||
|
|
||||||
|
import com.google.common.truth.Correspondence;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.pm.ApplicationInfo;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry;
|
||||||
|
import androidx.test.runner.AndroidJUnit4;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests an app targeting T.
|
||||||
|
*
|
||||||
|
* <p>With the shared libraries included in this test, none of the shared libraries present in this
|
||||||
|
* test should be included for this app.
|
||||||
|
*/
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class UpdatableSharedLibraryTargetTTest {
|
||||||
|
private static final Correspondence<String, String> CONTAINS_SUBSTRING =
|
||||||
|
Correspondence.from(String::contains, "contains");
|
||||||
|
private static final Context sContext = InstrumentationRegistry.getInstrumentation()
|
||||||
|
.getContext();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void checkHasNoSharedLibrary() throws Exception {
|
||||||
|
String packageName = sContext.getPackageName();
|
||||||
|
ApplicationInfo appInfo = sContext.getPackageManager().getApplicationInfo(packageName,
|
||||||
|
PackageManager.GET_SHARED_LIBRARY_FILES);
|
||||||
|
|
||||||
|
assertThat(appInfo.sharedLibraryFiles)
|
||||||
|
.asList()
|
||||||
|
.comparingElementsUsing(CONTAINS_SUBSTRING)
|
||||||
|
.doesNotContain("com.android.modules.updatablesharedlibs");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 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 {
|
||||||
|
default_applicable_licenses: ["Android-Apache-2.0"],
|
||||||
|
}
|
||||||
|
|
||||||
|
android_test_helper_app {
|
||||||
|
name: "com.android.modules.updatablesharedlibs.apps.targetTWithLib",
|
||||||
|
srcs: ["UpdatableSharedLibraryTargetTWithLibraryTest.java"],
|
||||||
|
libs: [
|
||||||
|
"com.android.modules.updatablesharedlibs.libs.since.t",
|
||||||
|
],
|
||||||
|
static_libs: [
|
||||||
|
"androidx.test.rules",
|
||||||
|
"androidx.test.core",
|
||||||
|
],
|
||||||
|
sdk_version: "current",
|
||||||
|
target_sdk_version: "Tiramisu",
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2021 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.
|
||||||
|
-->
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="com.android.modules.updatablesharedlibs.apps.targetTWithLib">
|
||||||
|
<application>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
<instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
android:targetPackage="com.android.modules.updatablesharedlibs.apps.targetTWithLib"
|
||||||
|
></instrumentation>
|
||||||
|
</manifest>
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 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.modules.updatablesharedlibs.apps.targetTWithLib;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry;
|
||||||
|
import androidx.test.runner.AndroidJUnit4;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests an app targeting T which also includes a shared library that is part of the BOOTCLASSPATH
|
||||||
|
* from T.
|
||||||
|
*
|
||||||
|
* <p>This means the shared library should not be explicitly in the shared libraries in order
|
||||||
|
* to avoid duplication of the BCP.
|
||||||
|
*/
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class UpdatableSharedLibraryTargetTWithLibraryTest {
|
||||||
|
// private static final Context sContext = InstrumentationRegistry.getInstrumentation()
|
||||||
|
// .getContext();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void checkHasNoSharedLibrary() throws Exception {
|
||||||
|
// TODO(b/205261027): not possible to test yet
|
||||||
|
|
||||||
|
// This is the code we'd like to run. But because before API finalisation PM
|
||||||
|
// will see the shared library as
|
||||||
|
// having "on-bcp-since 9001" this means that it never considers that shared
|
||||||
|
// library to be in the BCP.
|
||||||
|
|
||||||
|
// String packageName = getContext().getPackageName();
|
||||||
|
// ApplicationInfo appInfo = getPackageManager().getApplicationInfo(packageName,
|
||||||
|
// PackageManager.GET_SHARED_LIBRARY_FILES);
|
||||||
|
// Log.d(TAG, "checkHasNoSharedLibrary in " + appInfo.sharedLibraryFiles.length
|
||||||
|
// + " libraries");
|
||||||
|
// for (String path : appInfo.sharedLibraryFiles) {
|
||||||
|
// if (path.contains("com.android.modules.updatablesharedlibs")) {
|
||||||
|
// Assert.fail("Unexpectedly found a shared library: " + path);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 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 {
|
||||||
|
default_applicable_licenses: ["Android-Apache-2.0"],
|
||||||
|
}
|
||||||
|
|
||||||
|
java_sdk_library {
|
||||||
|
name: "com.android.modules.updatablesharedlibs.libs.before.t",
|
||||||
|
srcs: [
|
||||||
|
"Api.java"
|
||||||
|
],
|
||||||
|
permitted_packages: [ "com.android.modules.updatablesharedlibs.libs"],
|
||||||
|
apex_available: [ "test_com.android.modules.updatablesharedlibs" ],
|
||||||
|
min_sdk_version: "Tiramisu",
|
||||||
|
sdk_version: "current",
|
||||||
|
on_bootclasspath_before: "Tiramisu",
|
||||||
|
|
||||||
|
// Output the api files to a special directory that won't trigger an API
|
||||||
|
// review as it is a test only API.
|
||||||
|
api_dir: "api_dir",
|
||||||
|
// Testing only.
|
||||||
|
no_dist: true,
|
||||||
|
unsafe_ignore_missing_latest_api: true,
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 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.modules.updatablesharedlibs.libs.before.t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Basic class to pretend we have one API.
|
||||||
|
*/
|
||||||
|
public class Api {
|
||||||
|
|
||||||
|
public String methodBeforeT() {
|
||||||
|
return "Success";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
// Signature format: 2.0
|
||||||
|
package com.android.modules.updatablesharedlibs.libs.before.t {
|
||||||
|
|
||||||
|
public class Api {
|
||||||
|
ctor public Api();
|
||||||
|
method public String methodBeforeT();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// Signature format: 2.0
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// Signature format: 2.0
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// Signature format: 2.0
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// Signature format: 2.0
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// Signature format: 2.0
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 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 {
|
||||||
|
default_applicable_licenses: ["Android-Apache-2.0"],
|
||||||
|
}
|
||||||
|
|
||||||
|
java_sdk_library {
|
||||||
|
name: "com.android.modules.updatablesharedlibs.libs.since.t",
|
||||||
|
srcs: [
|
||||||
|
"Api.java"
|
||||||
|
],
|
||||||
|
permitted_packages: [ "com.android.modules.updatablesharedlibs.libs.since"],
|
||||||
|
apex_available: [ "test_com.android.modules.updatablesharedlibs" ],
|
||||||
|
min_sdk_version: "Tiramisu",
|
||||||
|
sdk_version: "current",
|
||||||
|
on_bootclasspath_since: "Tiramisu",
|
||||||
|
|
||||||
|
// Output the api files to a special directory that won't trigger an API
|
||||||
|
// review as it is a test only API.
|
||||||
|
api_dir: "api_dir",
|
||||||
|
// Testing only.
|
||||||
|
no_dist: true,
|
||||||
|
unsafe_ignore_missing_latest_api: true,
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 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.modules.updatablesharedlibs.libs.since.t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Basic class to pretend we have one API.
|
||||||
|
*/
|
||||||
|
public class Api {
|
||||||
|
|
||||||
|
public String methodSinceT() {
|
||||||
|
return "Success";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
// Signature format: 2.0
|
||||||
|
package com.android.modules.updatablesharedlibs.libs.since.t {
|
||||||
|
|
||||||
|
public class Api {
|
||||||
|
ctor public Api();
|
||||||
|
method public String methodSinceT();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// Signature format: 2.0
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// Signature format: 2.0
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// Signature format: 2.0
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// Signature format: 2.0
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// Signature format: 2.0
|
||||||
Reference in New Issue
Block a user