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